merge in studio-master-weekly history after reset to studio-master-dev
diff --git a/cc/gapic/CMakeFiles.cmake b/cc/gapic/CMakeFiles.cmake
index fa76130..939d75b 100644
--- a/cc/gapic/CMakeFiles.cmake
+++ b/cc/gapic/CMakeFiles.cmake
@@ -24,6 +24,7 @@
connection.cpp
connection.h
connection_test.cpp
+ core_ptr_types.h
dl_loader.cpp
dl_loader.h
encoder.cpp
@@ -33,6 +34,7 @@
file_writer.h
get_gles_proc_address.h
get_vulkan_proc_address.h
+ gles_ptr_types.h
hash.cpp
hash.h
id.cpp
@@ -64,6 +66,7 @@
timer.cpp
timer.h
vector.h
+ vulkan_ptr_types.h
)
set(dirs
android
diff --git a/cc/gapic/coder/gles.cpp b/cc/gapic/coder/gles.cpp
index 687f4c0..616f8e2 100644
--- a/cc/gapic/coder/gles.cpp
+++ b/cc/gapic/coder/gles.cpp
@@ -62,6 +62,63 @@
return &entity;
}
+// AndroidNativeBufferExtra:
+// gles.AndroidNativeBufferExtra{Uint32,Uint32,Uint32,Uint32,Uint32}
+void AndroidNativeBufferExtra::Encode(Encoder* e) const {
+ e->Uint32(this->mWidth);
+ e->Uint32(this->mHeight);
+ e->Uint32(this->mStride);
+ e->Uint32(this->mFormat);
+ e->Uint32(this->mUsage);
+}
+const schema::Entity* AndroidNativeBufferExtra::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "AndroidNativeBufferExtra",
+ "",
+ {
+ schema::Field{"Width", new schema::Primitive{"uint32", schema::Primitive::Uint32}},
+ schema::Field{"Height", new schema::Primitive{"uint32", schema::Primitive::Uint32}},
+ schema::Field{"Stride", new schema::Primitive{"uint32", schema::Primitive::Uint32}},
+ schema::Field{"Format", new schema::Primitive{"AndroidGraphicsBufferFormat", schema::Primitive::Uint32}},
+ schema::Field{"Usage", new schema::Primitive{"AndroidGraphicsBufferUsage", schema::Primitive::Uint32}},
+ },
+ };
+ return &entity;
+}
+
+// Boolˢ:
+// gles.Boolˢ{$}
+const schema::Entity* Bool__S::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "Boolˢ",
+ "",
+ {
+ schema::Field{"", new schema::Struct{ memory::SliceInfo::StaticSchema()}},
+ },
+ };
+ return &entity;
+}
+
+// Boolᵖ:
+// gles.Boolᵖ{Uint64,Uint32}
+const schema::Entity* Bool__P::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "Boolᵖ",
+ "",
+ {
+ schema::Field{"Address", new schema::Primitive{"uint64", schema::Primitive::Uint64}},
+ schema::Field{"Pool", new schema::Primitive{"memory.PoolID", schema::Primitive::Uint32}},
+ },
+ };
+ return &entity;
+}
+
// Vec4f:
// gles.Vec4f{[4]Float32}
const schema::Entity* Vec4f::StaticSchema() {
@@ -1017,6 +1074,22 @@
return &entity;
}
+// GLeglImageOES:
+// gles.GLeglImageOES{Uint64,Uint32}
+const schema::Entity* GLeglImageOES::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GLeglImageOES",
+ "",
+ {
+ schema::Field{"Address", new schema::Primitive{"uint64", schema::Primitive::Uint64}},
+ schema::Field{"Pool", new schema::Primitive{"memory.PoolID", schema::Primitive::Uint32}},
+ },
+ };
+ return &entity;
+}
+
// GLcharˢ:
// gles.GLcharˢ{$}
const schema::Entity* GLchar__S::StaticSchema() {
@@ -1614,7 +1687,7 @@
schema::Field{"Display", new schema::Struct{ EGLDisplay::StaticSchema()}},
schema::Field{"Config", new schema::Struct{ EGLConfig::StaticSchema()}},
schema::Field{"ShareContext", new schema::Struct{ EGLContext::StaticSchema()}},
- schema::Field{"AttribList", new schema::Struct{ EGLint__P::StaticSchema()}},
+ schema::Field{"AttribList", new schema::Struct{ EGLint__CP::StaticSchema()}},
schema::Field{"Result", new schema::Struct{ EGLContext::StaticSchema()}},
},
};
@@ -1654,6 +1727,23 @@
return &entity;
}
+// EglCreateNativeClientBufferANDROID:
+// gles.EglCreateNativeClientBufferANDROID{[]?,$,$}
+const schema::Entity* EglCreateNativeClientBufferANDROID::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "EglCreateNativeClientBufferANDROID",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"AttribList", new schema::Struct{ EGLint__CP::StaticSchema()}},
+ schema::Field{"Result", new schema::Struct{ EGLClientBuffer::StaticSchema()}},
+ },
+ };
+ return &entity;
+}
+
// EglCreatePbufferFromClientBuffer:
// gles.EglCreatePbufferFromClientBuffer{[]?,$,Uint32,$,$,$,$}
void EglCreatePbufferFromClientBuffer::Encode(Encoder* e) const {
@@ -2777,22 +2867,6 @@
return &entity;
}
-// GLeglImageOES:
-// gles.GLeglImageOES{Uint64,Uint32}
-const schema::Entity* GLeglImageOES::StaticSchema() {
- static schema::Entity entity {
- "gles",
- "",
- "GLeglImageOES",
- "",
- {
- schema::Field{"Address", new schema::Primitive{"uint64", schema::Primitive::Uint64}},
- schema::Field{"Pool", new schema::Primitive{"memory.PoolID", schema::Primitive::Uint32}},
- },
- };
- return &entity;
-}
-
// GLenumˢ:
// gles.GLenumˢ{$}
const schema::Entity* GLenum__S::StaticSchema() {
@@ -2963,6 +3037,53 @@
return &entity;
}
+// GLint64EXTˢ:
+// gles.GLint64EXTˢ{$}
+const schema::Entity* GLint64EXT__S::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GLint64EXTˢ",
+ "",
+ {
+ schema::Field{"", new schema::Struct{ memory::SliceInfo::StaticSchema()}},
+ },
+ };
+ return &entity;
+}
+
+// GLint64EXTᵖ:
+// gles.GLint64EXTᵖ{Uint64,Uint32}
+const schema::Entity* GLint64EXT__P::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GLint64EXTᵖ",
+ "",
+ {
+ schema::Field{"Address", new schema::Primitive{"uint64", schema::Primitive::Uint64}},
+ schema::Field{"Pool", new schema::Primitive{"memory.PoolID", schema::Primitive::Uint32}},
+ },
+ };
+ return &entity;
+}
+
+// GLint64EXTᶜᵖ:
+// gles.GLint64EXTᶜᵖ{Uint64,Uint32}
+const schema::Entity* GLint64EXT__CP::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GLint64EXTᶜᵖ",
+ "",
+ {
+ schema::Field{"Address", new schema::Primitive{"uint64", schema::Primitive::Uint64}},
+ schema::Field{"Pool", new schema::Primitive{"memory.PoolID", schema::Primitive::Uint32}},
+ },
+ };
+ return &entity;
+}
+
// GLint64ˢ:
// gles.GLint64ˢ{$}
const schema::Entity* GLint64__S::StaticSchema() {
@@ -3212,6 +3333,53 @@
return &entity;
}
+// GLuint64EXTˢ:
+// gles.GLuint64EXTˢ{$}
+const schema::Entity* GLuint64EXT__S::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GLuint64EXTˢ",
+ "",
+ {
+ schema::Field{"", new schema::Struct{ memory::SliceInfo::StaticSchema()}},
+ },
+ };
+ return &entity;
+}
+
+// GLuint64EXTᵖ:
+// gles.GLuint64EXTᵖ{Uint64,Uint32}
+const schema::Entity* GLuint64EXT__P::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GLuint64EXTᵖ",
+ "",
+ {
+ schema::Field{"Address", new schema::Primitive{"uint64", schema::Primitive::Uint64}},
+ schema::Field{"Pool", new schema::Primitive{"memory.PoolID", schema::Primitive::Uint32}},
+ },
+ };
+ return &entity;
+}
+
+// GLuint64EXTᶜᵖ:
+// gles.GLuint64EXTᶜᵖ{Uint64,Uint32}
+const schema::Entity* GLuint64EXT__CP::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GLuint64EXTᶜᵖ",
+ "",
+ {
+ schema::Field{"Address", new schema::Primitive{"uint64", schema::Primitive::Uint64}},
+ schema::Field{"Pool", new schema::Primitive{"memory.PoolID", schema::Primitive::Uint32}},
+ },
+ };
+ return &entity;
+}
+
// GLuint64ˢ:
// gles.GLuint64ˢ{$}
const schema::Entity* GLuint64__S::StaticSchema() {
@@ -5122,6 +5290,33 @@
return &entity;
}
+// GlClearPixelLocalStorageuiEXT:
+// gles.GlClearPixelLocalStorageuiEXT{[]?,Int32,Int32,$}
+void GlClearPixelLocalStorageuiEXT::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Int32(this->mOffset);
+ e->Int32(this->mN);
+ e->Struct(this->mValues);
+}
+const schema::Entity* GlClearPixelLocalStorageuiEXT::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlClearPixelLocalStorageuiEXT",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Offset", new schema::Primitive{"GLsizei", schema::Primitive::Int32}},
+ schema::Field{"N", new schema::Primitive{"GLsizei", schema::Primitive::Int32}},
+ schema::Field{"Values", new schema::Struct{ GLuint__CP::StaticSchema()}},
+ },
+ };
+ return &entity;
+}
+
// GlClearStencil:
// gles.GlClearStencil{[]?,Int32}
const schema::Entity* GlClearStencil::StaticSchema() {
@@ -5138,6 +5333,80 @@
return &entity;
}
+// GlClearTexImageEXT:
+// gles.GlClearTexImageEXT{[]?,Uint32,Int32,Uint32,Uint32,$}
+void GlClearTexImageEXT::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mTexture);
+ e->Int32(this->mLevel);
+ e->Uint32(this->mFormat);
+ e->Uint32(this->mType);
+ e->Struct(this->mData);
+}
+const schema::Entity* GlClearTexImageEXT::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlClearTexImageEXT",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Texture", new schema::Primitive{"GLuint", schema::Primitive::Uint32}},
+ schema::Field{"Level", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"Format", new schema::Primitive{"GLenum", schema::Primitive::Uint32}},
+ schema::Field{"Type", new schema::Primitive{"GLenum", schema::Primitive::Uint32}},
+ schema::Field{"Data", new schema::Struct{ Void__CP::StaticSchema()}},
+ },
+ };
+ return &entity;
+}
+
+// GlClearTexSubImageEXT:
+// gles.GlClearTexSubImageEXT{[]?,Uint32,Int32,Int32,Int32,Int32,Int32,Int32,Int32,Uint32,Uint32,$}
+void GlClearTexSubImageEXT::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mTexture);
+ e->Int32(this->mLevel);
+ e->Int32(this->mXoffset);
+ e->Int32(this->mYoffset);
+ e->Int32(this->mZoffset);
+ e->Int32(this->mWidth);
+ e->Int32(this->mHeight);
+ e->Int32(this->mDepth);
+ e->Uint32(this->mFormat);
+ e->Uint32(this->mType);
+ e->Struct(this->mData);
+}
+const schema::Entity* GlClearTexSubImageEXT::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlClearTexSubImageEXT",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Texture", new schema::Primitive{"GLuint", schema::Primitive::Uint32}},
+ schema::Field{"Level", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"Xoffset", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"Yoffset", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"Zoffset", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"Width", new schema::Primitive{"GLsizei", schema::Primitive::Int32}},
+ schema::Field{"Height", new schema::Primitive{"GLsizei", schema::Primitive::Int32}},
+ schema::Field{"Depth", new schema::Primitive{"GLsizei", schema::Primitive::Int32}},
+ schema::Field{"Format", new schema::Primitive{"GLenum", schema::Primitive::Uint32}},
+ schema::Field{"Type", new schema::Primitive{"GLenum", schema::Primitive::Uint32}},
+ schema::Field{"Data", new schema::Struct{ Void__CP::StaticSchema()}},
+ },
+ };
+ return &entity;
+}
+
// GlClientActiveTexture:
// gles.GlClientActiveTexture{[]?,Uint32}
const schema::Entity* GlClientActiveTexture::StaticSchema() {
@@ -5884,6 +6153,23 @@
return &entity;
}
+// GlConservativeRasterParameteriNV:
+// gles.GlConservativeRasterParameteriNV{[]?,Uint32,Int32}
+const schema::Entity* GlConservativeRasterParameteriNV::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlConservativeRasterParameteriNV",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Pname", new schema::Primitive{"GLenum", schema::Primitive::Uint32}},
+ schema::Field{"Param", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ },
+ };
+ return &entity;
+}
+
// GlCopyBufferSubData:
// gles.GlCopyBufferSubData{[]?,Uint32,Uint32,Int32,Int32,Int32}
void GlCopyBufferSubData::Encode(Encoder* e) const {
@@ -7312,6 +7598,33 @@
return &entity;
}
+// GlDepthRangeArrayfvOES:
+// gles.GlDepthRangeArrayfvOES{[]?,Uint32,Int32,$}
+void GlDepthRangeArrayfvOES::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mFirst);
+ e->Int32(this->mCount);
+ e->Struct(this->mV);
+}
+const schema::Entity* GlDepthRangeArrayfvOES::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlDepthRangeArrayfvOES",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"First", new schema::Primitive{"GLuint", schema::Primitive::Uint32}},
+ schema::Field{"Count", new schema::Primitive{"GLsizei", schema::Primitive::Int32}},
+ schema::Field{"V", new schema::Struct{ GLfloat__CP::StaticSchema()}},
+ },
+ };
+ return &entity;
+}
+
// GlDepthRangeIndexedfNV:
// gles.GlDepthRangeIndexedfNV{[]?,Uint32,Float32,Float32}
void GlDepthRangeIndexedfNV::Encode(Encoder* e) const {
@@ -7339,6 +7652,33 @@
return &entity;
}
+// GlDepthRangeIndexedfOES:
+// gles.GlDepthRangeIndexedfOES{[]?,Uint32,Float32,Float32}
+void GlDepthRangeIndexedfOES::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mIndex);
+ e->Float32(this->mN);
+ e->Float32(this->mF);
+}
+const schema::Entity* GlDepthRangeIndexedfOES::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlDepthRangeIndexedfOES",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Index", new schema::Primitive{"GLuint", schema::Primitive::Uint32}},
+ schema::Field{"N", new schema::Primitive{"GLfloat", schema::Primitive::Float32}},
+ schema::Field{"F", new schema::Primitive{"GLfloat", schema::Primitive::Float32}},
+ },
+ };
+ return &entity;
+}
+
// GlDepthRangef:
// gles.GlDepthRangef{[]?,Float32,Float32}
const schema::Entity* GlDepthRangef::StaticSchema() {
@@ -8677,6 +9017,50 @@
return &entity;
}
+// GlDrawTransformFeedbackEXT:
+// gles.GlDrawTransformFeedbackEXT{[]?,Uint32,Uint32}
+const schema::Entity* GlDrawTransformFeedbackEXT::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlDrawTransformFeedbackEXT",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Mode", new schema::Primitive{"GLenum", schema::Primitive::Uint32}},
+ schema::Field{"Id", new schema::Primitive{"GLuint", schema::Primitive::Uint32}},
+ },
+ };
+ return &entity;
+}
+
+// GlDrawTransformFeedbackInstancedEXT:
+// gles.GlDrawTransformFeedbackInstancedEXT{[]?,Uint32,Uint32,Int32}
+void GlDrawTransformFeedbackInstancedEXT::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mMode);
+ e->Uint32(this->mId);
+ e->Int32(this->mInstancecount);
+}
+const schema::Entity* GlDrawTransformFeedbackInstancedEXT::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlDrawTransformFeedbackInstancedEXT",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Mode", new schema::Primitive{"GLenum", schema::Primitive::Uint32}},
+ schema::Field{"Id", new schema::Primitive{"GLuint", schema::Primitive::Uint32}},
+ schema::Field{"Instancecount", new schema::Primitive{"GLsizei", schema::Primitive::Int32}},
+ },
+ };
+ return &entity;
+}
+
// GlEGLImageTargetRenderbufferStorageOES:
// gles.GlEGLImageTargetRenderbufferStorageOES{[]?,Uint32,$}
const schema::Entity* GlEGLImageTargetRenderbufferStorageOES::StaticSchema() {
@@ -9658,6 +10042,23 @@
return &entity;
}
+// GlFramebufferPixelLocalStorageSizeEXT:
+// gles.GlFramebufferPixelLocalStorageSizeEXT{[]?,Uint32,Int32}
+const schema::Entity* GlFramebufferPixelLocalStorageSizeEXT::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlFramebufferPixelLocalStorageSizeEXT",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Target", new schema::Primitive{"GLuint", schema::Primitive::Uint32}},
+ schema::Field{"Size", new schema::Primitive{"GLsizei", schema::Primitive::Int32}},
+ },
+ };
+ return &entity;
+}
+
// GlFramebufferRenderbuffer:
// gles.GlFramebufferRenderbuffer{[]?,Uint32,Uint32,Uint32,Uint32}
void GlFramebufferRenderbuffer::Encode(Encoder* e) const {
@@ -9805,6 +10206,41 @@
return &entity;
}
+// GlFramebufferTexture2DDownsampleIMG:
+// gles.GlFramebufferTexture2DDownsampleIMG{[]?,Uint32,Uint32,Uint32,Uint32,Int32,Int32,Int32}
+void GlFramebufferTexture2DDownsampleIMG::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mTarget);
+ e->Uint32(this->mAttachment);
+ e->Uint32(this->mTextarget);
+ e->Uint32(this->mTexture);
+ e->Int32(this->mLevel);
+ e->Int32(this->mXscale);
+ e->Int32(this->mYscale);
+}
+const schema::Entity* GlFramebufferTexture2DDownsampleIMG::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlFramebufferTexture2DDownsampleIMG",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Target", new schema::Primitive{"GLenum", schema::Primitive::Uint32}},
+ schema::Field{"Attachment", new schema::Primitive{"GLenum", schema::Primitive::Uint32}},
+ schema::Field{"Textarget", new schema::Primitive{"GLenum", schema::Primitive::Uint32}},
+ schema::Field{"Texture", new schema::Primitive{"GLuint", schema::Primitive::Uint32}},
+ schema::Field{"Level", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"Xscale", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"Yscale", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ },
+ };
+ return &entity;
+}
+
// GlFramebufferTexture2DMultisampleEXT:
// gles.GlFramebufferTexture2DMultisampleEXT{[]?,Uint32,Uint32,Uint32,Uint32,Int32,Int32}
void GlFramebufferTexture2DMultisampleEXT::Encode(Encoder* e) const {
@@ -9995,6 +10431,76 @@
return &entity;
}
+// GlFramebufferTextureLayerDownsampleIMG:
+// gles.GlFramebufferTextureLayerDownsampleIMG{[]?,Uint32,Uint32,Uint32,Int32,Int32,Int32,Int32}
+void GlFramebufferTextureLayerDownsampleIMG::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mTarget);
+ e->Uint32(this->mAttachment);
+ e->Uint32(this->mTexture);
+ e->Int32(this->mLevel);
+ e->Int32(this->mLayer);
+ e->Int32(this->mXscale);
+ e->Int32(this->mYscale);
+}
+const schema::Entity* GlFramebufferTextureLayerDownsampleIMG::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlFramebufferTextureLayerDownsampleIMG",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Target", new schema::Primitive{"GLenum", schema::Primitive::Uint32}},
+ schema::Field{"Attachment", new schema::Primitive{"GLenum", schema::Primitive::Uint32}},
+ schema::Field{"Texture", new schema::Primitive{"GLuint", schema::Primitive::Uint32}},
+ schema::Field{"Level", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"Layer", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"Xscale", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"Yscale", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ },
+ };
+ return &entity;
+}
+
+// GlFramebufferTextureMultisampleMultiviewOVR:
+// gles.GlFramebufferTextureMultisampleMultiviewOVR{[]?,Uint32,Uint32,Uint32,Int32,Int32,Int32,Int32}
+void GlFramebufferTextureMultisampleMultiviewOVR::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mTarget);
+ e->Uint32(this->mAttachment);
+ e->Uint32(this->mTexture);
+ e->Int32(this->mLevel);
+ e->Int32(this->mSamples);
+ e->Int32(this->mBaseViewIndex);
+ e->Int32(this->mNumViews);
+}
+const schema::Entity* GlFramebufferTextureMultisampleMultiviewOVR::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlFramebufferTextureMultisampleMultiviewOVR",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Target", new schema::Primitive{"GLenum", schema::Primitive::Uint32}},
+ schema::Field{"Attachment", new schema::Primitive{"GLenum", schema::Primitive::Uint32}},
+ schema::Field{"Texture", new schema::Primitive{"GLuint", schema::Primitive::Uint32}},
+ schema::Field{"Level", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"Samples", new schema::Primitive{"GLsizei", schema::Primitive::Int32}},
+ schema::Field{"BaseViewIndex", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"NumViews", new schema::Primitive{"GLsizei", schema::Primitive::Int32}},
+ },
+ };
+ return &entity;
+}
+
// GlFramebufferTextureMultiviewOVR:
// gles.GlFramebufferTextureMultiviewOVR{[]?,Uint32,Uint32,Uint32,Int32,Int32,Int32}
void GlFramebufferTextureMultiviewOVR::Encode(Encoder* e) const {
@@ -11330,6 +11836,33 @@
return &entity;
}
+// GlGetFloati_vOES:
+// gles.GlGetFloati_vOES{[]?,Uint32,Uint32,$}
+void GlGetFloati_vOES::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mTarget);
+ e->Uint32(this->mIndex);
+ e->Struct(this->mData);
+}
+const schema::Entity* GlGetFloati_vOES::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlGetFloati_vOES",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Target", new schema::Primitive{"GLenum", schema::Primitive::Uint32}},
+ schema::Field{"Index", new schema::Primitive{"GLuint", schema::Primitive::Uint32}},
+ schema::Field{"Data", new schema::Struct{ GLfloat__P::StaticSchema()}},
+ },
+ };
+ return &entity;
+}
+
// GlGetFloatv:
// gles.GlGetFloatv{[]?,Uint32,$}
const schema::Entity* GlGetFloatv::StaticSchema() {
@@ -11486,6 +12019,23 @@
return &entity;
}
+// GlGetFramebufferPixelLocalStorageSizeEXT:
+// gles.GlGetFramebufferPixelLocalStorageSizeEXT{[]?,Uint32,Int32}
+const schema::Entity* GlGetFramebufferPixelLocalStorageSizeEXT::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlGetFramebufferPixelLocalStorageSizeEXT",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Target", new schema::Primitive{"GLuint", schema::Primitive::Uint32}},
+ schema::Field{"Result", new schema::Primitive{"GLsizei", schema::Primitive::Int32}},
+ },
+ };
+ return &entity;
+}
+
// GlGetGraphicsResetStatus:
// gles.GlGetGraphicsResetStatus{[]?,Uint32}
const schema::Entity* GlGetGraphicsResetStatus::StaticSchema() {
@@ -14432,6 +14982,23 @@
return &entity;
}
+// GlGetTextureHandleIMG:
+// gles.GlGetTextureHandleIMG{[]?,Uint32,Uint64}
+const schema::Entity* GlGetTextureHandleIMG::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlGetTextureHandleIMG",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Texture", new schema::Primitive{"GLuint", schema::Primitive::Uint32}},
+ schema::Field{"Result", new schema::Primitive{"GLuint64", schema::Primitive::Uint64}},
+ },
+ };
+ return &entity;
+}
+
// GlGetTextureHandleNV:
// gles.GlGetTextureHandleNV{[]?,Uint32,Uint64}
const schema::Entity* GlGetTextureHandleNV::StaticSchema() {
@@ -14449,6 +15016,33 @@
return &entity;
}
+// GlGetTextureSamplerHandleIMG:
+// gles.GlGetTextureSamplerHandleIMG{[]?,Uint32,Uint32,Uint64}
+void GlGetTextureSamplerHandleIMG::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mTexture);
+ e->Uint32(this->mSampler);
+ e->Uint64(this->mResult);
+}
+const schema::Entity* GlGetTextureSamplerHandleIMG::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlGetTextureSamplerHandleIMG",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Texture", new schema::Primitive{"GLuint", schema::Primitive::Uint32}},
+ schema::Field{"Sampler", new schema::Primitive{"GLuint", schema::Primitive::Uint32}},
+ schema::Field{"Result", new schema::Primitive{"GLuint64", schema::Primitive::Uint64}},
+ },
+ };
+ return &entity;
+}
+
// GlGetTextureSamplerHandleNV:
// gles.GlGetTextureSamplerHandleNV{[]?,Uint32,Uint32,Uint64}
void GlGetTextureSamplerHandleNV::Encode(Encoder* e) const {
@@ -14666,6 +15260,33 @@
return &entity;
}
+// GlGetUniformi64vNV:
+// gles.GlGetUniformi64vNV{[]?,Uint32,Int32,$}
+void GlGetUniformi64vNV::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mProgram);
+ e->Int32(this->mLocation);
+ e->Struct(this->mParams);
+}
+const schema::Entity* GlGetUniformi64vNV::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlGetUniformi64vNV",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Program", new schema::Primitive{"GLuint", schema::Primitive::Uint32}},
+ schema::Field{"Location", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"Params", new schema::Struct{ GLint64EXT__P::StaticSchema()}},
+ },
+ };
+ return &entity;
+}
+
// GlGetUniformiv:
// gles.GlGetUniformiv{[]?,Uint32,Int32,$}
void GlGetUniformiv::Encode(Encoder* e) const {
@@ -18471,6 +19092,33 @@
return &entity;
}
+// GlPolygonOffsetClampEXT:
+// gles.GlPolygonOffsetClampEXT{[]?,Float32,Float32,Float32}
+void GlPolygonOffsetClampEXT::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Float32(this->mFactor);
+ e->Float32(this->mUnits);
+ e->Float32(this->mClamp);
+}
+const schema::Entity* GlPolygonOffsetClampEXT::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlPolygonOffsetClampEXT",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Factor", new schema::Primitive{"GLfloat", schema::Primitive::Float32}},
+ schema::Field{"Units", new schema::Primitive{"GLfloat", schema::Primitive::Float32}},
+ schema::Field{"Clamp", new schema::Primitive{"GLfloat", schema::Primitive::Float32}},
+ },
+ };
+ return &entity;
+}
+
// GlPolygonOffsetx:
// gles.GlPolygonOffsetx{[]?,Int32,Int32}
const schema::Entity* GlPolygonOffsetx::StaticSchema() {
@@ -18958,6 +19606,62 @@
return &entity;
}
+// GlProgramUniform1i64NV:
+// gles.GlProgramUniform1i64NV{[]?,Uint32,Int32,Int64}
+void GlProgramUniform1i64NV::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mProgram);
+ e->Int32(this->mLocation);
+ e->Int64(this->mX);
+}
+const schema::Entity* GlProgramUniform1i64NV::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlProgramUniform1i64NV",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Program", new schema::Primitive{"GLuint", schema::Primitive::Uint32}},
+ schema::Field{"Location", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"X", new schema::Primitive{"GLint64EXT", schema::Primitive::Int64}},
+ },
+ };
+ return &entity;
+}
+
+// GlProgramUniform1i64vNV:
+// gles.GlProgramUniform1i64vNV{[]?,Uint32,Int32,Int32,$}
+void GlProgramUniform1i64vNV::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mProgram);
+ e->Int32(this->mLocation);
+ e->Int32(this->mCount);
+ e->Struct(this->mValue);
+}
+const schema::Entity* GlProgramUniform1i64vNV::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlProgramUniform1i64vNV",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Program", new schema::Primitive{"GLuint", schema::Primitive::Uint32}},
+ schema::Field{"Location", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"Count", new schema::Primitive{"GLsizei", schema::Primitive::Int32}},
+ schema::Field{"Value", new schema::Struct{ GLint64EXT__CP::StaticSchema()}},
+ },
+ };
+ return &entity;
+}
+
// GlProgramUniform1iEXT:
// gles.GlProgramUniform1iEXT{[]?,Uint32,Int32,Int32}
void GlProgramUniform1iEXT::Encode(Encoder* e) const {
@@ -19070,6 +19774,62 @@
return &entity;
}
+// GlProgramUniform1ui64NV:
+// gles.GlProgramUniform1ui64NV{[]?,Uint32,Int32,Uint64}
+void GlProgramUniform1ui64NV::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mProgram);
+ e->Int32(this->mLocation);
+ e->Uint64(this->mX);
+}
+const schema::Entity* GlProgramUniform1ui64NV::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlProgramUniform1ui64NV",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Program", new schema::Primitive{"GLuint", schema::Primitive::Uint32}},
+ schema::Field{"Location", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"X", new schema::Primitive{"GLuint64EXT", schema::Primitive::Uint64}},
+ },
+ };
+ return &entity;
+}
+
+// GlProgramUniform1ui64vNV:
+// gles.GlProgramUniform1ui64vNV{[]?,Uint32,Int32,Int32,$}
+void GlProgramUniform1ui64vNV::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mProgram);
+ e->Int32(this->mLocation);
+ e->Int32(this->mCount);
+ e->Struct(this->mValue);
+}
+const schema::Entity* GlProgramUniform1ui64vNV::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlProgramUniform1ui64vNV",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Program", new schema::Primitive{"GLuint", schema::Primitive::Uint32}},
+ schema::Field{"Location", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"Count", new schema::Primitive{"GLsizei", schema::Primitive::Int32}},
+ schema::Field{"Value", new schema::Struct{ GLuint64EXT__CP::StaticSchema()}},
+ },
+ };
+ return &entity;
+}
+
// GlProgramUniform1uiEXT:
// gles.GlProgramUniform1uiEXT{[]?,Uint32,Int32,Uint32}
void GlProgramUniform1uiEXT::Encode(Encoder* e) const {
@@ -19300,6 +20060,64 @@
return &entity;
}
+// GlProgramUniform2i64NV:
+// gles.GlProgramUniform2i64NV{[]?,Uint32,Int32,Int64,Int64}
+void GlProgramUniform2i64NV::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mProgram);
+ e->Int32(this->mLocation);
+ e->Int64(this->mX);
+ e->Int64(this->mY);
+}
+const schema::Entity* GlProgramUniform2i64NV::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlProgramUniform2i64NV",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Program", new schema::Primitive{"GLuint", schema::Primitive::Uint32}},
+ schema::Field{"Location", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"X", new schema::Primitive{"GLint64EXT", schema::Primitive::Int64}},
+ schema::Field{"Y", new schema::Primitive{"GLint64EXT", schema::Primitive::Int64}},
+ },
+ };
+ return &entity;
+}
+
+// GlProgramUniform2i64vNV:
+// gles.GlProgramUniform2i64vNV{[]?,Uint32,Int32,Int32,$}
+void GlProgramUniform2i64vNV::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mProgram);
+ e->Int32(this->mLocation);
+ e->Int32(this->mCount);
+ e->Struct(this->mValue);
+}
+const schema::Entity* GlProgramUniform2i64vNV::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlProgramUniform2i64vNV",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Program", new schema::Primitive{"GLuint", schema::Primitive::Uint32}},
+ schema::Field{"Location", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"Count", new schema::Primitive{"GLsizei", schema::Primitive::Int32}},
+ schema::Field{"Value", new schema::Struct{ GLint64EXT__CP::StaticSchema()}},
+ },
+ };
+ return &entity;
+}
+
// GlProgramUniform2iEXT:
// gles.GlProgramUniform2iEXT{[]?,Uint32,Int32,Int32,Int32}
void GlProgramUniform2iEXT::Encode(Encoder* e) const {
@@ -19416,6 +20234,64 @@
return &entity;
}
+// GlProgramUniform2ui64NV:
+// gles.GlProgramUniform2ui64NV{[]?,Uint32,Int32,Uint64,Uint64}
+void GlProgramUniform2ui64NV::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mProgram);
+ e->Int32(this->mLocation);
+ e->Uint64(this->mX);
+ e->Uint64(this->mY);
+}
+const schema::Entity* GlProgramUniform2ui64NV::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlProgramUniform2ui64NV",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Program", new schema::Primitive{"GLuint", schema::Primitive::Uint32}},
+ schema::Field{"Location", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"X", new schema::Primitive{"GLuint64EXT", schema::Primitive::Uint64}},
+ schema::Field{"Y", new schema::Primitive{"GLuint64EXT", schema::Primitive::Uint64}},
+ },
+ };
+ return &entity;
+}
+
+// GlProgramUniform2ui64vNV:
+// gles.GlProgramUniform2ui64vNV{[]?,Uint32,Int32,Int32,$}
+void GlProgramUniform2ui64vNV::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mProgram);
+ e->Int32(this->mLocation);
+ e->Int32(this->mCount);
+ e->Struct(this->mValue);
+}
+const schema::Entity* GlProgramUniform2ui64vNV::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlProgramUniform2ui64vNV",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Program", new schema::Primitive{"GLuint", schema::Primitive::Uint32}},
+ schema::Field{"Location", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"Count", new schema::Primitive{"GLsizei", schema::Primitive::Int32}},
+ schema::Field{"Value", new schema::Struct{ GLuint64EXT__CP::StaticSchema()}},
+ },
+ };
+ return &entity;
+}
+
// GlProgramUniform2uiEXT:
// gles.GlProgramUniform2uiEXT{[]?,Uint32,Int32,Uint32,Uint32}
void GlProgramUniform2uiEXT::Encode(Encoder* e) const {
@@ -19654,6 +20530,66 @@
return &entity;
}
+// GlProgramUniform3i64NV:
+// gles.GlProgramUniform3i64NV{[]?,Uint32,Int32,Int64,Int64,Int64}
+void GlProgramUniform3i64NV::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mProgram);
+ e->Int32(this->mLocation);
+ e->Int64(this->mX);
+ e->Int64(this->mY);
+ e->Int64(this->mZ);
+}
+const schema::Entity* GlProgramUniform3i64NV::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlProgramUniform3i64NV",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Program", new schema::Primitive{"GLuint", schema::Primitive::Uint32}},
+ schema::Field{"Location", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"X", new schema::Primitive{"GLint64EXT", schema::Primitive::Int64}},
+ schema::Field{"Y", new schema::Primitive{"GLint64EXT", schema::Primitive::Int64}},
+ schema::Field{"Z", new schema::Primitive{"GLint64EXT", schema::Primitive::Int64}},
+ },
+ };
+ return &entity;
+}
+
+// GlProgramUniform3i64vNV:
+// gles.GlProgramUniform3i64vNV{[]?,Uint32,Int32,Int32,$}
+void GlProgramUniform3i64vNV::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mProgram);
+ e->Int32(this->mLocation);
+ e->Int32(this->mCount);
+ e->Struct(this->mValue);
+}
+const schema::Entity* GlProgramUniform3i64vNV::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlProgramUniform3i64vNV",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Program", new schema::Primitive{"GLuint", schema::Primitive::Uint32}},
+ schema::Field{"Location", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"Count", new schema::Primitive{"GLsizei", schema::Primitive::Int32}},
+ schema::Field{"Value", new schema::Struct{ GLint64EXT__CP::StaticSchema()}},
+ },
+ };
+ return &entity;
+}
+
// GlProgramUniform3iEXT:
// gles.GlProgramUniform3iEXT{[]?,Uint32,Int32,Int32,Int32,Int32}
void GlProgramUniform3iEXT::Encode(Encoder* e) const {
@@ -19774,6 +20710,66 @@
return &entity;
}
+// GlProgramUniform3ui64NV:
+// gles.GlProgramUniform3ui64NV{[]?,Uint32,Int32,Uint64,Uint64,Uint64}
+void GlProgramUniform3ui64NV::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mProgram);
+ e->Int32(this->mLocation);
+ e->Uint64(this->mX);
+ e->Uint64(this->mY);
+ e->Uint64(this->mZ);
+}
+const schema::Entity* GlProgramUniform3ui64NV::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlProgramUniform3ui64NV",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Program", new schema::Primitive{"GLuint", schema::Primitive::Uint32}},
+ schema::Field{"Location", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"X", new schema::Primitive{"GLuint64EXT", schema::Primitive::Uint64}},
+ schema::Field{"Y", new schema::Primitive{"GLuint64EXT", schema::Primitive::Uint64}},
+ schema::Field{"Z", new schema::Primitive{"GLuint64EXT", schema::Primitive::Uint64}},
+ },
+ };
+ return &entity;
+}
+
+// GlProgramUniform3ui64vNV:
+// gles.GlProgramUniform3ui64vNV{[]?,Uint32,Int32,Int32,$}
+void GlProgramUniform3ui64vNV::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mProgram);
+ e->Int32(this->mLocation);
+ e->Int32(this->mCount);
+ e->Struct(this->mValue);
+}
+const schema::Entity* GlProgramUniform3ui64vNV::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlProgramUniform3ui64vNV",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Program", new schema::Primitive{"GLuint", schema::Primitive::Uint32}},
+ schema::Field{"Location", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"Count", new schema::Primitive{"GLsizei", schema::Primitive::Int32}},
+ schema::Field{"Value", new schema::Struct{ GLuint64EXT__CP::StaticSchema()}},
+ },
+ };
+ return &entity;
+}
+
// GlProgramUniform3uiEXT:
// gles.GlProgramUniform3uiEXT{[]?,Uint32,Int32,Uint32,Uint32,Uint32}
void GlProgramUniform3uiEXT::Encode(Encoder* e) const {
@@ -20020,6 +21016,68 @@
return &entity;
}
+// GlProgramUniform4i64NV:
+// gles.GlProgramUniform4i64NV{[]?,Uint32,Int32,Int64,Int64,Int64,Int64}
+void GlProgramUniform4i64NV::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mProgram);
+ e->Int32(this->mLocation);
+ e->Int64(this->mX);
+ e->Int64(this->mY);
+ e->Int64(this->mZ);
+ e->Int64(this->mW);
+}
+const schema::Entity* GlProgramUniform4i64NV::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlProgramUniform4i64NV",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Program", new schema::Primitive{"GLuint", schema::Primitive::Uint32}},
+ schema::Field{"Location", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"X", new schema::Primitive{"GLint64EXT", schema::Primitive::Int64}},
+ schema::Field{"Y", new schema::Primitive{"GLint64EXT", schema::Primitive::Int64}},
+ schema::Field{"Z", new schema::Primitive{"GLint64EXT", schema::Primitive::Int64}},
+ schema::Field{"W", new schema::Primitive{"GLint64EXT", schema::Primitive::Int64}},
+ },
+ };
+ return &entity;
+}
+
+// GlProgramUniform4i64vNV:
+// gles.GlProgramUniform4i64vNV{[]?,Uint32,Int32,Int32,$}
+void GlProgramUniform4i64vNV::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mProgram);
+ e->Int32(this->mLocation);
+ e->Int32(this->mCount);
+ e->Struct(this->mValue);
+}
+const schema::Entity* GlProgramUniform4i64vNV::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlProgramUniform4i64vNV",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Program", new schema::Primitive{"GLuint", schema::Primitive::Uint32}},
+ schema::Field{"Location", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"Count", new schema::Primitive{"GLsizei", schema::Primitive::Int32}},
+ schema::Field{"Value", new schema::Struct{ GLint64EXT__CP::StaticSchema()}},
+ },
+ };
+ return &entity;
+}
+
// GlProgramUniform4iEXT:
// gles.GlProgramUniform4iEXT{[]?,Uint32,Int32,Int32,Int32,Int32,Int32}
void GlProgramUniform4iEXT::Encode(Encoder* e) const {
@@ -20144,6 +21202,68 @@
return &entity;
}
+// GlProgramUniform4ui64NV:
+// gles.GlProgramUniform4ui64NV{[]?,Uint32,Int32,Uint64,Uint64,Uint64,Uint64}
+void GlProgramUniform4ui64NV::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mProgram);
+ e->Int32(this->mLocation);
+ e->Uint64(this->mX);
+ e->Uint64(this->mY);
+ e->Uint64(this->mZ);
+ e->Uint64(this->mW);
+}
+const schema::Entity* GlProgramUniform4ui64NV::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlProgramUniform4ui64NV",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Program", new schema::Primitive{"GLuint", schema::Primitive::Uint32}},
+ schema::Field{"Location", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"X", new schema::Primitive{"GLuint64EXT", schema::Primitive::Uint64}},
+ schema::Field{"Y", new schema::Primitive{"GLuint64EXT", schema::Primitive::Uint64}},
+ schema::Field{"Z", new schema::Primitive{"GLuint64EXT", schema::Primitive::Uint64}},
+ schema::Field{"W", new schema::Primitive{"GLuint64EXT", schema::Primitive::Uint64}},
+ },
+ };
+ return &entity;
+}
+
+// GlProgramUniform4ui64vNV:
+// gles.GlProgramUniform4ui64vNV{[]?,Uint32,Int32,Int32,$}
+void GlProgramUniform4ui64vNV::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mProgram);
+ e->Int32(this->mLocation);
+ e->Int32(this->mCount);
+ e->Struct(this->mValue);
+}
+const schema::Entity* GlProgramUniform4ui64vNV::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlProgramUniform4ui64vNV",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Program", new schema::Primitive{"GLuint", schema::Primitive::Uint32}},
+ schema::Field{"Location", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"Count", new schema::Primitive{"GLsizei", schema::Primitive::Int32}},
+ schema::Field{"Value", new schema::Struct{ GLuint64EXT__CP::StaticSchema()}},
+ },
+ };
+ return &entity;
+}
+
// GlProgramUniform4uiEXT:
// gles.GlProgramUniform4uiEXT{[]?,Uint32,Int32,Uint32,Uint32,Uint32,Uint32}
void GlProgramUniform4uiEXT::Encode(Encoder* e) const {
@@ -20235,6 +21355,33 @@
return &entity;
}
+// GlProgramUniformHandleui64IMG:
+// gles.GlProgramUniformHandleui64IMG{[]?,Uint32,Int32,Uint64}
+void GlProgramUniformHandleui64IMG::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mProgram);
+ e->Int32(this->mLocation);
+ e->Uint64(this->mValue);
+}
+const schema::Entity* GlProgramUniformHandleui64IMG::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlProgramUniformHandleui64IMG",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Program", new schema::Primitive{"GLuint", schema::Primitive::Uint32}},
+ schema::Field{"Location", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"Value", new schema::Primitive{"GLuint64", schema::Primitive::Uint64}},
+ },
+ };
+ return &entity;
+}
+
// GlProgramUniformHandleui64NV:
// gles.GlProgramUniformHandleui64NV{[]?,Uint32,Int32,Uint64}
void GlProgramUniformHandleui64NV::Encode(Encoder* e) const {
@@ -20262,6 +21409,35 @@
return &entity;
}
+// GlProgramUniformHandleui64vIMG:
+// gles.GlProgramUniformHandleui64vIMG{[]?,Uint32,Int32,Int32,$}
+void GlProgramUniformHandleui64vIMG::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mProgram);
+ e->Int32(this->mLocation);
+ e->Int32(this->mCount);
+ e->Struct(this->mValues);
+}
+const schema::Entity* GlProgramUniformHandleui64vIMG::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlProgramUniformHandleui64vIMG",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Program", new schema::Primitive{"GLuint", schema::Primitive::Uint32}},
+ schema::Field{"Location", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"Count", new schema::Primitive{"GLsizei", schema::Primitive::Int32}},
+ schema::Field{"Values", new schema::Struct{ GLuint64__CP::StaticSchema()}},
+ },
+ };
+ return &entity;
+}
+
// GlProgramUniformHandleui64vNV:
// gles.GlProgramUniformHandleui64vNV{[]?,Uint32,Int32,Int32,$}
void GlProgramUniformHandleui64vNV::Encode(Encoder* e) const {
@@ -22061,6 +23237,33 @@
return &entity;
}
+// GlScissorArrayvOES:
+// gles.GlScissorArrayvOES{[]?,Uint32,Int32,$}
+void GlScissorArrayvOES::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mFirst);
+ e->Int32(this->mCount);
+ e->Struct(this->mV);
+}
+const schema::Entity* GlScissorArrayvOES::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlScissorArrayvOES",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"First", new schema::Primitive{"GLuint", schema::Primitive::Uint32}},
+ schema::Field{"Count", new schema::Primitive{"GLsizei", schema::Primitive::Int32}},
+ schema::Field{"V", new schema::Struct{ GLint__CP::StaticSchema()}},
+ },
+ };
+ return &entity;
+}
+
// GlScissorIndexedNV:
// gles.GlScissorIndexedNV{[]?,Uint32,Int32,Int32,Int32,Int32}
void GlScissorIndexedNV::Encode(Encoder* e) const {
@@ -22092,6 +23295,37 @@
return &entity;
}
+// GlScissorIndexedOES:
+// gles.GlScissorIndexedOES{[]?,Uint32,Int32,Int32,Int32,Int32}
+void GlScissorIndexedOES::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mIndex);
+ e->Int32(this->mLeft);
+ e->Int32(this->mBottom);
+ e->Int32(this->mWidth);
+ e->Int32(this->mHeight);
+}
+const schema::Entity* GlScissorIndexedOES::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlScissorIndexedOES",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Index", new schema::Primitive{"GLuint", schema::Primitive::Uint32}},
+ schema::Field{"Left", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"Bottom", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"Width", new schema::Primitive{"GLsizei", schema::Primitive::Int32}},
+ schema::Field{"Height", new schema::Primitive{"GLsizei", schema::Primitive::Int32}},
+ },
+ };
+ return &entity;
+}
+
// GlScissorIndexedvNV:
// gles.GlScissorIndexedvNV{[]?,Uint32,$}
const schema::Entity* GlScissorIndexedvNV::StaticSchema() {
@@ -22109,6 +23343,23 @@
return &entity;
}
+// GlScissorIndexedvOES:
+// gles.GlScissorIndexedvOES{[]?,Uint32,$}
+const schema::Entity* GlScissorIndexedvOES::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlScissorIndexedvOES",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Index", new schema::Primitive{"GLuint", schema::Primitive::Uint32}},
+ schema::Field{"V", new schema::Struct{ GLint__CP::StaticSchema()}},
+ },
+ };
+ return &entity;
+}
+
// GlSelectPerfMonitorCountersAMD:
// gles.GlSelectPerfMonitorCountersAMD{[]?,Uint32,Uint8,Uint32,Int32,$}
void GlSelectPerfMonitorCountersAMD::Encode(Encoder* e) const {
@@ -24660,6 +25911,50 @@
return &entity;
}
+// GlUniform1i64NV:
+// gles.GlUniform1i64NV{[]?,Int32,Int64}
+const schema::Entity* GlUniform1i64NV::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlUniform1i64NV",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Location", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"X", new schema::Primitive{"GLint64EXT", schema::Primitive::Int64}},
+ },
+ };
+ return &entity;
+}
+
+// GlUniform1i64vNV:
+// gles.GlUniform1i64vNV{[]?,Int32,Int32,$}
+void GlUniform1i64vNV::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Int32(this->mLocation);
+ e->Int32(this->mCount);
+ e->Struct(this->mValue);
+}
+const schema::Entity* GlUniform1i64vNV::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlUniform1i64vNV",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Location", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"Count", new schema::Primitive{"GLsizei", schema::Primitive::Int32}},
+ schema::Field{"Value", new schema::Struct{ GLint64EXT__CP::StaticSchema()}},
+ },
+ };
+ return &entity;
+}
+
// GlUniform1iv:
// gles.GlUniform1iv{[]?,Int32,Int32,$}
void GlUniform1iv::Encode(Encoder* e) const {
@@ -24704,6 +25999,50 @@
return &entity;
}
+// GlUniform1ui64NV:
+// gles.GlUniform1ui64NV{[]?,Int32,Uint64}
+const schema::Entity* GlUniform1ui64NV::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlUniform1ui64NV",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Location", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"X", new schema::Primitive{"GLuint64EXT", schema::Primitive::Uint64}},
+ },
+ };
+ return &entity;
+}
+
+// GlUniform1ui64vNV:
+// gles.GlUniform1ui64vNV{[]?,Int32,Int32,$}
+void GlUniform1ui64vNV::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Int32(this->mLocation);
+ e->Int32(this->mCount);
+ e->Struct(this->mValue);
+}
+const schema::Entity* GlUniform1ui64vNV::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlUniform1ui64vNV",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Location", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"Count", new schema::Primitive{"GLsizei", schema::Primitive::Int32}},
+ schema::Field{"Value", new schema::Struct{ GLuint64EXT__CP::StaticSchema()}},
+ },
+ };
+ return &entity;
+}
+
// GlUniform1uiv:
// gles.GlUniform1uiv{[]?,Int32,Int32,$}
void GlUniform1uiv::Encode(Encoder* e) const {
@@ -24812,6 +26151,60 @@
return &entity;
}
+// GlUniform2i64NV:
+// gles.GlUniform2i64NV{[]?,Int32,Int64,Int64}
+void GlUniform2i64NV::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Int32(this->mLocation);
+ e->Int64(this->mX);
+ e->Int64(this->mY);
+}
+const schema::Entity* GlUniform2i64NV::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlUniform2i64NV",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Location", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"X", new schema::Primitive{"GLint64EXT", schema::Primitive::Int64}},
+ schema::Field{"Y", new schema::Primitive{"GLint64EXT", schema::Primitive::Int64}},
+ },
+ };
+ return &entity;
+}
+
+// GlUniform2i64vNV:
+// gles.GlUniform2i64vNV{[]?,Int32,Int32,$}
+void GlUniform2i64vNV::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Int32(this->mLocation);
+ e->Int32(this->mCount);
+ e->Struct(this->mValue);
+}
+const schema::Entity* GlUniform2i64vNV::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlUniform2i64vNV",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Location", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"Count", new schema::Primitive{"GLsizei", schema::Primitive::Int32}},
+ schema::Field{"Value", new schema::Struct{ GLint64EXT__CP::StaticSchema()}},
+ },
+ };
+ return &entity;
+}
+
// GlUniform2iv:
// gles.GlUniform2iv{[]?,Int32,Int32,$}
void GlUniform2iv::Encode(Encoder* e) const {
@@ -24866,6 +26259,60 @@
return &entity;
}
+// GlUniform2ui64NV:
+// gles.GlUniform2ui64NV{[]?,Int32,Uint64,Uint64}
+void GlUniform2ui64NV::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Int32(this->mLocation);
+ e->Uint64(this->mX);
+ e->Uint64(this->mY);
+}
+const schema::Entity* GlUniform2ui64NV::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlUniform2ui64NV",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Location", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"X", new schema::Primitive{"GLuint64EXT", schema::Primitive::Uint64}},
+ schema::Field{"Y", new schema::Primitive{"GLuint64EXT", schema::Primitive::Uint64}},
+ },
+ };
+ return &entity;
+}
+
+// GlUniform2ui64vNV:
+// gles.GlUniform2ui64vNV{[]?,Int32,Int32,$}
+void GlUniform2ui64vNV::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Int32(this->mLocation);
+ e->Int32(this->mCount);
+ e->Struct(this->mValue);
+}
+const schema::Entity* GlUniform2ui64vNV::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlUniform2ui64vNV",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Location", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"Count", new schema::Primitive{"GLsizei", schema::Primitive::Int32}},
+ schema::Field{"Value", new schema::Struct{ GLuint64EXT__CP::StaticSchema()}},
+ },
+ };
+ return &entity;
+}
+
// GlUniform2uiv:
// gles.GlUniform2uiv{[]?,Int32,Int32,$}
void GlUniform2uiv::Encode(Encoder* e) const {
@@ -24978,6 +26425,62 @@
return &entity;
}
+// GlUniform3i64NV:
+// gles.GlUniform3i64NV{[]?,Int32,Int64,Int64,Int64}
+void GlUniform3i64NV::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Int32(this->mLocation);
+ e->Int64(this->mX);
+ e->Int64(this->mY);
+ e->Int64(this->mZ);
+}
+const schema::Entity* GlUniform3i64NV::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlUniform3i64NV",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Location", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"X", new schema::Primitive{"GLint64EXT", schema::Primitive::Int64}},
+ schema::Field{"Y", new schema::Primitive{"GLint64EXT", schema::Primitive::Int64}},
+ schema::Field{"Z", new schema::Primitive{"GLint64EXT", schema::Primitive::Int64}},
+ },
+ };
+ return &entity;
+}
+
+// GlUniform3i64vNV:
+// gles.GlUniform3i64vNV{[]?,Int32,Int32,$}
+void GlUniform3i64vNV::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Int32(this->mLocation);
+ e->Int32(this->mCount);
+ e->Struct(this->mValue);
+}
+const schema::Entity* GlUniform3i64vNV::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlUniform3i64vNV",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Location", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"Count", new schema::Primitive{"GLsizei", schema::Primitive::Int32}},
+ schema::Field{"Value", new schema::Struct{ GLint64EXT__CP::StaticSchema()}},
+ },
+ };
+ return &entity;
+}
+
// GlUniform3iv:
// gles.GlUniform3iv{[]?,Int32,Int32,$}
void GlUniform3iv::Encode(Encoder* e) const {
@@ -25034,6 +26537,62 @@
return &entity;
}
+// GlUniform3ui64NV:
+// gles.GlUniform3ui64NV{[]?,Int32,Uint64,Uint64,Uint64}
+void GlUniform3ui64NV::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Int32(this->mLocation);
+ e->Uint64(this->mX);
+ e->Uint64(this->mY);
+ e->Uint64(this->mZ);
+}
+const schema::Entity* GlUniform3ui64NV::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlUniform3ui64NV",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Location", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"X", new schema::Primitive{"GLuint64EXT", schema::Primitive::Uint64}},
+ schema::Field{"Y", new schema::Primitive{"GLuint64EXT", schema::Primitive::Uint64}},
+ schema::Field{"Z", new schema::Primitive{"GLuint64EXT", schema::Primitive::Uint64}},
+ },
+ };
+ return &entity;
+}
+
+// GlUniform3ui64vNV:
+// gles.GlUniform3ui64vNV{[]?,Int32,Int32,$}
+void GlUniform3ui64vNV::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Int32(this->mLocation);
+ e->Int32(this->mCount);
+ e->Struct(this->mValue);
+}
+const schema::Entity* GlUniform3ui64vNV::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlUniform3ui64vNV",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Location", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"Count", new schema::Primitive{"GLsizei", schema::Primitive::Int32}},
+ schema::Field{"Value", new schema::Struct{ GLuint64EXT__CP::StaticSchema()}},
+ },
+ };
+ return &entity;
+}
+
// GlUniform3uiv:
// gles.GlUniform3uiv{[]?,Int32,Int32,$}
void GlUniform3uiv::Encode(Encoder* e) const {
@@ -25150,6 +26709,64 @@
return &entity;
}
+// GlUniform4i64NV:
+// gles.GlUniform4i64NV{[]?,Int32,Int64,Int64,Int64,Int64}
+void GlUniform4i64NV::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Int32(this->mLocation);
+ e->Int64(this->mX);
+ e->Int64(this->mY);
+ e->Int64(this->mZ);
+ e->Int64(this->mW);
+}
+const schema::Entity* GlUniform4i64NV::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlUniform4i64NV",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Location", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"X", new schema::Primitive{"GLint64EXT", schema::Primitive::Int64}},
+ schema::Field{"Y", new schema::Primitive{"GLint64EXT", schema::Primitive::Int64}},
+ schema::Field{"Z", new schema::Primitive{"GLint64EXT", schema::Primitive::Int64}},
+ schema::Field{"W", new schema::Primitive{"GLint64EXT", schema::Primitive::Int64}},
+ },
+ };
+ return &entity;
+}
+
+// GlUniform4i64vNV:
+// gles.GlUniform4i64vNV{[]?,Int32,Int32,$}
+void GlUniform4i64vNV::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Int32(this->mLocation);
+ e->Int32(this->mCount);
+ e->Struct(this->mValue);
+}
+const schema::Entity* GlUniform4i64vNV::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlUniform4i64vNV",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Location", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"Count", new schema::Primitive{"GLsizei", schema::Primitive::Int32}},
+ schema::Field{"Value", new schema::Struct{ GLint64EXT__CP::StaticSchema()}},
+ },
+ };
+ return &entity;
+}
+
// GlUniform4iv:
// gles.GlUniform4iv{[]?,Int32,Int32,$}
void GlUniform4iv::Encode(Encoder* e) const {
@@ -25208,6 +26825,64 @@
return &entity;
}
+// GlUniform4ui64NV:
+// gles.GlUniform4ui64NV{[]?,Int32,Uint64,Uint64,Uint64,Uint64}
+void GlUniform4ui64NV::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Int32(this->mLocation);
+ e->Uint64(this->mX);
+ e->Uint64(this->mY);
+ e->Uint64(this->mZ);
+ e->Uint64(this->mW);
+}
+const schema::Entity* GlUniform4ui64NV::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlUniform4ui64NV",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Location", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"X", new schema::Primitive{"GLuint64EXT", schema::Primitive::Uint64}},
+ schema::Field{"Y", new schema::Primitive{"GLuint64EXT", schema::Primitive::Uint64}},
+ schema::Field{"Z", new schema::Primitive{"GLuint64EXT", schema::Primitive::Uint64}},
+ schema::Field{"W", new schema::Primitive{"GLuint64EXT", schema::Primitive::Uint64}},
+ },
+ };
+ return &entity;
+}
+
+// GlUniform4ui64vNV:
+// gles.GlUniform4ui64vNV{[]?,Int32,Int32,$}
+void GlUniform4ui64vNV::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Int32(this->mLocation);
+ e->Int32(this->mCount);
+ e->Struct(this->mValue);
+}
+const schema::Entity* GlUniform4ui64vNV::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlUniform4ui64vNV",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Location", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"Count", new schema::Primitive{"GLsizei", schema::Primitive::Int32}},
+ schema::Field{"Value", new schema::Struct{ GLuint64EXT__CP::StaticSchema()}},
+ },
+ };
+ return &entity;
+}
+
// GlUniform4uiv:
// gles.GlUniform4uiv{[]?,Int32,Int32,$}
void GlUniform4uiv::Encode(Encoder* e) const {
@@ -25262,6 +26937,23 @@
return &entity;
}
+// GlUniformHandleui64IMG:
+// gles.GlUniformHandleui64IMG{[]?,Int32,Uint64}
+const schema::Entity* GlUniformHandleui64IMG::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlUniformHandleui64IMG",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Location", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"Value", new schema::Primitive{"GLuint64", schema::Primitive::Uint64}},
+ },
+ };
+ return &entity;
+}
+
// GlUniformHandleui64NV:
// gles.GlUniformHandleui64NV{[]?,Int32,Uint64}
const schema::Entity* GlUniformHandleui64NV::StaticSchema() {
@@ -25279,6 +26971,33 @@
return &entity;
}
+// GlUniformHandleui64vIMG:
+// gles.GlUniformHandleui64vIMG{[]?,Int32,Int32,$}
+void GlUniformHandleui64vIMG::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Int32(this->mLocation);
+ e->Int32(this->mCount);
+ e->Struct(this->mValue);
+}
+const schema::Entity* GlUniformHandleui64vIMG::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlUniformHandleui64vIMG",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Location", new schema::Primitive{"GLint", schema::Primitive::Int32}},
+ schema::Field{"Count", new schema::Primitive{"GLsizei", schema::Primitive::Int32}},
+ schema::Field{"Value", new schema::Struct{ GLuint64__CP::StaticSchema()}},
+ },
+ };
+ return &entity;
+}
+
// GlUniformHandleui64vNV:
// gles.GlUniformHandleui64vNV{[]?,Int32,Int32,$}
void GlUniformHandleui64vNV::Encode(Encoder* e) const {
@@ -26503,6 +28222,33 @@
return &entity;
}
+// GlViewportArrayvOES:
+// gles.GlViewportArrayvOES{[]?,Uint32,Int32,$}
+void GlViewportArrayvOES::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mFirst);
+ e->Int32(this->mCount);
+ e->Struct(this->mV);
+}
+const schema::Entity* GlViewportArrayvOES::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlViewportArrayvOES",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"First", new schema::Primitive{"GLuint", schema::Primitive::Uint32}},
+ schema::Field{"Count", new schema::Primitive{"GLsizei", schema::Primitive::Int32}},
+ schema::Field{"V", new schema::Struct{ GLfloat__CP::StaticSchema()}},
+ },
+ };
+ return &entity;
+}
+
// GlViewportIndexedfNV:
// gles.GlViewportIndexedfNV{[]?,Uint32,Float32,Float32,Float32,Float32}
void GlViewportIndexedfNV::Encode(Encoder* e) const {
@@ -26534,6 +28280,37 @@
return &entity;
}
+// GlViewportIndexedfOES:
+// gles.GlViewportIndexedfOES{[]?,Uint32,Float32,Float32,Float32,Float32}
+void GlViewportIndexedfOES::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mIndex);
+ e->Float32(this->mX);
+ e->Float32(this->mY);
+ e->Float32(this->mW);
+ e->Float32(this->mH);
+}
+const schema::Entity* GlViewportIndexedfOES::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlViewportIndexedfOES",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Index", new schema::Primitive{"GLuint", schema::Primitive::Uint32}},
+ schema::Field{"X", new schema::Primitive{"GLfloat", schema::Primitive::Float32}},
+ schema::Field{"Y", new schema::Primitive{"GLfloat", schema::Primitive::Float32}},
+ schema::Field{"W", new schema::Primitive{"GLfloat", schema::Primitive::Float32}},
+ schema::Field{"H", new schema::Primitive{"GLfloat", schema::Primitive::Float32}},
+ },
+ };
+ return &entity;
+}
+
// GlViewportIndexedfvNV:
// gles.GlViewportIndexedfvNV{[]?,Uint32,$}
const schema::Entity* GlViewportIndexedfvNV::StaticSchema() {
@@ -26551,6 +28328,54 @@
return &entity;
}
+// GlViewportIndexedfvOES:
+// gles.GlViewportIndexedfvOES{[]?,Uint32,$}
+const schema::Entity* GlViewportIndexedfvOES::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlViewportIndexedfvOES",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Index", new schema::Primitive{"GLuint", schema::Primitive::Uint32}},
+ schema::Field{"V", new schema::Struct{ GLfloat__CP::StaticSchema()}},
+ },
+ };
+ return &entity;
+}
+
+// GlViewportSwizzleNV:
+// gles.GlViewportSwizzleNV{[]?,Uint32,Uint32,Uint32,Uint32,Uint32}
+void GlViewportSwizzleNV::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mIndex);
+ e->Uint32(this->mSwizzlex);
+ e->Uint32(this->mSwizzley);
+ e->Uint32(this->mSwizzlez);
+ e->Uint32(this->mSwizzlew);
+}
+const schema::Entity* GlViewportSwizzleNV::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlViewportSwizzleNV",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Index", new schema::Primitive{"GLuint", schema::Primitive::Uint32}},
+ schema::Field{"Swizzlex", new schema::Primitive{"GLenum", schema::Primitive::Uint32}},
+ schema::Field{"Swizzley", new schema::Primitive{"GLenum", schema::Primitive::Uint32}},
+ schema::Field{"Swizzlez", new schema::Primitive{"GLenum", schema::Primitive::Uint32}},
+ schema::Field{"Swizzlew", new schema::Primitive{"GLenum", schema::Primitive::Uint32}},
+ },
+ };
+ return &entity;
+}
+
// GlWaitSync:
// gles.GlWaitSync{[]?,$,Uint32,Uint64}
void GlWaitSync::Encode(Encoder* e) const {
@@ -26694,6 +28519,33 @@
return &entity;
}
+// GlWindowRectanglesEXT:
+// gles.GlWindowRectanglesEXT{[]?,Uint32,Int32,$}
+void GlWindowRectanglesEXT::Encode(Encoder* e) const {
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mMode);
+ e->Int32(this->mCount);
+ e->Struct(this->mBox);
+}
+const schema::Entity* GlWindowRectanglesEXT::StaticSchema() {
+ static schema::Entity entity {
+ "gles",
+ "",
+ "GlWindowRectanglesEXT",
+ "",
+ {
+ schema::Field{"extras", new schema::Slice{"atom.Extras", new schema::Interface{"atom.Extra"}}},
+ schema::Field{"Mode", new schema::Primitive{"GLenum", schema::Primitive::Uint32}},
+ schema::Field{"Count", new schema::Primitive{"GLsizei", schema::Primitive::Int32}},
+ schema::Field{"Box", new schema::Struct{ GLint__CP::StaticSchema()}},
+ },
+ };
+ return &entity;
+}
+
// GlXCreateContext:
// gles.GlXCreateContext{[]?,$,$,$,Bool,$}
void GlXCreateContext::Encode(Encoder* e) const {
diff --git a/cc/gapic/coder/gles.h b/cc/gapic/coder/gles.h
index 4725d85..b72fec6 100644
--- a/cc/gapic/coder/gles.h
+++ b/cc/gapic/coder/gles.h
@@ -59,6 +59,60 @@
int32_t mLocation;
};
+ class AndroidNativeBufferExtra: public Encodable {
+ public:
+ AndroidNativeBufferExtra() = default;
+ AndroidNativeBufferExtra(uint32_t Width, uint32_t Height, uint32_t Stride, uint32_t Format, uint32_t Usage)
+ : mWidth(Width)
+ , mHeight(Height)
+ , mStride(Stride)
+ , mFormat(Format)
+ , mUsage(Usage) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ uint32_t mWidth;
+ uint32_t mHeight;
+ uint32_t mStride;
+ uint32_t mFormat;
+ uint32_t mUsage;
+ };
+
+ class Bool__S: public Encodable {
+ public:
+ Bool__S() = default;
+ Bool__S(memory::SliceInfo SliceInfo)
+ : mSliceInfo(SliceInfo) {}
+ virtual void Encode(Encoder* e) const{
+ e->Struct(this->mSliceInfo);
+ }
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ memory::SliceInfo mSliceInfo;
+ };
+
+ class Bool__P: public Encodable {
+ public:
+ Bool__P() = default;
+ Bool__P(uint64_t Address, uint32_t Pool)
+ : mAddress(Address)
+ , mPool(Pool) {}
+ virtual void Encode(Encoder* e) const{
+ e->Uint64(this->mAddress);
+ e->Uint32(this->mPool);
+ }
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ uint64_t mAddress;
+ uint32_t mPool;
+ };
+
class Vec4f: public Encodable {
public:
Vec4f() = default;
@@ -1026,6 +1080,24 @@
gapic::StaticArray<uint8_t, 4> mElements;
};
+ class GLeglImageOES: public Encodable {
+ public:
+ GLeglImageOES() = default;
+ GLeglImageOES(uint64_t Address, uint32_t Pool)
+ : mAddress(Address)
+ , mPool(Pool) {}
+ virtual void Encode(Encoder* e) const{
+ e->Uint64(this->mAddress);
+ e->Uint32(this->mPool);
+ }
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ uint64_t mAddress;
+ uint32_t mPool;
+ };
+
class GLchar__S: public Encodable {
public:
GLchar__S() = default;
@@ -1593,7 +1665,7 @@
class EglCreateContext: public Encodable {
public:
EglCreateContext() = default;
- EglCreateContext(const gapic::Vector<gapic::Encodable*>& extras, EGLDisplay Display, EGLConfig Config, EGLContext ShareContext, EGLint__P AttribList, EGLContext Result)
+ EglCreateContext(const gapic::Vector<gapic::Encodable*>& extras, EGLDisplay Display, EGLConfig Config, EGLContext ShareContext, EGLint__CP AttribList, EGLContext Result)
: mextras(extras)
, mDisplay(Display)
, mConfig(Config)
@@ -1609,7 +1681,7 @@
EGLDisplay mDisplay;
EGLConfig mConfig;
EGLContext mShareContext;
- EGLint__P mAttribList;
+ EGLint__CP mAttribList;
EGLContext mResult;
};
@@ -1638,6 +1710,30 @@
EGLImageKHR mResult;
};
+ class EglCreateNativeClientBufferANDROID: public Encodable {
+ public:
+ EglCreateNativeClientBufferANDROID() = default;
+ EglCreateNativeClientBufferANDROID(const gapic::Vector<gapic::Encodable*>& extras, EGLint__CP AttribList, EGLClientBuffer Result)
+ : mextras(extras)
+ , mAttribList(AttribList)
+ , mResult(Result) {}
+ virtual void Encode(Encoder* e) const{
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Struct(this->mAttribList);
+ e->Struct(this->mResult);
+ }
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ EGLint__CP mAttribList;
+ EGLClientBuffer mResult;
+ };
+
class EglCreatePbufferFromClientBuffer: public Encodable {
public:
EglCreatePbufferFromClientBuffer() = default;
@@ -2667,24 +2763,6 @@
uint32_t mPool;
};
- class GLeglImageOES: public Encodable {
- public:
- GLeglImageOES() = default;
- GLeglImageOES(uint64_t Address, uint32_t Pool)
- : mAddress(Address)
- , mPool(Pool) {}
- virtual void Encode(Encoder* e) const{
- e->Uint64(this->mAddress);
- e->Uint32(this->mPool);
- }
- virtual const schema::Entity* Schema() const {
- return StaticSchema();
- }
- static const schema::Entity* StaticSchema();
- uint64_t mAddress;
- uint32_t mPool;
- };
-
class GLenum__S: public Encodable {
public:
GLenum__S() = default;
@@ -2871,6 +2949,57 @@
uint32_t mPool;
};
+ class GLint64EXT__S: public Encodable {
+ public:
+ GLint64EXT__S() = default;
+ GLint64EXT__S(memory::SliceInfo SliceInfo)
+ : mSliceInfo(SliceInfo) {}
+ virtual void Encode(Encoder* e) const{
+ e->Struct(this->mSliceInfo);
+ }
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ memory::SliceInfo mSliceInfo;
+ };
+
+ class GLint64EXT__P: public Encodable {
+ public:
+ GLint64EXT__P() = default;
+ GLint64EXT__P(uint64_t Address, uint32_t Pool)
+ : mAddress(Address)
+ , mPool(Pool) {}
+ virtual void Encode(Encoder* e) const{
+ e->Uint64(this->mAddress);
+ e->Uint32(this->mPool);
+ }
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ uint64_t mAddress;
+ uint32_t mPool;
+ };
+
+ class GLint64EXT__CP: public Encodable {
+ public:
+ GLint64EXT__CP() = default;
+ GLint64EXT__CP(uint64_t Address, uint32_t Pool)
+ : mAddress(Address)
+ , mPool(Pool) {}
+ virtual void Encode(Encoder* e) const{
+ e->Uint64(this->mAddress);
+ e->Uint32(this->mPool);
+ }
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ uint64_t mAddress;
+ uint32_t mPool;
+ };
+
class GLint64__S: public Encodable {
public:
GLint64__S() = default;
@@ -3142,6 +3271,57 @@
uint32_t mPool;
};
+ class GLuint64EXT__S: public Encodable {
+ public:
+ GLuint64EXT__S() = default;
+ GLuint64EXT__S(memory::SliceInfo SliceInfo)
+ : mSliceInfo(SliceInfo) {}
+ virtual void Encode(Encoder* e) const{
+ e->Struct(this->mSliceInfo);
+ }
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ memory::SliceInfo mSliceInfo;
+ };
+
+ class GLuint64EXT__P: public Encodable {
+ public:
+ GLuint64EXT__P() = default;
+ GLuint64EXT__P(uint64_t Address, uint32_t Pool)
+ : mAddress(Address)
+ , mPool(Pool) {}
+ virtual void Encode(Encoder* e) const{
+ e->Uint64(this->mAddress);
+ e->Uint32(this->mPool);
+ }
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ uint64_t mAddress;
+ uint32_t mPool;
+ };
+
+ class GLuint64EXT__CP: public Encodable {
+ public:
+ GLuint64EXT__CP() = default;
+ GLuint64EXT__CP(uint64_t Address, uint32_t Pool)
+ : mAddress(Address)
+ , mPool(Pool) {}
+ virtual void Encode(Encoder* e) const{
+ e->Uint64(this->mAddress);
+ e->Uint32(this->mPool);
+ }
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ uint64_t mAddress;
+ uint32_t mPool;
+ };
+
class GLuint64__S: public Encodable {
public:
GLuint64__S() = default;
@@ -5080,6 +5260,25 @@
int32_t mDepth;
};
+ class GlClearPixelLocalStorageuiEXT: public Encodable {
+ public:
+ GlClearPixelLocalStorageuiEXT() = default;
+ GlClearPixelLocalStorageuiEXT(const gapic::Vector<gapic::Encodable*>& extras, int32_t Offset, int32_t N, GLuint__CP Values)
+ : mextras(extras)
+ , mOffset(Offset)
+ , mN(N)
+ , mValues(Values) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ int32_t mOffset;
+ int32_t mN;
+ GLuint__CP mValues;
+ };
+
class GlClearStencil: public Encodable {
public:
GlClearStencil() = default;
@@ -5101,6 +5300,64 @@
int32_t mStencil;
};
+ class GlClearTexImageEXT: public Encodable {
+ public:
+ GlClearTexImageEXT() = default;
+ GlClearTexImageEXT(const gapic::Vector<gapic::Encodable*>& extras, uint32_t Texture, int32_t Level, uint32_t Format, uint32_t Type, Void__CP Data)
+ : mextras(extras)
+ , mTexture(Texture)
+ , mLevel(Level)
+ , mFormat(Format)
+ , mType(Type)
+ , mData(Data) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mTexture;
+ int32_t mLevel;
+ uint32_t mFormat;
+ uint32_t mType;
+ Void__CP mData;
+ };
+
+ class GlClearTexSubImageEXT: public Encodable {
+ public:
+ GlClearTexSubImageEXT() = default;
+ GlClearTexSubImageEXT(const gapic::Vector<gapic::Encodable*>& extras, uint32_t Texture, int32_t Level, int32_t Xoffset, int32_t Yoffset, int32_t Zoffset, int32_t Width, int32_t Height, int32_t Depth, uint32_t Format, uint32_t Type, Void__CP Data)
+ : mextras(extras)
+ , mTexture(Texture)
+ , mLevel(Level)
+ , mXoffset(Xoffset)
+ , mYoffset(Yoffset)
+ , mZoffset(Zoffset)
+ , mWidth(Width)
+ , mHeight(Height)
+ , mDepth(Depth)
+ , mFormat(Format)
+ , mType(Type)
+ , mData(Data) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mTexture;
+ int32_t mLevel;
+ int32_t mXoffset;
+ int32_t mYoffset;
+ int32_t mZoffset;
+ int32_t mWidth;
+ int32_t mHeight;
+ int32_t mDepth;
+ uint32_t mFormat;
+ uint32_t mType;
+ Void__CP mData;
+ };
+
class GlClientActiveTexture: public Encodable {
public:
GlClientActiveTexture() = default;
@@ -5757,6 +6014,30 @@
TexturePointer mData;
};
+ class GlConservativeRasterParameteriNV: public Encodable {
+ public:
+ GlConservativeRasterParameteriNV() = default;
+ GlConservativeRasterParameteriNV(const gapic::Vector<gapic::Encodable*>& extras, uint32_t Pname, int32_t Param)
+ : mextras(extras)
+ , mPname(Pname)
+ , mParam(Param) {}
+ virtual void Encode(Encoder* e) const{
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mPname);
+ e->Int32(this->mParam);
+ }
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mPname;
+ int32_t mParam;
+ };
+
class GlCopyBufferSubData: public Encodable {
public:
GlCopyBufferSubData() = default;
@@ -7287,6 +7568,25 @@
GLfloat__CP mV;
};
+ class GlDepthRangeArrayfvOES: public Encodable {
+ public:
+ GlDepthRangeArrayfvOES() = default;
+ GlDepthRangeArrayfvOES(const gapic::Vector<gapic::Encodable*>& extras, uint32_t First, int32_t Count, GLfloat__CP V)
+ : mextras(extras)
+ , mFirst(First)
+ , mCount(Count)
+ , mV(V) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mFirst;
+ int32_t mCount;
+ GLfloat__CP mV;
+ };
+
class GlDepthRangeIndexedfNV: public Encodable {
public:
GlDepthRangeIndexedfNV() = default;
@@ -7306,6 +7606,25 @@
float mF;
};
+ class GlDepthRangeIndexedfOES: public Encodable {
+ public:
+ GlDepthRangeIndexedfOES() = default;
+ GlDepthRangeIndexedfOES(const gapic::Vector<gapic::Encodable*>& extras, uint32_t Index, float N, float F)
+ : mextras(extras)
+ , mIndex(Index)
+ , mN(N)
+ , mF(F) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mIndex;
+ float mN;
+ float mF;
+ };
+
class GlDepthRangef: public Encodable {
public:
GlDepthRangef() = default;
@@ -8534,6 +8853,49 @@
GLfixed__CP mCoords;
};
+ class GlDrawTransformFeedbackEXT: public Encodable {
+ public:
+ GlDrawTransformFeedbackEXT() = default;
+ GlDrawTransformFeedbackEXT(const gapic::Vector<gapic::Encodable*>& extras, uint32_t Mode, uint32_t Id)
+ : mextras(extras)
+ , mMode(Mode)
+ , mId(Id) {}
+ virtual void Encode(Encoder* e) const{
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mMode);
+ e->Uint32(this->mId);
+ }
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mMode;
+ uint32_t mId;
+ };
+
+ class GlDrawTransformFeedbackInstancedEXT: public Encodable {
+ public:
+ GlDrawTransformFeedbackInstancedEXT() = default;
+ GlDrawTransformFeedbackInstancedEXT(const gapic::Vector<gapic::Encodable*>& extras, uint32_t Mode, uint32_t Id, int32_t Instancecount)
+ : mextras(extras)
+ , mMode(Mode)
+ , mId(Id)
+ , mInstancecount(Instancecount) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mMode;
+ uint32_t mId;
+ int32_t mInstancecount;
+ };
+
class GlEGLImageTargetRenderbufferStorageOES: public Encodable {
public:
GlEGLImageTargetRenderbufferStorageOES() = default;
@@ -9570,6 +9932,30 @@
int32_t mParam;
};
+ class GlFramebufferPixelLocalStorageSizeEXT: public Encodable {
+ public:
+ GlFramebufferPixelLocalStorageSizeEXT() = default;
+ GlFramebufferPixelLocalStorageSizeEXT(const gapic::Vector<gapic::Encodable*>& extras, uint32_t Target, int32_t Size)
+ : mextras(extras)
+ , mTarget(Target)
+ , mSize(Size) {}
+ virtual void Encode(Encoder* e) const{
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mTarget);
+ e->Int32(this->mSize);
+ }
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mTarget;
+ int32_t mSize;
+ };
+
class GlFramebufferRenderbuffer: public Encodable {
public:
GlFramebufferRenderbuffer() = default;
@@ -9677,6 +10063,33 @@
int32_t mLevel;
};
+ class GlFramebufferTexture2DDownsampleIMG: public Encodable {
+ public:
+ GlFramebufferTexture2DDownsampleIMG() = default;
+ GlFramebufferTexture2DDownsampleIMG(const gapic::Vector<gapic::Encodable*>& extras, uint32_t Target, uint32_t Attachment, uint32_t Textarget, uint32_t Texture, int32_t Level, int32_t Xscale, int32_t Yscale)
+ : mextras(extras)
+ , mTarget(Target)
+ , mAttachment(Attachment)
+ , mTextarget(Textarget)
+ , mTexture(Texture)
+ , mLevel(Level)
+ , mXscale(Xscale)
+ , mYscale(Yscale) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mTarget;
+ uint32_t mAttachment;
+ uint32_t mTextarget;
+ uint32_t mTexture;
+ int32_t mLevel;
+ int32_t mXscale;
+ int32_t mYscale;
+ };
+
class GlFramebufferTexture2DMultisampleEXT: public Encodable {
public:
GlFramebufferTexture2DMultisampleEXT() = default;
@@ -9819,6 +10232,60 @@
int32_t mLayer;
};
+ class GlFramebufferTextureLayerDownsampleIMG: public Encodable {
+ public:
+ GlFramebufferTextureLayerDownsampleIMG() = default;
+ GlFramebufferTextureLayerDownsampleIMG(const gapic::Vector<gapic::Encodable*>& extras, uint32_t Target, uint32_t Attachment, uint32_t Texture, int32_t Level, int32_t Layer, int32_t Xscale, int32_t Yscale)
+ : mextras(extras)
+ , mTarget(Target)
+ , mAttachment(Attachment)
+ , mTexture(Texture)
+ , mLevel(Level)
+ , mLayer(Layer)
+ , mXscale(Xscale)
+ , mYscale(Yscale) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mTarget;
+ uint32_t mAttachment;
+ uint32_t mTexture;
+ int32_t mLevel;
+ int32_t mLayer;
+ int32_t mXscale;
+ int32_t mYscale;
+ };
+
+ class GlFramebufferTextureMultisampleMultiviewOVR: public Encodable {
+ public:
+ GlFramebufferTextureMultisampleMultiviewOVR() = default;
+ GlFramebufferTextureMultisampleMultiviewOVR(const gapic::Vector<gapic::Encodable*>& extras, uint32_t Target, uint32_t Attachment, uint32_t Texture, int32_t Level, int32_t Samples, int32_t BaseViewIndex, int32_t NumViews)
+ : mextras(extras)
+ , mTarget(Target)
+ , mAttachment(Attachment)
+ , mTexture(Texture)
+ , mLevel(Level)
+ , mSamples(Samples)
+ , mBaseViewIndex(BaseViewIndex)
+ , mNumViews(NumViews) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mTarget;
+ uint32_t mAttachment;
+ uint32_t mTexture;
+ int32_t mLevel;
+ int32_t mSamples;
+ int32_t mBaseViewIndex;
+ int32_t mNumViews;
+ };
+
class GlFramebufferTextureMultiviewOVR: public Encodable {
public:
GlFramebufferTextureMultiviewOVR() = default;
@@ -11174,6 +11641,25 @@
GLfloat__P mData;
};
+ class GlGetFloati_vOES: public Encodable {
+ public:
+ GlGetFloati_vOES() = default;
+ GlGetFloati_vOES(const gapic::Vector<gapic::Encodable*>& extras, uint32_t Target, uint32_t Index, GLfloat__P Data)
+ : mextras(extras)
+ , mTarget(Target)
+ , mIndex(Index)
+ , mData(Data) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mTarget;
+ uint32_t mIndex;
+ GLfloat__P mData;
+ };
+
class GlGetFloatv: public Encodable {
public:
GlGetFloatv() = default;
@@ -11297,6 +11783,30 @@
GLint__P mParams;
};
+ class GlGetFramebufferPixelLocalStorageSizeEXT: public Encodable {
+ public:
+ GlGetFramebufferPixelLocalStorageSizeEXT() = default;
+ GlGetFramebufferPixelLocalStorageSizeEXT(const gapic::Vector<gapic::Encodable*>& extras, uint32_t Target, int32_t Result)
+ : mextras(extras)
+ , mTarget(Target)
+ , mResult(Result) {}
+ virtual void Encode(Encoder* e) const{
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mTarget);
+ e->Int32(this->mResult);
+ }
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mTarget;
+ int32_t mResult;
+ };
+
class GlGetGraphicsResetStatus: public Encodable {
public:
GlGetGraphicsResetStatus() = default;
@@ -13595,6 +14105,30 @@
GLfixed__P mParams;
};
+ class GlGetTextureHandleIMG: public Encodable {
+ public:
+ GlGetTextureHandleIMG() = default;
+ GlGetTextureHandleIMG(const gapic::Vector<gapic::Encodable*>& extras, uint32_t Texture, uint64_t Result)
+ : mextras(extras)
+ , mTexture(Texture)
+ , mResult(Result) {}
+ virtual void Encode(Encoder* e) const{
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mTexture);
+ e->Uint64(this->mResult);
+ }
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mTexture;
+ uint64_t mResult;
+ };
+
class GlGetTextureHandleNV: public Encodable {
public:
GlGetTextureHandleNV() = default;
@@ -13619,6 +14153,25 @@
uint64_t mResult;
};
+ class GlGetTextureSamplerHandleIMG: public Encodable {
+ public:
+ GlGetTextureSamplerHandleIMG() = default;
+ GlGetTextureSamplerHandleIMG(const gapic::Vector<gapic::Encodable*>& extras, uint32_t Texture, uint32_t Sampler, uint64_t Result)
+ : mextras(extras)
+ , mTexture(Texture)
+ , mSampler(Sampler)
+ , mResult(Result) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mTexture;
+ uint32_t mSampler;
+ uint64_t mResult;
+ };
+
class GlGetTextureSamplerHandleNV: public Encodable {
public:
GlGetTextureSamplerHandleNV() = default;
@@ -13782,6 +14335,25 @@
GLfloat__P mValues;
};
+ class GlGetUniformi64vNV: public Encodable {
+ public:
+ GlGetUniformi64vNV() = default;
+ GlGetUniformi64vNV(const gapic::Vector<gapic::Encodable*>& extras, uint32_t Program, int32_t Location, GLint64EXT__P Params)
+ : mextras(extras)
+ , mProgram(Program)
+ , mLocation(Location)
+ , mParams(Params) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mProgram;
+ int32_t mLocation;
+ GLint64EXT__P mParams;
+ };
+
class GlGetUniformiv: public Encodable {
public:
GlGetUniformiv() = default;
@@ -17390,6 +17962,25 @@
float mUnits;
};
+ class GlPolygonOffsetClampEXT: public Encodable {
+ public:
+ GlPolygonOffsetClampEXT() = default;
+ GlPolygonOffsetClampEXT(const gapic::Vector<gapic::Encodable*>& extras, float Factor, float Units, float Clamp)
+ : mextras(extras)
+ , mFactor(Factor)
+ , mUnits(Units)
+ , mClamp(Clamp) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ float mFactor;
+ float mUnits;
+ float mClamp;
+ };
+
class GlPolygonOffsetx: public Encodable {
public:
GlPolygonOffsetx() = default;
@@ -17799,6 +18390,46 @@
int32_t mValue0;
};
+ class GlProgramUniform1i64NV: public Encodable {
+ public:
+ GlProgramUniform1i64NV() = default;
+ GlProgramUniform1i64NV(const gapic::Vector<gapic::Encodable*>& extras, uint32_t Program, int32_t Location, int64_t X)
+ : mextras(extras)
+ , mProgram(Program)
+ , mLocation(Location)
+ , mX(X) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mProgram;
+ int32_t mLocation;
+ int64_t mX;
+ };
+
+ class GlProgramUniform1i64vNV: public Encodable {
+ public:
+ GlProgramUniform1i64vNV() = default;
+ GlProgramUniform1i64vNV(const gapic::Vector<gapic::Encodable*>& extras, uint32_t Program, int32_t Location, int32_t Count, GLint64EXT__CP Value)
+ : mextras(extras)
+ , mProgram(Program)
+ , mLocation(Location)
+ , mCount(Count)
+ , mValue(Value) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mProgram;
+ int32_t mLocation;
+ int32_t mCount;
+ GLint64EXT__CP mValue;
+ };
+
class GlProgramUniform1iEXT: public Encodable {
public:
GlProgramUniform1iEXT() = default;
@@ -17879,6 +18510,46 @@
uint32_t mValue0;
};
+ class GlProgramUniform1ui64NV: public Encodable {
+ public:
+ GlProgramUniform1ui64NV() = default;
+ GlProgramUniform1ui64NV(const gapic::Vector<gapic::Encodable*>& extras, uint32_t Program, int32_t Location, uint64_t X)
+ : mextras(extras)
+ , mProgram(Program)
+ , mLocation(Location)
+ , mX(X) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mProgram;
+ int32_t mLocation;
+ uint64_t mX;
+ };
+
+ class GlProgramUniform1ui64vNV: public Encodable {
+ public:
+ GlProgramUniform1ui64vNV() = default;
+ GlProgramUniform1ui64vNV(const gapic::Vector<gapic::Encodable*>& extras, uint32_t Program, int32_t Location, int32_t Count, GLuint64EXT__CP Value)
+ : mextras(extras)
+ , mProgram(Program)
+ , mLocation(Location)
+ , mCount(Count)
+ , mValue(Value) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mProgram;
+ int32_t mLocation;
+ int32_t mCount;
+ GLuint64EXT__CP mValue;
+ };
+
class GlProgramUniform1uiEXT: public Encodable {
public:
GlProgramUniform1uiEXT() = default;
@@ -18045,6 +18716,48 @@
int32_t mValue1;
};
+ class GlProgramUniform2i64NV: public Encodable {
+ public:
+ GlProgramUniform2i64NV() = default;
+ GlProgramUniform2i64NV(const gapic::Vector<gapic::Encodable*>& extras, uint32_t Program, int32_t Location, int64_t X, int64_t Y)
+ : mextras(extras)
+ , mProgram(Program)
+ , mLocation(Location)
+ , mX(X)
+ , mY(Y) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mProgram;
+ int32_t mLocation;
+ int64_t mX;
+ int64_t mY;
+ };
+
+ class GlProgramUniform2i64vNV: public Encodable {
+ public:
+ GlProgramUniform2i64vNV() = default;
+ GlProgramUniform2i64vNV(const gapic::Vector<gapic::Encodable*>& extras, uint32_t Program, int32_t Location, int32_t Count, GLint64EXT__CP Value)
+ : mextras(extras)
+ , mProgram(Program)
+ , mLocation(Location)
+ , mCount(Count)
+ , mValue(Value) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mProgram;
+ int32_t mLocation;
+ int32_t mCount;
+ GLint64EXT__CP mValue;
+ };
+
class GlProgramUniform2iEXT: public Encodable {
public:
GlProgramUniform2iEXT() = default;
@@ -18129,6 +18842,48 @@
uint32_t mValue1;
};
+ class GlProgramUniform2ui64NV: public Encodable {
+ public:
+ GlProgramUniform2ui64NV() = default;
+ GlProgramUniform2ui64NV(const gapic::Vector<gapic::Encodable*>& extras, uint32_t Program, int32_t Location, uint64_t X, uint64_t Y)
+ : mextras(extras)
+ , mProgram(Program)
+ , mLocation(Location)
+ , mX(X)
+ , mY(Y) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mProgram;
+ int32_t mLocation;
+ uint64_t mX;
+ uint64_t mY;
+ };
+
+ class GlProgramUniform2ui64vNV: public Encodable {
+ public:
+ GlProgramUniform2ui64vNV() = default;
+ GlProgramUniform2ui64vNV(const gapic::Vector<gapic::Encodable*>& extras, uint32_t Program, int32_t Location, int32_t Count, GLuint64EXT__CP Value)
+ : mextras(extras)
+ , mProgram(Program)
+ , mLocation(Location)
+ , mCount(Count)
+ , mValue(Value) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mProgram;
+ int32_t mLocation;
+ int32_t mCount;
+ GLuint64EXT__CP mValue;
+ };
+
class GlProgramUniform2uiEXT: public Encodable {
public:
GlProgramUniform2uiEXT() = default;
@@ -18303,6 +19058,50 @@
int32_t mValue2;
};
+ class GlProgramUniform3i64NV: public Encodable {
+ public:
+ GlProgramUniform3i64NV() = default;
+ GlProgramUniform3i64NV(const gapic::Vector<gapic::Encodable*>& extras, uint32_t Program, int32_t Location, int64_t X, int64_t Y, int64_t Z)
+ : mextras(extras)
+ , mProgram(Program)
+ , mLocation(Location)
+ , mX(X)
+ , mY(Y)
+ , mZ(Z) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mProgram;
+ int32_t mLocation;
+ int64_t mX;
+ int64_t mY;
+ int64_t mZ;
+ };
+
+ class GlProgramUniform3i64vNV: public Encodable {
+ public:
+ GlProgramUniform3i64vNV() = default;
+ GlProgramUniform3i64vNV(const gapic::Vector<gapic::Encodable*>& extras, uint32_t Program, int32_t Location, int32_t Count, GLint64EXT__CP Value)
+ : mextras(extras)
+ , mProgram(Program)
+ , mLocation(Location)
+ , mCount(Count)
+ , mValue(Value) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mProgram;
+ int32_t mLocation;
+ int32_t mCount;
+ GLint64EXT__CP mValue;
+ };
+
class GlProgramUniform3iEXT: public Encodable {
public:
GlProgramUniform3iEXT() = default;
@@ -18391,6 +19190,50 @@
uint32_t mValue2;
};
+ class GlProgramUniform3ui64NV: public Encodable {
+ public:
+ GlProgramUniform3ui64NV() = default;
+ GlProgramUniform3ui64NV(const gapic::Vector<gapic::Encodable*>& extras, uint32_t Program, int32_t Location, uint64_t X, uint64_t Y, uint64_t Z)
+ : mextras(extras)
+ , mProgram(Program)
+ , mLocation(Location)
+ , mX(X)
+ , mY(Y)
+ , mZ(Z) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mProgram;
+ int32_t mLocation;
+ uint64_t mX;
+ uint64_t mY;
+ uint64_t mZ;
+ };
+
+ class GlProgramUniform3ui64vNV: public Encodable {
+ public:
+ GlProgramUniform3ui64vNV() = default;
+ GlProgramUniform3ui64vNV(const gapic::Vector<gapic::Encodable*>& extras, uint32_t Program, int32_t Location, int32_t Count, GLuint64EXT__CP Value)
+ : mextras(extras)
+ , mProgram(Program)
+ , mLocation(Location)
+ , mCount(Count)
+ , mValue(Value) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mProgram;
+ int32_t mLocation;
+ int32_t mCount;
+ GLuint64EXT__CP mValue;
+ };
+
class GlProgramUniform3uiEXT: public Encodable {
public:
GlProgramUniform3uiEXT() = default;
@@ -18573,6 +19416,52 @@
int32_t mValue3;
};
+ class GlProgramUniform4i64NV: public Encodable {
+ public:
+ GlProgramUniform4i64NV() = default;
+ GlProgramUniform4i64NV(const gapic::Vector<gapic::Encodable*>& extras, uint32_t Program, int32_t Location, int64_t X, int64_t Y, int64_t Z, int64_t W)
+ : mextras(extras)
+ , mProgram(Program)
+ , mLocation(Location)
+ , mX(X)
+ , mY(Y)
+ , mZ(Z)
+ , mW(W) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mProgram;
+ int32_t mLocation;
+ int64_t mX;
+ int64_t mY;
+ int64_t mZ;
+ int64_t mW;
+ };
+
+ class GlProgramUniform4i64vNV: public Encodable {
+ public:
+ GlProgramUniform4i64vNV() = default;
+ GlProgramUniform4i64vNV(const gapic::Vector<gapic::Encodable*>& extras, uint32_t Program, int32_t Location, int32_t Count, GLint64EXT__CP Value)
+ : mextras(extras)
+ , mProgram(Program)
+ , mLocation(Location)
+ , mCount(Count)
+ , mValue(Value) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mProgram;
+ int32_t mLocation;
+ int32_t mCount;
+ GLint64EXT__CP mValue;
+ };
+
class GlProgramUniform4iEXT: public Encodable {
public:
GlProgramUniform4iEXT() = default;
@@ -18665,6 +19554,52 @@
uint32_t mValue3;
};
+ class GlProgramUniform4ui64NV: public Encodable {
+ public:
+ GlProgramUniform4ui64NV() = default;
+ GlProgramUniform4ui64NV(const gapic::Vector<gapic::Encodable*>& extras, uint32_t Program, int32_t Location, uint64_t X, uint64_t Y, uint64_t Z, uint64_t W)
+ : mextras(extras)
+ , mProgram(Program)
+ , mLocation(Location)
+ , mX(X)
+ , mY(Y)
+ , mZ(Z)
+ , mW(W) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mProgram;
+ int32_t mLocation;
+ uint64_t mX;
+ uint64_t mY;
+ uint64_t mZ;
+ uint64_t mW;
+ };
+
+ class GlProgramUniform4ui64vNV: public Encodable {
+ public:
+ GlProgramUniform4ui64vNV() = default;
+ GlProgramUniform4ui64vNV(const gapic::Vector<gapic::Encodable*>& extras, uint32_t Program, int32_t Location, int32_t Count, GLuint64EXT__CP Value)
+ : mextras(extras)
+ , mProgram(Program)
+ , mLocation(Location)
+ , mCount(Count)
+ , mValue(Value) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mProgram;
+ int32_t mLocation;
+ int32_t mCount;
+ GLuint64EXT__CP mValue;
+ };
+
class GlProgramUniform4uiEXT: public Encodable {
public:
GlProgramUniform4uiEXT() = default;
@@ -18732,6 +19667,25 @@
GLuint__CP mValue;
};
+ class GlProgramUniformHandleui64IMG: public Encodable {
+ public:
+ GlProgramUniformHandleui64IMG() = default;
+ GlProgramUniformHandleui64IMG(const gapic::Vector<gapic::Encodable*>& extras, uint32_t Program, int32_t Location, uint64_t Value)
+ : mextras(extras)
+ , mProgram(Program)
+ , mLocation(Location)
+ , mValue(Value) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mProgram;
+ int32_t mLocation;
+ uint64_t mValue;
+ };
+
class GlProgramUniformHandleui64NV: public Encodable {
public:
GlProgramUniformHandleui64NV() = default;
@@ -18751,6 +19705,27 @@
uint64_t mValue;
};
+ class GlProgramUniformHandleui64vIMG: public Encodable {
+ public:
+ GlProgramUniformHandleui64vIMG() = default;
+ GlProgramUniformHandleui64vIMG(const gapic::Vector<gapic::Encodable*>& extras, uint32_t Program, int32_t Location, int32_t Count, GLuint64__CP Values)
+ : mextras(extras)
+ , mProgram(Program)
+ , mLocation(Location)
+ , mCount(Count)
+ , mValues(Values) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mProgram;
+ int32_t mLocation;
+ int32_t mCount;
+ GLuint64__CP mValues;
+ };
+
class GlProgramUniformHandleui64vNV: public Encodable {
public:
GlProgramUniformHandleui64vNV() = default;
@@ -20215,6 +21190,25 @@
GLint__CP mV;
};
+ class GlScissorArrayvOES: public Encodable {
+ public:
+ GlScissorArrayvOES() = default;
+ GlScissorArrayvOES(const gapic::Vector<gapic::Encodable*>& extras, uint32_t First, int32_t Count, GLint__CP V)
+ : mextras(extras)
+ , mFirst(First)
+ , mCount(Count)
+ , mV(V) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mFirst;
+ int32_t mCount;
+ GLint__CP mV;
+ };
+
class GlScissorIndexedNV: public Encodable {
public:
GlScissorIndexedNV() = default;
@@ -20238,6 +21232,29 @@
int32_t mHeight;
};
+ class GlScissorIndexedOES: public Encodable {
+ public:
+ GlScissorIndexedOES() = default;
+ GlScissorIndexedOES(const gapic::Vector<gapic::Encodable*>& extras, uint32_t Index, int32_t Left, int32_t Bottom, int32_t Width, int32_t Height)
+ : mextras(extras)
+ , mIndex(Index)
+ , mLeft(Left)
+ , mBottom(Bottom)
+ , mWidth(Width)
+ , mHeight(Height) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mIndex;
+ int32_t mLeft;
+ int32_t mBottom;
+ int32_t mWidth;
+ int32_t mHeight;
+ };
+
class GlScissorIndexedvNV: public Encodable {
public:
GlScissorIndexedvNV() = default;
@@ -20262,6 +21279,30 @@
GLint__CP mV;
};
+ class GlScissorIndexedvOES: public Encodable {
+ public:
+ GlScissorIndexedvOES() = default;
+ GlScissorIndexedvOES(const gapic::Vector<gapic::Encodable*>& extras, uint32_t Index, GLint__CP V)
+ : mextras(extras)
+ , mIndex(Index)
+ , mV(V) {}
+ virtual void Encode(Encoder* e) const{
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mIndex);
+ e->Struct(this->mV);
+ }
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mIndex;
+ GLint__CP mV;
+ };
+
class GlSelectPerfMonitorCountersAMD: public Encodable {
public:
GlSelectPerfMonitorCountersAMD() = default;
@@ -22235,6 +23276,49 @@
int32_t mValue;
};
+ class GlUniform1i64NV: public Encodable {
+ public:
+ GlUniform1i64NV() = default;
+ GlUniform1i64NV(const gapic::Vector<gapic::Encodable*>& extras, int32_t Location, int64_t X)
+ : mextras(extras)
+ , mLocation(Location)
+ , mX(X) {}
+ virtual void Encode(Encoder* e) const{
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Int32(this->mLocation);
+ e->Int64(this->mX);
+ }
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ int32_t mLocation;
+ int64_t mX;
+ };
+
+ class GlUniform1i64vNV: public Encodable {
+ public:
+ GlUniform1i64vNV() = default;
+ GlUniform1i64vNV(const gapic::Vector<gapic::Encodable*>& extras, int32_t Location, int32_t Count, GLint64EXT__CP Value)
+ : mextras(extras)
+ , mLocation(Location)
+ , mCount(Count)
+ , mValue(Value) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ int32_t mLocation;
+ int32_t mCount;
+ GLint64EXT__CP mValue;
+ };
+
class GlUniform1iv: public Encodable {
public:
GlUniform1iv() = default;
@@ -22278,6 +23362,49 @@
uint32_t mValue0;
};
+ class GlUniform1ui64NV: public Encodable {
+ public:
+ GlUniform1ui64NV() = default;
+ GlUniform1ui64NV(const gapic::Vector<gapic::Encodable*>& extras, int32_t Location, uint64_t X)
+ : mextras(extras)
+ , mLocation(Location)
+ , mX(X) {}
+ virtual void Encode(Encoder* e) const{
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Int32(this->mLocation);
+ e->Uint64(this->mX);
+ }
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ int32_t mLocation;
+ uint64_t mX;
+ };
+
+ class GlUniform1ui64vNV: public Encodable {
+ public:
+ GlUniform1ui64vNV() = default;
+ GlUniform1ui64vNV(const gapic::Vector<gapic::Encodable*>& extras, int32_t Location, int32_t Count, GLuint64EXT__CP Value)
+ : mextras(extras)
+ , mLocation(Location)
+ , mCount(Count)
+ , mValue(Value) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ int32_t mLocation;
+ int32_t mCount;
+ GLuint64EXT__CP mValue;
+ };
+
class GlUniform1uiv: public Encodable {
public:
GlUniform1uiv() = default;
@@ -22354,6 +23481,44 @@
int32_t mValue1;
};
+ class GlUniform2i64NV: public Encodable {
+ public:
+ GlUniform2i64NV() = default;
+ GlUniform2i64NV(const gapic::Vector<gapic::Encodable*>& extras, int32_t Location, int64_t X, int64_t Y)
+ : mextras(extras)
+ , mLocation(Location)
+ , mX(X)
+ , mY(Y) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ int32_t mLocation;
+ int64_t mX;
+ int64_t mY;
+ };
+
+ class GlUniform2i64vNV: public Encodable {
+ public:
+ GlUniform2i64vNV() = default;
+ GlUniform2i64vNV(const gapic::Vector<gapic::Encodable*>& extras, int32_t Location, int32_t Count, GLint64EXT__CP Value)
+ : mextras(extras)
+ , mLocation(Location)
+ , mCount(Count)
+ , mValue(Value) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ int32_t mLocation;
+ int32_t mCount;
+ GLint64EXT__CP mValue;
+ };
+
class GlUniform2iv: public Encodable {
public:
GlUniform2iv() = default;
@@ -22392,6 +23557,44 @@
uint32_t mValue1;
};
+ class GlUniform2ui64NV: public Encodable {
+ public:
+ GlUniform2ui64NV() = default;
+ GlUniform2ui64NV(const gapic::Vector<gapic::Encodable*>& extras, int32_t Location, uint64_t X, uint64_t Y)
+ : mextras(extras)
+ , mLocation(Location)
+ , mX(X)
+ , mY(Y) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ int32_t mLocation;
+ uint64_t mX;
+ uint64_t mY;
+ };
+
+ class GlUniform2ui64vNV: public Encodable {
+ public:
+ GlUniform2ui64vNV() = default;
+ GlUniform2ui64vNV(const gapic::Vector<gapic::Encodable*>& extras, int32_t Location, int32_t Count, GLuint64EXT__CP Value)
+ : mextras(extras)
+ , mLocation(Location)
+ , mCount(Count)
+ , mValue(Value) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ int32_t mLocation;
+ int32_t mCount;
+ GLuint64EXT__CP mValue;
+ };
+
class GlUniform2uiv: public Encodable {
public:
GlUniform2uiv() = default;
@@ -22472,6 +23675,46 @@
int32_t mValue2;
};
+ class GlUniform3i64NV: public Encodable {
+ public:
+ GlUniform3i64NV() = default;
+ GlUniform3i64NV(const gapic::Vector<gapic::Encodable*>& extras, int32_t Location, int64_t X, int64_t Y, int64_t Z)
+ : mextras(extras)
+ , mLocation(Location)
+ , mX(X)
+ , mY(Y)
+ , mZ(Z) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ int32_t mLocation;
+ int64_t mX;
+ int64_t mY;
+ int64_t mZ;
+ };
+
+ class GlUniform3i64vNV: public Encodable {
+ public:
+ GlUniform3i64vNV() = default;
+ GlUniform3i64vNV(const gapic::Vector<gapic::Encodable*>& extras, int32_t Location, int32_t Count, GLint64EXT__CP Value)
+ : mextras(extras)
+ , mLocation(Location)
+ , mCount(Count)
+ , mValue(Value) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ int32_t mLocation;
+ int32_t mCount;
+ GLint64EXT__CP mValue;
+ };
+
class GlUniform3iv: public Encodable {
public:
GlUniform3iv() = default;
@@ -22512,6 +23755,46 @@
uint32_t mValue2;
};
+ class GlUniform3ui64NV: public Encodable {
+ public:
+ GlUniform3ui64NV() = default;
+ GlUniform3ui64NV(const gapic::Vector<gapic::Encodable*>& extras, int32_t Location, uint64_t X, uint64_t Y, uint64_t Z)
+ : mextras(extras)
+ , mLocation(Location)
+ , mX(X)
+ , mY(Y)
+ , mZ(Z) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ int32_t mLocation;
+ uint64_t mX;
+ uint64_t mY;
+ uint64_t mZ;
+ };
+
+ class GlUniform3ui64vNV: public Encodable {
+ public:
+ GlUniform3ui64vNV() = default;
+ GlUniform3ui64vNV(const gapic::Vector<gapic::Encodable*>& extras, int32_t Location, int32_t Count, GLuint64EXT__CP Value)
+ : mextras(extras)
+ , mLocation(Location)
+ , mCount(Count)
+ , mValue(Value) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ int32_t mLocation;
+ int32_t mCount;
+ GLuint64EXT__CP mValue;
+ };
+
class GlUniform3uiv: public Encodable {
public:
GlUniform3uiv() = default;
@@ -22596,6 +23879,48 @@
int32_t mValue3;
};
+ class GlUniform4i64NV: public Encodable {
+ public:
+ GlUniform4i64NV() = default;
+ GlUniform4i64NV(const gapic::Vector<gapic::Encodable*>& extras, int32_t Location, int64_t X, int64_t Y, int64_t Z, int64_t W)
+ : mextras(extras)
+ , mLocation(Location)
+ , mX(X)
+ , mY(Y)
+ , mZ(Z)
+ , mW(W) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ int32_t mLocation;
+ int64_t mX;
+ int64_t mY;
+ int64_t mZ;
+ int64_t mW;
+ };
+
+ class GlUniform4i64vNV: public Encodable {
+ public:
+ GlUniform4i64vNV() = default;
+ GlUniform4i64vNV(const gapic::Vector<gapic::Encodable*>& extras, int32_t Location, int32_t Count, GLint64EXT__CP Value)
+ : mextras(extras)
+ , mLocation(Location)
+ , mCount(Count)
+ , mValue(Value) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ int32_t mLocation;
+ int32_t mCount;
+ GLint64EXT__CP mValue;
+ };
+
class GlUniform4iv: public Encodable {
public:
GlUniform4iv() = default;
@@ -22638,6 +23963,48 @@
uint32_t mValue3;
};
+ class GlUniform4ui64NV: public Encodable {
+ public:
+ GlUniform4ui64NV() = default;
+ GlUniform4ui64NV(const gapic::Vector<gapic::Encodable*>& extras, int32_t Location, uint64_t X, uint64_t Y, uint64_t Z, uint64_t W)
+ : mextras(extras)
+ , mLocation(Location)
+ , mX(X)
+ , mY(Y)
+ , mZ(Z)
+ , mW(W) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ int32_t mLocation;
+ uint64_t mX;
+ uint64_t mY;
+ uint64_t mZ;
+ uint64_t mW;
+ };
+
+ class GlUniform4ui64vNV: public Encodable {
+ public:
+ GlUniform4ui64vNV() = default;
+ GlUniform4ui64vNV(const gapic::Vector<gapic::Encodable*>& extras, int32_t Location, int32_t Count, GLuint64EXT__CP Value)
+ : mextras(extras)
+ , mLocation(Location)
+ , mCount(Count)
+ , mValue(Value) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ int32_t mLocation;
+ int32_t mCount;
+ GLuint64EXT__CP mValue;
+ };
+
class GlUniform4uiv: public Encodable {
public:
GlUniform4uiv() = default;
@@ -22676,6 +24043,30 @@
uint32_t mUniformBlockBinding;
};
+ class GlUniformHandleui64IMG: public Encodable {
+ public:
+ GlUniformHandleui64IMG() = default;
+ GlUniformHandleui64IMG(const gapic::Vector<gapic::Encodable*>& extras, int32_t Location, uint64_t Value)
+ : mextras(extras)
+ , mLocation(Location)
+ , mValue(Value) {}
+ virtual void Encode(Encoder* e) const{
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Int32(this->mLocation);
+ e->Uint64(this->mValue);
+ }
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ int32_t mLocation;
+ uint64_t mValue;
+ };
+
class GlUniformHandleui64NV: public Encodable {
public:
GlUniformHandleui64NV() = default;
@@ -22700,6 +24091,25 @@
uint64_t mValue;
};
+ class GlUniformHandleui64vIMG: public Encodable {
+ public:
+ GlUniformHandleui64vIMG() = default;
+ GlUniformHandleui64vIMG(const gapic::Vector<gapic::Encodable*>& extras, int32_t Location, int32_t Count, GLuint64__CP Value)
+ : mextras(extras)
+ , mLocation(Location)
+ , mCount(Count)
+ , mValue(Value) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ int32_t mLocation;
+ int32_t mCount;
+ GLuint64__CP mValue;
+ };
+
class GlUniformHandleui64vNV: public Encodable {
public:
GlUniformHandleui64vNV() = default;
@@ -23801,6 +25211,25 @@
GLfloat__CP mV;
};
+ class GlViewportArrayvOES: public Encodable {
+ public:
+ GlViewportArrayvOES() = default;
+ GlViewportArrayvOES(const gapic::Vector<gapic::Encodable*>& extras, uint32_t First, int32_t Count, GLfloat__CP V)
+ : mextras(extras)
+ , mFirst(First)
+ , mCount(Count)
+ , mV(V) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mFirst;
+ int32_t mCount;
+ GLfloat__CP mV;
+ };
+
class GlViewportIndexedfNV: public Encodable {
public:
GlViewportIndexedfNV() = default;
@@ -23824,6 +25253,29 @@
float mH;
};
+ class GlViewportIndexedfOES: public Encodable {
+ public:
+ GlViewportIndexedfOES() = default;
+ GlViewportIndexedfOES(const gapic::Vector<gapic::Encodable*>& extras, uint32_t Index, float X, float Y, float W, float H)
+ : mextras(extras)
+ , mIndex(Index)
+ , mX(X)
+ , mY(Y)
+ , mW(W)
+ , mH(H) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mIndex;
+ float mX;
+ float mY;
+ float mW;
+ float mH;
+ };
+
class GlViewportIndexedfvNV: public Encodable {
public:
GlViewportIndexedfvNV() = default;
@@ -23848,6 +25300,53 @@
GLfloat__CP mV;
};
+ class GlViewportIndexedfvOES: public Encodable {
+ public:
+ GlViewportIndexedfvOES() = default;
+ GlViewportIndexedfvOES(const gapic::Vector<gapic::Encodable*>& extras, uint32_t Index, GLfloat__CP V)
+ : mextras(extras)
+ , mIndex(Index)
+ , mV(V) {}
+ virtual void Encode(Encoder* e) const{
+ e->Uint32(this->mextras.count());
+ for (auto v : this->mextras) {
+ e->Object(v);
+ }
+ e->Uint32(this->mIndex);
+ e->Struct(this->mV);
+ }
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mIndex;
+ GLfloat__CP mV;
+ };
+
+ class GlViewportSwizzleNV: public Encodable {
+ public:
+ GlViewportSwizzleNV() = default;
+ GlViewportSwizzleNV(const gapic::Vector<gapic::Encodable*>& extras, uint32_t Index, uint32_t Swizzlex, uint32_t Swizzley, uint32_t Swizzlez, uint32_t Swizzlew)
+ : mextras(extras)
+ , mIndex(Index)
+ , mSwizzlex(Swizzlex)
+ , mSwizzley(Swizzley)
+ , mSwizzlez(Swizzlez)
+ , mSwizzlew(Swizzlew) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mIndex;
+ uint32_t mSwizzlex;
+ uint32_t mSwizzley;
+ uint32_t mSwizzlez;
+ uint32_t mSwizzlew;
+ };
+
class GlWaitSync: public Encodable {
public:
GlWaitSync() = default;
@@ -23951,6 +25450,25 @@
int32_t mCount;
};
+ class GlWindowRectanglesEXT: public Encodable {
+ public:
+ GlWindowRectanglesEXT() = default;
+ GlWindowRectanglesEXT(const gapic::Vector<gapic::Encodable*>& extras, uint32_t Mode, int32_t Count, GLint__CP Box)
+ : mextras(extras)
+ , mMode(Mode)
+ , mCount(Count)
+ , mBox(Box) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ gapic::Vector<gapic::Encodable*> mextras;
+ uint32_t mMode;
+ int32_t mCount;
+ GLint__CP mBox;
+ };
+
class GlXCreateContext: public Encodable {
public:
GlXCreateContext() = default;
diff --git a/cc/gapic/coder/vulkan.cpp b/cc/gapic/coder/vulkan.cpp
index dd07a21..eec44e6 100644
--- a/cc/gapic/coder/vulkan.cpp
+++ b/cc/gapic/coder/vulkan.cpp
@@ -240,6 +240,32 @@
return &entity;
}
+// VkImageCopy:
+// vulkan.VkImageCopy{$,$,$,$,$}
+void VkImageCopy::Encode(Encoder* e) const {
+ e->Struct(this->mSrcSubresource);
+ e->Struct(this->mSrcOffset);
+ e->Struct(this->mDstSubresource);
+ e->Struct(this->mDstOffset);
+ e->Struct(this->mExtent);
+}
+const schema::Entity* VkImageCopy::StaticSchema() {
+ static schema::Entity entity {
+ "vulkan",
+ "",
+ "VkImageCopy",
+ "",
+ {
+ schema::Field{"SrcSubresource", new schema::Struct{ VkImageSubresourceLayers::StaticSchema()}},
+ schema::Field{"SrcOffset", new schema::Struct{ VkOffset3D::StaticSchema()}},
+ schema::Field{"DstSubresource", new schema::Struct{ VkImageSubresourceLayers::StaticSchema()}},
+ schema::Field{"DstOffset", new schema::Struct{ VkOffset3D::StaticSchema()}},
+ schema::Field{"Extent", new schema::Struct{ VkExtent3D::StaticSchema()}},
+ },
+ };
+ return &entity;
+}
+
// Voidᶜᵖ:
// vulkan.Voidᶜᵖ{Uint64,Uint32}
const schema::Entity* Void__CP::StaticSchema() {
@@ -6811,6 +6837,157 @@
return &entity;
}
+// VkDedicatedAllocationBufferCreateInfoNV:
+// vulkan.VkDedicatedAllocationBufferCreateInfoNV{Uint32,$,Uint32}
+const schema::Entity* VkDedicatedAllocationBufferCreateInfoNV::StaticSchema() {
+ static schema::Entity entity {
+ "vulkan",
+ "",
+ "VkDedicatedAllocationBufferCreateInfoNV",
+ "",
+ {
+ schema::Field{"SType", new schema::Primitive{"VkStructureType", schema::Primitive::Uint32}},
+ schema::Field{"PNext", new schema::Struct{ Void__CP::StaticSchema()}},
+ schema::Field{"DedicatedAllocation", new schema::Primitive{"VkBool32", schema::Primitive::Uint32}},
+ },
+ };
+ return &entity;
+}
+
+// VkDedicatedAllocationBufferCreateInfoNVˢ:
+// vulkan.VkDedicatedAllocationBufferCreateInfoNVˢ{$}
+const schema::Entity* VkDedicatedAllocationBufferCreateInfoNV__S::StaticSchema() {
+ static schema::Entity entity {
+ "vulkan",
+ "",
+ "VkDedicatedAllocationBufferCreateInfoNVˢ",
+ "",
+ {
+ schema::Field{"", new schema::Struct{ memory::SliceInfo::StaticSchema()}},
+ },
+ };
+ return &entity;
+}
+
+// VkDedicatedAllocationBufferCreateInfoNVᵖ:
+// vulkan.VkDedicatedAllocationBufferCreateInfoNVᵖ{Uint64,Uint32}
+const schema::Entity* VkDedicatedAllocationBufferCreateInfoNV__P::StaticSchema() {
+ static schema::Entity entity {
+ "vulkan",
+ "",
+ "VkDedicatedAllocationBufferCreateInfoNVᵖ",
+ "",
+ {
+ schema::Field{"Address", new schema::Primitive{"uint64", schema::Primitive::Uint64}},
+ schema::Field{"Pool", new schema::Primitive{"memory.PoolID", schema::Primitive::Uint32}},
+ },
+ };
+ return &entity;
+}
+
+// VkDedicatedAllocationImageCreateInfoNV:
+// vulkan.VkDedicatedAllocationImageCreateInfoNV{Uint32,$,Uint32}
+const schema::Entity* VkDedicatedAllocationImageCreateInfoNV::StaticSchema() {
+ static schema::Entity entity {
+ "vulkan",
+ "",
+ "VkDedicatedAllocationImageCreateInfoNV",
+ "",
+ {
+ schema::Field{"SType", new schema::Primitive{"VkStructureType", schema::Primitive::Uint32}},
+ schema::Field{"PNext", new schema::Struct{ Void__CP::StaticSchema()}},
+ schema::Field{"DedicatedAllocation", new schema::Primitive{"VkBool32", schema::Primitive::Uint32}},
+ },
+ };
+ return &entity;
+}
+
+// VkDedicatedAllocationImageCreateInfoNVˢ:
+// vulkan.VkDedicatedAllocationImageCreateInfoNVˢ{$}
+const schema::Entity* VkDedicatedAllocationImageCreateInfoNV__S::StaticSchema() {
+ static schema::Entity entity {
+ "vulkan",
+ "",
+ "VkDedicatedAllocationImageCreateInfoNVˢ",
+ "",
+ {
+ schema::Field{"", new schema::Struct{ memory::SliceInfo::StaticSchema()}},
+ },
+ };
+ return &entity;
+}
+
+// VkDedicatedAllocationImageCreateInfoNVᵖ:
+// vulkan.VkDedicatedAllocationImageCreateInfoNVᵖ{Uint64,Uint32}
+const schema::Entity* VkDedicatedAllocationImageCreateInfoNV__P::StaticSchema() {
+ static schema::Entity entity {
+ "vulkan",
+ "",
+ "VkDedicatedAllocationImageCreateInfoNVᵖ",
+ "",
+ {
+ schema::Field{"Address", new schema::Primitive{"uint64", schema::Primitive::Uint64}},
+ schema::Field{"Pool", new schema::Primitive{"memory.PoolID", schema::Primitive::Uint32}},
+ },
+ };
+ return &entity;
+}
+
+// VkDedicatedAllocationMemoryAllocateInfoNV:
+// vulkan.VkDedicatedAllocationMemoryAllocateInfoNV{Uint32,$,Uint64,Uint64}
+void VkDedicatedAllocationMemoryAllocateInfoNV::Encode(Encoder* e) const {
+ e->Uint32(this->mSType);
+ e->Struct(this->mPNext);
+ e->Uint64(this->mImage);
+ e->Uint64(this->mBuffer);
+}
+const schema::Entity* VkDedicatedAllocationMemoryAllocateInfoNV::StaticSchema() {
+ static schema::Entity entity {
+ "vulkan",
+ "",
+ "VkDedicatedAllocationMemoryAllocateInfoNV",
+ "",
+ {
+ schema::Field{"SType", new schema::Primitive{"VkStructureType", schema::Primitive::Uint32}},
+ schema::Field{"PNext", new schema::Struct{ Void__CP::StaticSchema()}},
+ schema::Field{"Image", new schema::Primitive{"VkImage", schema::Primitive::Uint64}},
+ schema::Field{"Buffer", new schema::Primitive{"VkBuffer", schema::Primitive::Uint64}},
+ },
+ };
+ return &entity;
+}
+
+// VkDedicatedAllocationMemoryAllocateInfoNVˢ:
+// vulkan.VkDedicatedAllocationMemoryAllocateInfoNVˢ{$}
+const schema::Entity* VkDedicatedAllocationMemoryAllocateInfoNV__S::StaticSchema() {
+ static schema::Entity entity {
+ "vulkan",
+ "",
+ "VkDedicatedAllocationMemoryAllocateInfoNVˢ",
+ "",
+ {
+ schema::Field{"", new schema::Struct{ memory::SliceInfo::StaticSchema()}},
+ },
+ };
+ return &entity;
+}
+
+// VkDedicatedAllocationMemoryAllocateInfoNVᵖ:
+// vulkan.VkDedicatedAllocationMemoryAllocateInfoNVᵖ{Uint64,Uint32}
+const schema::Entity* VkDedicatedAllocationMemoryAllocateInfoNV__P::StaticSchema() {
+ static schema::Entity entity {
+ "vulkan",
+ "",
+ "VkDedicatedAllocationMemoryAllocateInfoNVᵖ",
+ "",
+ {
+ schema::Field{"Address", new schema::Primitive{"uint64", schema::Primitive::Uint64}},
+ schema::Field{"Pool", new schema::Primitive{"memory.PoolID", schema::Primitive::Uint32}},
+ },
+ };
+ return &entity;
+}
+
// VkDescriptorBufferInfoˢ:
// vulkan.VkDescriptorBufferInfoˢ{$}
const schema::Entity* VkDescriptorBufferInfo__S::StaticSchema() {
@@ -10941,32 +11118,6 @@
return &entity;
}
-// VkImageCopy:
-// vulkan.VkImageCopy{$,$,$,$,$}
-void VkImageCopy::Encode(Encoder* e) const {
- e->Struct(this->mSrcSubresource);
- e->Struct(this->mSrcOffset);
- e->Struct(this->mDstSubresource);
- e->Struct(this->mDstOffset);
- e->Struct(this->mExtent);
-}
-const schema::Entity* VkImageCopy::StaticSchema() {
- static schema::Entity entity {
- "vulkan",
- "",
- "VkImageCopy",
- "",
- {
- schema::Field{"SrcSubresource", new schema::Struct{ VkImageSubresourceLayers::StaticSchema()}},
- schema::Field{"SrcOffset", new schema::Struct{ VkOffset3D::StaticSchema()}},
- schema::Field{"DstSubresource", new schema::Struct{ VkImageSubresourceLayers::StaticSchema()}},
- schema::Field{"DstOffset", new schema::Struct{ VkOffset3D::StaticSchema()}},
- schema::Field{"Extent", new schema::Struct{ VkExtent3D::StaticSchema()}},
- },
- };
- return &entity;
-}
-
// VkImageCopyˢ:
// vulkan.VkImageCopyˢ{$}
const schema::Entity* VkImageCopy__S::StaticSchema() {
@@ -14736,6 +14887,37 @@
return &entity;
}
+// VkStructureTypeˢ:
+// vulkan.VkStructureTypeˢ{$}
+const schema::Entity* VkStructureType__S::StaticSchema() {
+ static schema::Entity entity {
+ "vulkan",
+ "",
+ "VkStructureTypeˢ",
+ "",
+ {
+ schema::Field{"", new schema::Struct{ memory::SliceInfo::StaticSchema()}},
+ },
+ };
+ return &entity;
+}
+
+// VkStructureTypeᵖ:
+// vulkan.VkStructureTypeᵖ{Uint64,Uint32}
+const schema::Entity* VkStructureType__P::StaticSchema() {
+ static schema::Entity entity {
+ "vulkan",
+ "",
+ "VkStructureTypeᵖ",
+ "",
+ {
+ schema::Field{"Address", new schema::Primitive{"uint64", schema::Primitive::Uint64}},
+ schema::Field{"Pool", new schema::Primitive{"memory.PoolID", schema::Primitive::Uint32}},
+ },
+ };
+ return &entity;
+}
+
// VkSubmitInfo:
// vulkan.VkSubmitInfo{Uint32,$,Uint32,$,$,Uint32,$,Uint32,$}
void VkSubmitInfo::Encode(Encoder* e) const {
diff --git a/cc/gapic/coder/vulkan.h b/cc/gapic/coder/vulkan.h
index 78288c1..6d65a2f 100644
--- a/cc/gapic/coder/vulkan.h
+++ b/cc/gapic/coder/vulkan.h
@@ -256,6 +256,27 @@
VkExtent3D mImageExtent;
};
+ class VkImageCopy: public Encodable {
+ public:
+ VkImageCopy() = default;
+ VkImageCopy(VkImageSubresourceLayers SrcSubresource, VkOffset3D SrcOffset, VkImageSubresourceLayers DstSubresource, VkOffset3D DstOffset, VkExtent3D Extent)
+ : mSrcSubresource(SrcSubresource)
+ , mSrcOffset(SrcOffset)
+ , mDstSubresource(DstSubresource)
+ , mDstOffset(DstOffset)
+ , mExtent(Extent) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ VkImageSubresourceLayers mSrcSubresource;
+ VkOffset3D mSrcOffset;
+ VkImageSubresourceLayers mDstSubresource;
+ VkOffset3D mDstOffset;
+ VkExtent3D mExtent;
+ };
+
class Void__CP: public Encodable {
public:
Void__CP() = default;
@@ -6432,6 +6453,166 @@
const char* mPMessage;
};
+ class VkDedicatedAllocationBufferCreateInfoNV: public Encodable {
+ public:
+ VkDedicatedAllocationBufferCreateInfoNV() = default;
+ VkDedicatedAllocationBufferCreateInfoNV(uint32_t SType, Void__CP PNext, uint32_t DedicatedAllocation)
+ : mSType(SType)
+ , mPNext(PNext)
+ , mDedicatedAllocation(DedicatedAllocation) {}
+ virtual void Encode(Encoder* e) const{
+ e->Uint32(this->mSType);
+ e->Struct(this->mPNext);
+ e->Uint32(this->mDedicatedAllocation);
+ }
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ uint32_t mSType;
+ Void__CP mPNext;
+ uint32_t mDedicatedAllocation;
+ };
+
+ class VkDedicatedAllocationBufferCreateInfoNV__S: public Encodable {
+ public:
+ VkDedicatedAllocationBufferCreateInfoNV__S() = default;
+ VkDedicatedAllocationBufferCreateInfoNV__S(memory::SliceInfo SliceInfo)
+ : mSliceInfo(SliceInfo) {}
+ virtual void Encode(Encoder* e) const{
+ e->Struct(this->mSliceInfo);
+ }
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ memory::SliceInfo mSliceInfo;
+ };
+
+ class VkDedicatedAllocationBufferCreateInfoNV__P: public Encodable {
+ public:
+ VkDedicatedAllocationBufferCreateInfoNV__P() = default;
+ VkDedicatedAllocationBufferCreateInfoNV__P(uint64_t Address, uint32_t Pool)
+ : mAddress(Address)
+ , mPool(Pool) {}
+ virtual void Encode(Encoder* e) const{
+ e->Uint64(this->mAddress);
+ e->Uint32(this->mPool);
+ }
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ uint64_t mAddress;
+ uint32_t mPool;
+ };
+
+ class VkDedicatedAllocationImageCreateInfoNV: public Encodable {
+ public:
+ VkDedicatedAllocationImageCreateInfoNV() = default;
+ VkDedicatedAllocationImageCreateInfoNV(uint32_t SType, Void__CP PNext, uint32_t DedicatedAllocation)
+ : mSType(SType)
+ , mPNext(PNext)
+ , mDedicatedAllocation(DedicatedAllocation) {}
+ virtual void Encode(Encoder* e) const{
+ e->Uint32(this->mSType);
+ e->Struct(this->mPNext);
+ e->Uint32(this->mDedicatedAllocation);
+ }
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ uint32_t mSType;
+ Void__CP mPNext;
+ uint32_t mDedicatedAllocation;
+ };
+
+ class VkDedicatedAllocationImageCreateInfoNV__S: public Encodable {
+ public:
+ VkDedicatedAllocationImageCreateInfoNV__S() = default;
+ VkDedicatedAllocationImageCreateInfoNV__S(memory::SliceInfo SliceInfo)
+ : mSliceInfo(SliceInfo) {}
+ virtual void Encode(Encoder* e) const{
+ e->Struct(this->mSliceInfo);
+ }
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ memory::SliceInfo mSliceInfo;
+ };
+
+ class VkDedicatedAllocationImageCreateInfoNV__P: public Encodable {
+ public:
+ VkDedicatedAllocationImageCreateInfoNV__P() = default;
+ VkDedicatedAllocationImageCreateInfoNV__P(uint64_t Address, uint32_t Pool)
+ : mAddress(Address)
+ , mPool(Pool) {}
+ virtual void Encode(Encoder* e) const{
+ e->Uint64(this->mAddress);
+ e->Uint32(this->mPool);
+ }
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ uint64_t mAddress;
+ uint32_t mPool;
+ };
+
+ class VkDedicatedAllocationMemoryAllocateInfoNV: public Encodable {
+ public:
+ VkDedicatedAllocationMemoryAllocateInfoNV() = default;
+ VkDedicatedAllocationMemoryAllocateInfoNV(uint32_t SType, Void__CP PNext, uint64_t Image, uint64_t Buffer)
+ : mSType(SType)
+ , mPNext(PNext)
+ , mImage(Image)
+ , mBuffer(Buffer) {}
+ virtual void Encode(Encoder* e) const;
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ uint32_t mSType;
+ Void__CP mPNext;
+ uint64_t mImage;
+ uint64_t mBuffer;
+ };
+
+ class VkDedicatedAllocationMemoryAllocateInfoNV__S: public Encodable {
+ public:
+ VkDedicatedAllocationMemoryAllocateInfoNV__S() = default;
+ VkDedicatedAllocationMemoryAllocateInfoNV__S(memory::SliceInfo SliceInfo)
+ : mSliceInfo(SliceInfo) {}
+ virtual void Encode(Encoder* e) const{
+ e->Struct(this->mSliceInfo);
+ }
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ memory::SliceInfo mSliceInfo;
+ };
+
+ class VkDedicatedAllocationMemoryAllocateInfoNV__P: public Encodable {
+ public:
+ VkDedicatedAllocationMemoryAllocateInfoNV__P() = default;
+ VkDedicatedAllocationMemoryAllocateInfoNV__P(uint64_t Address, uint32_t Pool)
+ : mAddress(Address)
+ , mPool(Pool) {}
+ virtual void Encode(Encoder* e) const{
+ e->Uint64(this->mAddress);
+ e->Uint32(this->mPool);
+ }
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ uint64_t mAddress;
+ uint32_t mPool;
+ };
+
class VkDescriptorBufferInfo__S: public Encodable {
public:
VkDescriptorBufferInfo__S() = default;
@@ -10197,27 +10378,6 @@
uint32_t mPool;
};
- class VkImageCopy: public Encodable {
- public:
- VkImageCopy() = default;
- VkImageCopy(VkImageSubresourceLayers SrcSubresource, VkOffset3D SrcOffset, VkImageSubresourceLayers DstSubresource, VkOffset3D DstOffset, VkExtent3D Extent)
- : mSrcSubresource(SrcSubresource)
- , mSrcOffset(SrcOffset)
- , mDstSubresource(DstSubresource)
- , mDstOffset(DstOffset)
- , mExtent(Extent) {}
- virtual void Encode(Encoder* e) const;
- virtual const schema::Entity* Schema() const {
- return StaticSchema();
- }
- static const schema::Entity* StaticSchema();
- VkImageSubresourceLayers mSrcSubresource;
- VkOffset3D mSrcOffset;
- VkImageSubresourceLayers mDstSubresource;
- VkOffset3D mDstOffset;
- VkExtent3D mExtent;
- };
-
class VkImageCopy__S: public Encodable {
public:
VkImageCopy__S() = default;
@@ -13864,6 +14024,39 @@
uint32_t mPool;
};
+ class VkStructureType__S: public Encodable {
+ public:
+ VkStructureType__S() = default;
+ VkStructureType__S(memory::SliceInfo SliceInfo)
+ : mSliceInfo(SliceInfo) {}
+ virtual void Encode(Encoder* e) const{
+ e->Struct(this->mSliceInfo);
+ }
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ memory::SliceInfo mSliceInfo;
+ };
+
+ class VkStructureType__P: public Encodable {
+ public:
+ VkStructureType__P() = default;
+ VkStructureType__P(uint64_t Address, uint32_t Pool)
+ : mAddress(Address)
+ , mPool(Pool) {}
+ virtual void Encode(Encoder* e) const{
+ e->Uint64(this->mAddress);
+ e->Uint32(this->mPool);
+ }
+ virtual const schema::Entity* Schema() const {
+ return StaticSchema();
+ }
+ static const schema::Entity* StaticSchema();
+ uint64_t mAddress;
+ uint32_t mPool;
+ };
+
class VkSubmitInfo: public Encodable {
public:
VkSubmitInfo() = default;
diff --git a/cc/gapii/CMakeFiles.cmake b/cc/gapii/CMakeFiles.cmake
index b6cc587..b56cfc5 100644
--- a/cc/gapii/CMakeFiles.cmake
+++ b/cc/gapii/CMakeFiles.cmake
@@ -27,7 +27,6 @@
connection_stream.h
core_imports.cpp
core_imports.h
- core_ptr_types.h
core_spy.h
core_spy_0.cpp
core_spy_1.cpp
@@ -48,7 +47,6 @@
gles_extras.cpp
gles_imports.cpp
gles_imports.h
- gles_ptr_types.h
gles_spy.h
gles_spy_0.cpp
gles_spy_1.cpp
@@ -83,7 +81,6 @@
vulkan_imports.cpp
vulkan_imports.h
vulkan_layer_extras.h
- vulkan_ptr_types.h
vulkan_spy.h
vulkan_spy_0.cpp
vulkan_spy_1.cpp
diff --git a/cc/gapii/gles_exports.cpp b/cc/gapii/gles_exports.cpp
index 3e9295d..fd19ab6 100644
--- a/cc/gapii/gles_exports.cpp
+++ b/cc/gapii/gles_exports.cpp
@@ -156,6 +156,7 @@
EXPORT EGLBoolean STDCALL eglWaitNative(EGLint engine);
EXPORT EGLImageKHR STDCALL eglCreateImageKHR(EGLDisplay dpy, EGLContext ctx, uint32_t target, EGLClientBuffer buffer, EGLint* attrib_list);
EXPORT EGLBoolean STDCALL eglDestroyImageKHR(EGLDisplay dpy, EGLImageKHR image);
+EXPORT EGLClientBuffer STDCALL eglCreateNativeClientBufferANDROID(EGLint* attrib_list);
EXPORT void STDCALL glActiveShaderProgramEXT(PipelineId pipeline, ProgramId program);
EXPORT void STDCALL glAlphaFuncQCOM(uint32_t func, GLclampf ref);
EXPORT void STDCALL glApplyFramebufferAttachmentCMAAINTEL();
@@ -485,6 +486,68 @@
EXPORT void STDCALL glViewportIndexedfvNV(GLuint index, GLfloat* v);
EXPORT void STDCALL glWaitSyncAPPLE(GLsync sync, uint32_t flag, GLuint64 timeout);
EXPORT void STDCALL glWeightPathsNV(GLuint resultPath, GLsizei numPaths, GLuint* paths, GLfloat* weights);
+EXPORT void STDCALL glClearPixelLocalStorageuiEXT(GLsizei offset, GLsizei n, GLuint* values);
+EXPORT void STDCALL glClearTexImageEXT(GLuint texture, GLint level, uint32_t format, uint32_t type, void* data);
+EXPORT void STDCALL glClearTexSubImageEXT(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, uint32_t format, uint32_t type, void* data);
+EXPORT void STDCALL glConservativeRasterParameteriNV(uint32_t pname, GLint param);
+EXPORT void STDCALL glDepthRangeArrayfvOES(GLuint first, GLsizei count, GLfloat* v);
+EXPORT void STDCALL glDepthRangeIndexedfOES(GLuint index, GLfloat n, GLfloat f);
+EXPORT void STDCALL glDrawTransformFeedbackEXT(uint32_t mode, GLuint id);
+EXPORT void STDCALL glDrawTransformFeedbackInstancedEXT(uint32_t mode, GLuint id, GLsizei instancecount);
+EXPORT void STDCALL glFramebufferPixelLocalStorageSizeEXT(GLuint target, GLsizei size);
+EXPORT void STDCALL glFramebufferTexture2DDownsampleIMG(uint32_t target, uint32_t attachment, uint32_t textarget, GLuint texture, GLint level, GLint xscale, GLint yscale);
+EXPORT void STDCALL glFramebufferTextureLayerDownsampleIMG(uint32_t target, uint32_t attachment, GLuint texture, GLint level, GLint layer, GLint xscale, GLint yscale);
+EXPORT void STDCALL glFramebufferTextureMultisampleMultiviewOVR(uint32_t target, uint32_t attachment, GLuint texture, GLint level, GLsizei samples, GLint baseViewIndex, GLsizei numViews);
+EXPORT void STDCALL glGetFloati_vOES(uint32_t target, GLuint index, GLfloat* data);
+EXPORT GLsizei STDCALL glGetFramebufferPixelLocalStorageSizeEXT(GLuint target);
+EXPORT GLuint64 STDCALL glGetTextureHandleIMG(GLuint texture);
+EXPORT GLuint64 STDCALL glGetTextureSamplerHandleIMG(GLuint texture, GLuint sampler);
+EXPORT void STDCALL glGetUniformi64vNV(GLuint program, GLint location, GLint64EXT* params);
+EXPORT void STDCALL glPolygonOffsetClampEXT(GLfloat factor, GLfloat units, GLfloat clamp);
+EXPORT void STDCALL glProgramUniform1i64NV(GLuint program, GLint location, GLint64EXT x);
+EXPORT void STDCALL glProgramUniform1i64vNV(GLuint program, GLint location, GLsizei count, GLint64EXT* value);
+EXPORT void STDCALL glProgramUniform1ui64NV(GLuint program, GLint location, GLuint64EXT x);
+EXPORT void STDCALL glProgramUniform1ui64vNV(GLuint program, GLint location, GLsizei count, GLuint64EXT* value);
+EXPORT void STDCALL glProgramUniform2i64NV(GLuint program, GLint location, GLint64EXT x, GLint64EXT y);
+EXPORT void STDCALL glProgramUniform2i64vNV(GLuint program, GLint location, GLsizei count, GLint64EXT* value);
+EXPORT void STDCALL glProgramUniform2ui64NV(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y);
+EXPORT void STDCALL glProgramUniform2ui64vNV(GLuint program, GLint location, GLsizei count, GLuint64EXT* value);
+EXPORT void STDCALL glProgramUniform3i64NV(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
+EXPORT void STDCALL glProgramUniform3i64vNV(GLuint program, GLint location, GLsizei count, GLint64EXT* value);
+EXPORT void STDCALL glProgramUniform3ui64NV(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
+EXPORT void STDCALL glProgramUniform3ui64vNV(GLuint program, GLint location, GLsizei count, GLuint64EXT* value);
+EXPORT void STDCALL glProgramUniform4i64NV(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
+EXPORT void STDCALL glProgramUniform4i64vNV(GLuint program, GLint location, GLsizei count, GLint64EXT* value);
+EXPORT void STDCALL glProgramUniform4ui64NV(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
+EXPORT void STDCALL glProgramUniform4ui64vNV(GLuint program, GLint location, GLsizei count, GLuint64EXT* value);
+EXPORT void STDCALL glProgramUniformHandleui64IMG(GLuint program, GLint location, GLuint64 value);
+EXPORT void STDCALL glProgramUniformHandleui64vIMG(GLuint program, GLint location, GLsizei count, GLuint64* values);
+EXPORT void STDCALL glScissorArrayvOES(GLuint first, GLsizei count, GLint* v);
+EXPORT void STDCALL glScissorIndexedOES(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
+EXPORT void STDCALL glScissorIndexedvOES(GLuint index, GLint* v);
+EXPORT void STDCALL glUniform1i64NV(GLint location, GLint64EXT x);
+EXPORT void STDCALL glUniform1i64vNV(GLint location, GLsizei count, GLint64EXT* value);
+EXPORT void STDCALL glUniform1ui64NV(GLint location, GLuint64EXT x);
+EXPORT void STDCALL glUniform1ui64vNV(GLint location, GLsizei count, GLuint64EXT* value);
+EXPORT void STDCALL glUniform2i64NV(GLint location, GLint64EXT x, GLint64EXT y);
+EXPORT void STDCALL glUniform2i64vNV(GLint location, GLsizei count, GLint64EXT* value);
+EXPORT void STDCALL glUniform2ui64NV(GLint location, GLuint64EXT x, GLuint64EXT y);
+EXPORT void STDCALL glUniform2ui64vNV(GLint location, GLsizei count, GLuint64EXT* value);
+EXPORT void STDCALL glUniform3i64NV(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
+EXPORT void STDCALL glUniform3i64vNV(GLint location, GLsizei count, GLint64EXT* value);
+EXPORT void STDCALL glUniform3ui64NV(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
+EXPORT void STDCALL glUniform3ui64vNV(GLint location, GLsizei count, GLuint64EXT* value);
+EXPORT void STDCALL glUniform4i64NV(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
+EXPORT void STDCALL glUniform4i64vNV(GLint location, GLsizei count, GLint64EXT* value);
+EXPORT void STDCALL glUniform4ui64NV(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
+EXPORT void STDCALL glUniform4ui64vNV(GLint location, GLsizei count, GLuint64EXT* value);
+EXPORT void STDCALL glUniformHandleui64IMG(GLint location, GLuint64 value);
+EXPORT void STDCALL glUniformHandleui64vIMG(GLint location, GLsizei count, GLuint64* value);
+EXPORT void STDCALL glViewportArrayvOES(GLuint first, GLsizei count, GLfloat* v);
+EXPORT void STDCALL glViewportIndexedfOES(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
+EXPORT void STDCALL glViewportIndexedfvOES(GLuint index, GLfloat* v);
+EXPORT void STDCALL glViewportSwizzleNV(GLuint index, uint32_t swizzlex, uint32_t swizzley, uint32_t swizzlez, uint32_t swizzlew);
+EXPORT void STDCALL glWindowRectanglesEXT(uint32_t mode, GLsizei count, GLint* box);
EXPORT void STDCALL glBlendBarrier();
EXPORT void STDCALL glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
EXPORT void STDCALL glBlendEquation(uint32_t equation);
@@ -1129,6 +1192,7 @@
{"eglWaitNative", reinterpret_cast<void*>(eglWaitNative)},
{"eglCreateImageKHR", reinterpret_cast<void*>(eglCreateImageKHR)},
{"eglDestroyImageKHR", reinterpret_cast<void*>(eglDestroyImageKHR)},
+ {"eglCreateNativeClientBufferANDROID", reinterpret_cast<void*>(eglCreateNativeClientBufferANDROID)},
{"glActiveShaderProgramEXT", reinterpret_cast<void*>(glActiveShaderProgramEXT)},
{"glAlphaFuncQCOM", reinterpret_cast<void*>(glAlphaFuncQCOM)},
{"glApplyFramebufferAttachmentCMAAINTEL", reinterpret_cast<void*>(glApplyFramebufferAttachmentCMAAINTEL)},
@@ -1458,6 +1522,68 @@
{"glViewportIndexedfvNV", reinterpret_cast<void*>(glViewportIndexedfvNV)},
{"glWaitSyncAPPLE", reinterpret_cast<void*>(glWaitSyncAPPLE)},
{"glWeightPathsNV", reinterpret_cast<void*>(glWeightPathsNV)},
+ {"glClearPixelLocalStorageuiEXT", reinterpret_cast<void*>(glClearPixelLocalStorageuiEXT)},
+ {"glClearTexImageEXT", reinterpret_cast<void*>(glClearTexImageEXT)},
+ {"glClearTexSubImageEXT", reinterpret_cast<void*>(glClearTexSubImageEXT)},
+ {"glConservativeRasterParameteriNV", reinterpret_cast<void*>(glConservativeRasterParameteriNV)},
+ {"glDepthRangeArrayfvOES", reinterpret_cast<void*>(glDepthRangeArrayfvOES)},
+ {"glDepthRangeIndexedfOES", reinterpret_cast<void*>(glDepthRangeIndexedfOES)},
+ {"glDrawTransformFeedbackEXT", reinterpret_cast<void*>(glDrawTransformFeedbackEXT)},
+ {"glDrawTransformFeedbackInstancedEXT", reinterpret_cast<void*>(glDrawTransformFeedbackInstancedEXT)},
+ {"glFramebufferPixelLocalStorageSizeEXT", reinterpret_cast<void*>(glFramebufferPixelLocalStorageSizeEXT)},
+ {"glFramebufferTexture2DDownsampleIMG", reinterpret_cast<void*>(glFramebufferTexture2DDownsampleIMG)},
+ {"glFramebufferTextureLayerDownsampleIMG", reinterpret_cast<void*>(glFramebufferTextureLayerDownsampleIMG)},
+ {"glFramebufferTextureMultisampleMultiviewOVR", reinterpret_cast<void*>(glFramebufferTextureMultisampleMultiviewOVR)},
+ {"glGetFloati_vOES", reinterpret_cast<void*>(glGetFloati_vOES)},
+ {"glGetFramebufferPixelLocalStorageSizeEXT", reinterpret_cast<void*>(glGetFramebufferPixelLocalStorageSizeEXT)},
+ {"glGetTextureHandleIMG", reinterpret_cast<void*>(glGetTextureHandleIMG)},
+ {"glGetTextureSamplerHandleIMG", reinterpret_cast<void*>(glGetTextureSamplerHandleIMG)},
+ {"glGetUniformi64vNV", reinterpret_cast<void*>(glGetUniformi64vNV)},
+ {"glPolygonOffsetClampEXT", reinterpret_cast<void*>(glPolygonOffsetClampEXT)},
+ {"glProgramUniform1i64NV", reinterpret_cast<void*>(glProgramUniform1i64NV)},
+ {"glProgramUniform1i64vNV", reinterpret_cast<void*>(glProgramUniform1i64vNV)},
+ {"glProgramUniform1ui64NV", reinterpret_cast<void*>(glProgramUniform1ui64NV)},
+ {"glProgramUniform1ui64vNV", reinterpret_cast<void*>(glProgramUniform1ui64vNV)},
+ {"glProgramUniform2i64NV", reinterpret_cast<void*>(glProgramUniform2i64NV)},
+ {"glProgramUniform2i64vNV", reinterpret_cast<void*>(glProgramUniform2i64vNV)},
+ {"glProgramUniform2ui64NV", reinterpret_cast<void*>(glProgramUniform2ui64NV)},
+ {"glProgramUniform2ui64vNV", reinterpret_cast<void*>(glProgramUniform2ui64vNV)},
+ {"glProgramUniform3i64NV", reinterpret_cast<void*>(glProgramUniform3i64NV)},
+ {"glProgramUniform3i64vNV", reinterpret_cast<void*>(glProgramUniform3i64vNV)},
+ {"glProgramUniform3ui64NV", reinterpret_cast<void*>(glProgramUniform3ui64NV)},
+ {"glProgramUniform3ui64vNV", reinterpret_cast<void*>(glProgramUniform3ui64vNV)},
+ {"glProgramUniform4i64NV", reinterpret_cast<void*>(glProgramUniform4i64NV)},
+ {"glProgramUniform4i64vNV", reinterpret_cast<void*>(glProgramUniform4i64vNV)},
+ {"glProgramUniform4ui64NV", reinterpret_cast<void*>(glProgramUniform4ui64NV)},
+ {"glProgramUniform4ui64vNV", reinterpret_cast<void*>(glProgramUniform4ui64vNV)},
+ {"glProgramUniformHandleui64IMG", reinterpret_cast<void*>(glProgramUniformHandleui64IMG)},
+ {"glProgramUniformHandleui64vIMG", reinterpret_cast<void*>(glProgramUniformHandleui64vIMG)},
+ {"glScissorArrayvOES", reinterpret_cast<void*>(glScissorArrayvOES)},
+ {"glScissorIndexedOES", reinterpret_cast<void*>(glScissorIndexedOES)},
+ {"glScissorIndexedvOES", reinterpret_cast<void*>(glScissorIndexedvOES)},
+ {"glUniform1i64NV", reinterpret_cast<void*>(glUniform1i64NV)},
+ {"glUniform1i64vNV", reinterpret_cast<void*>(glUniform1i64vNV)},
+ {"glUniform1ui64NV", reinterpret_cast<void*>(glUniform1ui64NV)},
+ {"glUniform1ui64vNV", reinterpret_cast<void*>(glUniform1ui64vNV)},
+ {"glUniform2i64NV", reinterpret_cast<void*>(glUniform2i64NV)},
+ {"glUniform2i64vNV", reinterpret_cast<void*>(glUniform2i64vNV)},
+ {"glUniform2ui64NV", reinterpret_cast<void*>(glUniform2ui64NV)},
+ {"glUniform2ui64vNV", reinterpret_cast<void*>(glUniform2ui64vNV)},
+ {"glUniform3i64NV", reinterpret_cast<void*>(glUniform3i64NV)},
+ {"glUniform3i64vNV", reinterpret_cast<void*>(glUniform3i64vNV)},
+ {"glUniform3ui64NV", reinterpret_cast<void*>(glUniform3ui64NV)},
+ {"glUniform3ui64vNV", reinterpret_cast<void*>(glUniform3ui64vNV)},
+ {"glUniform4i64NV", reinterpret_cast<void*>(glUniform4i64NV)},
+ {"glUniform4i64vNV", reinterpret_cast<void*>(glUniform4i64vNV)},
+ {"glUniform4ui64NV", reinterpret_cast<void*>(glUniform4ui64NV)},
+ {"glUniform4ui64vNV", reinterpret_cast<void*>(glUniform4ui64vNV)},
+ {"glUniformHandleui64IMG", reinterpret_cast<void*>(glUniformHandleui64IMG)},
+ {"glUniformHandleui64vIMG", reinterpret_cast<void*>(glUniformHandleui64vIMG)},
+ {"glViewportArrayvOES", reinterpret_cast<void*>(glViewportArrayvOES)},
+ {"glViewportIndexedfOES", reinterpret_cast<void*>(glViewportIndexedfOES)},
+ {"glViewportIndexedfvOES", reinterpret_cast<void*>(glViewportIndexedfvOES)},
+ {"glViewportSwizzleNV", reinterpret_cast<void*>(glViewportSwizzleNV)},
+ {"glWindowRectanglesEXT", reinterpret_cast<void*>(glWindowRectanglesEXT)},
{"glBlendBarrier", reinterpret_cast<void*>(glBlendBarrier)},
{"glBlendColor", reinterpret_cast<void*>(glBlendColor)},
{"glBlendEquation", reinterpret_cast<void*>(glBlendEquation)},
@@ -4009,6 +4135,23 @@
GAPID_DEBUG("eglDestroyImageKHR() -- done");
return _result_;
}
+EXPORT EGLClientBuffer STDCALL eglCreateNativeClientBufferANDROID(EGLint* attrib_list) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("eglCreateNativeClientBufferANDROID(%p)", attrib_list);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("eglCreateNativeClientBufferANDROID at %p: GAPII re-entered. Just invoking imported function at %p", eglCreateNativeClientBufferANDROID, s->GlesSpy::imports().eglCreateNativeClientBufferANDROID);
+ auto _result_ = s->GlesSpy::imports().eglCreateNativeClientBufferANDROID(attrib_list);
+ GAPID_DEBUG("eglCreateNativeClientBufferANDROID() -- done");
+ return _result_;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "eglCreateNativeClientBufferANDROID");
+ auto _result_ = s->eglCreateNativeClientBufferANDROID(&observer, attrib_list);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("eglCreateNativeClientBufferANDROID() -- done");
+ return _result_;
+}
EXPORT void STDCALL glActiveShaderProgramEXT(PipelineId pipeline, ProgramId program) {
Spy* s = Spy::get();
GAPID_DEBUG("glActiveShaderProgramEXT(%" PRIu32 ", %" PRIu32 ")", pipeline, program);
@@ -9306,6 +9449,1001 @@
s->exit();
GAPID_DEBUG("glWeightPathsNV() -- done");
}
+EXPORT void STDCALL glClearPixelLocalStorageuiEXT(GLsizei offset, GLsizei n, GLuint* values) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glClearPixelLocalStorageuiEXT(%" PRId32 ", %" PRId32 ", %p)", offset, n, values);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glClearPixelLocalStorageuiEXT at %p: GAPII re-entered. Just invoking imported function at %p", glClearPixelLocalStorageuiEXT, s->GlesSpy::imports().glClearPixelLocalStorageuiEXT);
+ s->GlesSpy::imports().glClearPixelLocalStorageuiEXT(offset, n, values);
+ GAPID_DEBUG("glClearPixelLocalStorageuiEXT() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glClearPixelLocalStorageuiEXT");
+ s->glClearPixelLocalStorageuiEXT(&observer, offset, n, values);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glClearPixelLocalStorageuiEXT() -- done");
+}
+EXPORT void STDCALL glClearTexImageEXT(GLuint texture, GLint level, uint32_t format, uint32_t type, void* data) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glClearTexImageEXT(%" PRIu32 ", %" PRId32 ", %u, %u, %p)", texture, level, format, type, data);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glClearTexImageEXT at %p: GAPII re-entered. Just invoking imported function at %p", glClearTexImageEXT, s->GlesSpy::imports().glClearTexImageEXT);
+ s->GlesSpy::imports().glClearTexImageEXT(texture, level, format, type, data);
+ GAPID_DEBUG("glClearTexImageEXT() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glClearTexImageEXT");
+ s->glClearTexImageEXT(&observer, texture, level, format, type, data);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glClearTexImageEXT() -- done");
+}
+EXPORT void STDCALL glClearTexSubImageEXT(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, uint32_t format, uint32_t type, void* data) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glClearTexSubImageEXT(%" PRIu32 ", %" PRId32 ", %" PRId32 ", %" PRId32 ", %" PRId32 ", %" PRId32 ", %" PRId32 ", %" PRId32 ", %u, %u, %p)", texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, data);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glClearTexSubImageEXT at %p: GAPII re-entered. Just invoking imported function at %p", glClearTexSubImageEXT, s->GlesSpy::imports().glClearTexSubImageEXT);
+ s->GlesSpy::imports().glClearTexSubImageEXT(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, data);
+ GAPID_DEBUG("glClearTexSubImageEXT() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glClearTexSubImageEXT");
+ s->glClearTexSubImageEXT(&observer, texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, data);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glClearTexSubImageEXT() -- done");
+}
+EXPORT void STDCALL glConservativeRasterParameteriNV(uint32_t pname, GLint param) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glConservativeRasterParameteriNV(%u, %" PRId32 ")", pname, param);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glConservativeRasterParameteriNV at %p: GAPII re-entered. Just invoking imported function at %p", glConservativeRasterParameteriNV, s->GlesSpy::imports().glConservativeRasterParameteriNV);
+ s->GlesSpy::imports().glConservativeRasterParameteriNV(pname, param);
+ GAPID_DEBUG("glConservativeRasterParameteriNV() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glConservativeRasterParameteriNV");
+ s->glConservativeRasterParameteriNV(&observer, pname, param);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glConservativeRasterParameteriNV() -- done");
+}
+EXPORT void STDCALL glDepthRangeArrayfvOES(GLuint first, GLsizei count, GLfloat* v) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glDepthRangeArrayfvOES(%" PRIu32 ", %" PRId32 ", %p)", first, count, v);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glDepthRangeArrayfvOES at %p: GAPII re-entered. Just invoking imported function at %p", glDepthRangeArrayfvOES, s->GlesSpy::imports().glDepthRangeArrayfvOES);
+ s->GlesSpy::imports().glDepthRangeArrayfvOES(first, count, v);
+ GAPID_DEBUG("glDepthRangeArrayfvOES() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glDepthRangeArrayfvOES");
+ s->glDepthRangeArrayfvOES(&observer, first, count, v);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glDepthRangeArrayfvOES() -- done");
+}
+EXPORT void STDCALL glDepthRangeIndexedfOES(GLuint index, GLfloat n, GLfloat f) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glDepthRangeIndexedfOES(%" PRIu32 ", %f, %f)", index, n, f);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glDepthRangeIndexedfOES at %p: GAPII re-entered. Just invoking imported function at %p", glDepthRangeIndexedfOES, s->GlesSpy::imports().glDepthRangeIndexedfOES);
+ s->GlesSpy::imports().glDepthRangeIndexedfOES(index, n, f);
+ GAPID_DEBUG("glDepthRangeIndexedfOES() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glDepthRangeIndexedfOES");
+ s->glDepthRangeIndexedfOES(&observer, index, n, f);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glDepthRangeIndexedfOES() -- done");
+}
+EXPORT void STDCALL glDrawTransformFeedbackEXT(uint32_t mode, GLuint id) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glDrawTransformFeedbackEXT(%u, %" PRIu32 ")", mode, id);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glDrawTransformFeedbackEXT at %p: GAPII re-entered. Just invoking imported function at %p", glDrawTransformFeedbackEXT, s->GlesSpy::imports().glDrawTransformFeedbackEXT);
+ s->GlesSpy::imports().glDrawTransformFeedbackEXT(mode, id);
+ GAPID_DEBUG("glDrawTransformFeedbackEXT() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glDrawTransformFeedbackEXT");
+ s->glDrawTransformFeedbackEXT(&observer, mode, id);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glDrawTransformFeedbackEXT() -- done");
+}
+EXPORT void STDCALL glDrawTransformFeedbackInstancedEXT(uint32_t mode, GLuint id, GLsizei instancecount) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glDrawTransformFeedbackInstancedEXT(%u, %" PRIu32 ", %" PRId32 ")", mode, id, instancecount);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glDrawTransformFeedbackInstancedEXT at %p: GAPII re-entered. Just invoking imported function at %p", glDrawTransformFeedbackInstancedEXT, s->GlesSpy::imports().glDrawTransformFeedbackInstancedEXT);
+ s->GlesSpy::imports().glDrawTransformFeedbackInstancedEXT(mode, id, instancecount);
+ GAPID_DEBUG("glDrawTransformFeedbackInstancedEXT() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glDrawTransformFeedbackInstancedEXT");
+ s->glDrawTransformFeedbackInstancedEXT(&observer, mode, id, instancecount);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glDrawTransformFeedbackInstancedEXT() -- done");
+}
+EXPORT void STDCALL glFramebufferPixelLocalStorageSizeEXT(GLuint target, GLsizei size) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glFramebufferPixelLocalStorageSizeEXT(%" PRIu32 ", %" PRId32 ")", target, size);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glFramebufferPixelLocalStorageSizeEXT at %p: GAPII re-entered. Just invoking imported function at %p", glFramebufferPixelLocalStorageSizeEXT, s->GlesSpy::imports().glFramebufferPixelLocalStorageSizeEXT);
+ s->GlesSpy::imports().glFramebufferPixelLocalStorageSizeEXT(target, size);
+ GAPID_DEBUG("glFramebufferPixelLocalStorageSizeEXT() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glFramebufferPixelLocalStorageSizeEXT");
+ s->glFramebufferPixelLocalStorageSizeEXT(&observer, target, size);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glFramebufferPixelLocalStorageSizeEXT() -- done");
+}
+EXPORT void STDCALL glFramebufferTexture2DDownsampleIMG(uint32_t target, uint32_t attachment, uint32_t textarget, GLuint texture, GLint level, GLint xscale, GLint yscale) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glFramebufferTexture2DDownsampleIMG(%u, %u, %u, %" PRIu32 ", %" PRId32 ", %" PRId32 ", %" PRId32 ")", target, attachment, textarget, texture, level, xscale, yscale);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glFramebufferTexture2DDownsampleIMG at %p: GAPII re-entered. Just invoking imported function at %p", glFramebufferTexture2DDownsampleIMG, s->GlesSpy::imports().glFramebufferTexture2DDownsampleIMG);
+ s->GlesSpy::imports().glFramebufferTexture2DDownsampleIMG(target, attachment, textarget, texture, level, xscale, yscale);
+ GAPID_DEBUG("glFramebufferTexture2DDownsampleIMG() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glFramebufferTexture2DDownsampleIMG");
+ s->glFramebufferTexture2DDownsampleIMG(&observer, target, attachment, textarget, texture, level, xscale, yscale);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glFramebufferTexture2DDownsampleIMG() -- done");
+}
+EXPORT void STDCALL glFramebufferTextureLayerDownsampleIMG(uint32_t target, uint32_t attachment, GLuint texture, GLint level, GLint layer, GLint xscale, GLint yscale) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glFramebufferTextureLayerDownsampleIMG(%u, %u, %" PRIu32 ", %" PRId32 ", %" PRId32 ", %" PRId32 ", %" PRId32 ")", target, attachment, texture, level, layer, xscale, yscale);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glFramebufferTextureLayerDownsampleIMG at %p: GAPII re-entered. Just invoking imported function at %p", glFramebufferTextureLayerDownsampleIMG, s->GlesSpy::imports().glFramebufferTextureLayerDownsampleIMG);
+ s->GlesSpy::imports().glFramebufferTextureLayerDownsampleIMG(target, attachment, texture, level, layer, xscale, yscale);
+ GAPID_DEBUG("glFramebufferTextureLayerDownsampleIMG() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glFramebufferTextureLayerDownsampleIMG");
+ s->glFramebufferTextureLayerDownsampleIMG(&observer, target, attachment, texture, level, layer, xscale, yscale);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glFramebufferTextureLayerDownsampleIMG() -- done");
+}
+EXPORT void STDCALL glFramebufferTextureMultisampleMultiviewOVR(uint32_t target, uint32_t attachment, GLuint texture, GLint level, GLsizei samples, GLint baseViewIndex, GLsizei numViews) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glFramebufferTextureMultisampleMultiviewOVR(%u, %u, %" PRIu32 ", %" PRId32 ", %" PRId32 ", %" PRId32 ", %" PRId32 ")", target, attachment, texture, level, samples, baseViewIndex, numViews);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glFramebufferTextureMultisampleMultiviewOVR at %p: GAPII re-entered. Just invoking imported function at %p", glFramebufferTextureMultisampleMultiviewOVR, s->GlesSpy::imports().glFramebufferTextureMultisampleMultiviewOVR);
+ s->GlesSpy::imports().glFramebufferTextureMultisampleMultiviewOVR(target, attachment, texture, level, samples, baseViewIndex, numViews);
+ GAPID_DEBUG("glFramebufferTextureMultisampleMultiviewOVR() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glFramebufferTextureMultisampleMultiviewOVR");
+ s->glFramebufferTextureMultisampleMultiviewOVR(&observer, target, attachment, texture, level, samples, baseViewIndex, numViews);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glFramebufferTextureMultisampleMultiviewOVR() -- done");
+}
+EXPORT void STDCALL glGetFloati_vOES(uint32_t target, GLuint index, GLfloat* data) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glGetFloati_vOES(%u, %" PRIu32 ", %p)", target, index, data);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glGetFloati_vOES at %p: GAPII re-entered. Just invoking imported function at %p", glGetFloati_vOES, s->GlesSpy::imports().glGetFloati_vOES);
+ s->GlesSpy::imports().glGetFloati_vOES(target, index, data);
+ GAPID_DEBUG("glGetFloati_vOES() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glGetFloati_vOES");
+ s->glGetFloati_vOES(&observer, target, index, data);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glGetFloati_vOES() -- done");
+}
+EXPORT GLsizei STDCALL glGetFramebufferPixelLocalStorageSizeEXT(GLuint target) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glGetFramebufferPixelLocalStorageSizeEXT(%" PRIu32 ")", target);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glGetFramebufferPixelLocalStorageSizeEXT at %p: GAPII re-entered. Just invoking imported function at %p", glGetFramebufferPixelLocalStorageSizeEXT, s->GlesSpy::imports().glGetFramebufferPixelLocalStorageSizeEXT);
+ auto _result_ = s->GlesSpy::imports().glGetFramebufferPixelLocalStorageSizeEXT(target);
+ GAPID_DEBUG("glGetFramebufferPixelLocalStorageSizeEXT() -- done");
+ return _result_;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glGetFramebufferPixelLocalStorageSizeEXT");
+ auto _result_ = s->glGetFramebufferPixelLocalStorageSizeEXT(&observer, target);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glGetFramebufferPixelLocalStorageSizeEXT() -- done");
+ return _result_;
+}
+EXPORT GLuint64 STDCALL glGetTextureHandleIMG(GLuint texture) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glGetTextureHandleIMG(%" PRIu32 ")", texture);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glGetTextureHandleIMG at %p: GAPII re-entered. Just invoking imported function at %p", glGetTextureHandleIMG, s->GlesSpy::imports().glGetTextureHandleIMG);
+ auto _result_ = s->GlesSpy::imports().glGetTextureHandleIMG(texture);
+ GAPID_DEBUG("glGetTextureHandleIMG() -- done");
+ return _result_;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glGetTextureHandleIMG");
+ auto _result_ = s->glGetTextureHandleIMG(&observer, texture);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glGetTextureHandleIMG() -- done");
+ return _result_;
+}
+EXPORT GLuint64 STDCALL glGetTextureSamplerHandleIMG(GLuint texture, GLuint sampler) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glGetTextureSamplerHandleIMG(%" PRIu32 ", %" PRIu32 ")", texture, sampler);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glGetTextureSamplerHandleIMG at %p: GAPII re-entered. Just invoking imported function at %p", glGetTextureSamplerHandleIMG, s->GlesSpy::imports().glGetTextureSamplerHandleIMG);
+ auto _result_ = s->GlesSpy::imports().glGetTextureSamplerHandleIMG(texture, sampler);
+ GAPID_DEBUG("glGetTextureSamplerHandleIMG() -- done");
+ return _result_;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glGetTextureSamplerHandleIMG");
+ auto _result_ = s->glGetTextureSamplerHandleIMG(&observer, texture, sampler);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glGetTextureSamplerHandleIMG() -- done");
+ return _result_;
+}
+EXPORT void STDCALL glGetUniformi64vNV(GLuint program, GLint location, GLint64EXT* params) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glGetUniformi64vNV(%" PRIu32 ", %" PRId32 ", %p)", program, location, params);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glGetUniformi64vNV at %p: GAPII re-entered. Just invoking imported function at %p", glGetUniformi64vNV, s->GlesSpy::imports().glGetUniformi64vNV);
+ s->GlesSpy::imports().glGetUniformi64vNV(program, location, params);
+ GAPID_DEBUG("glGetUniformi64vNV() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glGetUniformi64vNV");
+ s->glGetUniformi64vNV(&observer, program, location, params);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glGetUniformi64vNV() -- done");
+}
+EXPORT void STDCALL glPolygonOffsetClampEXT(GLfloat factor, GLfloat units, GLfloat clamp) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glPolygonOffsetClampEXT(%f, %f, %f)", factor, units, clamp);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glPolygonOffsetClampEXT at %p: GAPII re-entered. Just invoking imported function at %p", glPolygonOffsetClampEXT, s->GlesSpy::imports().glPolygonOffsetClampEXT);
+ s->GlesSpy::imports().glPolygonOffsetClampEXT(factor, units, clamp);
+ GAPID_DEBUG("glPolygonOffsetClampEXT() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glPolygonOffsetClampEXT");
+ s->glPolygonOffsetClampEXT(&observer, factor, units, clamp);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glPolygonOffsetClampEXT() -- done");
+}
+EXPORT void STDCALL glProgramUniform1i64NV(GLuint program, GLint location, GLint64EXT x) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glProgramUniform1i64NV(%" PRIu32 ", %" PRId32 ", %" PRId64 ")", program, location, x);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glProgramUniform1i64NV at %p: GAPII re-entered. Just invoking imported function at %p", glProgramUniform1i64NV, s->GlesSpy::imports().glProgramUniform1i64NV);
+ s->GlesSpy::imports().glProgramUniform1i64NV(program, location, x);
+ GAPID_DEBUG("glProgramUniform1i64NV() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glProgramUniform1i64NV");
+ s->glProgramUniform1i64NV(&observer, program, location, x);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glProgramUniform1i64NV() -- done");
+}
+EXPORT void STDCALL glProgramUniform1i64vNV(GLuint program, GLint location, GLsizei count, GLint64EXT* value) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glProgramUniform1i64vNV(%" PRIu32 ", %" PRId32 ", %" PRId32 ", %p)", program, location, count, value);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glProgramUniform1i64vNV at %p: GAPII re-entered. Just invoking imported function at %p", glProgramUniform1i64vNV, s->GlesSpy::imports().glProgramUniform1i64vNV);
+ s->GlesSpy::imports().glProgramUniform1i64vNV(program, location, count, value);
+ GAPID_DEBUG("glProgramUniform1i64vNV() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glProgramUniform1i64vNV");
+ s->glProgramUniform1i64vNV(&observer, program, location, count, value);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glProgramUniform1i64vNV() -- done");
+}
+EXPORT void STDCALL glProgramUniform1ui64NV(GLuint program, GLint location, GLuint64EXT x) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glProgramUniform1ui64NV(%" PRIu32 ", %" PRId32 ", %" PRIu64 ")", program, location, x);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glProgramUniform1ui64NV at %p: GAPII re-entered. Just invoking imported function at %p", glProgramUniform1ui64NV, s->GlesSpy::imports().glProgramUniform1ui64NV);
+ s->GlesSpy::imports().glProgramUniform1ui64NV(program, location, x);
+ GAPID_DEBUG("glProgramUniform1ui64NV() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glProgramUniform1ui64NV");
+ s->glProgramUniform1ui64NV(&observer, program, location, x);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glProgramUniform1ui64NV() -- done");
+}
+EXPORT void STDCALL glProgramUniform1ui64vNV(GLuint program, GLint location, GLsizei count, GLuint64EXT* value) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glProgramUniform1ui64vNV(%" PRIu32 ", %" PRId32 ", %" PRId32 ", %p)", program, location, count, value);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glProgramUniform1ui64vNV at %p: GAPII re-entered. Just invoking imported function at %p", glProgramUniform1ui64vNV, s->GlesSpy::imports().glProgramUniform1ui64vNV);
+ s->GlesSpy::imports().glProgramUniform1ui64vNV(program, location, count, value);
+ GAPID_DEBUG("glProgramUniform1ui64vNV() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glProgramUniform1ui64vNV");
+ s->glProgramUniform1ui64vNV(&observer, program, location, count, value);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glProgramUniform1ui64vNV() -- done");
+}
+EXPORT void STDCALL glProgramUniform2i64NV(GLuint program, GLint location, GLint64EXT x, GLint64EXT y) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glProgramUniform2i64NV(%" PRIu32 ", %" PRId32 ", %" PRId64 ", %" PRId64 ")", program, location, x, y);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glProgramUniform2i64NV at %p: GAPII re-entered. Just invoking imported function at %p", glProgramUniform2i64NV, s->GlesSpy::imports().glProgramUniform2i64NV);
+ s->GlesSpy::imports().glProgramUniform2i64NV(program, location, x, y);
+ GAPID_DEBUG("glProgramUniform2i64NV() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glProgramUniform2i64NV");
+ s->glProgramUniform2i64NV(&observer, program, location, x, y);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glProgramUniform2i64NV() -- done");
+}
+EXPORT void STDCALL glProgramUniform2i64vNV(GLuint program, GLint location, GLsizei count, GLint64EXT* value) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glProgramUniform2i64vNV(%" PRIu32 ", %" PRId32 ", %" PRId32 ", %p)", program, location, count, value);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glProgramUniform2i64vNV at %p: GAPII re-entered. Just invoking imported function at %p", glProgramUniform2i64vNV, s->GlesSpy::imports().glProgramUniform2i64vNV);
+ s->GlesSpy::imports().glProgramUniform2i64vNV(program, location, count, value);
+ GAPID_DEBUG("glProgramUniform2i64vNV() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glProgramUniform2i64vNV");
+ s->glProgramUniform2i64vNV(&observer, program, location, count, value);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glProgramUniform2i64vNV() -- done");
+}
+EXPORT void STDCALL glProgramUniform2ui64NV(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glProgramUniform2ui64NV(%" PRIu32 ", %" PRId32 ", %" PRIu64 ", %" PRIu64 ")", program, location, x, y);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glProgramUniform2ui64NV at %p: GAPII re-entered. Just invoking imported function at %p", glProgramUniform2ui64NV, s->GlesSpy::imports().glProgramUniform2ui64NV);
+ s->GlesSpy::imports().glProgramUniform2ui64NV(program, location, x, y);
+ GAPID_DEBUG("glProgramUniform2ui64NV() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glProgramUniform2ui64NV");
+ s->glProgramUniform2ui64NV(&observer, program, location, x, y);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glProgramUniform2ui64NV() -- done");
+}
+EXPORT void STDCALL glProgramUniform2ui64vNV(GLuint program, GLint location, GLsizei count, GLuint64EXT* value) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glProgramUniform2ui64vNV(%" PRIu32 ", %" PRId32 ", %" PRId32 ", %p)", program, location, count, value);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glProgramUniform2ui64vNV at %p: GAPII re-entered. Just invoking imported function at %p", glProgramUniform2ui64vNV, s->GlesSpy::imports().glProgramUniform2ui64vNV);
+ s->GlesSpy::imports().glProgramUniform2ui64vNV(program, location, count, value);
+ GAPID_DEBUG("glProgramUniform2ui64vNV() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glProgramUniform2ui64vNV");
+ s->glProgramUniform2ui64vNV(&observer, program, location, count, value);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glProgramUniform2ui64vNV() -- done");
+}
+EXPORT void STDCALL glProgramUniform3i64NV(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glProgramUniform3i64NV(%" PRIu32 ", %" PRId32 ", %" PRId64 ", %" PRId64 ", %" PRId64 ")", program, location, x, y, z);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glProgramUniform3i64NV at %p: GAPII re-entered. Just invoking imported function at %p", glProgramUniform3i64NV, s->GlesSpy::imports().glProgramUniform3i64NV);
+ s->GlesSpy::imports().glProgramUniform3i64NV(program, location, x, y, z);
+ GAPID_DEBUG("glProgramUniform3i64NV() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glProgramUniform3i64NV");
+ s->glProgramUniform3i64NV(&observer, program, location, x, y, z);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glProgramUniform3i64NV() -- done");
+}
+EXPORT void STDCALL glProgramUniform3i64vNV(GLuint program, GLint location, GLsizei count, GLint64EXT* value) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glProgramUniform3i64vNV(%" PRIu32 ", %" PRId32 ", %" PRId32 ", %p)", program, location, count, value);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glProgramUniform3i64vNV at %p: GAPII re-entered. Just invoking imported function at %p", glProgramUniform3i64vNV, s->GlesSpy::imports().glProgramUniform3i64vNV);
+ s->GlesSpy::imports().glProgramUniform3i64vNV(program, location, count, value);
+ GAPID_DEBUG("glProgramUniform3i64vNV() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glProgramUniform3i64vNV");
+ s->glProgramUniform3i64vNV(&observer, program, location, count, value);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glProgramUniform3i64vNV() -- done");
+}
+EXPORT void STDCALL glProgramUniform3ui64NV(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glProgramUniform3ui64NV(%" PRIu32 ", %" PRId32 ", %" PRIu64 ", %" PRIu64 ", %" PRIu64 ")", program, location, x, y, z);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glProgramUniform3ui64NV at %p: GAPII re-entered. Just invoking imported function at %p", glProgramUniform3ui64NV, s->GlesSpy::imports().glProgramUniform3ui64NV);
+ s->GlesSpy::imports().glProgramUniform3ui64NV(program, location, x, y, z);
+ GAPID_DEBUG("glProgramUniform3ui64NV() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glProgramUniform3ui64NV");
+ s->glProgramUniform3ui64NV(&observer, program, location, x, y, z);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glProgramUniform3ui64NV() -- done");
+}
+EXPORT void STDCALL glProgramUniform3ui64vNV(GLuint program, GLint location, GLsizei count, GLuint64EXT* value) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glProgramUniform3ui64vNV(%" PRIu32 ", %" PRId32 ", %" PRId32 ", %p)", program, location, count, value);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glProgramUniform3ui64vNV at %p: GAPII re-entered. Just invoking imported function at %p", glProgramUniform3ui64vNV, s->GlesSpy::imports().glProgramUniform3ui64vNV);
+ s->GlesSpy::imports().glProgramUniform3ui64vNV(program, location, count, value);
+ GAPID_DEBUG("glProgramUniform3ui64vNV() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glProgramUniform3ui64vNV");
+ s->glProgramUniform3ui64vNV(&observer, program, location, count, value);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glProgramUniform3ui64vNV() -- done");
+}
+EXPORT void STDCALL glProgramUniform4i64NV(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glProgramUniform4i64NV(%" PRIu32 ", %" PRId32 ", %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 ")", program, location, x, y, z, w);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glProgramUniform4i64NV at %p: GAPII re-entered. Just invoking imported function at %p", glProgramUniform4i64NV, s->GlesSpy::imports().glProgramUniform4i64NV);
+ s->GlesSpy::imports().glProgramUniform4i64NV(program, location, x, y, z, w);
+ GAPID_DEBUG("glProgramUniform4i64NV() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glProgramUniform4i64NV");
+ s->glProgramUniform4i64NV(&observer, program, location, x, y, z, w);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glProgramUniform4i64NV() -- done");
+}
+EXPORT void STDCALL glProgramUniform4i64vNV(GLuint program, GLint location, GLsizei count, GLint64EXT* value) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glProgramUniform4i64vNV(%" PRIu32 ", %" PRId32 ", %" PRId32 ", %p)", program, location, count, value);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glProgramUniform4i64vNV at %p: GAPII re-entered. Just invoking imported function at %p", glProgramUniform4i64vNV, s->GlesSpy::imports().glProgramUniform4i64vNV);
+ s->GlesSpy::imports().glProgramUniform4i64vNV(program, location, count, value);
+ GAPID_DEBUG("glProgramUniform4i64vNV() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glProgramUniform4i64vNV");
+ s->glProgramUniform4i64vNV(&observer, program, location, count, value);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glProgramUniform4i64vNV() -- done");
+}
+EXPORT void STDCALL glProgramUniform4ui64NV(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glProgramUniform4ui64NV(%" PRIu32 ", %" PRId32 ", %" PRIu64 ", %" PRIu64 ", %" PRIu64 ", %" PRIu64 ")", program, location, x, y, z, w);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glProgramUniform4ui64NV at %p: GAPII re-entered. Just invoking imported function at %p", glProgramUniform4ui64NV, s->GlesSpy::imports().glProgramUniform4ui64NV);
+ s->GlesSpy::imports().glProgramUniform4ui64NV(program, location, x, y, z, w);
+ GAPID_DEBUG("glProgramUniform4ui64NV() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glProgramUniform4ui64NV");
+ s->glProgramUniform4ui64NV(&observer, program, location, x, y, z, w);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glProgramUniform4ui64NV() -- done");
+}
+EXPORT void STDCALL glProgramUniform4ui64vNV(GLuint program, GLint location, GLsizei count, GLuint64EXT* value) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glProgramUniform4ui64vNV(%" PRIu32 ", %" PRId32 ", %" PRId32 ", %p)", program, location, count, value);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glProgramUniform4ui64vNV at %p: GAPII re-entered. Just invoking imported function at %p", glProgramUniform4ui64vNV, s->GlesSpy::imports().glProgramUniform4ui64vNV);
+ s->GlesSpy::imports().glProgramUniform4ui64vNV(program, location, count, value);
+ GAPID_DEBUG("glProgramUniform4ui64vNV() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glProgramUniform4ui64vNV");
+ s->glProgramUniform4ui64vNV(&observer, program, location, count, value);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glProgramUniform4ui64vNV() -- done");
+}
+EXPORT void STDCALL glProgramUniformHandleui64IMG(GLuint program, GLint location, GLuint64 value) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glProgramUniformHandleui64IMG(%" PRIu32 ", %" PRId32 ", %" PRIu64 ")", program, location, value);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glProgramUniformHandleui64IMG at %p: GAPII re-entered. Just invoking imported function at %p", glProgramUniformHandleui64IMG, s->GlesSpy::imports().glProgramUniformHandleui64IMG);
+ s->GlesSpy::imports().glProgramUniformHandleui64IMG(program, location, value);
+ GAPID_DEBUG("glProgramUniformHandleui64IMG() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glProgramUniformHandleui64IMG");
+ s->glProgramUniformHandleui64IMG(&observer, program, location, value);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glProgramUniformHandleui64IMG() -- done");
+}
+EXPORT void STDCALL glProgramUniformHandleui64vIMG(GLuint program, GLint location, GLsizei count, GLuint64* values) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glProgramUniformHandleui64vIMG(%" PRIu32 ", %" PRId32 ", %" PRId32 ", %p)", program, location, count, values);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glProgramUniformHandleui64vIMG at %p: GAPII re-entered. Just invoking imported function at %p", glProgramUniformHandleui64vIMG, s->GlesSpy::imports().glProgramUniformHandleui64vIMG);
+ s->GlesSpy::imports().glProgramUniformHandleui64vIMG(program, location, count, values);
+ GAPID_DEBUG("glProgramUniformHandleui64vIMG() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glProgramUniformHandleui64vIMG");
+ s->glProgramUniformHandleui64vIMG(&observer, program, location, count, values);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glProgramUniformHandleui64vIMG() -- done");
+}
+EXPORT void STDCALL glScissorArrayvOES(GLuint first, GLsizei count, GLint* v) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glScissorArrayvOES(%" PRIu32 ", %" PRId32 ", %p)", first, count, v);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glScissorArrayvOES at %p: GAPII re-entered. Just invoking imported function at %p", glScissorArrayvOES, s->GlesSpy::imports().glScissorArrayvOES);
+ s->GlesSpy::imports().glScissorArrayvOES(first, count, v);
+ GAPID_DEBUG("glScissorArrayvOES() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glScissorArrayvOES");
+ s->glScissorArrayvOES(&observer, first, count, v);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glScissorArrayvOES() -- done");
+}
+EXPORT void STDCALL glScissorIndexedOES(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glScissorIndexedOES(%" PRIu32 ", %" PRId32 ", %" PRId32 ", %" PRId32 ", %" PRId32 ")", index, left, bottom, width, height);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glScissorIndexedOES at %p: GAPII re-entered. Just invoking imported function at %p", glScissorIndexedOES, s->GlesSpy::imports().glScissorIndexedOES);
+ s->GlesSpy::imports().glScissorIndexedOES(index, left, bottom, width, height);
+ GAPID_DEBUG("glScissorIndexedOES() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glScissorIndexedOES");
+ s->glScissorIndexedOES(&observer, index, left, bottom, width, height);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glScissorIndexedOES() -- done");
+}
+EXPORT void STDCALL glScissorIndexedvOES(GLuint index, GLint* v) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glScissorIndexedvOES(%" PRIu32 ", %p)", index, v);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glScissorIndexedvOES at %p: GAPII re-entered. Just invoking imported function at %p", glScissorIndexedvOES, s->GlesSpy::imports().glScissorIndexedvOES);
+ s->GlesSpy::imports().glScissorIndexedvOES(index, v);
+ GAPID_DEBUG("glScissorIndexedvOES() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glScissorIndexedvOES");
+ s->glScissorIndexedvOES(&observer, index, v);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glScissorIndexedvOES() -- done");
+}
+EXPORT void STDCALL glUniform1i64NV(GLint location, GLint64EXT x) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glUniform1i64NV(%" PRId32 ", %" PRId64 ")", location, x);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glUniform1i64NV at %p: GAPII re-entered. Just invoking imported function at %p", glUniform1i64NV, s->GlesSpy::imports().glUniform1i64NV);
+ s->GlesSpy::imports().glUniform1i64NV(location, x);
+ GAPID_DEBUG("glUniform1i64NV() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glUniform1i64NV");
+ s->glUniform1i64NV(&observer, location, x);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glUniform1i64NV() -- done");
+}
+EXPORT void STDCALL glUniform1i64vNV(GLint location, GLsizei count, GLint64EXT* value) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glUniform1i64vNV(%" PRId32 ", %" PRId32 ", %p)", location, count, value);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glUniform1i64vNV at %p: GAPII re-entered. Just invoking imported function at %p", glUniform1i64vNV, s->GlesSpy::imports().glUniform1i64vNV);
+ s->GlesSpy::imports().glUniform1i64vNV(location, count, value);
+ GAPID_DEBUG("glUniform1i64vNV() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glUniform1i64vNV");
+ s->glUniform1i64vNV(&observer, location, count, value);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glUniform1i64vNV() -- done");
+}
+EXPORT void STDCALL glUniform1ui64NV(GLint location, GLuint64EXT x) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glUniform1ui64NV(%" PRId32 ", %" PRIu64 ")", location, x);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glUniform1ui64NV at %p: GAPII re-entered. Just invoking imported function at %p", glUniform1ui64NV, s->GlesSpy::imports().glUniform1ui64NV);
+ s->GlesSpy::imports().glUniform1ui64NV(location, x);
+ GAPID_DEBUG("glUniform1ui64NV() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glUniform1ui64NV");
+ s->glUniform1ui64NV(&observer, location, x);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glUniform1ui64NV() -- done");
+}
+EXPORT void STDCALL glUniform1ui64vNV(GLint location, GLsizei count, GLuint64EXT* value) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glUniform1ui64vNV(%" PRId32 ", %" PRId32 ", %p)", location, count, value);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glUniform1ui64vNV at %p: GAPII re-entered. Just invoking imported function at %p", glUniform1ui64vNV, s->GlesSpy::imports().glUniform1ui64vNV);
+ s->GlesSpy::imports().glUniform1ui64vNV(location, count, value);
+ GAPID_DEBUG("glUniform1ui64vNV() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glUniform1ui64vNV");
+ s->glUniform1ui64vNV(&observer, location, count, value);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glUniform1ui64vNV() -- done");
+}
+EXPORT void STDCALL glUniform2i64NV(GLint location, GLint64EXT x, GLint64EXT y) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glUniform2i64NV(%" PRId32 ", %" PRId64 ", %" PRId64 ")", location, x, y);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glUniform2i64NV at %p: GAPII re-entered. Just invoking imported function at %p", glUniform2i64NV, s->GlesSpy::imports().glUniform2i64NV);
+ s->GlesSpy::imports().glUniform2i64NV(location, x, y);
+ GAPID_DEBUG("glUniform2i64NV() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glUniform2i64NV");
+ s->glUniform2i64NV(&observer, location, x, y);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glUniform2i64NV() -- done");
+}
+EXPORT void STDCALL glUniform2i64vNV(GLint location, GLsizei count, GLint64EXT* value) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glUniform2i64vNV(%" PRId32 ", %" PRId32 ", %p)", location, count, value);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glUniform2i64vNV at %p: GAPII re-entered. Just invoking imported function at %p", glUniform2i64vNV, s->GlesSpy::imports().glUniform2i64vNV);
+ s->GlesSpy::imports().glUniform2i64vNV(location, count, value);
+ GAPID_DEBUG("glUniform2i64vNV() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glUniform2i64vNV");
+ s->glUniform2i64vNV(&observer, location, count, value);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glUniform2i64vNV() -- done");
+}
+EXPORT void STDCALL glUniform2ui64NV(GLint location, GLuint64EXT x, GLuint64EXT y) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glUniform2ui64NV(%" PRId32 ", %" PRIu64 ", %" PRIu64 ")", location, x, y);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glUniform2ui64NV at %p: GAPII re-entered. Just invoking imported function at %p", glUniform2ui64NV, s->GlesSpy::imports().glUniform2ui64NV);
+ s->GlesSpy::imports().glUniform2ui64NV(location, x, y);
+ GAPID_DEBUG("glUniform2ui64NV() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glUniform2ui64NV");
+ s->glUniform2ui64NV(&observer, location, x, y);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glUniform2ui64NV() -- done");
+}
+EXPORT void STDCALL glUniform2ui64vNV(GLint location, GLsizei count, GLuint64EXT* value) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glUniform2ui64vNV(%" PRId32 ", %" PRId32 ", %p)", location, count, value);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glUniform2ui64vNV at %p: GAPII re-entered. Just invoking imported function at %p", glUniform2ui64vNV, s->GlesSpy::imports().glUniform2ui64vNV);
+ s->GlesSpy::imports().glUniform2ui64vNV(location, count, value);
+ GAPID_DEBUG("glUniform2ui64vNV() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glUniform2ui64vNV");
+ s->glUniform2ui64vNV(&observer, location, count, value);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glUniform2ui64vNV() -- done");
+}
+EXPORT void STDCALL glUniform3i64NV(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glUniform3i64NV(%" PRId32 ", %" PRId64 ", %" PRId64 ", %" PRId64 ")", location, x, y, z);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glUniform3i64NV at %p: GAPII re-entered. Just invoking imported function at %p", glUniform3i64NV, s->GlesSpy::imports().glUniform3i64NV);
+ s->GlesSpy::imports().glUniform3i64NV(location, x, y, z);
+ GAPID_DEBUG("glUniform3i64NV() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glUniform3i64NV");
+ s->glUniform3i64NV(&observer, location, x, y, z);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glUniform3i64NV() -- done");
+}
+EXPORT void STDCALL glUniform3i64vNV(GLint location, GLsizei count, GLint64EXT* value) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glUniform3i64vNV(%" PRId32 ", %" PRId32 ", %p)", location, count, value);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glUniform3i64vNV at %p: GAPII re-entered. Just invoking imported function at %p", glUniform3i64vNV, s->GlesSpy::imports().glUniform3i64vNV);
+ s->GlesSpy::imports().glUniform3i64vNV(location, count, value);
+ GAPID_DEBUG("glUniform3i64vNV() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glUniform3i64vNV");
+ s->glUniform3i64vNV(&observer, location, count, value);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glUniform3i64vNV() -- done");
+}
+EXPORT void STDCALL glUniform3ui64NV(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glUniform3ui64NV(%" PRId32 ", %" PRIu64 ", %" PRIu64 ", %" PRIu64 ")", location, x, y, z);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glUniform3ui64NV at %p: GAPII re-entered. Just invoking imported function at %p", glUniform3ui64NV, s->GlesSpy::imports().glUniform3ui64NV);
+ s->GlesSpy::imports().glUniform3ui64NV(location, x, y, z);
+ GAPID_DEBUG("glUniform3ui64NV() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glUniform3ui64NV");
+ s->glUniform3ui64NV(&observer, location, x, y, z);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glUniform3ui64NV() -- done");
+}
+EXPORT void STDCALL glUniform3ui64vNV(GLint location, GLsizei count, GLuint64EXT* value) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glUniform3ui64vNV(%" PRId32 ", %" PRId32 ", %p)", location, count, value);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glUniform3ui64vNV at %p: GAPII re-entered. Just invoking imported function at %p", glUniform3ui64vNV, s->GlesSpy::imports().glUniform3ui64vNV);
+ s->GlesSpy::imports().glUniform3ui64vNV(location, count, value);
+ GAPID_DEBUG("glUniform3ui64vNV() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glUniform3ui64vNV");
+ s->glUniform3ui64vNV(&observer, location, count, value);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glUniform3ui64vNV() -- done");
+}
+EXPORT void STDCALL glUniform4i64NV(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glUniform4i64NV(%" PRId32 ", %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 ")", location, x, y, z, w);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glUniform4i64NV at %p: GAPII re-entered. Just invoking imported function at %p", glUniform4i64NV, s->GlesSpy::imports().glUniform4i64NV);
+ s->GlesSpy::imports().glUniform4i64NV(location, x, y, z, w);
+ GAPID_DEBUG("glUniform4i64NV() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glUniform4i64NV");
+ s->glUniform4i64NV(&observer, location, x, y, z, w);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glUniform4i64NV() -- done");
+}
+EXPORT void STDCALL glUniform4i64vNV(GLint location, GLsizei count, GLint64EXT* value) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glUniform4i64vNV(%" PRId32 ", %" PRId32 ", %p)", location, count, value);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glUniform4i64vNV at %p: GAPII re-entered. Just invoking imported function at %p", glUniform4i64vNV, s->GlesSpy::imports().glUniform4i64vNV);
+ s->GlesSpy::imports().glUniform4i64vNV(location, count, value);
+ GAPID_DEBUG("glUniform4i64vNV() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glUniform4i64vNV");
+ s->glUniform4i64vNV(&observer, location, count, value);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glUniform4i64vNV() -- done");
+}
+EXPORT void STDCALL glUniform4ui64NV(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glUniform4ui64NV(%" PRId32 ", %" PRIu64 ", %" PRIu64 ", %" PRIu64 ", %" PRIu64 ")", location, x, y, z, w);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glUniform4ui64NV at %p: GAPII re-entered. Just invoking imported function at %p", glUniform4ui64NV, s->GlesSpy::imports().glUniform4ui64NV);
+ s->GlesSpy::imports().glUniform4ui64NV(location, x, y, z, w);
+ GAPID_DEBUG("glUniform4ui64NV() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glUniform4ui64NV");
+ s->glUniform4ui64NV(&observer, location, x, y, z, w);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glUniform4ui64NV() -- done");
+}
+EXPORT void STDCALL glUniform4ui64vNV(GLint location, GLsizei count, GLuint64EXT* value) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glUniform4ui64vNV(%" PRId32 ", %" PRId32 ", %p)", location, count, value);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glUniform4ui64vNV at %p: GAPII re-entered. Just invoking imported function at %p", glUniform4ui64vNV, s->GlesSpy::imports().glUniform4ui64vNV);
+ s->GlesSpy::imports().glUniform4ui64vNV(location, count, value);
+ GAPID_DEBUG("glUniform4ui64vNV() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glUniform4ui64vNV");
+ s->glUniform4ui64vNV(&observer, location, count, value);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glUniform4ui64vNV() -- done");
+}
+EXPORT void STDCALL glUniformHandleui64IMG(GLint location, GLuint64 value) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glUniformHandleui64IMG(%" PRId32 ", %" PRIu64 ")", location, value);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glUniformHandleui64IMG at %p: GAPII re-entered. Just invoking imported function at %p", glUniformHandleui64IMG, s->GlesSpy::imports().glUniformHandleui64IMG);
+ s->GlesSpy::imports().glUniformHandleui64IMG(location, value);
+ GAPID_DEBUG("glUniformHandleui64IMG() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glUniformHandleui64IMG");
+ s->glUniformHandleui64IMG(&observer, location, value);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glUniformHandleui64IMG() -- done");
+}
+EXPORT void STDCALL glUniformHandleui64vIMG(GLint location, GLsizei count, GLuint64* value) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glUniformHandleui64vIMG(%" PRId32 ", %" PRId32 ", %p)", location, count, value);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glUniformHandleui64vIMG at %p: GAPII re-entered. Just invoking imported function at %p", glUniformHandleui64vIMG, s->GlesSpy::imports().glUniformHandleui64vIMG);
+ s->GlesSpy::imports().glUniformHandleui64vIMG(location, count, value);
+ GAPID_DEBUG("glUniformHandleui64vIMG() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glUniformHandleui64vIMG");
+ s->glUniformHandleui64vIMG(&observer, location, count, value);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glUniformHandleui64vIMG() -- done");
+}
+EXPORT void STDCALL glViewportArrayvOES(GLuint first, GLsizei count, GLfloat* v) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glViewportArrayvOES(%" PRIu32 ", %" PRId32 ", %p)", first, count, v);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glViewportArrayvOES at %p: GAPII re-entered. Just invoking imported function at %p", glViewportArrayvOES, s->GlesSpy::imports().glViewportArrayvOES);
+ s->GlesSpy::imports().glViewportArrayvOES(first, count, v);
+ GAPID_DEBUG("glViewportArrayvOES() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glViewportArrayvOES");
+ s->glViewportArrayvOES(&observer, first, count, v);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glViewportArrayvOES() -- done");
+}
+EXPORT void STDCALL glViewportIndexedfOES(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glViewportIndexedfOES(%" PRIu32 ", %f, %f, %f, %f)", index, x, y, w, h);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glViewportIndexedfOES at %p: GAPII re-entered. Just invoking imported function at %p", glViewportIndexedfOES, s->GlesSpy::imports().glViewportIndexedfOES);
+ s->GlesSpy::imports().glViewportIndexedfOES(index, x, y, w, h);
+ GAPID_DEBUG("glViewportIndexedfOES() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glViewportIndexedfOES");
+ s->glViewportIndexedfOES(&observer, index, x, y, w, h);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glViewportIndexedfOES() -- done");
+}
+EXPORT void STDCALL glViewportIndexedfvOES(GLuint index, GLfloat* v) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glViewportIndexedfvOES(%" PRIu32 ", %p)", index, v);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glViewportIndexedfvOES at %p: GAPII re-entered. Just invoking imported function at %p", glViewportIndexedfvOES, s->GlesSpy::imports().glViewportIndexedfvOES);
+ s->GlesSpy::imports().glViewportIndexedfvOES(index, v);
+ GAPID_DEBUG("glViewportIndexedfvOES() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glViewportIndexedfvOES");
+ s->glViewportIndexedfvOES(&observer, index, v);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glViewportIndexedfvOES() -- done");
+}
+EXPORT void STDCALL glViewportSwizzleNV(GLuint index, uint32_t swizzlex, uint32_t swizzley, uint32_t swizzlez, uint32_t swizzlew) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glViewportSwizzleNV(%" PRIu32 ", %u, %u, %u, %u)", index, swizzlex, swizzley, swizzlez, swizzlew);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glViewportSwizzleNV at %p: GAPII re-entered. Just invoking imported function at %p", glViewportSwizzleNV, s->GlesSpy::imports().glViewportSwizzleNV);
+ s->GlesSpy::imports().glViewportSwizzleNV(index, swizzlex, swizzley, swizzlez, swizzlew);
+ GAPID_DEBUG("glViewportSwizzleNV() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glViewportSwizzleNV");
+ s->glViewportSwizzleNV(&observer, index, swizzlex, swizzley, swizzlez, swizzlew);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glViewportSwizzleNV() -- done");
+}
+EXPORT void STDCALL glWindowRectanglesEXT(uint32_t mode, GLsizei count, GLint* box) {
+ Spy* s = Spy::get();
+ GAPID_DEBUG("glWindowRectanglesEXT(%u, %" PRId32 ", %p)", mode, count, box);
+ if (!s->try_to_enter()) {
+ GAPID_INFO("glWindowRectanglesEXT at %p: GAPII re-entered. Just invoking imported function at %p", glWindowRectanglesEXT, s->GlesSpy::imports().glWindowRectanglesEXT);
+ s->GlesSpy::imports().glWindowRectanglesEXT(mode, count, box);
+ GAPID_DEBUG("glWindowRectanglesEXT() -- done");
+ return;
+ }
+ CallObserver observer(s);
+ s->lock(&observer, "glWindowRectanglesEXT");
+ s->glWindowRectanglesEXT(&observer, mode, count, box);
+ s->unlock();
+ s->exit();
+ GAPID_DEBUG("glWindowRectanglesEXT() -- done");
+}
EXPORT void STDCALL glBlendBarrier() {
Spy* s = Spy::get();
GAPID_DEBUG("glBlendBarrier()");
diff --git a/cc/gapii/gles_extras.cpp b/cc/gapii/gles_extras.cpp
index 499c869..b09de32 100644
--- a/cc/gapii/gles_extras.cpp
+++ b/cc/gapii/gles_extras.cpp
@@ -18,6 +18,15 @@
#include <gapic/coder/gles.h>
#include "gles_spy.h"
+#define ANDROID_NATIVE_MAKE_CONSTANT(a,b,c,d) \
+ (((unsigned)(a)<<24)|((unsigned)(b)<<16)|((unsigned)(c)<<8)|(unsigned)(d))
+
+#define ANDROID_NATIVE_WINDOW_MAGIC \
+ ANDROID_NATIVE_MAKE_CONSTANT('_','w','n','d')
+
+#define ANDROID_NATIVE_BUFFER_MAGIC \
+ ANDROID_NATIVE_MAKE_CONSTANT('_','b','f','r')
+
namespace gapii {
// getProgramInfo returns a ProgramInfo, populated with the details of all the
@@ -73,4 +82,52 @@
return pi;
}
+std::shared_ptr<AndroidNativeBufferExtra> GlesSpy::GetAndroidNativeBufferExtra(CallObserver* observer, void* ptr) {
+#if TARGET_OS == GAPID_OS_ANDROID
+ struct android_native_base_t {
+ int magic;
+ int version;
+ void* reserved[4];
+ void (*incRef)(android_native_base_t* base);
+ void (*decRef)(android_native_base_t* base);
+ };
+
+ struct ANativeWindowBuffer {
+ android_native_base_t common;
+ int width;
+ int height;
+ int stride;
+ int format;
+ int usage;
+ void* reserved[2];
+ void* handle;
+ void* reserved_proc[8];
+ };
+
+ auto buffer = reinterpret_cast<ANativeWindowBuffer*>(ptr);
+
+ if (buffer->common.magic != ANDROID_NATIVE_BUFFER_MAGIC) {
+ GAPID_WARNING("Unknown EGLClientBuffer with magic: 0x%x", buffer->common.magic);
+ return nullptr;
+ }
+
+ std::shared_ptr<AndroidNativeBufferExtra> extra(new AndroidNativeBufferExtra(
+ buffer->width,
+ buffer->height,
+ buffer->stride,
+ buffer->format,
+ buffer->usage
+ ));
+ GAPID_DEBUG("Created AndroidNativeBufferExtra: width=%i, height=%i", buffer->width, buffer->height);
+ observer->addExtra(observer->getScratch()->make<AndroidNativeBufferExtra::CoderType>(extra->encodeable(*observer->getScratch())));
+ return extra;
+#else
+ return nullptr;
+#endif // TARGET_OS == GAPID_OS_ANDROID
}
+
+}
+
+#undef ANDROID_NATIVE_MAKE_CONSTANT
+#undef ANDROID_NATIVE_WINDOW_MAGIC
+#undef ANDROID_NATIVE_BUFFER_MAGIC
diff --git a/cc/gapii/gles_imports.cpp b/cc/gapii/gles_imports.cpp
index bc4185e..c6ee726 100644
--- a/cc/gapii/gles_imports.cpp
+++ b/cc/gapii/gles_imports.cpp
@@ -153,6 +153,7 @@
eglWaitNative = reinterpret_cast<PFNEGLWAITNATIVE>(GetGlesProcAddress("eglWaitNative", true));
eglCreateImageKHR = reinterpret_cast<PFNEGLCREATEIMAGEKHR>(GetGlesProcAddress("eglCreateImageKHR", true));
eglDestroyImageKHR = reinterpret_cast<PFNEGLDESTROYIMAGEKHR>(GetGlesProcAddress("eglDestroyImageKHR", true));
+ eglCreateNativeClientBufferANDROID = reinterpret_cast<PFNEGLCREATENATIVECLIENTBUFFERANDROID>(GetGlesProcAddress("eglCreateNativeClientBufferANDROID", true));
glActiveShaderProgramEXT = reinterpret_cast<PFNGLACTIVESHADERPROGRAMEXT>(GetGlesProcAddress("glActiveShaderProgramEXT", true));
glAlphaFuncQCOM = reinterpret_cast<PFNGLALPHAFUNCQCOM>(GetGlesProcAddress("glAlphaFuncQCOM", true));
glApplyFramebufferAttachmentCMAAINTEL = reinterpret_cast<PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTEL>(GetGlesProcAddress("glApplyFramebufferAttachmentCMAAINTEL", true));
@@ -482,6 +483,68 @@
glViewportIndexedfvNV = reinterpret_cast<PFNGLVIEWPORTINDEXEDFVNV>(GetGlesProcAddress("glViewportIndexedfvNV", true));
glWaitSyncAPPLE = reinterpret_cast<PFNGLWAITSYNCAPPLE>(GetGlesProcAddress("glWaitSyncAPPLE", true));
glWeightPathsNV = reinterpret_cast<PFNGLWEIGHTPATHSNV>(GetGlesProcAddress("glWeightPathsNV", true));
+ glClearPixelLocalStorageuiEXT = reinterpret_cast<PFNGLCLEARPIXELLOCALSTORAGEUIEXT>(GetGlesProcAddress("glClearPixelLocalStorageuiEXT", true));
+ glClearTexImageEXT = reinterpret_cast<PFNGLCLEARTEXIMAGEEXT>(GetGlesProcAddress("glClearTexImageEXT", true));
+ glClearTexSubImageEXT = reinterpret_cast<PFNGLCLEARTEXSUBIMAGEEXT>(GetGlesProcAddress("glClearTexSubImageEXT", true));
+ glConservativeRasterParameteriNV = reinterpret_cast<PFNGLCONSERVATIVERASTERPARAMETERINV>(GetGlesProcAddress("glConservativeRasterParameteriNV", true));
+ glDepthRangeArrayfvOES = reinterpret_cast<PFNGLDEPTHRANGEARRAYFVOES>(GetGlesProcAddress("glDepthRangeArrayfvOES", true));
+ glDepthRangeIndexedfOES = reinterpret_cast<PFNGLDEPTHRANGEINDEXEDFOES>(GetGlesProcAddress("glDepthRangeIndexedfOES", true));
+ glDrawTransformFeedbackEXT = reinterpret_cast<PFNGLDRAWTRANSFORMFEEDBACKEXT>(GetGlesProcAddress("glDrawTransformFeedbackEXT", true));
+ glDrawTransformFeedbackInstancedEXT = reinterpret_cast<PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDEXT>(GetGlesProcAddress("glDrawTransformFeedbackInstancedEXT", true));
+ glFramebufferPixelLocalStorageSizeEXT = reinterpret_cast<PFNGLFRAMEBUFFERPIXELLOCALSTORAGESIZEEXT>(GetGlesProcAddress("glFramebufferPixelLocalStorageSizeEXT", true));
+ glFramebufferTexture2DDownsampleIMG = reinterpret_cast<PFNGLFRAMEBUFFERTEXTURE2DDOWNSAMPLEIMG>(GetGlesProcAddress("glFramebufferTexture2DDownsampleIMG", true));
+ glFramebufferTextureLayerDownsampleIMG = reinterpret_cast<PFNGLFRAMEBUFFERTEXTURELAYERDOWNSAMPLEIMG>(GetGlesProcAddress("glFramebufferTextureLayerDownsampleIMG", true));
+ glFramebufferTextureMultisampleMultiviewOVR = reinterpret_cast<PFNGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVR>(GetGlesProcAddress("glFramebufferTextureMultisampleMultiviewOVR", true));
+ glGetFloati_vOES = reinterpret_cast<PFNGLGETFLOATI_VOES>(GetGlesProcAddress("glGetFloati_vOES", true));
+ glGetFramebufferPixelLocalStorageSizeEXT = reinterpret_cast<PFNGLGETFRAMEBUFFERPIXELLOCALSTORAGESIZEEXT>(GetGlesProcAddress("glGetFramebufferPixelLocalStorageSizeEXT", true));
+ glGetTextureHandleIMG = reinterpret_cast<PFNGLGETTEXTUREHANDLEIMG>(GetGlesProcAddress("glGetTextureHandleIMG", true));
+ glGetTextureSamplerHandleIMG = reinterpret_cast<PFNGLGETTEXTURESAMPLERHANDLEIMG>(GetGlesProcAddress("glGetTextureSamplerHandleIMG", true));
+ glGetUniformi64vNV = reinterpret_cast<PFNGLGETUNIFORMI64VNV>(GetGlesProcAddress("glGetUniformi64vNV", true));
+ glPolygonOffsetClampEXT = reinterpret_cast<PFNGLPOLYGONOFFSETCLAMPEXT>(GetGlesProcAddress("glPolygonOffsetClampEXT", true));
+ glProgramUniform1i64NV = reinterpret_cast<PFNGLPROGRAMUNIFORM1I64NV>(GetGlesProcAddress("glProgramUniform1i64NV", true));
+ glProgramUniform1i64vNV = reinterpret_cast<PFNGLPROGRAMUNIFORM1I64VNV>(GetGlesProcAddress("glProgramUniform1i64vNV", true));
+ glProgramUniform1ui64NV = reinterpret_cast<PFNGLPROGRAMUNIFORM1UI64NV>(GetGlesProcAddress("glProgramUniform1ui64NV", true));
+ glProgramUniform1ui64vNV = reinterpret_cast<PFNGLPROGRAMUNIFORM1UI64VNV>(GetGlesProcAddress("glProgramUniform1ui64vNV", true));
+ glProgramUniform2i64NV = reinterpret_cast<PFNGLPROGRAMUNIFORM2I64NV>(GetGlesProcAddress("glProgramUniform2i64NV", true));
+ glProgramUniform2i64vNV = reinterpret_cast<PFNGLPROGRAMUNIFORM2I64VNV>(GetGlesProcAddress("glProgramUniform2i64vNV", true));
+ glProgramUniform2ui64NV = reinterpret_cast<PFNGLPROGRAMUNIFORM2UI64NV>(GetGlesProcAddress("glProgramUniform2ui64NV", true));
+ glProgramUniform2ui64vNV = reinterpret_cast<PFNGLPROGRAMUNIFORM2UI64VNV>(GetGlesProcAddress("glProgramUniform2ui64vNV", true));
+ glProgramUniform3i64NV = reinterpret_cast<PFNGLPROGRAMUNIFORM3I64NV>(GetGlesProcAddress("glProgramUniform3i64NV", true));
+ glProgramUniform3i64vNV = reinterpret_cast<PFNGLPROGRAMUNIFORM3I64VNV>(GetGlesProcAddress("glProgramUniform3i64vNV", true));
+ glProgramUniform3ui64NV = reinterpret_cast<PFNGLPROGRAMUNIFORM3UI64NV>(GetGlesProcAddress("glProgramUniform3ui64NV", true));
+ glProgramUniform3ui64vNV = reinterpret_cast<PFNGLPROGRAMUNIFORM3UI64VNV>(GetGlesProcAddress("glProgramUniform3ui64vNV", true));
+ glProgramUniform4i64NV = reinterpret_cast<PFNGLPROGRAMUNIFORM4I64NV>(GetGlesProcAddress("glProgramUniform4i64NV", true));
+ glProgramUniform4i64vNV = reinterpret_cast<PFNGLPROGRAMUNIFORM4I64VNV>(GetGlesProcAddress("glProgramUniform4i64vNV", true));
+ glProgramUniform4ui64NV = reinterpret_cast<PFNGLPROGRAMUNIFORM4UI64NV>(GetGlesProcAddress("glProgramUniform4ui64NV", true));
+ glProgramUniform4ui64vNV = reinterpret_cast<PFNGLPROGRAMUNIFORM4UI64VNV>(GetGlesProcAddress("glProgramUniform4ui64vNV", true));
+ glProgramUniformHandleui64IMG = reinterpret_cast<PFNGLPROGRAMUNIFORMHANDLEUI64IMG>(GetGlesProcAddress("glProgramUniformHandleui64IMG", true));
+ glProgramUniformHandleui64vIMG = reinterpret_cast<PFNGLPROGRAMUNIFORMHANDLEUI64VIMG>(GetGlesProcAddress("glProgramUniformHandleui64vIMG", true));
+ glScissorArrayvOES = reinterpret_cast<PFNGLSCISSORARRAYVOES>(GetGlesProcAddress("glScissorArrayvOES", true));
+ glScissorIndexedOES = reinterpret_cast<PFNGLSCISSORINDEXEDOES>(GetGlesProcAddress("glScissorIndexedOES", true));
+ glScissorIndexedvOES = reinterpret_cast<PFNGLSCISSORINDEXEDVOES>(GetGlesProcAddress("glScissorIndexedvOES", true));
+ glUniform1i64NV = reinterpret_cast<PFNGLUNIFORM1I64NV>(GetGlesProcAddress("glUniform1i64NV", true));
+ glUniform1i64vNV = reinterpret_cast<PFNGLUNIFORM1I64VNV>(GetGlesProcAddress("glUniform1i64vNV", true));
+ glUniform1ui64NV = reinterpret_cast<PFNGLUNIFORM1UI64NV>(GetGlesProcAddress("glUniform1ui64NV", true));
+ glUniform1ui64vNV = reinterpret_cast<PFNGLUNIFORM1UI64VNV>(GetGlesProcAddress("glUniform1ui64vNV", true));
+ glUniform2i64NV = reinterpret_cast<PFNGLUNIFORM2I64NV>(GetGlesProcAddress("glUniform2i64NV", true));
+ glUniform2i64vNV = reinterpret_cast<PFNGLUNIFORM2I64VNV>(GetGlesProcAddress("glUniform2i64vNV", true));
+ glUniform2ui64NV = reinterpret_cast<PFNGLUNIFORM2UI64NV>(GetGlesProcAddress("glUniform2ui64NV", true));
+ glUniform2ui64vNV = reinterpret_cast<PFNGLUNIFORM2UI64VNV>(GetGlesProcAddress("glUniform2ui64vNV", true));
+ glUniform3i64NV = reinterpret_cast<PFNGLUNIFORM3I64NV>(GetGlesProcAddress("glUniform3i64NV", true));
+ glUniform3i64vNV = reinterpret_cast<PFNGLUNIFORM3I64VNV>(GetGlesProcAddress("glUniform3i64vNV", true));
+ glUniform3ui64NV = reinterpret_cast<PFNGLUNIFORM3UI64NV>(GetGlesProcAddress("glUniform3ui64NV", true));
+ glUniform3ui64vNV = reinterpret_cast<PFNGLUNIFORM3UI64VNV>(GetGlesProcAddress("glUniform3ui64vNV", true));
+ glUniform4i64NV = reinterpret_cast<PFNGLUNIFORM4I64NV>(GetGlesProcAddress("glUniform4i64NV", true));
+ glUniform4i64vNV = reinterpret_cast<PFNGLUNIFORM4I64VNV>(GetGlesProcAddress("glUniform4i64vNV", true));
+ glUniform4ui64NV = reinterpret_cast<PFNGLUNIFORM4UI64NV>(GetGlesProcAddress("glUniform4ui64NV", true));
+ glUniform4ui64vNV = reinterpret_cast<PFNGLUNIFORM4UI64VNV>(GetGlesProcAddress("glUniform4ui64vNV", true));
+ glUniformHandleui64IMG = reinterpret_cast<PFNGLUNIFORMHANDLEUI64IMG>(GetGlesProcAddress("glUniformHandleui64IMG", true));
+ glUniformHandleui64vIMG = reinterpret_cast<PFNGLUNIFORMHANDLEUI64VIMG>(GetGlesProcAddress("glUniformHandleui64vIMG", true));
+ glViewportArrayvOES = reinterpret_cast<PFNGLVIEWPORTARRAYVOES>(GetGlesProcAddress("glViewportArrayvOES", true));
+ glViewportIndexedfOES = reinterpret_cast<PFNGLVIEWPORTINDEXEDFOES>(GetGlesProcAddress("glViewportIndexedfOES", true));
+ glViewportIndexedfvOES = reinterpret_cast<PFNGLVIEWPORTINDEXEDFVOES>(GetGlesProcAddress("glViewportIndexedfvOES", true));
+ glViewportSwizzleNV = reinterpret_cast<PFNGLVIEWPORTSWIZZLENV>(GetGlesProcAddress("glViewportSwizzleNV", true));
+ glWindowRectanglesEXT = reinterpret_cast<PFNGLWINDOWRECTANGLESEXT>(GetGlesProcAddress("glWindowRectanglesEXT", true));
glBlendBarrier = reinterpret_cast<PFNGLBLENDBARRIER>(GetGlesProcAddress("glBlendBarrier", true));
glBlendColor = reinterpret_cast<PFNGLBLENDCOLOR>(GetGlesProcAddress("glBlendColor", true));
glBlendEquation = reinterpret_cast<PFNGLBLENDEQUATION>(GetGlesProcAddress("glBlendEquation", true));
diff --git a/cc/gapii/gles_imports.h b/cc/gapii/gles_imports.h
index 0c85e31..33192c0 100644
--- a/cc/gapii/gles_imports.h
+++ b/cc/gapii/gles_imports.h
@@ -151,6 +151,7 @@
typedef EGLBoolean (GLES_API_PTR *PFNEGLWAITNATIVE)(EGLint engine);
typedef EGLImageKHR (GLES_API_PTR *PFNEGLCREATEIMAGEKHR)(EGLDisplay dpy, EGLContext ctx, uint32_t target, EGLClientBuffer buffer, EGLint* attrib_list);
typedef EGLBoolean (GLES_API_PTR *PFNEGLDESTROYIMAGEKHR)(EGLDisplay dpy, EGLImageKHR image);
+ typedef EGLClientBuffer (GLES_API_PTR *PFNEGLCREATENATIVECLIENTBUFFERANDROID)(EGLint* attrib_list);
typedef void (GLES_API_PTR *PFNGLACTIVESHADERPROGRAMEXT)(PipelineId pipeline, ProgramId program);
typedef void (GLES_API_PTR *PFNGLALPHAFUNCQCOM)(uint32_t func, GLclampf ref);
typedef void (GLES_API_PTR *PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTEL)();
@@ -480,6 +481,68 @@
typedef void (GLES_API_PTR *PFNGLVIEWPORTINDEXEDFVNV)(GLuint index, GLfloat* v);
typedef void (GLES_API_PTR *PFNGLWAITSYNCAPPLE)(GLsync sync, uint32_t flag, GLuint64 timeout);
typedef void (GLES_API_PTR *PFNGLWEIGHTPATHSNV)(GLuint resultPath, GLsizei numPaths, GLuint* paths, GLfloat* weights);
+ typedef void (GLES_API_PTR *PFNGLCLEARPIXELLOCALSTORAGEUIEXT)(GLsizei offset, GLsizei n, GLuint* values);
+ typedef void (GLES_API_PTR *PFNGLCLEARTEXIMAGEEXT)(GLuint texture, GLint level, uint32_t format, uint32_t type, void* data);
+ typedef void (GLES_API_PTR *PFNGLCLEARTEXSUBIMAGEEXT)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, uint32_t format, uint32_t type, void* data);
+ typedef void (GLES_API_PTR *PFNGLCONSERVATIVERASTERPARAMETERINV)(uint32_t pname, GLint param);
+ typedef void (GLES_API_PTR *PFNGLDEPTHRANGEARRAYFVOES)(GLuint first, GLsizei count, GLfloat* v);
+ typedef void (GLES_API_PTR *PFNGLDEPTHRANGEINDEXEDFOES)(GLuint index, GLfloat n, GLfloat f);
+ typedef void (GLES_API_PTR *PFNGLDRAWTRANSFORMFEEDBACKEXT)(uint32_t mode, GLuint id);
+ typedef void (GLES_API_PTR *PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDEXT)(uint32_t mode, GLuint id, GLsizei instancecount);
+ typedef void (GLES_API_PTR *PFNGLFRAMEBUFFERPIXELLOCALSTORAGESIZEEXT)(GLuint target, GLsizei size);
+ typedef void (GLES_API_PTR *PFNGLFRAMEBUFFERTEXTURE2DDOWNSAMPLEIMG)(uint32_t target, uint32_t attachment, uint32_t textarget, GLuint texture, GLint level, GLint xscale, GLint yscale);
+ typedef void (GLES_API_PTR *PFNGLFRAMEBUFFERTEXTURELAYERDOWNSAMPLEIMG)(uint32_t target, uint32_t attachment, GLuint texture, GLint level, GLint layer, GLint xscale, GLint yscale);
+ typedef void (GLES_API_PTR *PFNGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVR)(uint32_t target, uint32_t attachment, GLuint texture, GLint level, GLsizei samples, GLint baseViewIndex, GLsizei numViews);
+ typedef void (GLES_API_PTR *PFNGLGETFLOATI_VOES)(uint32_t target, GLuint index, GLfloat* data);
+ typedef GLsizei (GLES_API_PTR *PFNGLGETFRAMEBUFFERPIXELLOCALSTORAGESIZEEXT)(GLuint target);
+ typedef GLuint64 (GLES_API_PTR *PFNGLGETTEXTUREHANDLEIMG)(GLuint texture);
+ typedef GLuint64 (GLES_API_PTR *PFNGLGETTEXTURESAMPLERHANDLEIMG)(GLuint texture, GLuint sampler);
+ typedef void (GLES_API_PTR *PFNGLGETUNIFORMI64VNV)(GLuint program, GLint location, GLint64EXT* params);
+ typedef void (GLES_API_PTR *PFNGLPOLYGONOFFSETCLAMPEXT)(GLfloat factor, GLfloat units, GLfloat clamp);
+ typedef void (GLES_API_PTR *PFNGLPROGRAMUNIFORM1I64NV)(GLuint program, GLint location, GLint64EXT x);
+ typedef void (GLES_API_PTR *PFNGLPROGRAMUNIFORM1I64VNV)(GLuint program, GLint location, GLsizei count, GLint64EXT* value);
+ typedef void (GLES_API_PTR *PFNGLPROGRAMUNIFORM1UI64NV)(GLuint program, GLint location, GLuint64EXT x);
+ typedef void (GLES_API_PTR *PFNGLPROGRAMUNIFORM1UI64VNV)(GLuint program, GLint location, GLsizei count, GLuint64EXT* value);
+ typedef void (GLES_API_PTR *PFNGLPROGRAMUNIFORM2I64NV)(GLuint program, GLint location, GLint64EXT x, GLint64EXT y);
+ typedef void (GLES_API_PTR *PFNGLPROGRAMUNIFORM2I64VNV)(GLuint program, GLint location, GLsizei count, GLint64EXT* value);
+ typedef void (GLES_API_PTR *PFNGLPROGRAMUNIFORM2UI64NV)(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y);
+ typedef void (GLES_API_PTR *PFNGLPROGRAMUNIFORM2UI64VNV)(GLuint program, GLint location, GLsizei count, GLuint64EXT* value);
+ typedef void (GLES_API_PTR *PFNGLPROGRAMUNIFORM3I64NV)(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
+ typedef void (GLES_API_PTR *PFNGLPROGRAMUNIFORM3I64VNV)(GLuint program, GLint location, GLsizei count, GLint64EXT* value);
+ typedef void (GLES_API_PTR *PFNGLPROGRAMUNIFORM3UI64NV)(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
+ typedef void (GLES_API_PTR *PFNGLPROGRAMUNIFORM3UI64VNV)(GLuint program, GLint location, GLsizei count, GLuint64EXT* value);
+ typedef void (GLES_API_PTR *PFNGLPROGRAMUNIFORM4I64NV)(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
+ typedef void (GLES_API_PTR *PFNGLPROGRAMUNIFORM4I64VNV)(GLuint program, GLint location, GLsizei count, GLint64EXT* value);
+ typedef void (GLES_API_PTR *PFNGLPROGRAMUNIFORM4UI64NV)(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
+ typedef void (GLES_API_PTR *PFNGLPROGRAMUNIFORM4UI64VNV)(GLuint program, GLint location, GLsizei count, GLuint64EXT* value);
+ typedef void (GLES_API_PTR *PFNGLPROGRAMUNIFORMHANDLEUI64IMG)(GLuint program, GLint location, GLuint64 value);
+ typedef void (GLES_API_PTR *PFNGLPROGRAMUNIFORMHANDLEUI64VIMG)(GLuint program, GLint location, GLsizei count, GLuint64* values);
+ typedef void (GLES_API_PTR *PFNGLSCISSORARRAYVOES)(GLuint first, GLsizei count, GLint* v);
+ typedef void (GLES_API_PTR *PFNGLSCISSORINDEXEDOES)(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
+ typedef void (GLES_API_PTR *PFNGLSCISSORINDEXEDVOES)(GLuint index, GLint* v);
+ typedef void (GLES_API_PTR *PFNGLUNIFORM1I64NV)(GLint location, GLint64EXT x);
+ typedef void (GLES_API_PTR *PFNGLUNIFORM1I64VNV)(GLint location, GLsizei count, GLint64EXT* value);
+ typedef void (GLES_API_PTR *PFNGLUNIFORM1UI64NV)(GLint location, GLuint64EXT x);
+ typedef void (GLES_API_PTR *PFNGLUNIFORM1UI64VNV)(GLint location, GLsizei count, GLuint64EXT* value);
+ typedef void (GLES_API_PTR *PFNGLUNIFORM2I64NV)(GLint location, GLint64EXT x, GLint64EXT y);
+ typedef void (GLES_API_PTR *PFNGLUNIFORM2I64VNV)(GLint location, GLsizei count, GLint64EXT* value);
+ typedef void (GLES_API_PTR *PFNGLUNIFORM2UI64NV)(GLint location, GLuint64EXT x, GLuint64EXT y);
+ typedef void (GLES_API_PTR *PFNGLUNIFORM2UI64VNV)(GLint location, GLsizei count, GLuint64EXT* value);
+ typedef void (GLES_API_PTR *PFNGLUNIFORM3I64NV)(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
+ typedef void (GLES_API_PTR *PFNGLUNIFORM3I64VNV)(GLint location, GLsizei count, GLint64EXT* value);
+ typedef void (GLES_API_PTR *PFNGLUNIFORM3UI64NV)(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
+ typedef void (GLES_API_PTR *PFNGLUNIFORM3UI64VNV)(GLint location, GLsizei count, GLuint64EXT* value);
+ typedef void (GLES_API_PTR *PFNGLUNIFORM4I64NV)(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
+ typedef void (GLES_API_PTR *PFNGLUNIFORM4I64VNV)(GLint location, GLsizei count, GLint64EXT* value);
+ typedef void (GLES_API_PTR *PFNGLUNIFORM4UI64NV)(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
+ typedef void (GLES_API_PTR *PFNGLUNIFORM4UI64VNV)(GLint location, GLsizei count, GLuint64EXT* value);
+ typedef void (GLES_API_PTR *PFNGLUNIFORMHANDLEUI64IMG)(GLint location, GLuint64 value);
+ typedef void (GLES_API_PTR *PFNGLUNIFORMHANDLEUI64VIMG)(GLint location, GLsizei count, GLuint64* value);
+ typedef void (GLES_API_PTR *PFNGLVIEWPORTARRAYVOES)(GLuint first, GLsizei count, GLfloat* v);
+ typedef void (GLES_API_PTR *PFNGLVIEWPORTINDEXEDFOES)(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
+ typedef void (GLES_API_PTR *PFNGLVIEWPORTINDEXEDFVOES)(GLuint index, GLfloat* v);
+ typedef void (GLES_API_PTR *PFNGLVIEWPORTSWIZZLENV)(GLuint index, uint32_t swizzlex, uint32_t swizzley, uint32_t swizzlez, uint32_t swizzlew);
+ typedef void (GLES_API_PTR *PFNGLWINDOWRECTANGLESEXT)(uint32_t mode, GLsizei count, GLint* box);
typedef void (GLES_API_PTR *PFNGLBLENDBARRIER)();
typedef void (GLES_API_PTR *PFNGLBLENDCOLOR)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
typedef void (GLES_API_PTR *PFNGLBLENDEQUATION)(uint32_t equation);
@@ -1116,6 +1179,7 @@
PFNEGLWAITNATIVE eglWaitNative;
PFNEGLCREATEIMAGEKHR eglCreateImageKHR;
PFNEGLDESTROYIMAGEKHR eglDestroyImageKHR;
+ PFNEGLCREATENATIVECLIENTBUFFERANDROID eglCreateNativeClientBufferANDROID;
PFNGLACTIVESHADERPROGRAMEXT glActiveShaderProgramEXT;
PFNGLALPHAFUNCQCOM glAlphaFuncQCOM;
PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTEL glApplyFramebufferAttachmentCMAAINTEL;
@@ -1445,6 +1509,68 @@
PFNGLVIEWPORTINDEXEDFVNV glViewportIndexedfvNV;
PFNGLWAITSYNCAPPLE glWaitSyncAPPLE;
PFNGLWEIGHTPATHSNV glWeightPathsNV;
+ PFNGLCLEARPIXELLOCALSTORAGEUIEXT glClearPixelLocalStorageuiEXT;
+ PFNGLCLEARTEXIMAGEEXT glClearTexImageEXT;
+ PFNGLCLEARTEXSUBIMAGEEXT glClearTexSubImageEXT;
+ PFNGLCONSERVATIVERASTERPARAMETERINV glConservativeRasterParameteriNV;
+ PFNGLDEPTHRANGEARRAYFVOES glDepthRangeArrayfvOES;
+ PFNGLDEPTHRANGEINDEXEDFOES glDepthRangeIndexedfOES;
+ PFNGLDRAWTRANSFORMFEEDBACKEXT glDrawTransformFeedbackEXT;
+ PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDEXT glDrawTransformFeedbackInstancedEXT;
+ PFNGLFRAMEBUFFERPIXELLOCALSTORAGESIZEEXT glFramebufferPixelLocalStorageSizeEXT;
+ PFNGLFRAMEBUFFERTEXTURE2DDOWNSAMPLEIMG glFramebufferTexture2DDownsampleIMG;
+ PFNGLFRAMEBUFFERTEXTURELAYERDOWNSAMPLEIMG glFramebufferTextureLayerDownsampleIMG;
+ PFNGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVR glFramebufferTextureMultisampleMultiviewOVR;
+ PFNGLGETFLOATI_VOES glGetFloati_vOES;
+ PFNGLGETFRAMEBUFFERPIXELLOCALSTORAGESIZEEXT glGetFramebufferPixelLocalStorageSizeEXT;
+ PFNGLGETTEXTUREHANDLEIMG glGetTextureHandleIMG;
+ PFNGLGETTEXTURESAMPLERHANDLEIMG glGetTextureSamplerHandleIMG;
+ PFNGLGETUNIFORMI64VNV glGetUniformi64vNV;
+ PFNGLPOLYGONOFFSETCLAMPEXT glPolygonOffsetClampEXT;
+ PFNGLPROGRAMUNIFORM1I64NV glProgramUniform1i64NV;
+ PFNGLPROGRAMUNIFORM1I64VNV glProgramUniform1i64vNV;
+ PFNGLPROGRAMUNIFORM1UI64NV glProgramUniform1ui64NV;
+ PFNGLPROGRAMUNIFORM1UI64VNV glProgramUniform1ui64vNV;
+ PFNGLPROGRAMUNIFORM2I64NV glProgramUniform2i64NV;
+ PFNGLPROGRAMUNIFORM2I64VNV glProgramUniform2i64vNV;
+ PFNGLPROGRAMUNIFORM2UI64NV glProgramUniform2ui64NV;
+ PFNGLPROGRAMUNIFORM2UI64VNV glProgramUniform2ui64vNV;
+ PFNGLPROGRAMUNIFORM3I64NV glProgramUniform3i64NV;
+ PFNGLPROGRAMUNIFORM3I64VNV glProgramUniform3i64vNV;
+ PFNGLPROGRAMUNIFORM3UI64NV glProgramUniform3ui64NV;
+ PFNGLPROGRAMUNIFORM3UI64VNV glProgramUniform3ui64vNV;
+ PFNGLPROGRAMUNIFORM4I64NV glProgramUniform4i64NV;
+ PFNGLPROGRAMUNIFORM4I64VNV glProgramUniform4i64vNV;
+ PFNGLPROGRAMUNIFORM4UI64NV glProgramUniform4ui64NV;
+ PFNGLPROGRAMUNIFORM4UI64VNV glProgramUniform4ui64vNV;
+ PFNGLPROGRAMUNIFORMHANDLEUI64IMG glProgramUniformHandleui64IMG;
+ PFNGLPROGRAMUNIFORMHANDLEUI64VIMG glProgramUniformHandleui64vIMG;
+ PFNGLSCISSORARRAYVOES glScissorArrayvOES;
+ PFNGLSCISSORINDEXEDOES glScissorIndexedOES;
+ PFNGLSCISSORINDEXEDVOES glScissorIndexedvOES;
+ PFNGLUNIFORM1I64NV glUniform1i64NV;
+ PFNGLUNIFORM1I64VNV glUniform1i64vNV;
+ PFNGLUNIFORM1UI64NV glUniform1ui64NV;
+ PFNGLUNIFORM1UI64VNV glUniform1ui64vNV;
+ PFNGLUNIFORM2I64NV glUniform2i64NV;
+ PFNGLUNIFORM2I64VNV glUniform2i64vNV;
+ PFNGLUNIFORM2UI64NV glUniform2ui64NV;
+ PFNGLUNIFORM2UI64VNV glUniform2ui64vNV;
+ PFNGLUNIFORM3I64NV glUniform3i64NV;
+ PFNGLUNIFORM3I64VNV glUniform3i64vNV;
+ PFNGLUNIFORM3UI64NV glUniform3ui64NV;
+ PFNGLUNIFORM3UI64VNV glUniform3ui64vNV;
+ PFNGLUNIFORM4I64NV glUniform4i64NV;
+ PFNGLUNIFORM4I64VNV glUniform4i64vNV;
+ PFNGLUNIFORM4UI64NV glUniform4ui64NV;
+ PFNGLUNIFORM4UI64VNV glUniform4ui64vNV;
+ PFNGLUNIFORMHANDLEUI64IMG glUniformHandleui64IMG;
+ PFNGLUNIFORMHANDLEUI64VIMG glUniformHandleui64vIMG;
+ PFNGLVIEWPORTARRAYVOES glViewportArrayvOES;
+ PFNGLVIEWPORTINDEXEDFOES glViewportIndexedfOES;
+ PFNGLVIEWPORTINDEXEDFVOES glViewportIndexedfvOES;
+ PFNGLVIEWPORTSWIZZLENV glViewportSwizzleNV;
+ PFNGLWINDOWRECTANGLESEXT glWindowRectanglesEXT;
PFNGLBLENDBARRIER glBlendBarrier;
PFNGLBLENDCOLOR glBlendColor;
PFNGLBLENDEQUATION glBlendEquation;
diff --git a/cc/gapii/gles_spy.h b/cc/gapii/gles_spy.h
index 2bd40c5..1abc601 100644
--- a/cc/gapii/gles_spy.h
+++ b/cc/gapii/gles_spy.h
@@ -37,6 +37,7 @@
inline const GlesImports& imports() const;
+ std::shared_ptr<AndroidNativeBufferExtra> GetAndroidNativeBufferExtra(CallObserver* observer, void* buffer);
std::shared_ptr<DynamicContextState> GetEGLDynamicContextState(CallObserver* observer, EGLDisplay display, EGLSurface surface, EGLContext context);
std::shared_ptr<StaticContextState> GetEGLStaticContextState(CallObserver* observer, EGLDisplay display, EGLSurface surface, EGLContext context);
std::shared_ptr<ProgramInfo> GetProgramInfoExtra(CallObserver* observer, ProgramId programId);
@@ -76,6 +77,7 @@
void subDrawRangeElementsBaseVertex(CallObserver* observer, const std::function<void()>& call, uint32_t draw_mode, GLuint start, GLuint end, GLsizei indices_count, uint32_t indices_type, IndicesPointer indices, GLint base_vertex);
void subPatchParameteri(CallObserver* observer, const std::function<void()>& call, uint32_t pname, GLint value);
void subPrimitiveBoundingBox(CallObserver* observer, const std::function<void()>& call, GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW);
+ void subObserveAttribList(CallObserver* observer, const std::function<void()>& call, EGLint* attrib_list);
void subApplyProgramInfoExtra(CallObserver* observer, const std::function<void()>& call, ProgramId programId, std::shared_ptr<ProgramInfo> info);
void subBlendBarrier(CallObserver* observer, const std::function<void()>& call);
void subBlendEquationSeparatei(CallObserver* observer, const std::function<void()>& call, DrawBufferIndex buf, uint32_t modeRGB, uint32_t modeAlpha);
@@ -425,6 +427,7 @@
EGLBoolean eglWaitNative(CallObserver* observer, EGLint engine);
EGLImageKHR eglCreateImageKHR(CallObserver* observer, EGLDisplay dpy, EGLContext ctx, uint32_t target, EGLClientBuffer buffer, EGLint* attrib_list);
EGLBoolean eglDestroyImageKHR(CallObserver* observer, EGLDisplay dpy, EGLImageKHR image);
+ EGLClientBuffer eglCreateNativeClientBufferANDROID(CallObserver* observer, EGLint* attrib_list);
void glActiveShaderProgramEXT(CallObserver* observer, PipelineId pipeline, ProgramId program);
void glAlphaFuncQCOM(CallObserver* observer, uint32_t func, GLclampf ref);
void glApplyFramebufferAttachmentCMAAINTEL(CallObserver* observer);
@@ -754,6 +757,68 @@
void glViewportIndexedfvNV(CallObserver* observer, GLuint index, GLfloat* v);
void glWaitSyncAPPLE(CallObserver* observer, GLsync sync, uint32_t flag, GLuint64 timeout);
void glWeightPathsNV(CallObserver* observer, GLuint resultPath, GLsizei numPaths, GLuint* paths, GLfloat* weights);
+ void glClearPixelLocalStorageuiEXT(CallObserver* observer, GLsizei offset, GLsizei n, GLuint* values);
+ void glClearTexImageEXT(CallObserver* observer, GLuint texture, GLint level, uint32_t format, uint32_t type, void* data);
+ void glClearTexSubImageEXT(CallObserver* observer, GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, uint32_t format, uint32_t type, void* data);
+ void glConservativeRasterParameteriNV(CallObserver* observer, uint32_t pname, GLint param);
+ void glDepthRangeArrayfvOES(CallObserver* observer, GLuint first, GLsizei count, GLfloat* v);
+ void glDepthRangeIndexedfOES(CallObserver* observer, GLuint index, GLfloat n, GLfloat f);
+ void glDrawTransformFeedbackEXT(CallObserver* observer, uint32_t mode, GLuint id);
+ void glDrawTransformFeedbackInstancedEXT(CallObserver* observer, uint32_t mode, GLuint id, GLsizei instancecount);
+ void glFramebufferPixelLocalStorageSizeEXT(CallObserver* observer, GLuint target, GLsizei size);
+ void glFramebufferTexture2DDownsampleIMG(CallObserver* observer, uint32_t target, uint32_t attachment, uint32_t textarget, GLuint texture, GLint level, GLint xscale, GLint yscale);
+ void glFramebufferTextureLayerDownsampleIMG(CallObserver* observer, uint32_t target, uint32_t attachment, GLuint texture, GLint level, GLint layer, GLint xscale, GLint yscale);
+ void glFramebufferTextureMultisampleMultiviewOVR(CallObserver* observer, uint32_t target, uint32_t attachment, GLuint texture, GLint level, GLsizei samples, GLint baseViewIndex, GLsizei numViews);
+ void glGetFloati_vOES(CallObserver* observer, uint32_t target, GLuint index, GLfloat* data);
+ GLsizei glGetFramebufferPixelLocalStorageSizeEXT(CallObserver* observer, GLuint target);
+ GLuint64 glGetTextureHandleIMG(CallObserver* observer, GLuint texture);
+ GLuint64 glGetTextureSamplerHandleIMG(CallObserver* observer, GLuint texture, GLuint sampler);
+ void glGetUniformi64vNV(CallObserver* observer, GLuint program, GLint location, GLint64EXT* params);
+ void glPolygonOffsetClampEXT(CallObserver* observer, GLfloat factor, GLfloat units, GLfloat clamp);
+ void glProgramUniform1i64NV(CallObserver* observer, GLuint program, GLint location, GLint64EXT x);
+ void glProgramUniform1i64vNV(CallObserver* observer, GLuint program, GLint location, GLsizei count, GLint64EXT* value);
+ void glProgramUniform1ui64NV(CallObserver* observer, GLuint program, GLint location, GLuint64EXT x);
+ void glProgramUniform1ui64vNV(CallObserver* observer, GLuint program, GLint location, GLsizei count, GLuint64EXT* value);
+ void glProgramUniform2i64NV(CallObserver* observer, GLuint program, GLint location, GLint64EXT x, GLint64EXT y);
+ void glProgramUniform2i64vNV(CallObserver* observer, GLuint program, GLint location, GLsizei count, GLint64EXT* value);
+ void glProgramUniform2ui64NV(CallObserver* observer, GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y);
+ void glProgramUniform2ui64vNV(CallObserver* observer, GLuint program, GLint location, GLsizei count, GLuint64EXT* value);
+ void glProgramUniform3i64NV(CallObserver* observer, GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
+ void glProgramUniform3i64vNV(CallObserver* observer, GLuint program, GLint location, GLsizei count, GLint64EXT* value);
+ void glProgramUniform3ui64NV(CallObserver* observer, GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
+ void glProgramUniform3ui64vNV(CallObserver* observer, GLuint program, GLint location, GLsizei count, GLuint64EXT* value);
+ void glProgramUniform4i64NV(CallObserver* observer, GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
+ void glProgramUniform4i64vNV(CallObserver* observer, GLuint program, GLint location, GLsizei count, GLint64EXT* value);
+ void glProgramUniform4ui64NV(CallObserver* observer, GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
+ void glProgramUniform4ui64vNV(CallObserver* observer, GLuint program, GLint location, GLsizei count, GLuint64EXT* value);
+ void glProgramUniformHandleui64IMG(CallObserver* observer, GLuint program, GLint location, GLuint64 value);
+ void glProgramUniformHandleui64vIMG(CallObserver* observer, GLuint program, GLint location, GLsizei count, GLuint64* values);
+ void glScissorArrayvOES(CallObserver* observer, GLuint first, GLsizei count, GLint* v);
+ void glScissorIndexedOES(CallObserver* observer, GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
+ void glScissorIndexedvOES(CallObserver* observer, GLuint index, GLint* v);
+ void glUniform1i64NV(CallObserver* observer, GLint location, GLint64EXT x);
+ void glUniform1i64vNV(CallObserver* observer, GLint location, GLsizei count, GLint64EXT* value);
+ void glUniform1ui64NV(CallObserver* observer, GLint location, GLuint64EXT x);
+ void glUniform1ui64vNV(CallObserver* observer, GLint location, GLsizei count, GLuint64EXT* value);
+ void glUniform2i64NV(CallObserver* observer, GLint location, GLint64EXT x, GLint64EXT y);
+ void glUniform2i64vNV(CallObserver* observer, GLint location, GLsizei count, GLint64EXT* value);
+ void glUniform2ui64NV(CallObserver* observer, GLint location, GLuint64EXT x, GLuint64EXT y);
+ void glUniform2ui64vNV(CallObserver* observer, GLint location, GLsizei count, GLuint64EXT* value);
+ void glUniform3i64NV(CallObserver* observer, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
+ void glUniform3i64vNV(CallObserver* observer, GLint location, GLsizei count, GLint64EXT* value);
+ void glUniform3ui64NV(CallObserver* observer, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
+ void glUniform3ui64vNV(CallObserver* observer, GLint location, GLsizei count, GLuint64EXT* value);
+ void glUniform4i64NV(CallObserver* observer, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
+ void glUniform4i64vNV(CallObserver* observer, GLint location, GLsizei count, GLint64EXT* value);
+ void glUniform4ui64NV(CallObserver* observer, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
+ void glUniform4ui64vNV(CallObserver* observer, GLint location, GLsizei count, GLuint64EXT* value);
+ void glUniformHandleui64IMG(CallObserver* observer, GLint location, GLuint64 value);
+ void glUniformHandleui64vIMG(CallObserver* observer, GLint location, GLsizei count, GLuint64* value);
+ void glViewportArrayvOES(CallObserver* observer, GLuint first, GLsizei count, GLfloat* v);
+ void glViewportIndexedfOES(CallObserver* observer, GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
+ void glViewportIndexedfvOES(CallObserver* observer, GLuint index, GLfloat* v);
+ void glViewportSwizzleNV(CallObserver* observer, GLuint index, uint32_t swizzlex, uint32_t swizzley, uint32_t swizzlez, uint32_t swizzlew);
+ void glWindowRectanglesEXT(CallObserver* observer, uint32_t mode, GLsizei count, GLint* box);
void glBlendBarrier(CallObserver* observer);
void glBlendColor(CallObserver* observer, GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
void glBlendEquation(CallObserver* observer, uint32_t equation);
@@ -1276,6 +1341,7 @@
// Globals
EGLContextToContext__R EGLContexts;
+ EGLImageKHRToAndroidNativeBufferExtra__R EGLImages;
ContextID NextContextID;
ThreadID CurrentThread;
ThreadIDToContext__R Contexts;
@@ -1293,6 +1359,7 @@
inline void GlesSpy::init() {
mImports.resolve();
EGLContexts = EGLContextToContext__R();
+ EGLImages = EGLImageKHRToAndroidNativeBufferExtra__R();
NextContextID = 0;
CurrentThread = 0;
Contexts = ThreadIDToContext__R();
diff --git a/cc/gapii/gles_spy_0.cpp b/cc/gapii/gles_spy_0.cpp
index 0cf506b..bc7d66c 100644
--- a/cc/gapii/gles_spy_0.cpp
+++ b/cc/gapii/gles_spy_0.cpp
@@ -465,6 +465,7 @@
try {
do {
+ subObserveAttribList(observer, call, attrib_list);
call();
break;
} while(false);
@@ -1045,7 +1046,7 @@
try {
do {
- subRequiresExtension(observer, call, ExtensionId::GL_OES_draw_buffers_indexed);
+ subRequiresExtension2(observer, call, ExtensionId::GL_OES_draw_buffers_indexed, ExtensionId::GL_OES_viewport_array);
subDisablei(observer, call, target, index);
call();
} while(false);
@@ -2888,6 +2889,390 @@
}
+void GlesSpy::glProgramUniform1i64NV(CallObserver* observer, GLuint program, GLint location, GLint64EXT x) {
+ GAPID_DEBUG("glProgramUniform1i64NV(%" PRIu32 ", %" PRId32 ", %" PRId64 ")", program, location, x);
+
+ if (mImports.glProgramUniform1i64NV == nullptr) {
+ GAPID_WARNING("Application called unsupported function glProgramUniform1i64NV");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, program, location, x] {
+ called = true;
+ observer->observeReads();
+ mImports.glProgramUniform1i64NV(program, location, x);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_NV_gpu_shader5);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlProgramUniform1i64NV coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< uint32_t >(program, *observer->getScratch()), toEncoder< int32_t >(location, *observer->getScratch()), toEncoder< int64_t >(x, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glProgramUniform2ui64vNV(CallObserver* observer, GLuint program, GLint location, GLsizei count, GLuint64EXT* value) {
+ GAPID_DEBUG("glProgramUniform2ui64vNV(%" PRIu32 ", %" PRId32 ", %" PRId32 ", %p)", program, location, count, value);
+
+ if (mImports.glProgramUniform2ui64vNV == nullptr) {
+ GAPID_WARNING("Application called unsupported function glProgramUniform2ui64vNV");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, program, location, count, value] {
+ called = true;
+ observer->observeReads();
+ mImports.glProgramUniform2ui64vNV(program, location, count, value);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_NV_gpu_shader5);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlProgramUniform2ui64vNV coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< uint32_t >(program, *observer->getScratch()), toEncoder< int32_t >(location, *observer->getScratch()), toEncoder< int32_t >(count, *observer->getScratch()), toEncoder< gapic::coder::gles::GLuint64EXT__CP >(value, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glProgramUniform3i64vNV(CallObserver* observer, GLuint program, GLint location, GLsizei count, GLint64EXT* value) {
+ GAPID_DEBUG("glProgramUniform3i64vNV(%" PRIu32 ", %" PRId32 ", %" PRId32 ", %p)", program, location, count, value);
+
+ if (mImports.glProgramUniform3i64vNV == nullptr) {
+ GAPID_WARNING("Application called unsupported function glProgramUniform3i64vNV");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, program, location, count, value] {
+ called = true;
+ observer->observeReads();
+ mImports.glProgramUniform3i64vNV(program, location, count, value);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_NV_gpu_shader5);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlProgramUniform3i64vNV coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< uint32_t >(program, *observer->getScratch()), toEncoder< int32_t >(location, *observer->getScratch()), toEncoder< int32_t >(count, *observer->getScratch()), toEncoder< gapic::coder::gles::GLint64EXT__CP >(value, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glProgramUniform4ui64NV(CallObserver* observer, GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w) {
+ GAPID_DEBUG("glProgramUniform4ui64NV(%" PRIu32 ", %" PRId32 ", %" PRIu64 ", %" PRIu64 ", %" PRIu64 ", %" PRIu64 ")", program, location, x, y, z, w);
+
+ if (mImports.glProgramUniform4ui64NV == nullptr) {
+ GAPID_WARNING("Application called unsupported function glProgramUniform4ui64NV");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, program, location, x, y, z, w] {
+ called = true;
+ observer->observeReads();
+ mImports.glProgramUniform4ui64NV(program, location, x, y, z, w);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_NV_gpu_shader5);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlProgramUniform4ui64NV coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< uint32_t >(program, *observer->getScratch()), toEncoder< int32_t >(location, *observer->getScratch()), toEncoder< uint64_t >(x, *observer->getScratch()), toEncoder< uint64_t >(y, *observer->getScratch()), toEncoder< uint64_t >(z, *observer->getScratch()), toEncoder< uint64_t >(w, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glScissorArrayvOES(CallObserver* observer, GLuint first, GLsizei count, GLint* v) {
+ GAPID_DEBUG("glScissorArrayvOES(%" PRIu32 ", %" PRId32 ", %p)", first, count, v);
+
+ if (mImports.glScissorArrayvOES == nullptr) {
+ GAPID_WARNING("Application called unsupported function glScissorArrayvOES");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, first, count, v] {
+ called = true;
+ observer->observeReads();
+ mImports.glScissorArrayvOES(first, count, v);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_OES_viewport_array);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlScissorArrayvOES coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< uint32_t >(first, *observer->getScratch()), toEncoder< int32_t >(count, *observer->getScratch()), toEncoder< gapic::coder::gles::GLint__CP >(v, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glScissorIndexedOES(CallObserver* observer, GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height) {
+ GAPID_DEBUG("glScissorIndexedOES(%" PRIu32 ", %" PRId32 ", %" PRId32 ", %" PRId32 ", %" PRId32 ")", index, left, bottom, width, height);
+
+ if (mImports.glScissorIndexedOES == nullptr) {
+ GAPID_WARNING("Application called unsupported function glScissorIndexedOES");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, index, left, bottom, width, height] {
+ called = true;
+ observer->observeReads();
+ mImports.glScissorIndexedOES(index, left, bottom, width, height);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_OES_viewport_array);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlScissorIndexedOES coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< uint32_t >(index, *observer->getScratch()), toEncoder< int32_t >(left, *observer->getScratch()), toEncoder< int32_t >(bottom, *observer->getScratch()), toEncoder< int32_t >(width, *observer->getScratch()), toEncoder< int32_t >(height, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glViewportArrayvOES(CallObserver* observer, GLuint first, GLsizei count, GLfloat* v) {
+ GAPID_DEBUG("glViewportArrayvOES(%" PRIu32 ", %" PRId32 ", %p)", first, count, v);
+
+ if (mImports.glViewportArrayvOES == nullptr) {
+ GAPID_WARNING("Application called unsupported function glViewportArrayvOES");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, first, count, v] {
+ called = true;
+ observer->observeReads();
+ mImports.glViewportArrayvOES(first, count, v);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_OES_viewport_array);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlViewportArrayvOES coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< uint32_t >(first, *observer->getScratch()), toEncoder< int32_t >(count, *observer->getScratch()), toEncoder< gapic::coder::gles::GLfloat__CP >(v, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glViewportIndexedfvOES(CallObserver* observer, GLuint index, GLfloat* v) {
+ GAPID_DEBUG("glViewportIndexedfvOES(%" PRIu32 ", %p)", index, v);
+
+ if (mImports.glViewportIndexedfvOES == nullptr) {
+ GAPID_WARNING("Application called unsupported function glViewportIndexedfvOES");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, index, v] {
+ called = true;
+ observer->observeReads();
+ mImports.glViewportIndexedfvOES(index, v);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_OES_viewport_array);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlViewportIndexedfvOES coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< uint32_t >(index, *observer->getScratch()), toEncoder< gapic::coder::gles::GLfloat__CP >(v, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
void GlesSpy::glBlendEquationSeparate(CallObserver* observer, uint32_t rgb, uint32_t alpha) {
GAPID_DEBUG("glBlendEquationSeparate(%u, %u)", rgb, alpha);
diff --git a/cc/gapii/gles_spy_1.cpp b/cc/gapii/gles_spy_1.cpp
index a0dd025..0c2cfb8 100644
--- a/cc/gapii/gles_spy_1.cpp
+++ b/cc/gapii/gles_spy_1.cpp
@@ -169,6 +169,10 @@
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
break;
}
+ case GLenum::GL_TIMESTAMP_EXT: {
+ subRequiresExtension(observer, call, ExtensionId::GL_EXT_disjoint_timer_query);
+ break;
+ }
default: {
subGlErrorInvalidEnum(observer, call, target);
}
@@ -184,6 +188,11 @@
}
break;
}
+ case GLenum::GL_QUERY_COUNTER_BITS_EXT: {
+ subRequiresExtension(observer, call, ExtensionId::GL_EXT_disjoint_timer_query);
+ observer->write<GLint>(slice(value, 0ULL, 1ULL), 0ULL, slice(value, 0ULL, 1ULL)[0ULL]);
+ break;
+ }
default: {
subGlErrorInvalidEnum(observer, call, parameter);
}
@@ -431,6 +440,7 @@
try {
do {
+ subObserveAttribList(observer, call, attrib_list);
call();
break;
} while(false);
@@ -1436,7 +1446,7 @@
try {
do {
- subRequiresExtension(observer, call, ExtensionId::GL_OES_draw_buffers_indexed);
+ subRequiresExtension2(observer, call, ExtensionId::GL_OES_draw_buffers_indexed, ExtensionId::GL_OES_viewport_array);
subEnablei(observer, call, target, index);
call();
} while(false);
@@ -3370,6 +3380,294 @@
}
+void GlesSpy::glFramebufferPixelLocalStorageSizeEXT(CallObserver* observer, GLuint target, GLsizei size) {
+ GAPID_DEBUG("glFramebufferPixelLocalStorageSizeEXT(%" PRIu32 ", %" PRId32 ")", target, size);
+
+ if (mImports.glFramebufferPixelLocalStorageSizeEXT == nullptr) {
+ GAPID_WARNING("Application called unsupported function glFramebufferPixelLocalStorageSizeEXT");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, target, size] {
+ called = true;
+ observer->observeReads();
+ mImports.glFramebufferPixelLocalStorageSizeEXT(target, size);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_EXT_shader_pixel_local_storage2);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlFramebufferPixelLocalStorageSizeEXT coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< uint32_t >(target, *observer->getScratch()), toEncoder< int32_t >(size, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glProgramUniform1ui64NV(CallObserver* observer, GLuint program, GLint location, GLuint64EXT x) {
+ GAPID_DEBUG("glProgramUniform1ui64NV(%" PRIu32 ", %" PRId32 ", %" PRIu64 ")", program, location, x);
+
+ if (mImports.glProgramUniform1ui64NV == nullptr) {
+ GAPID_WARNING("Application called unsupported function glProgramUniform1ui64NV");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, program, location, x] {
+ called = true;
+ observer->observeReads();
+ mImports.glProgramUniform1ui64NV(program, location, x);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_NV_gpu_shader5);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlProgramUniform1ui64NV coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< uint32_t >(program, *observer->getScratch()), toEncoder< int32_t >(location, *observer->getScratch()), toEncoder< uint64_t >(x, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glProgramUniform2i64vNV(CallObserver* observer, GLuint program, GLint location, GLsizei count, GLint64EXT* value) {
+ GAPID_DEBUG("glProgramUniform2i64vNV(%" PRIu32 ", %" PRId32 ", %" PRId32 ", %p)", program, location, count, value);
+
+ if (mImports.glProgramUniform2i64vNV == nullptr) {
+ GAPID_WARNING("Application called unsupported function glProgramUniform2i64vNV");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, program, location, count, value] {
+ called = true;
+ observer->observeReads();
+ mImports.glProgramUniform2i64vNV(program, location, count, value);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_NV_gpu_shader5);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlProgramUniform2i64vNV coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< uint32_t >(program, *observer->getScratch()), toEncoder< int32_t >(location, *observer->getScratch()), toEncoder< int32_t >(count, *observer->getScratch()), toEncoder< gapic::coder::gles::GLint64EXT__CP >(value, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glProgramUniformHandleui64vIMG(CallObserver* observer, GLuint program, GLint location, GLsizei count, GLuint64* values) {
+ GAPID_DEBUG("glProgramUniformHandleui64vIMG(%" PRIu32 ", %" PRId32 ", %" PRId32 ", %p)", program, location, count, values);
+
+ if (mImports.glProgramUniformHandleui64vIMG == nullptr) {
+ GAPID_WARNING("Application called unsupported function glProgramUniformHandleui64vIMG");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, program, location, count, values] {
+ called = true;
+ observer->observeReads();
+ mImports.glProgramUniformHandleui64vIMG(program, location, count, values);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_IMG_bindless_texture);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlProgramUniformHandleui64vIMG coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< uint32_t >(program, *observer->getScratch()), toEncoder< int32_t >(location, *observer->getScratch()), toEncoder< int32_t >(count, *observer->getScratch()), toEncoder< gapic::coder::gles::GLuint64__CP >(values, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glUniform1ui64vNV(CallObserver* observer, GLint location, GLsizei count, GLuint64EXT* value) {
+ GAPID_DEBUG("glUniform1ui64vNV(%" PRId32 ", %" PRId32 ", %p)", location, count, value);
+
+ if (mImports.glUniform1ui64vNV == nullptr) {
+ GAPID_WARNING("Application called unsupported function glUniform1ui64vNV");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, location, count, value] {
+ called = true;
+ observer->observeReads();
+ mImports.glUniform1ui64vNV(location, count, value);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_NV_gpu_shader5);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlUniform1ui64vNV coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< int32_t >(location, *observer->getScratch()), toEncoder< int32_t >(count, *observer->getScratch()), toEncoder< gapic::coder::gles::GLuint64EXT__CP >(value, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glUniform2i64NV(CallObserver* observer, GLint location, GLint64EXT x, GLint64EXT y) {
+ GAPID_DEBUG("glUniform2i64NV(%" PRId32 ", %" PRId64 ", %" PRId64 ")", location, x, y);
+
+ if (mImports.glUniform2i64NV == nullptr) {
+ GAPID_WARNING("Application called unsupported function glUniform2i64NV");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, location, x, y] {
+ called = true;
+ observer->observeReads();
+ mImports.glUniform2i64NV(location, x, y);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_NV_gpu_shader5);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlUniform2i64NV coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< int32_t >(location, *observer->getScratch()), toEncoder< int64_t >(x, *observer->getScratch()), toEncoder< int64_t >(y, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
void GlesSpy::glBlendEquationSeparatei(CallObserver* observer, DrawBufferIndex buf, uint32_t modeRGB, uint32_t modeAlpha) {
GAPID_DEBUG("glBlendEquationSeparatei(%" PRIu32 ", %u, %u)", buf, modeRGB, modeAlpha);
@@ -3686,80 +3984,7 @@
try {
do {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
- switch (target) {
- case GLenum::GL_RENDERBUFFER: {
- break;
- }
- default: {
- subGlErrorInvalidEnum(observer, call, target);
- }
- }
- switch (internalformat) {
- case GLenum::GL_DEPTH_COMPONENT16: // fall-through...
- case GLenum::GL_RGB565: // fall-through...
- case GLenum::GL_RGB5_A1: // fall-through...
- case GLenum::GL_RGBA4: // fall-through...
- case GLenum::GL_STENCIL_INDEX8: {
- break;
- }
- case GLenum::GL_DEPTH24_STENCIL8: // fall-through...
- case GLenum::GL_DEPTH32F_STENCIL8: // fall-through...
- case GLenum::GL_DEPTH_COMPONENT24: // fall-through...
- case GLenum::GL_DEPTH_COMPONENT32F: // fall-through...
- case GLenum::GL_R16I: // fall-through...
- case GLenum::GL_R16UI: // fall-through...
- case GLenum::GL_R32I: // fall-through...
- case GLenum::GL_R32UI: // fall-through...
- case GLenum::GL_R8: // fall-through...
- case GLenum::GL_R8I: // fall-through...
- case GLenum::GL_R8UI: // fall-through...
- case GLenum::GL_RG16I: // fall-through...
- case GLenum::GL_RG16UI: // fall-through...
- case GLenum::GL_RG32I: // fall-through...
- case GLenum::GL_RG32UI: // fall-through...
- case GLenum::GL_RG8: // fall-through...
- case GLenum::GL_RG8I: // fall-through...
- case GLenum::GL_RG8UI: // fall-through...
- case GLenum::GL_RGB10_A2: // fall-through...
- case GLenum::GL_RGB10_A2UI: // fall-through...
- case GLenum::GL_RGB8: // fall-through...
- case GLenum::GL_RGBA16I: // fall-through...
- case GLenum::GL_RGBA16UI: // fall-through...
- case GLenum::GL_RGBA32I: // fall-through...
- case GLenum::GL_RGBA32UI: // fall-through...
- case GLenum::GL_RGBA8: // fall-through...
- case GLenum::GL_RGBA8I: // fall-through...
- case GLenum::GL_RGBA8UI: // fall-through...
- case GLenum::GL_SRGB8_ALPHA8: {
- subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
- break;
- }
- case GLenum::GL_R16: // fall-through...
- case GLenum::GL_RG16: // fall-through...
- case GLenum::GL_RGBA16: {
- subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
- subRequiresExtension(observer, call, ExtensionId::GL_EXT_texture_norm16);
- break;
- }
- default: {
- subGlErrorInvalidEnum(observer, call, internalformat);
- }
- }
- if (((width) < ((GLsizei)(0L))) || ((height) < ((GLsizei)(0L)))) {
- subGlErrorInvalidValue(observer, call);
- }
- std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
- if (((width) > ((GLsizei)(checkNotNull(l_ctx).mConstants.mMaxRenderbufferSize))) || ((height) > ((GLsizei)(checkNotNull(l_ctx).mConstants.mMaxRenderbufferSize)))) {
- subGlErrorInvalidValue(observer, call);
- }
- RenderbufferId l_id = findOrZero(checkNotNull(l_ctx).mBoundRenderbuffers, target);
- if ((l_id) == ((RenderbufferId)(0UL))) {
- subGlErrorInvalidOperation(observer, call);
- }
- std::shared_ptr<Renderbuffer> l_rb = findOrZero(checkNotNull(l_ctx).mInstances.mRenderbuffers, l_id);
- checkNotNull(l_rb).mInternalFormat = internalformat;
- checkNotNull(l_rb).mWidth = width;
- checkNotNull(l_rb).mHeight = height;
+ subRenderbufferStorageMultisample(observer, call, target, (GLsizei)(0L), internalformat, width, height);
call();
} while(false);
} catch (gapii::AbortException& e) {
@@ -5027,7 +5252,7 @@
call();
for (GLsizei l_i = (GLsizei)(0L); l_i < count; ++l_i) {
SamplerId l_id = (SamplerId)(slice(samplers, (uint64_t)((GLsizei)(0L)), (uint64_t)(count))[(uint64_t)(l_i)]);
- checkNotNull(l_ctx).mInstances.mSamplers[l_id] = std::shared_ptr<Sampler>(new Sampler(std::move(Vec4f{(GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f)}), GLenum::GL_NEAREST_MIPMAP_LINEAR, GLenum::GL_LINEAR, GLenum::GL_REPEAT, GLenum::GL_REPEAT, GLenum::GL_REPEAT, (GLfloat)(-1000.f), (GLfloat)(1000.f), GLenum::GL_NONE, GLenum::GL_LEQUAL, ""));
+ checkNotNull(l_ctx).mInstances.mSamplers[l_id] = std::shared_ptr<Sampler>(new Sampler(std::move(Vec4f{(GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f)}), GLenum::GL_NEAREST_MIPMAP_LINEAR, GLenum::GL_LINEAR, GLenum::GL_REPEAT, GLenum::GL_REPEAT, GLenum::GL_REPEAT, (GLfloat)(-1000.f), (GLfloat)(1000.f), GLenum::GL_NONE, GLenum::GL_LEQUAL, "", (GLfloat)(1.f)));
observer->write<SamplerId>(l_s, (uint64_t)(l_i), l_id);
}
} while(false);
diff --git a/cc/gapii/gles_spy_2.cpp b/cc/gapii/gles_spy_2.cpp
index 2a40495..94a83f3 100644
--- a/cc/gapii/gles_spy_2.cpp
+++ b/cc/gapii/gles_spy_2.cpp
@@ -683,8 +683,13 @@
try {
do {
+ subObserveAttribList(observer, call, attrib_list);
call();
- observer->write<EGLint>(slice(num_config, 0ULL, 1ULL), 0ULL, slice(num_config, 0ULL, 1ULL)[0ULL]);
+ auto l_num = slice(num_config, 0ULL, 1ULL)[0ULL];
+ observer->write<EGLint>(slice(num_config, 0ULL, 1ULL), 0ULL, l_num);
+ if ((configs) != (nullptr)) {
+ observer->write(slice(configs, (uint64_t)(0L), (uint64_t)(l_num)));
+ }
break;
} while(false);
} catch (gapii::AbortException& e) {
@@ -867,6 +872,59 @@
return result;
}
+EGLClientBuffer GlesSpy::eglCreateNativeClientBufferANDROID(CallObserver* observer, EGLint* attrib_list) {
+ GAPID_DEBUG("eglCreateNativeClientBufferANDROID(%p)", attrib_list);
+
+ if (mImports.eglCreateNativeClientBufferANDROID == nullptr) {
+ GAPID_WARNING("Application called unsupported function eglCreateNativeClientBufferANDROID");
+ return nullptr;
+ }
+
+ EGLClientBuffer result = nullptr;
+ bool called = false;
+ auto call = [this, observer, &called, &result, attrib_list] {
+ called = true;
+ observer->observeReads();
+ result = mImports.eglCreateNativeClientBufferANDROID(attrib_list);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::EGL_ANDROID_create_native_client_buffer);
+ subObserveAttribList(observer, call, attrib_list);
+ call();
+ break;
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::EglCreateNativeClientBufferANDROID coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< gapic::coder::gles::EGLint__CP >(attrib_list, *observer->getScratch()), toEncoder< gapic::coder::gles::EGLClientBuffer >(result, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+
+ return result;
+}
+
void GlesSpy::glAlphaFuncQCOM(CallObserver* observer, uint32_t func, GLclampf ref) {
GAPID_DEBUG("glAlphaFuncQCOM(%u, %f)", func, ref);
@@ -1277,6 +1335,20 @@
try {
do {
subRequiresExtension(observer, call, ExtensionId::GL_OES_EGL_image);
+ if ((target) != (GLenum::GL_TEXTURE_2D)) {
+ subGlErrorInvalidEnum(observer, call, target);
+ }
+ if (this->EGLImages.count((EGLImageKHR)(image)) > 0) {
+ std::shared_ptr<AndroidNativeBufferExtra> l_info = findOrZero(this->EGLImages, (EGLImageKHR)(image));
+ std::shared_ptr<Texture> l_t = subGetBoundTextureOrErrorInvalidEnum(observer, call, target);
+ uint32_t l_fmt = GLenum::GL_RGB;
+ uint32_t l_ty = GLenum::GL_UNSIGNED_BYTE;
+ checkNotNull(l_t).mTexelFormat = l_fmt;
+ checkNotNull(l_t).mTexelType = l_ty;
+ uint32_t l__res_0 = subImageSize(observer, call, checkNotNull(l_info).mWidth, checkNotNull(l_info).mHeight, l_fmt, l_ty);
+ checkNotNull(l_t).mTexture2D[(GLint)(0L)] = Image((GLsizei)(checkNotNull(l_info).mWidth), (GLsizei)(checkNotNull(l_info).mHeight), Slice<uint8_t>(), l__res_0, l_fmt, l_ty);
+ checkNotNull(l_t).mEGLImage = image;
+ }
call();
} while(false);
} catch (gapii::AbortException& e) {
@@ -2919,6 +2991,298 @@
}
+void GlesSpy::glConservativeRasterParameteriNV(CallObserver* observer, uint32_t pname, GLint param) {
+ GAPID_DEBUG("glConservativeRasterParameteriNV(%u, %" PRId32 ")", pname, param);
+
+ if (mImports.glConservativeRasterParameteriNV == nullptr) {
+ GAPID_WARNING("Application called unsupported function glConservativeRasterParameteriNV");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, pname, param] {
+ called = true;
+ observer->observeReads();
+ mImports.glConservativeRasterParameteriNV(pname, param);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_NV_conservative_raster_pre_snap_triangles);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlConservativeRasterParameteriNV coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), pname, toEncoder< int32_t >(param, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+GLuint64 GlesSpy::glGetTextureSamplerHandleIMG(CallObserver* observer, GLuint texture, GLuint sampler) {
+ GAPID_DEBUG("glGetTextureSamplerHandleIMG(%" PRIu32 ", %" PRIu32 ")", texture, sampler);
+
+ if (mImports.glGetTextureSamplerHandleIMG == nullptr) {
+ GAPID_WARNING("Application called unsupported function glGetTextureSamplerHandleIMG");
+ return 0;
+ }
+
+ GLuint64 result = 0;
+ bool called = false;
+ auto call = [this, observer, &called, &result, texture, sampler] {
+ called = true;
+ observer->observeReads();
+ result = mImports.glGetTextureSamplerHandleIMG(texture, sampler);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_IMG_bindless_texture);
+ call();
+ break;
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlGetTextureSamplerHandleIMG coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< uint32_t >(texture, *observer->getScratch()), toEncoder< uint32_t >(sampler, *observer->getScratch()), toEncoder< uint64_t >(result, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+
+ return result;
+}
+
+void GlesSpy::glProgramUniform2ui64NV(CallObserver* observer, GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y) {
+ GAPID_DEBUG("glProgramUniform2ui64NV(%" PRIu32 ", %" PRId32 ", %" PRIu64 ", %" PRIu64 ")", program, location, x, y);
+
+ if (mImports.glProgramUniform2ui64NV == nullptr) {
+ GAPID_WARNING("Application called unsupported function glProgramUniform2ui64NV");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, program, location, x, y] {
+ called = true;
+ observer->observeReads();
+ mImports.glProgramUniform2ui64NV(program, location, x, y);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_NV_gpu_shader5);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlProgramUniform2ui64NV coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< uint32_t >(program, *observer->getScratch()), toEncoder< int32_t >(location, *observer->getScratch()), toEncoder< uint64_t >(x, *observer->getScratch()), toEncoder< uint64_t >(y, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glProgramUniform3i64NV(CallObserver* observer, GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z) {
+ GAPID_DEBUG("glProgramUniform3i64NV(%" PRIu32 ", %" PRId32 ", %" PRId64 ", %" PRId64 ", %" PRId64 ")", program, location, x, y, z);
+
+ if (mImports.glProgramUniform3i64NV == nullptr) {
+ GAPID_WARNING("Application called unsupported function glProgramUniform3i64NV");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, program, location, x, y, z] {
+ called = true;
+ observer->observeReads();
+ mImports.glProgramUniform3i64NV(program, location, x, y, z);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_NV_gpu_shader5);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlProgramUniform3i64NV coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< uint32_t >(program, *observer->getScratch()), toEncoder< int32_t >(location, *observer->getScratch()), toEncoder< int64_t >(x, *observer->getScratch()), toEncoder< int64_t >(y, *observer->getScratch()), toEncoder< int64_t >(z, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glUniform1i64vNV(CallObserver* observer, GLint location, GLsizei count, GLint64EXT* value) {
+ GAPID_DEBUG("glUniform1i64vNV(%" PRId32 ", %" PRId32 ", %p)", location, count, value);
+
+ if (mImports.glUniform1i64vNV == nullptr) {
+ GAPID_WARNING("Application called unsupported function glUniform1i64vNV");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, location, count, value] {
+ called = true;
+ observer->observeReads();
+ mImports.glUniform1i64vNV(location, count, value);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_NV_gpu_shader5);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlUniform1i64vNV coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< int32_t >(location, *observer->getScratch()), toEncoder< int32_t >(count, *observer->getScratch()), toEncoder< gapic::coder::gles::GLint64EXT__CP >(value, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glUniform4ui64vNV(CallObserver* observer, GLint location, GLsizei count, GLuint64EXT* value) {
+ GAPID_DEBUG("glUniform4ui64vNV(%" PRId32 ", %" PRId32 ", %p)", location, count, value);
+
+ if (mImports.glUniform4ui64vNV == nullptr) {
+ GAPID_WARNING("Application called unsupported function glUniform4ui64vNV");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, location, count, value] {
+ called = true;
+ observer->observeReads();
+ mImports.glUniform4ui64vNV(location, count, value);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_NV_gpu_shader5);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlUniform4ui64vNV coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< int32_t >(location, *observer->getScratch()), toEncoder< int32_t >(count, *observer->getScratch()), toEncoder< gapic::coder::gles::GLuint64EXT__CP >(value, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
void GlesSpy::glBlendBarrier(CallObserver* observer) {
GAPID_DEBUG("glBlendBarrier()");
@@ -4620,7 +4984,7 @@
call();
for (GLsizei l_i = (GLsizei)(0L); l_i < count; ++l_i) {
TextureId l_id = (TextureId)(slice(textures, (uint64_t)((GLsizei)(0L)), (uint64_t)(count))[(uint64_t)(l_i)]);
- checkNotNull(l_ctx).mInstances.mTextures[l_id] = std::shared_ptr<Texture>(new Texture(l_id, 0, 0, 0, GLintToImage(), GLintToCubemapLevel(), GLenum::GL_RED, GLenum::GL_GREEN, GLenum::GL_BLUE, GLenum::GL_ALPHA, std::move(Vec4f{(GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f)}), GLenum::GL_NEAREST_MIPMAP_LINEAR, GLenum::GL_LINEAR, GLenum::GL_REPEAT, GLenum::GL_REPEAT, GLenum::GL_REPEAT, (GLfloat)(-1000.f), (GLfloat)(1000.f), (GLint)(0L), (GLint)(1000L), GLenum::GL_DEPTH_COMPONENT, GLenum::GL_NONE, GLenum::GL_LEQUAL, GLbooleanLabels::GL_FALSE, (GLuint)(0UL), "", (GLfloat)(1.f)));
+ checkNotNull(l_ctx).mInstances.mTextures[l_id] = std::shared_ptr<Texture>(new Texture(l_id, 0, 0, 0, GLintToImage(), GLintToCubemapLevel(), GLenum::GL_RED, GLenum::GL_GREEN, GLenum::GL_BLUE, GLenum::GL_ALPHA, std::move(Vec4f{(GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f)}), GLenum::GL_NEAREST_MIPMAP_LINEAR, GLenum::GL_LINEAR, GLenum::GL_REPEAT, GLenum::GL_REPEAT, GLenum::GL_REPEAT, (GLfloat)(-1000.f), (GLfloat)(1000.f), (GLint)(0L), (GLint)(1000L), GLenum::GL_DEPTH_COMPONENT, GLenum::GL_NONE, GLenum::GL_LEQUAL, GLbooleanLabels::GL_FALSE, (GLuint)(0UL), "", (GLfloat)(1.f), nullptr));
observer->write<TextureId>(l_t, (uint64_t)(l_i), l_id);
}
} while(false);
diff --git a/cc/gapii/gles_spy_3.cpp b/cc/gapii/gles_spy_3.cpp
index e9e12ea..1c35652 100644
--- a/cc/gapii/gles_spy_3.cpp
+++ b/cc/gapii/gles_spy_3.cpp
@@ -648,6 +648,7 @@
try {
do {
+ subObserveAttribList(observer, call, attrib_list);
call();
break;
} while(false);
@@ -854,7 +855,12 @@
try {
do {
subRequiresExtension(observer, call, ExtensionId::EGL_KHR_image_base);
+ subObserveAttribList(observer, call, attrib_list);
call();
+ auto l_img = result;
+ if ((target) == (EGLenum::EGL_NATIVE_BUFFER_ANDROID)) {
+ this->EGLImages[l_img] = GetAndroidNativeBufferExtra(observer, (void*)(buffer));
+ }
break;
} while(false);
} catch (gapii::AbortException& e) {
@@ -2941,6 +2947,342 @@
}
+void GlesSpy::glDrawTransformFeedbackInstancedEXT(CallObserver* observer, uint32_t mode, GLuint id, GLsizei instancecount) {
+ GAPID_DEBUG("glDrawTransformFeedbackInstancedEXT(%u, %" PRIu32 ", %" PRId32 ")", mode, id, instancecount);
+
+ if (mImports.glDrawTransformFeedbackInstancedEXT == nullptr) {
+ GAPID_WARNING("Application called unsupported function glDrawTransformFeedbackInstancedEXT");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, mode, id, instancecount] {
+ called = true;
+ observer->observeReads();
+ mImports.glDrawTransformFeedbackInstancedEXT(mode, id, instancecount);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_EXT_draw_transform_feedback);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlDrawTransformFeedbackInstancedEXT coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), mode, toEncoder< uint32_t >(id, *observer->getScratch()), toEncoder< int32_t >(instancecount, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glProgramUniform3ui64vNV(CallObserver* observer, GLuint program, GLint location, GLsizei count, GLuint64EXT* value) {
+ GAPID_DEBUG("glProgramUniform3ui64vNV(%" PRIu32 ", %" PRId32 ", %" PRId32 ", %p)", program, location, count, value);
+
+ if (mImports.glProgramUniform3ui64vNV == nullptr) {
+ GAPID_WARNING("Application called unsupported function glProgramUniform3ui64vNV");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, program, location, count, value] {
+ called = true;
+ observer->observeReads();
+ mImports.glProgramUniform3ui64vNV(program, location, count, value);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_NV_gpu_shader5);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlProgramUniform3ui64vNV coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< uint32_t >(program, *observer->getScratch()), toEncoder< int32_t >(location, *observer->getScratch()), toEncoder< int32_t >(count, *observer->getScratch()), toEncoder< gapic::coder::gles::GLuint64EXT__CP >(value, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glProgramUniform4i64vNV(CallObserver* observer, GLuint program, GLint location, GLsizei count, GLint64EXT* value) {
+ GAPID_DEBUG("glProgramUniform4i64vNV(%" PRIu32 ", %" PRId32 ", %" PRId32 ", %p)", program, location, count, value);
+
+ if (mImports.glProgramUniform4i64vNV == nullptr) {
+ GAPID_WARNING("Application called unsupported function glProgramUniform4i64vNV");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, program, location, count, value] {
+ called = true;
+ observer->observeReads();
+ mImports.glProgramUniform4i64vNV(program, location, count, value);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_NV_gpu_shader5);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlProgramUniform4i64vNV coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< uint32_t >(program, *observer->getScratch()), toEncoder< int32_t >(location, *observer->getScratch()), toEncoder< int32_t >(count, *observer->getScratch()), toEncoder< gapic::coder::gles::GLint64EXT__CP >(value, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glProgramUniformHandleui64IMG(CallObserver* observer, GLuint program, GLint location, GLuint64 value) {
+ GAPID_DEBUG("glProgramUniformHandleui64IMG(%" PRIu32 ", %" PRId32 ", %" PRIu64 ")", program, location, value);
+
+ if (mImports.glProgramUniformHandleui64IMG == nullptr) {
+ GAPID_WARNING("Application called unsupported function glProgramUniformHandleui64IMG");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, program, location, value] {
+ called = true;
+ observer->observeReads();
+ mImports.glProgramUniformHandleui64IMG(program, location, value);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_IMG_bindless_texture);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlProgramUniformHandleui64IMG coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< uint32_t >(program, *observer->getScratch()), toEncoder< int32_t >(location, *observer->getScratch()), toEncoder< uint64_t >(value, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glUniform3ui64NV(CallObserver* observer, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z) {
+ GAPID_DEBUG("glUniform3ui64NV(%" PRId32 ", %" PRIu64 ", %" PRIu64 ", %" PRIu64 ")", location, x, y, z);
+
+ if (mImports.glUniform3ui64NV == nullptr) {
+ GAPID_WARNING("Application called unsupported function glUniform3ui64NV");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, location, x, y, z] {
+ called = true;
+ observer->observeReads();
+ mImports.glUniform3ui64NV(location, x, y, z);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_NV_gpu_shader5);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlUniform3ui64NV coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< int32_t >(location, *observer->getScratch()), toEncoder< uint64_t >(x, *observer->getScratch()), toEncoder< uint64_t >(y, *observer->getScratch()), toEncoder< uint64_t >(z, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glUniform4i64NV(CallObserver* observer, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w) {
+ GAPID_DEBUG("glUniform4i64NV(%" PRId32 ", %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 ")", location, x, y, z, w);
+
+ if (mImports.glUniform4i64NV == nullptr) {
+ GAPID_WARNING("Application called unsupported function glUniform4i64NV");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, location, x, y, z, w] {
+ called = true;
+ observer->observeReads();
+ mImports.glUniform4i64NV(location, x, y, z, w);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_NV_gpu_shader5);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlUniform4i64NV coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< int32_t >(location, *observer->getScratch()), toEncoder< int64_t >(x, *observer->getScratch()), toEncoder< int64_t >(y, *observer->getScratch()), toEncoder< int64_t >(z, *observer->getScratch()), toEncoder< int64_t >(w, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glWindowRectanglesEXT(CallObserver* observer, uint32_t mode, GLsizei count, GLint* box) {
+ GAPID_DEBUG("glWindowRectanglesEXT(%u, %" PRId32 ", %p)", mode, count, box);
+
+ if (mImports.glWindowRectanglesEXT == nullptr) {
+ GAPID_WARNING("Application called unsupported function glWindowRectanglesEXT");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, mode, count, box] {
+ called = true;
+ observer->observeReads();
+ mImports.glWindowRectanglesEXT(mode, count, box);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_EXT_window_rectangles);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlWindowRectanglesEXT coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), mode, toEncoder< int32_t >(count, *observer->getScratch()), toEncoder< gapic::coder::gles::GLint__CP >(box, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
uint32_t GlesSpy::glCheckFramebufferStatus(CallObserver* observer, uint32_t target) {
GAPID_DEBUG("glCheckFramebufferStatus(%u)", target);
diff --git a/cc/gapii/gles_spy_4.cpp b/cc/gapii/gles_spy_4.cpp
index 6b48a11..05bf4b2 100644
--- a/cc/gapii/gles_spy_4.cpp
+++ b/cc/gapii/gles_spy_4.cpp
@@ -631,6 +631,7 @@
try {
do {
+ subObserveAttribList(observer, call, attrib_list);
call();
auto l_context = result;
std::shared_ptr<Context> l__res_0 = subCreateContext(observer, call);
@@ -648,7 +649,7 @@
observer->observeWrites();
- gapic::coder::gles::EglCreateContext coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< gapic::coder::gles::EGLDisplay >(display, *observer->getScratch()), toEncoder< gapic::coder::gles::EGLConfig >(config, *observer->getScratch()), toEncoder< gapic::coder::gles::EGLContext >(share_context, *observer->getScratch()), toEncoder< gapic::coder::gles::EGLint__P >(attrib_list, *observer->getScratch()), toEncoder< gapic::coder::gles::EGLContext >(result, *observer->getScratch()));
+ gapic::coder::gles::EglCreateContext coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< gapic::coder::gles::EGLDisplay >(display, *observer->getScratch()), toEncoder< gapic::coder::gles::EGLConfig >(config, *observer->getScratch()), toEncoder< gapic::coder::gles::EGLContext >(share_context, *observer->getScratch()), toEncoder< gapic::coder::gles::EGLint__CP >(attrib_list, *observer->getScratch()), toEncoder< gapic::coder::gles::EGLContext >(result, *observer->getScratch()));
coder.mextras.append(observer->getExtras());
if (counter_at_end > counter_at_begin + 1 ||
@@ -685,6 +686,7 @@
try {
do {
+ subObserveAttribList(observer, call, attrib_list);
call();
break;
} while(false);
@@ -736,6 +738,7 @@
try {
do {
+ subObserveAttribList(observer, call, attrib_list);
call();
break;
} while(false);
@@ -2916,6 +2919,730 @@
}
+void GlesSpy::glClearPixelLocalStorageuiEXT(CallObserver* observer, GLsizei offset, GLsizei n, GLuint* values) {
+ GAPID_DEBUG("glClearPixelLocalStorageuiEXT(%" PRId32 ", %" PRId32 ", %p)", offset, n, values);
+
+ if (mImports.glClearPixelLocalStorageuiEXT == nullptr) {
+ GAPID_WARNING("Application called unsupported function glClearPixelLocalStorageuiEXT");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, offset, n, values] {
+ called = true;
+ observer->observeReads();
+ mImports.glClearPixelLocalStorageuiEXT(offset, n, values);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_EXT_shader_pixel_local_storage2);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlClearPixelLocalStorageuiEXT coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< int32_t >(offset, *observer->getScratch()), toEncoder< int32_t >(n, *observer->getScratch()), toEncoder< gapic::coder::gles::GLuint__CP >(values, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glClearTexSubImageEXT(CallObserver* observer, GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, uint32_t format, uint32_t type, void* data) {
+ GAPID_DEBUG("glClearTexSubImageEXT(%" PRIu32 ", %" PRId32 ", %" PRId32 ", %" PRId32 ", %" PRId32 ", %" PRId32 ", %" PRId32 ", %" PRId32 ", %u, %u, %p)", texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, data);
+
+ if (mImports.glClearTexSubImageEXT == nullptr) {
+ GAPID_WARNING("Application called unsupported function glClearTexSubImageEXT");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, data] {
+ called = true;
+ observer->observeReads();
+ mImports.glClearTexSubImageEXT(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, data);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_EXT_clear_texture);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlClearTexSubImageEXT coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< uint32_t >(texture, *observer->getScratch()), toEncoder< int32_t >(level, *observer->getScratch()), toEncoder< int32_t >(xoffset, *observer->getScratch()), toEncoder< int32_t >(yoffset, *observer->getScratch()), toEncoder< int32_t >(zoffset, *observer->getScratch()), toEncoder< int32_t >(width, *observer->getScratch()), toEncoder< int32_t >(height, *observer->getScratch()), toEncoder< int32_t >(depth, *observer->getScratch()), format, type, toEncoder< gapic::coder::gles::Void__CP >(data, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glDepthRangeArrayfvOES(CallObserver* observer, GLuint first, GLsizei count, GLfloat* v) {
+ GAPID_DEBUG("glDepthRangeArrayfvOES(%" PRIu32 ", %" PRId32 ", %p)", first, count, v);
+
+ if (mImports.glDepthRangeArrayfvOES == nullptr) {
+ GAPID_WARNING("Application called unsupported function glDepthRangeArrayfvOES");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, first, count, v] {
+ called = true;
+ observer->observeReads();
+ mImports.glDepthRangeArrayfvOES(first, count, v);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_OES_viewport_array);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlDepthRangeArrayfvOES coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< uint32_t >(first, *observer->getScratch()), toEncoder< int32_t >(count, *observer->getScratch()), toEncoder< gapic::coder::gles::GLfloat__CP >(v, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glDepthRangeIndexedfOES(CallObserver* observer, GLuint index, GLfloat n, GLfloat f) {
+ GAPID_DEBUG("glDepthRangeIndexedfOES(%" PRIu32 ", %f, %f)", index, n, f);
+
+ if (mImports.glDepthRangeIndexedfOES == nullptr) {
+ GAPID_WARNING("Application called unsupported function glDepthRangeIndexedfOES");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, index, n, f] {
+ called = true;
+ observer->observeReads();
+ mImports.glDepthRangeIndexedfOES(index, n, f);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_OES_viewport_array);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlDepthRangeIndexedfOES coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< uint32_t >(index, *observer->getScratch()), toEncoder< float >(n, *observer->getScratch()), toEncoder< float >(f, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glDrawTransformFeedbackEXT(CallObserver* observer, uint32_t mode, GLuint id) {
+ GAPID_DEBUG("glDrawTransformFeedbackEXT(%u, %" PRIu32 ")", mode, id);
+
+ if (mImports.glDrawTransformFeedbackEXT == nullptr) {
+ GAPID_WARNING("Application called unsupported function glDrawTransformFeedbackEXT");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, mode, id] {
+ called = true;
+ observer->observeReads();
+ mImports.glDrawTransformFeedbackEXT(mode, id);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_EXT_draw_transform_feedback);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlDrawTransformFeedbackEXT coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), mode, toEncoder< uint32_t >(id, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glFramebufferTextureLayerDownsampleIMG(CallObserver* observer, uint32_t target, uint32_t attachment, GLuint texture, GLint level, GLint layer, GLint xscale, GLint yscale) {
+ GAPID_DEBUG("glFramebufferTextureLayerDownsampleIMG(%u, %u, %" PRIu32 ", %" PRId32 ", %" PRId32 ", %" PRId32 ", %" PRId32 ")", target, attachment, texture, level, layer, xscale, yscale);
+
+ if (mImports.glFramebufferTextureLayerDownsampleIMG == nullptr) {
+ GAPID_WARNING("Application called unsupported function glFramebufferTextureLayerDownsampleIMG");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, target, attachment, texture, level, layer, xscale, yscale] {
+ called = true;
+ observer->observeReads();
+ mImports.glFramebufferTextureLayerDownsampleIMG(target, attachment, texture, level, layer, xscale, yscale);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_IMG_framebuffer_downsample);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlFramebufferTextureLayerDownsampleIMG coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), target, attachment, toEncoder< uint32_t >(texture, *observer->getScratch()), toEncoder< int32_t >(level, *observer->getScratch()), toEncoder< int32_t >(layer, *observer->getScratch()), toEncoder< int32_t >(xscale, *observer->getScratch()), toEncoder< int32_t >(yscale, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glFramebufferTextureMultisampleMultiviewOVR(CallObserver* observer, uint32_t target, uint32_t attachment, GLuint texture, GLint level, GLsizei samples, GLint baseViewIndex, GLsizei numViews) {
+ GAPID_DEBUG("glFramebufferTextureMultisampleMultiviewOVR(%u, %u, %" PRIu32 ", %" PRId32 ", %" PRId32 ", %" PRId32 ", %" PRId32 ")", target, attachment, texture, level, samples, baseViewIndex, numViews);
+
+ if (mImports.glFramebufferTextureMultisampleMultiviewOVR == nullptr) {
+ GAPID_WARNING("Application called unsupported function glFramebufferTextureMultisampleMultiviewOVR");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, target, attachment, texture, level, samples, baseViewIndex, numViews] {
+ called = true;
+ observer->observeReads();
+ mImports.glFramebufferTextureMultisampleMultiviewOVR(target, attachment, texture, level, samples, baseViewIndex, numViews);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_OVR_multiview_multisampled_render_to_texture);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlFramebufferTextureMultisampleMultiviewOVR coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), target, attachment, toEncoder< uint32_t >(texture, *observer->getScratch()), toEncoder< int32_t >(level, *observer->getScratch()), toEncoder< int32_t >(samples, *observer->getScratch()), toEncoder< int32_t >(baseViewIndex, *observer->getScratch()), toEncoder< int32_t >(numViews, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+GLuint64 GlesSpy::glGetTextureHandleIMG(CallObserver* observer, GLuint texture) {
+ GAPID_DEBUG("glGetTextureHandleIMG(%" PRIu32 ")", texture);
+
+ if (mImports.glGetTextureHandleIMG == nullptr) {
+ GAPID_WARNING("Application called unsupported function glGetTextureHandleIMG");
+ return 0;
+ }
+
+ GLuint64 result = 0;
+ bool called = false;
+ auto call = [this, observer, &called, &result, texture] {
+ called = true;
+ observer->observeReads();
+ result = mImports.glGetTextureHandleIMG(texture);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_IMG_bindless_texture);
+ call();
+ break;
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlGetTextureHandleIMG coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< uint32_t >(texture, *observer->getScratch()), toEncoder< uint64_t >(result, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+
+ return result;
+}
+
+void GlesSpy::glScissorIndexedvOES(CallObserver* observer, GLuint index, GLint* v) {
+ GAPID_DEBUG("glScissorIndexedvOES(%" PRIu32 ", %p)", index, v);
+
+ if (mImports.glScissorIndexedvOES == nullptr) {
+ GAPID_WARNING("Application called unsupported function glScissorIndexedvOES");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, index, v] {
+ called = true;
+ observer->observeReads();
+ mImports.glScissorIndexedvOES(index, v);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_OES_viewport_array);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlScissorIndexedvOES coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< uint32_t >(index, *observer->getScratch()), toEncoder< gapic::coder::gles::GLint__CP >(v, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glUniform1i64NV(CallObserver* observer, GLint location, GLint64EXT x) {
+ GAPID_DEBUG("glUniform1i64NV(%" PRId32 ", %" PRId64 ")", location, x);
+
+ if (mImports.glUniform1i64NV == nullptr) {
+ GAPID_WARNING("Application called unsupported function glUniform1i64NV");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, location, x] {
+ called = true;
+ observer->observeReads();
+ mImports.glUniform1i64NV(location, x);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_NV_gpu_shader5);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlUniform1i64NV coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< int32_t >(location, *observer->getScratch()), toEncoder< int64_t >(x, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glUniform2ui64vNV(CallObserver* observer, GLint location, GLsizei count, GLuint64EXT* value) {
+ GAPID_DEBUG("glUniform2ui64vNV(%" PRId32 ", %" PRId32 ", %p)", location, count, value);
+
+ if (mImports.glUniform2ui64vNV == nullptr) {
+ GAPID_WARNING("Application called unsupported function glUniform2ui64vNV");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, location, count, value] {
+ called = true;
+ observer->observeReads();
+ mImports.glUniform2ui64vNV(location, count, value);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_NV_gpu_shader5);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlUniform2ui64vNV coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< int32_t >(location, *observer->getScratch()), toEncoder< int32_t >(count, *observer->getScratch()), toEncoder< gapic::coder::gles::GLuint64EXT__CP >(value, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glUniform3i64vNV(CallObserver* observer, GLint location, GLsizei count, GLint64EXT* value) {
+ GAPID_DEBUG("glUniform3i64vNV(%" PRId32 ", %" PRId32 ", %p)", location, count, value);
+
+ if (mImports.glUniform3i64vNV == nullptr) {
+ GAPID_WARNING("Application called unsupported function glUniform3i64vNV");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, location, count, value] {
+ called = true;
+ observer->observeReads();
+ mImports.glUniform3i64vNV(location, count, value);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_NV_gpu_shader5);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlUniform3i64vNV coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< int32_t >(location, *observer->getScratch()), toEncoder< int32_t >(count, *observer->getScratch()), toEncoder< gapic::coder::gles::GLint64EXT__CP >(value, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glUniform4ui64NV(CallObserver* observer, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w) {
+ GAPID_DEBUG("glUniform4ui64NV(%" PRId32 ", %" PRIu64 ", %" PRIu64 ", %" PRIu64 ", %" PRIu64 ")", location, x, y, z, w);
+
+ if (mImports.glUniform4ui64NV == nullptr) {
+ GAPID_WARNING("Application called unsupported function glUniform4ui64NV");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, location, x, y, z, w] {
+ called = true;
+ observer->observeReads();
+ mImports.glUniform4ui64NV(location, x, y, z, w);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_NV_gpu_shader5);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlUniform4ui64NV coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< int32_t >(location, *observer->getScratch()), toEncoder< uint64_t >(x, *observer->getScratch()), toEncoder< uint64_t >(y, *observer->getScratch()), toEncoder< uint64_t >(z, *observer->getScratch()), toEncoder< uint64_t >(w, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glViewportIndexedfOES(CallObserver* observer, GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h) {
+ GAPID_DEBUG("glViewportIndexedfOES(%" PRIu32 ", %f, %f, %f, %f)", index, x, y, w, h);
+
+ if (mImports.glViewportIndexedfOES == nullptr) {
+ GAPID_WARNING("Application called unsupported function glViewportIndexedfOES");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, index, x, y, w, h] {
+ called = true;
+ observer->observeReads();
+ mImports.glViewportIndexedfOES(index, x, y, w, h);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_OES_viewport_array);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlViewportIndexedfOES coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< uint32_t >(index, *observer->getScratch()), toEncoder< float >(x, *observer->getScratch()), toEncoder< float >(y, *observer->getScratch()), toEncoder< float >(w, *observer->getScratch()), toEncoder< float >(h, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glViewportSwizzleNV(CallObserver* observer, GLuint index, uint32_t swizzlex, uint32_t swizzley, uint32_t swizzlez, uint32_t swizzlew) {
+ GAPID_DEBUG("glViewportSwizzleNV(%" PRIu32 ", %u, %u, %u, %u)", index, swizzlex, swizzley, swizzlez, swizzlew);
+
+ if (mImports.glViewportSwizzleNV == nullptr) {
+ GAPID_WARNING("Application called unsupported function glViewportSwizzleNV");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, index, swizzlex, swizzley, swizzlez, swizzlew] {
+ called = true;
+ observer->observeReads();
+ mImports.glViewportSwizzleNV(index, swizzlex, swizzley, swizzlez, swizzlew);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_NV_viewport_swizzle);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlViewportSwizzleNV coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< uint32_t >(index, *observer->getScratch()), swizzlex, swizzley, swizzlez, swizzlew);
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
void GlesSpy::glBlendEquationi(CallObserver* observer, DrawBufferIndex buf, uint32_t mode) {
GAPID_DEBUG("glBlendEquationi(%" PRIu32 ", %u)", buf, mode);
diff --git a/cc/gapii/gles_spy_5.cpp b/cc/gapii/gles_spy_5.cpp
index 298f012..a381ea6 100644
--- a/cc/gapii/gles_spy_5.cpp
+++ b/cc/gapii/gles_spy_5.cpp
@@ -2544,6 +2544,346 @@
}
+GLsizei GlesSpy::glGetFramebufferPixelLocalStorageSizeEXT(CallObserver* observer, GLuint target) {
+ GAPID_DEBUG("glGetFramebufferPixelLocalStorageSizeEXT(%" PRIu32 ")", target);
+
+ if (mImports.glGetFramebufferPixelLocalStorageSizeEXT == nullptr) {
+ GAPID_WARNING("Application called unsupported function glGetFramebufferPixelLocalStorageSizeEXT");
+ return 0;
+ }
+
+ GLsizei result = 0;
+ bool called = false;
+ auto call = [this, observer, &called, &result, target] {
+ called = true;
+ observer->observeReads();
+ result = mImports.glGetFramebufferPixelLocalStorageSizeEXT(target);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_EXT_shader_pixel_local_storage2);
+ call();
+ break;
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlGetFramebufferPixelLocalStorageSizeEXT coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< uint32_t >(target, *observer->getScratch()), toEncoder< int32_t >(result, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+
+ return result;
+}
+
+void GlesSpy::glPolygonOffsetClampEXT(CallObserver* observer, GLfloat factor, GLfloat units, GLfloat clamp) {
+ GAPID_DEBUG("glPolygonOffsetClampEXT(%f, %f, %f)", factor, units, clamp);
+
+ if (mImports.glPolygonOffsetClampEXT == nullptr) {
+ GAPID_WARNING("Application called unsupported function glPolygonOffsetClampEXT");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, factor, units, clamp] {
+ called = true;
+ observer->observeReads();
+ mImports.glPolygonOffsetClampEXT(factor, units, clamp);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_EXT_polygon_offset_clamp);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlPolygonOffsetClampEXT coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< float >(factor, *observer->getScratch()), toEncoder< float >(units, *observer->getScratch()), toEncoder< float >(clamp, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glProgramUniform1ui64vNV(CallObserver* observer, GLuint program, GLint location, GLsizei count, GLuint64EXT* value) {
+ GAPID_DEBUG("glProgramUniform1ui64vNV(%" PRIu32 ", %" PRId32 ", %" PRId32 ", %p)", program, location, count, value);
+
+ if (mImports.glProgramUniform1ui64vNV == nullptr) {
+ GAPID_WARNING("Application called unsupported function glProgramUniform1ui64vNV");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, program, location, count, value] {
+ called = true;
+ observer->observeReads();
+ mImports.glProgramUniform1ui64vNV(program, location, count, value);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_NV_gpu_shader5);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlProgramUniform1ui64vNV coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< uint32_t >(program, *observer->getScratch()), toEncoder< int32_t >(location, *observer->getScratch()), toEncoder< int32_t >(count, *observer->getScratch()), toEncoder< gapic::coder::gles::GLuint64EXT__CP >(value, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glProgramUniform2i64NV(CallObserver* observer, GLuint program, GLint location, GLint64EXT x, GLint64EXT y) {
+ GAPID_DEBUG("glProgramUniform2i64NV(%" PRIu32 ", %" PRId32 ", %" PRId64 ", %" PRId64 ")", program, location, x, y);
+
+ if (mImports.glProgramUniform2i64NV == nullptr) {
+ GAPID_WARNING("Application called unsupported function glProgramUniform2i64NV");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, program, location, x, y] {
+ called = true;
+ observer->observeReads();
+ mImports.glProgramUniform2i64NV(program, location, x, y);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_NV_gpu_shader5);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlProgramUniform2i64NV coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< uint32_t >(program, *observer->getScratch()), toEncoder< int32_t >(location, *observer->getScratch()), toEncoder< int64_t >(x, *observer->getScratch()), toEncoder< int64_t >(y, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glUniform1ui64NV(CallObserver* observer, GLint location, GLuint64EXT x) {
+ GAPID_DEBUG("glUniform1ui64NV(%" PRId32 ", %" PRIu64 ")", location, x);
+
+ if (mImports.glUniform1ui64NV == nullptr) {
+ GAPID_WARNING("Application called unsupported function glUniform1ui64NV");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, location, x] {
+ called = true;
+ observer->observeReads();
+ mImports.glUniform1ui64NV(location, x);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_NV_gpu_shader5);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlUniform1ui64NV coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< int32_t >(location, *observer->getScratch()), toEncoder< uint64_t >(x, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glUniform2i64vNV(CallObserver* observer, GLint location, GLsizei count, GLint64EXT* value) {
+ GAPID_DEBUG("glUniform2i64vNV(%" PRId32 ", %" PRId32 ", %p)", location, count, value);
+
+ if (mImports.glUniform2i64vNV == nullptr) {
+ GAPID_WARNING("Application called unsupported function glUniform2i64vNV");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, location, count, value] {
+ called = true;
+ observer->observeReads();
+ mImports.glUniform2i64vNV(location, count, value);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_NV_gpu_shader5);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlUniform2i64vNV coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< int32_t >(location, *observer->getScratch()), toEncoder< int32_t >(count, *observer->getScratch()), toEncoder< gapic::coder::gles::GLint64EXT__CP >(value, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glUniformHandleui64vIMG(CallObserver* observer, GLint location, GLsizei count, GLuint64* value) {
+ GAPID_DEBUG("glUniformHandleui64vIMG(%" PRId32 ", %" PRId32 ", %p)", location, count, value);
+
+ if (mImports.glUniformHandleui64vIMG == nullptr) {
+ GAPID_WARNING("Application called unsupported function glUniformHandleui64vIMG");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, location, count, value] {
+ called = true;
+ observer->observeReads();
+ mImports.glUniformHandleui64vIMG(location, count, value);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_IMG_bindless_texture);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlUniformHandleui64vIMG coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< int32_t >(location, *observer->getScratch()), toEncoder< int32_t >(count, *observer->getScratch()), toEncoder< gapic::coder::gles::GLuint64__CP >(value, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
void GlesSpy::glStencilOp(CallObserver* observer, uint32_t fail, uint32_t zfail, uint32_t zpass) {
GAPID_DEBUG("glStencilOp(%u, %u, %u)", fail, zfail, zpass);
diff --git a/cc/gapii/gles_spy_6.cpp b/cc/gapii/gles_spy_6.cpp
index 818147a..1910d2b 100644
--- a/cc/gapii/gles_spy_6.cpp
+++ b/cc/gapii/gles_spy_6.cpp
@@ -533,6 +533,11 @@
try {
do {
call();
+ auto l_num = slice(num_config, 0ULL, 1ULL)[0ULL];
+ observer->write<EGLint>(slice(num_config, 0ULL, 1ULL), 0ULL, l_num);
+ if ((configs) != (nullptr)) {
+ observer->write(slice(configs, (uint64_t)(0L), (uint64_t)(l_num)));
+ }
break;
} while(false);
} catch (gapii::AbortException& e) {
@@ -1174,6 +1179,7 @@
try {
do {
subRequiresExtension(observer, call, ExtensionId::GL_EXT_multisampled_render_to_texture);
+ subFramebufferTexture2D(observer, call, target, attachment, textarget, texture, level);
call();
} while(false);
} catch (gapii::AbortException& e) {
@@ -2631,6 +2637,246 @@
}
+void GlesSpy::glClearTexImageEXT(CallObserver* observer, GLuint texture, GLint level, uint32_t format, uint32_t type, void* data) {
+ GAPID_DEBUG("glClearTexImageEXT(%" PRIu32 ", %" PRId32 ", %u, %u, %p)", texture, level, format, type, data);
+
+ if (mImports.glClearTexImageEXT == nullptr) {
+ GAPID_WARNING("Application called unsupported function glClearTexImageEXT");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, texture, level, format, type, data] {
+ called = true;
+ observer->observeReads();
+ mImports.glClearTexImageEXT(texture, level, format, type, data);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_EXT_clear_texture);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlClearTexImageEXT coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< uint32_t >(texture, *observer->getScratch()), toEncoder< int32_t >(level, *observer->getScratch()), format, type, toEncoder< gapic::coder::gles::Void__CP >(data, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glProgramUniform1i64vNV(CallObserver* observer, GLuint program, GLint location, GLsizei count, GLint64EXT* value) {
+ GAPID_DEBUG("glProgramUniform1i64vNV(%" PRIu32 ", %" PRId32 ", %" PRId32 ", %p)", program, location, count, value);
+
+ if (mImports.glProgramUniform1i64vNV == nullptr) {
+ GAPID_WARNING("Application called unsupported function glProgramUniform1i64vNV");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, program, location, count, value] {
+ called = true;
+ observer->observeReads();
+ mImports.glProgramUniform1i64vNV(program, location, count, value);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_NV_gpu_shader5);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlProgramUniform1i64vNV coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< uint32_t >(program, *observer->getScratch()), toEncoder< int32_t >(location, *observer->getScratch()), toEncoder< int32_t >(count, *observer->getScratch()), toEncoder< gapic::coder::gles::GLint64EXT__CP >(value, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glProgramUniform4ui64vNV(CallObserver* observer, GLuint program, GLint location, GLsizei count, GLuint64EXT* value) {
+ GAPID_DEBUG("glProgramUniform4ui64vNV(%" PRIu32 ", %" PRId32 ", %" PRId32 ", %p)", program, location, count, value);
+
+ if (mImports.glProgramUniform4ui64vNV == nullptr) {
+ GAPID_WARNING("Application called unsupported function glProgramUniform4ui64vNV");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, program, location, count, value] {
+ called = true;
+ observer->observeReads();
+ mImports.glProgramUniform4ui64vNV(program, location, count, value);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_NV_gpu_shader5);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlProgramUniform4ui64vNV coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< uint32_t >(program, *observer->getScratch()), toEncoder< int32_t >(location, *observer->getScratch()), toEncoder< int32_t >(count, *observer->getScratch()), toEncoder< gapic::coder::gles::GLuint64EXT__CP >(value, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glUniform2ui64NV(CallObserver* observer, GLint location, GLuint64EXT x, GLuint64EXT y) {
+ GAPID_DEBUG("glUniform2ui64NV(%" PRId32 ", %" PRIu64 ", %" PRIu64 ")", location, x, y);
+
+ if (mImports.glUniform2ui64NV == nullptr) {
+ GAPID_WARNING("Application called unsupported function glUniform2ui64NV");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, location, x, y] {
+ called = true;
+ observer->observeReads();
+ mImports.glUniform2ui64NV(location, x, y);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_NV_gpu_shader5);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlUniform2ui64NV coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< int32_t >(location, *observer->getScratch()), toEncoder< uint64_t >(x, *observer->getScratch()), toEncoder< uint64_t >(y, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glUniform3i64NV(CallObserver* observer, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z) {
+ GAPID_DEBUG("glUniform3i64NV(%" PRId32 ", %" PRId64 ", %" PRId64 ", %" PRId64 ")", location, x, y, z);
+
+ if (mImports.glUniform3i64NV == nullptr) {
+ GAPID_WARNING("Application called unsupported function glUniform3i64NV");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, location, x, y, z] {
+ called = true;
+ observer->observeReads();
+ mImports.glUniform3i64NV(location, x, y, z);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_NV_gpu_shader5);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlUniform3i64NV coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< int32_t >(location, *observer->getScratch()), toEncoder< int64_t >(x, *observer->getScratch()), toEncoder< int64_t >(y, *observer->getScratch()), toEncoder< int64_t >(z, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
void GlesSpy::glStencilOpSeparate(CallObserver* observer, uint32_t face, uint32_t stencil_fail, uint32_t stencil_pass_depth_fail, uint32_t stencil_pass_depth_pass) {
GAPID_DEBUG("glStencilOpSeparate(%u, %u, %u, %u)", face, stencil_fail, stencil_pass_depth_fail, stencil_pass_depth_pass);
@@ -3069,6 +3315,7 @@
onPostFence(observer);
};
+ onPreEndOfFrame();
uint64_t counter_at_begin = mCommandStartEndCounter++;
@@ -4444,9 +4691,9 @@
if ((texture) != ((TextureId)(0UL))) {
if (!(checkNotNull(l_ctx).mInstances.mTextures.count(texture) > 0)) {
if ((target) == (GLenum::GL_TEXTURE_EXTERNAL_OES)) {
- checkNotNull(l_ctx).mInstances.mTextures[texture] = std::shared_ptr<Texture>(new Texture(texture, 0, 0, 0, GLintToImage(), GLintToCubemapLevel(), GLenum::GL_RED, GLenum::GL_GREEN, GLenum::GL_BLUE, GLenum::GL_ALPHA, std::move(Vec4f{(GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f)}), GLenum::GL_LINEAR, GLenum::GL_LINEAR, GLenum::GL_CLAMP_TO_EDGE, GLenum::GL_CLAMP_TO_EDGE, GLenum::GL_REPEAT, (GLfloat)(-1000.f), (GLfloat)(1000.f), (GLint)(0L), (GLint)(1000L), GLenum::GL_DEPTH_COMPONENT, GLenum::GL_NONE, GLenum::GL_LEQUAL, GLbooleanLabels::GL_FALSE, (GLuint)(0UL), "", (GLfloat)(1.f)));
+ checkNotNull(l_ctx).mInstances.mTextures[texture] = std::shared_ptr<Texture>(new Texture(texture, 0, 0, 0, GLintToImage(), GLintToCubemapLevel(), GLenum::GL_RED, GLenum::GL_GREEN, GLenum::GL_BLUE, GLenum::GL_ALPHA, std::move(Vec4f{(GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f)}), GLenum::GL_LINEAR, GLenum::GL_LINEAR, GLenum::GL_CLAMP_TO_EDGE, GLenum::GL_CLAMP_TO_EDGE, GLenum::GL_REPEAT, (GLfloat)(-1000.f), (GLfloat)(1000.f), (GLint)(0L), (GLint)(1000L), GLenum::GL_DEPTH_COMPONENT, GLenum::GL_NONE, GLenum::GL_LEQUAL, GLbooleanLabels::GL_FALSE, (GLuint)(0UL), "", (GLfloat)(1.f), nullptr));
} else {
- checkNotNull(l_ctx).mInstances.mTextures[texture] = std::shared_ptr<Texture>(new Texture(texture, 0, 0, 0, GLintToImage(), GLintToCubemapLevel(), GLenum::GL_RED, GLenum::GL_GREEN, GLenum::GL_BLUE, GLenum::GL_ALPHA, std::move(Vec4f{(GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f)}), GLenum::GL_NEAREST_MIPMAP_LINEAR, GLenum::GL_LINEAR, GLenum::GL_REPEAT, GLenum::GL_REPEAT, GLenum::GL_REPEAT, (GLfloat)(-1000.f), (GLfloat)(1000.f), (GLint)(0L), (GLint)(1000L), GLenum::GL_DEPTH_COMPONENT, GLenum::GL_NONE, GLenum::GL_LEQUAL, GLbooleanLabels::GL_FALSE, (GLuint)(0UL), "", (GLfloat)(1.f)));
+ checkNotNull(l_ctx).mInstances.mTextures[texture] = std::shared_ptr<Texture>(new Texture(texture, 0, 0, 0, GLintToImage(), GLintToCubemapLevel(), GLenum::GL_RED, GLenum::GL_GREEN, GLenum::GL_BLUE, GLenum::GL_ALPHA, std::move(Vec4f{(GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f)}), GLenum::GL_NEAREST_MIPMAP_LINEAR, GLenum::GL_LINEAR, GLenum::GL_REPEAT, GLenum::GL_REPEAT, GLenum::GL_REPEAT, (GLfloat)(-1000.f), (GLfloat)(1000.f), (GLint)(0L), (GLint)(1000L), GLenum::GL_DEPTH_COMPONENT, GLenum::GL_NONE, GLenum::GL_LEQUAL, GLbooleanLabels::GL_FALSE, (GLuint)(0UL), "", (GLfloat)(1.f), nullptr));
}
}
std::shared_ptr<Texture> l_t = findOrZero(checkNotNull(l_ctx).mInstances.mTextures, texture);
diff --git a/cc/gapii/gles_spy_7.cpp b/cc/gapii/gles_spy_7.cpp
index fe66b57..0ff8e64 100644
--- a/cc/gapii/gles_spy_7.cpp
+++ b/cc/gapii/gles_spy_7.cpp
@@ -1692,7 +1692,7 @@
try {
do {
- subRequiresExtension(observer, call, ExtensionId::GL_OES_draw_buffers_indexed);
+ subRequiresExtension2(observer, call, ExtensionId::GL_OES_draw_buffers_indexed, ExtensionId::GL_OES_viewport_array);
GLboolean l__res_0 = subIsEnabledi(observer, call, target, index);
call();
if (UNLIKELY(shouldComputeExpectedReturn())) {
@@ -2767,6 +2767,390 @@
}
+void GlesSpy::glFramebufferTexture2DDownsampleIMG(CallObserver* observer, uint32_t target, uint32_t attachment, uint32_t textarget, GLuint texture, GLint level, GLint xscale, GLint yscale) {
+ GAPID_DEBUG("glFramebufferTexture2DDownsampleIMG(%u, %u, %u, %" PRIu32 ", %" PRId32 ", %" PRId32 ", %" PRId32 ")", target, attachment, textarget, texture, level, xscale, yscale);
+
+ if (mImports.glFramebufferTexture2DDownsampleIMG == nullptr) {
+ GAPID_WARNING("Application called unsupported function glFramebufferTexture2DDownsampleIMG");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, target, attachment, textarget, texture, level, xscale, yscale] {
+ called = true;
+ observer->observeReads();
+ mImports.glFramebufferTexture2DDownsampleIMG(target, attachment, textarget, texture, level, xscale, yscale);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_IMG_framebuffer_downsample);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlFramebufferTexture2DDownsampleIMG coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), target, attachment, textarget, toEncoder< uint32_t >(texture, *observer->getScratch()), toEncoder< int32_t >(level, *observer->getScratch()), toEncoder< int32_t >(xscale, *observer->getScratch()), toEncoder< int32_t >(yscale, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glGetFloati_vOES(CallObserver* observer, uint32_t target, GLuint index, GLfloat* data) {
+ GAPID_DEBUG("glGetFloati_vOES(%u, %" PRIu32 ", %p)", target, index, data);
+
+ if (mImports.glGetFloati_vOES == nullptr) {
+ GAPID_WARNING("Application called unsupported function glGetFloati_vOES");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, target, index, data] {
+ called = true;
+ observer->observeReads();
+ mImports.glGetFloati_vOES(target, index, data);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_OES_viewport_array);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlGetFloati_vOES coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), target, toEncoder< uint32_t >(index, *observer->getScratch()), toEncoder< gapic::coder::gles::GLfloat__P >(data, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glGetUniformi64vNV(CallObserver* observer, GLuint program, GLint location, GLint64EXT* params) {
+ GAPID_DEBUG("glGetUniformi64vNV(%" PRIu32 ", %" PRId32 ", %p)", program, location, params);
+
+ if (mImports.glGetUniformi64vNV == nullptr) {
+ GAPID_WARNING("Application called unsupported function glGetUniformi64vNV");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, program, location, params] {
+ called = true;
+ observer->observeReads();
+ mImports.glGetUniformi64vNV(program, location, params);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_NV_gpu_shader5);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlGetUniformi64vNV coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< uint32_t >(program, *observer->getScratch()), toEncoder< int32_t >(location, *observer->getScratch()), toEncoder< gapic::coder::gles::GLint64EXT__P >(params, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glProgramUniform3ui64NV(CallObserver* observer, GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z) {
+ GAPID_DEBUG("glProgramUniform3ui64NV(%" PRIu32 ", %" PRId32 ", %" PRIu64 ", %" PRIu64 ", %" PRIu64 ")", program, location, x, y, z);
+
+ if (mImports.glProgramUniform3ui64NV == nullptr) {
+ GAPID_WARNING("Application called unsupported function glProgramUniform3ui64NV");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, program, location, x, y, z] {
+ called = true;
+ observer->observeReads();
+ mImports.glProgramUniform3ui64NV(program, location, x, y, z);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_NV_gpu_shader5);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlProgramUniform3ui64NV coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< uint32_t >(program, *observer->getScratch()), toEncoder< int32_t >(location, *observer->getScratch()), toEncoder< uint64_t >(x, *observer->getScratch()), toEncoder< uint64_t >(y, *observer->getScratch()), toEncoder< uint64_t >(z, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glProgramUniform4i64NV(CallObserver* observer, GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w) {
+ GAPID_DEBUG("glProgramUniform4i64NV(%" PRIu32 ", %" PRId32 ", %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 ")", program, location, x, y, z, w);
+
+ if (mImports.glProgramUniform4i64NV == nullptr) {
+ GAPID_WARNING("Application called unsupported function glProgramUniform4i64NV");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, program, location, x, y, z, w] {
+ called = true;
+ observer->observeReads();
+ mImports.glProgramUniform4i64NV(program, location, x, y, z, w);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_NV_gpu_shader5);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlProgramUniform4i64NV coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< uint32_t >(program, *observer->getScratch()), toEncoder< int32_t >(location, *observer->getScratch()), toEncoder< int64_t >(x, *observer->getScratch()), toEncoder< int64_t >(y, *observer->getScratch()), toEncoder< int64_t >(z, *observer->getScratch()), toEncoder< int64_t >(w, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glUniform3ui64vNV(CallObserver* observer, GLint location, GLsizei count, GLuint64EXT* value) {
+ GAPID_DEBUG("glUniform3ui64vNV(%" PRId32 ", %" PRId32 ", %p)", location, count, value);
+
+ if (mImports.glUniform3ui64vNV == nullptr) {
+ GAPID_WARNING("Application called unsupported function glUniform3ui64vNV");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, location, count, value] {
+ called = true;
+ observer->observeReads();
+ mImports.glUniform3ui64vNV(location, count, value);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_NV_gpu_shader5);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlUniform3ui64vNV coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< int32_t >(location, *observer->getScratch()), toEncoder< int32_t >(count, *observer->getScratch()), toEncoder< gapic::coder::gles::GLuint64EXT__CP >(value, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glUniform4i64vNV(CallObserver* observer, GLint location, GLsizei count, GLint64EXT* value) {
+ GAPID_DEBUG("glUniform4i64vNV(%" PRId32 ", %" PRId32 ", %p)", location, count, value);
+
+ if (mImports.glUniform4i64vNV == nullptr) {
+ GAPID_WARNING("Application called unsupported function glUniform4i64vNV");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, location, count, value] {
+ called = true;
+ observer->observeReads();
+ mImports.glUniform4i64vNV(location, count, value);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_NV_gpu_shader5);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlUniform4i64vNV coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< int32_t >(location, *observer->getScratch()), toEncoder< int32_t >(count, *observer->getScratch()), toEncoder< gapic::coder::gles::GLint64EXT__CP >(value, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
+void GlesSpy::glUniformHandleui64IMG(CallObserver* observer, GLint location, GLuint64 value) {
+ GAPID_DEBUG("glUniformHandleui64IMG(%" PRId32 ", %" PRIu64 ")", location, value);
+
+ if (mImports.glUniformHandleui64IMG == nullptr) {
+ GAPID_WARNING("Application called unsupported function glUniformHandleui64IMG");
+ return;
+ }
+
+ bool called = false;
+ auto call = [this, observer, &called, location, value] {
+ called = true;
+ observer->observeReads();
+ mImports.glUniformHandleui64IMG(location, value);
+ onPostFence(observer);
+ };
+
+
+ uint64_t counter_at_begin = mCommandStartEndCounter++;
+
+ try {
+ do {
+ subRequiresExtension(observer, call, ExtensionId::GL_IMG_bindless_texture);
+ call();
+ } while(false);
+ } catch (gapii::AbortException& e) {
+ if (!called) {
+ call(); // abort() was called before the fence.
+ }
+ handleAbort(observer, e);
+ }
+ uint64_t counter_at_end = mCommandStartEndCounter++;
+ gapic::coder::atom::CommandCounter counter_value_encodable(counter_at_begin, counter_at_end);
+
+ observer->observeWrites();
+
+ gapic::coder::gles::GlUniformHandleui64IMG coder(observer->getScratch()->vector<gapic::Encodable*>(kMaxExtras), toEncoder< int32_t >(location, *observer->getScratch()), toEncoder< uint64_t >(value, *observer->getScratch()));
+ coder.mextras.append(observer->getExtras());
+
+ if (counter_at_end > counter_at_begin + 1 ||
+ counter_at_begin != mExpectedNextCommandStartCounterValue) {
+ coder.mextras.append(&counter_value_encodable);
+ }
+ mExpectedNextCommandStartCounterValue = counter_at_end + 1;
+
+ mEncoder->Variant(&coder);
+
+}
+
void GlesSpy::glBlendEquation(CallObserver* observer, uint32_t equation) {
GAPID_DEBUG("glBlendEquation(%u)", equation);
diff --git a/cc/gapii/gles_spy_subroutines_0.cpp b/cc/gapii/gles_spy_subroutines_0.cpp
index 9138e62..280fda6 100644
--- a/cc/gapii/gles_spy_subroutines_0.cpp
+++ b/cc/gapii/gles_spy_subroutines_0.cpp
@@ -1804,6 +1804,11 @@
observer->write<GLuint>(l_p, 3ULL, (GLuint)(checkNotNull(l_s).mBorderColor[3ULL]));
break;
}
+ case GLenum::GL_TEXTURE_MAX_ANISOTROPY_EXT: {
+ subRequiresExtension(observer, call, ExtensionId::GL_EXT_texture_filter_anisotropic);
+ observer->write<GLuint>(slice(params, 0ULL, 1ULL), 0ULL, (GLuint)(checkNotNull(l_s).mMaxAnisotropy));
+ break;
+ }
default: {
subGlErrorInvalidEnum(observer, call, pname);
}
@@ -1994,6 +1999,11 @@
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
break;
}
+ case GLenum::GL_TEXTURE_MAX_ANISOTROPY_EXT: {
+ subRequiresExtension(observer, call, ExtensionId::GL_EXT_texture_filter_anisotropic);
+ checkNotNull(l_s).mMaxAnisotropy = (GLfloat)(observer->read(slice(params, 0ULL, 1ULL), 0ULL));
+ break;
+ }
default: {
subGlErrorInvalidEnum(observer, call, pname);
}
@@ -5461,6 +5471,11 @@
observer->write<GLfloat>(l_p, 3ULL, checkNotNull(l_s).mBorderColor[3ULL]);
break;
}
+ case GLenum::GL_TEXTURE_MAX_ANISOTROPY_EXT: {
+ subRequiresExtension(observer, call, ExtensionId::GL_EXT_texture_filter_anisotropic);
+ observer->write<GLfloat>(slice(params, 0ULL, 1ULL), 0ULL, checkNotNull(l_s).mMaxAnisotropy);
+ break;
+ }
default: {
subGlErrorInvalidEnum(observer, call, pname);
}
@@ -5512,6 +5527,11 @@
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
break;
}
+ case GLenum::GL_TEXTURE_MAX_ANISOTROPY_EXT: {
+ subRequiresExtension(observer, call, ExtensionId::GL_EXT_texture_filter_anisotropic);
+ checkNotNull(l_s).mMaxAnisotropy = params[0ULL];
+ break;
+ }
default: {
subGlErrorInvalidEnum(observer, call, pname);
}
diff --git a/cc/gapii/gles_spy_subroutines_1.cpp b/cc/gapii/gles_spy_subroutines_1.cpp
index 5d19fa5..00f1bff 100644
--- a/cc/gapii/gles_spy_subroutines_1.cpp
+++ b/cc/gapii/gles_spy_subroutines_1.cpp
@@ -845,6 +845,24 @@
return;
}
+void GlesSpy::subObserveAttribList(CallObserver* observer, const std::function<void()>& call, EGLint* attrib_list) {
+ if ((attrib_list) != (nullptr)) {
+ Slice<bool> l_done = make<bool>(1ULL);
+ observer->write<bool>(l_done, 0ULL, false);
+ for (int32_t l_i = 0L; l_i < 256L; ++l_i) {
+ if (!(observer->read(l_done, 0ULL))) {
+ Slice<EGLint> l_pair = slice(attrib_list, (uint64_t)((l_i) * (2L)), (uint64_t)(((l_i) * (2L)) + (2L)));
+ if (((uint32_t)(observer->read(l_pair, 0ULL))) != (EGLenum::EGL_NONE)) {
+ (void)observer->read(l_pair, 1ULL);
+ } else {
+ observer->write<bool>(l_done, 0ULL, true);
+ }
+ }
+ }
+ }
+ return;
+}
+
void GlesSpy::subApplyProgramInfoExtra(CallObserver* observer, const std::function<void()>& call, ProgramId programId, std::shared_ptr<ProgramInfo> info) {
if ((info) != (std::shared_ptr<ProgramInfo>())) {
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
@@ -1162,9 +1180,15 @@
}
}
switch (internalformat) {
+ case GLenum::GL_DEPTH_COMPONENT16: // fall-through...
+ case GLenum::GL_RGB565: // fall-through...
+ case GLenum::GL_RGB5_A1: // fall-through...
+ case GLenum::GL_RGBA4: // fall-through...
+ case GLenum::GL_STENCIL_INDEX8: {
+ break;
+ }
case GLenum::GL_DEPTH24_STENCIL8: // fall-through...
case GLenum::GL_DEPTH32F_STENCIL8: // fall-through...
- case GLenum::GL_DEPTH_COMPONENT16: // fall-through...
case GLenum::GL_DEPTH_COMPONENT24: // fall-through...
case GLenum::GL_DEPTH_COMPONENT32F: // fall-through...
case GLenum::GL_R16I: // fall-through...
@@ -1183,19 +1207,16 @@
case GLenum::GL_RG8UI: // fall-through...
case GLenum::GL_RGB10_A2: // fall-through...
case GLenum::GL_RGB10_A2UI: // fall-through...
- case GLenum::GL_RGB565: // fall-through...
- case GLenum::GL_RGB5_A1: // fall-through...
case GLenum::GL_RGB8: // fall-through...
case GLenum::GL_RGBA16I: // fall-through...
case GLenum::GL_RGBA16UI: // fall-through...
case GLenum::GL_RGBA32I: // fall-through...
case GLenum::GL_RGBA32UI: // fall-through...
- case GLenum::GL_RGBA4: // fall-through...
case GLenum::GL_RGBA8: // fall-through...
case GLenum::GL_RGBA8I: // fall-through...
case GLenum::GL_RGBA8UI: // fall-through...
- case GLenum::GL_SRGB8_ALPHA8: // fall-through...
- case GLenum::GL_STENCIL_INDEX8: {
+ case GLenum::GL_SRGB8_ALPHA8: {
+ subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
break;
}
case GLenum::GL_R16: // fall-through...
@@ -1209,9 +1230,22 @@
subGlErrorInvalidEnum(observer, call, internalformat);
}
}
+ if (((width) < ((GLsizei)(0L))) || ((height) < ((GLsizei)(0L)))) {
+ subGlErrorInvalidValue(observer, call);
+ }
+ std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
+ if (((width) > ((GLsizei)(checkNotNull(l_ctx).mConstants.mMaxRenderbufferSize))) || ((height) > ((GLsizei)(checkNotNull(l_ctx).mConstants.mMaxRenderbufferSize)))) {
+ subGlErrorInvalidValue(observer, call);
+ }
+ RenderbufferId l_id = findOrZero(checkNotNull(l_ctx).mBoundRenderbuffers, target);
+ if ((l_id) == ((RenderbufferId)(0UL))) {
+ subGlErrorInvalidOperation(observer, call);
+ }
+ std::shared_ptr<Renderbuffer> l_rb = findOrZero(checkNotNull(l_ctx).mInstances.mRenderbuffers, l_id);
+ checkNotNull(l_rb).mInternalFormat = internalformat;
+ checkNotNull(l_rb).mWidth = width;
+ checkNotNull(l_rb).mHeight = height;
(void)samples;
- (void)width;
- (void)height;
return;
}
@@ -2602,15 +2636,15 @@
std::shared_ptr<VertexArray> l__res_0 = subNewVertexArray(observer, call, ctx);
checkNotNull(ctx).mInstances.mVertexArrays[(VertexArrayId)(0UL)] = l__res_0;
checkNotNull(ctx).mTextureUnits[GLenum::GL_TEXTURE0] = std::shared_ptr<TextureUnit>(new TextureUnit((TextureId)(0UL), (TextureId)(0UL), (TextureId)(0UL), (TextureId)(0UL), (TextureId)(0UL), (TextureId)(0UL), (TextureId)(0UL), (TextureId)(0UL), (TextureId)(0UL), (SamplerId)(0UL)));
- checkNotNull(ctx).mInstances.mDefaultTextures.mTexture2d = std::shared_ptr<Texture>(new Texture(0, GLenum::GL_TEXTURE_2D, 0, 0, GLintToImage(), GLintToCubemapLevel(), GLenum::GL_RED, GLenum::GL_GREEN, GLenum::GL_BLUE, GLenum::GL_ALPHA, std::move(Vec4f{(GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f)}), GLenum::GL_NEAREST_MIPMAP_LINEAR, GLenum::GL_LINEAR, GLenum::GL_REPEAT, GLenum::GL_REPEAT, GLenum::GL_REPEAT, (GLfloat)(-1000.f), (GLfloat)(1000.f), (GLint)(0L), (GLint)(1000L), GLenum::GL_DEPTH_COMPONENT, GLenum::GL_NONE, GLenum::GL_LEQUAL, GLbooleanLabels::GL_FALSE, (GLuint)(0UL), "", (GLfloat)(1.f)));
- checkNotNull(ctx).mInstances.mDefaultTextures.mTexture2dArray = std::shared_ptr<Texture>(new Texture(0, GLenum::GL_TEXTURE_2D_ARRAY, 0, 0, GLintToImage(), GLintToCubemapLevel(), GLenum::GL_RED, GLenum::GL_GREEN, GLenum::GL_BLUE, GLenum::GL_ALPHA, std::move(Vec4f{(GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f)}), GLenum::GL_NEAREST_MIPMAP_LINEAR, GLenum::GL_LINEAR, GLenum::GL_REPEAT, GLenum::GL_REPEAT, GLenum::GL_REPEAT, (GLfloat)(-1000.f), (GLfloat)(1000.f), (GLint)(0L), (GLint)(1000L), GLenum::GL_DEPTH_COMPONENT, GLenum::GL_NONE, GLenum::GL_LEQUAL, GLbooleanLabels::GL_FALSE, (GLuint)(0UL), "", (GLfloat)(1.f)));
- checkNotNull(ctx).mInstances.mDefaultTextures.mTexture2dMultisample = std::shared_ptr<Texture>(new Texture(0, GLenum::GL_TEXTURE_2D_MULTISAMPLE, 0, 0, GLintToImage(), GLintToCubemapLevel(), GLenum::GL_RED, GLenum::GL_GREEN, GLenum::GL_BLUE, GLenum::GL_ALPHA, std::move(Vec4f{(GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f)}), GLenum::GL_NEAREST_MIPMAP_LINEAR, GLenum::GL_LINEAR, GLenum::GL_REPEAT, GLenum::GL_REPEAT, GLenum::GL_REPEAT, (GLfloat)(-1000.f), (GLfloat)(1000.f), (GLint)(0L), (GLint)(1000L), GLenum::GL_DEPTH_COMPONENT, GLenum::GL_NONE, GLenum::GL_LEQUAL, GLbooleanLabels::GL_FALSE, (GLuint)(0UL), "", (GLfloat)(1.f)));
- checkNotNull(ctx).mInstances.mDefaultTextures.mTexture2dMultisampleArray = std::shared_ptr<Texture>(new Texture(0, GLenum::GL_TEXTURE_2D_MULTISAMPLE_ARRAY, 0, 0, GLintToImage(), GLintToCubemapLevel(), GLenum::GL_RED, GLenum::GL_GREEN, GLenum::GL_BLUE, GLenum::GL_ALPHA, std::move(Vec4f{(GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f)}), GLenum::GL_NEAREST_MIPMAP_LINEAR, GLenum::GL_LINEAR, GLenum::GL_REPEAT, GLenum::GL_REPEAT, GLenum::GL_REPEAT, (GLfloat)(-1000.f), (GLfloat)(1000.f), (GLint)(0L), (GLint)(1000L), GLenum::GL_DEPTH_COMPONENT, GLenum::GL_NONE, GLenum::GL_LEQUAL, GLbooleanLabels::GL_FALSE, (GLuint)(0UL), "", (GLfloat)(1.f)));
- checkNotNull(ctx).mInstances.mDefaultTextures.mTexture3d = std::shared_ptr<Texture>(new Texture(0, GLenum::GL_TEXTURE_3D, 0, 0, GLintToImage(), GLintToCubemapLevel(), GLenum::GL_RED, GLenum::GL_GREEN, GLenum::GL_BLUE, GLenum::GL_ALPHA, std::move(Vec4f{(GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f)}), GLenum::GL_NEAREST_MIPMAP_LINEAR, GLenum::GL_LINEAR, GLenum::GL_REPEAT, GLenum::GL_REPEAT, GLenum::GL_REPEAT, (GLfloat)(-1000.f), (GLfloat)(1000.f), (GLint)(0L), (GLint)(1000L), GLenum::GL_DEPTH_COMPONENT, GLenum::GL_NONE, GLenum::GL_LEQUAL, GLbooleanLabels::GL_FALSE, (GLuint)(0UL), "", (GLfloat)(1.f)));
- checkNotNull(ctx).mInstances.mDefaultTextures.mTextureBuffer = std::shared_ptr<Texture>(new Texture(0, GLenum::GL_TEXTURE_BUFFER, 0, 0, GLintToImage(), GLintToCubemapLevel(), GLenum::GL_RED, GLenum::GL_GREEN, GLenum::GL_BLUE, GLenum::GL_ALPHA, std::move(Vec4f{(GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f)}), GLenum::GL_NEAREST_MIPMAP_LINEAR, GLenum::GL_LINEAR, GLenum::GL_REPEAT, GLenum::GL_REPEAT, GLenum::GL_REPEAT, (GLfloat)(-1000.f), (GLfloat)(1000.f), (GLint)(0L), (GLint)(1000L), GLenum::GL_DEPTH_COMPONENT, GLenum::GL_NONE, GLenum::GL_LEQUAL, GLbooleanLabels::GL_FALSE, (GLuint)(0UL), "", (GLfloat)(1.f)));
- checkNotNull(ctx).mInstances.mDefaultTextures.mTextureCubeMap = std::shared_ptr<Texture>(new Texture(0, GLenum::GL_TEXTURE_CUBE_MAP, 0, 0, GLintToImage(), GLintToCubemapLevel(), GLenum::GL_RED, GLenum::GL_GREEN, GLenum::GL_BLUE, GLenum::GL_ALPHA, std::move(Vec4f{(GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f)}), GLenum::GL_NEAREST_MIPMAP_LINEAR, GLenum::GL_LINEAR, GLenum::GL_REPEAT, GLenum::GL_REPEAT, GLenum::GL_REPEAT, (GLfloat)(-1000.f), (GLfloat)(1000.f), (GLint)(0L), (GLint)(1000L), GLenum::GL_DEPTH_COMPONENT, GLenum::GL_NONE, GLenum::GL_LEQUAL, GLbooleanLabels::GL_FALSE, (GLuint)(0UL), "", (GLfloat)(1.f)));
- checkNotNull(ctx).mInstances.mDefaultTextures.mTextureCubeMapArray = std::shared_ptr<Texture>(new Texture(0, GLenum::GL_TEXTURE_CUBE_MAP_ARRAY, 0, 0, GLintToImage(), GLintToCubemapLevel(), GLenum::GL_RED, GLenum::GL_GREEN, GLenum::GL_BLUE, GLenum::GL_ALPHA, std::move(Vec4f{(GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f)}), GLenum::GL_NEAREST_MIPMAP_LINEAR, GLenum::GL_LINEAR, GLenum::GL_REPEAT, GLenum::GL_REPEAT, GLenum::GL_REPEAT, (GLfloat)(-1000.f), (GLfloat)(1000.f), (GLint)(0L), (GLint)(1000L), GLenum::GL_DEPTH_COMPONENT, GLenum::GL_NONE, GLenum::GL_LEQUAL, GLbooleanLabels::GL_FALSE, (GLuint)(0UL), "", (GLfloat)(1.f)));
- checkNotNull(ctx).mInstances.mDefaultTextures.mTextureExternalOes = std::shared_ptr<Texture>(new Texture(0, GLenum::GL_TEXTURE_EXTERNAL_OES, 0, 0, GLintToImage(), GLintToCubemapLevel(), GLenum::GL_RED, GLenum::GL_GREEN, GLenum::GL_BLUE, GLenum::GL_ALPHA, std::move(Vec4f{(GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f)}), GLenum::GL_NEAREST_MIPMAP_LINEAR, GLenum::GL_LINEAR, GLenum::GL_REPEAT, GLenum::GL_REPEAT, GLenum::GL_REPEAT, (GLfloat)(-1000.f), (GLfloat)(1000.f), (GLint)(0L), (GLint)(1000L), GLenum::GL_DEPTH_COMPONENT, GLenum::GL_NONE, GLenum::GL_LEQUAL, GLbooleanLabels::GL_FALSE, (GLuint)(0UL), "", (GLfloat)(1.f)));
+ checkNotNull(ctx).mInstances.mDefaultTextures.mTexture2d = std::shared_ptr<Texture>(new Texture(0, GLenum::GL_TEXTURE_2D, 0, 0, GLintToImage(), GLintToCubemapLevel(), GLenum::GL_RED, GLenum::GL_GREEN, GLenum::GL_BLUE, GLenum::GL_ALPHA, std::move(Vec4f{(GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f)}), GLenum::GL_NEAREST_MIPMAP_LINEAR, GLenum::GL_LINEAR, GLenum::GL_REPEAT, GLenum::GL_REPEAT, GLenum::GL_REPEAT, (GLfloat)(-1000.f), (GLfloat)(1000.f), (GLint)(0L), (GLint)(1000L), GLenum::GL_DEPTH_COMPONENT, GLenum::GL_NONE, GLenum::GL_LEQUAL, GLbooleanLabels::GL_FALSE, (GLuint)(0UL), "", (GLfloat)(1.f), nullptr));
+ checkNotNull(ctx).mInstances.mDefaultTextures.mTexture2dArray = std::shared_ptr<Texture>(new Texture(0, GLenum::GL_TEXTURE_2D_ARRAY, 0, 0, GLintToImage(), GLintToCubemapLevel(), GLenum::GL_RED, GLenum::GL_GREEN, GLenum::GL_BLUE, GLenum::GL_ALPHA, std::move(Vec4f{(GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f)}), GLenum::GL_NEAREST_MIPMAP_LINEAR, GLenum::GL_LINEAR, GLenum::GL_REPEAT, GLenum::GL_REPEAT, GLenum::GL_REPEAT, (GLfloat)(-1000.f), (GLfloat)(1000.f), (GLint)(0L), (GLint)(1000L), GLenum::GL_DEPTH_COMPONENT, GLenum::GL_NONE, GLenum::GL_LEQUAL, GLbooleanLabels::GL_FALSE, (GLuint)(0UL), "", (GLfloat)(1.f), nullptr));
+ checkNotNull(ctx).mInstances.mDefaultTextures.mTexture2dMultisample = std::shared_ptr<Texture>(new Texture(0, GLenum::GL_TEXTURE_2D_MULTISAMPLE, 0, 0, GLintToImage(), GLintToCubemapLevel(), GLenum::GL_RED, GLenum::GL_GREEN, GLenum::GL_BLUE, GLenum::GL_ALPHA, std::move(Vec4f{(GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f)}), GLenum::GL_NEAREST_MIPMAP_LINEAR, GLenum::GL_LINEAR, GLenum::GL_REPEAT, GLenum::GL_REPEAT, GLenum::GL_REPEAT, (GLfloat)(-1000.f), (GLfloat)(1000.f), (GLint)(0L), (GLint)(1000L), GLenum::GL_DEPTH_COMPONENT, GLenum::GL_NONE, GLenum::GL_LEQUAL, GLbooleanLabels::GL_FALSE, (GLuint)(0UL), "", (GLfloat)(1.f), nullptr));
+ checkNotNull(ctx).mInstances.mDefaultTextures.mTexture2dMultisampleArray = std::shared_ptr<Texture>(new Texture(0, GLenum::GL_TEXTURE_2D_MULTISAMPLE_ARRAY, 0, 0, GLintToImage(), GLintToCubemapLevel(), GLenum::GL_RED, GLenum::GL_GREEN, GLenum::GL_BLUE, GLenum::GL_ALPHA, std::move(Vec4f{(GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f)}), GLenum::GL_NEAREST_MIPMAP_LINEAR, GLenum::GL_LINEAR, GLenum::GL_REPEAT, GLenum::GL_REPEAT, GLenum::GL_REPEAT, (GLfloat)(-1000.f), (GLfloat)(1000.f), (GLint)(0L), (GLint)(1000L), GLenum::GL_DEPTH_COMPONENT, GLenum::GL_NONE, GLenum::GL_LEQUAL, GLbooleanLabels::GL_FALSE, (GLuint)(0UL), "", (GLfloat)(1.f), nullptr));
+ checkNotNull(ctx).mInstances.mDefaultTextures.mTexture3d = std::shared_ptr<Texture>(new Texture(0, GLenum::GL_TEXTURE_3D, 0, 0, GLintToImage(), GLintToCubemapLevel(), GLenum::GL_RED, GLenum::GL_GREEN, GLenum::GL_BLUE, GLenum::GL_ALPHA, std::move(Vec4f{(GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f)}), GLenum::GL_NEAREST_MIPMAP_LINEAR, GLenum::GL_LINEAR, GLenum::GL_REPEAT, GLenum::GL_REPEAT, GLenum::GL_REPEAT, (GLfloat)(-1000.f), (GLfloat)(1000.f), (GLint)(0L), (GLint)(1000L), GLenum::GL_DEPTH_COMPONENT, GLenum::GL_NONE, GLenum::GL_LEQUAL, GLbooleanLabels::GL_FALSE, (GLuint)(0UL), "", (GLfloat)(1.f), nullptr));
+ checkNotNull(ctx).mInstances.mDefaultTextures.mTextureBuffer = std::shared_ptr<Texture>(new Texture(0, GLenum::GL_TEXTURE_BUFFER, 0, 0, GLintToImage(), GLintToCubemapLevel(), GLenum::GL_RED, GLenum::GL_GREEN, GLenum::GL_BLUE, GLenum::GL_ALPHA, std::move(Vec4f{(GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f)}), GLenum::GL_NEAREST_MIPMAP_LINEAR, GLenum::GL_LINEAR, GLenum::GL_REPEAT, GLenum::GL_REPEAT, GLenum::GL_REPEAT, (GLfloat)(-1000.f), (GLfloat)(1000.f), (GLint)(0L), (GLint)(1000L), GLenum::GL_DEPTH_COMPONENT, GLenum::GL_NONE, GLenum::GL_LEQUAL, GLbooleanLabels::GL_FALSE, (GLuint)(0UL), "", (GLfloat)(1.f), nullptr));
+ checkNotNull(ctx).mInstances.mDefaultTextures.mTextureCubeMap = std::shared_ptr<Texture>(new Texture(0, GLenum::GL_TEXTURE_CUBE_MAP, 0, 0, GLintToImage(), GLintToCubemapLevel(), GLenum::GL_RED, GLenum::GL_GREEN, GLenum::GL_BLUE, GLenum::GL_ALPHA, std::move(Vec4f{(GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f)}), GLenum::GL_NEAREST_MIPMAP_LINEAR, GLenum::GL_LINEAR, GLenum::GL_REPEAT, GLenum::GL_REPEAT, GLenum::GL_REPEAT, (GLfloat)(-1000.f), (GLfloat)(1000.f), (GLint)(0L), (GLint)(1000L), GLenum::GL_DEPTH_COMPONENT, GLenum::GL_NONE, GLenum::GL_LEQUAL, GLbooleanLabels::GL_FALSE, (GLuint)(0UL), "", (GLfloat)(1.f), nullptr));
+ checkNotNull(ctx).mInstances.mDefaultTextures.mTextureCubeMapArray = std::shared_ptr<Texture>(new Texture(0, GLenum::GL_TEXTURE_CUBE_MAP_ARRAY, 0, 0, GLintToImage(), GLintToCubemapLevel(), GLenum::GL_RED, GLenum::GL_GREEN, GLenum::GL_BLUE, GLenum::GL_ALPHA, std::move(Vec4f{(GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f)}), GLenum::GL_NEAREST_MIPMAP_LINEAR, GLenum::GL_LINEAR, GLenum::GL_REPEAT, GLenum::GL_REPEAT, GLenum::GL_REPEAT, (GLfloat)(-1000.f), (GLfloat)(1000.f), (GLint)(0L), (GLint)(1000L), GLenum::GL_DEPTH_COMPONENT, GLenum::GL_NONE, GLenum::GL_LEQUAL, GLbooleanLabels::GL_FALSE, (GLuint)(0UL), "", (GLfloat)(1.f), nullptr));
+ checkNotNull(ctx).mInstances.mDefaultTextures.mTextureExternalOes = std::shared_ptr<Texture>(new Texture(0, GLenum::GL_TEXTURE_EXTERNAL_OES, 0, 0, GLintToImage(), GLintToCubemapLevel(), GLenum::GL_RED, GLenum::GL_GREEN, GLenum::GL_BLUE, GLenum::GL_ALPHA, std::move(Vec4f{(GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f)}), GLenum::GL_NEAREST_MIPMAP_LINEAR, GLenum::GL_LINEAR, GLenum::GL_REPEAT, GLenum::GL_REPEAT, GLenum::GL_REPEAT, (GLfloat)(-1000.f), (GLfloat)(1000.f), (GLint)(0L), (GLint)(1000L), GLenum::GL_DEPTH_COMPONENT, GLenum::GL_NONE, GLenum::GL_LEQUAL, GLbooleanLabels::GL_FALSE, (GLuint)(0UL), "", (GLfloat)(1.f), nullptr));
checkNotNull(ctx).mInstances.mRenderbuffers[l_color_id] = std::shared_ptr<Renderbuffer>(new Renderbuffer(Slice<uint8_t>(), (GLsizei)(0L), (GLsizei)(0L), GLenum::GL_RGBA4, ""));
checkNotNull(ctx).mInstances.mRenderbuffers[l_depth_id] = std::shared_ptr<Renderbuffer>(new Renderbuffer(Slice<uint8_t>(), (GLsizei)(0L), (GLsizei)(0L), GLenum::GL_RGBA4, ""));
checkNotNull(ctx).mInstances.mRenderbuffers[l_stencil_id] = std::shared_ptr<Renderbuffer>(new Renderbuffer(Slice<uint8_t>(), (GLsizei)(0L), (GLsizei)(0L), GLenum::GL_RGBA4, ""));
@@ -4382,6 +4416,11 @@
observer->write<GLint>(l_p, 3ULL, (GLint)(checkNotNull(l_s).mBorderColor[3ULL]));
break;
}
+ case GLenum::GL_TEXTURE_MAX_ANISOTROPY_EXT: {
+ subRequiresExtension(observer, call, ExtensionId::GL_EXT_texture_filter_anisotropic);
+ observer->write<GLint>(slice(params, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_s).mMaxAnisotropy));
+ break;
+ }
default: {
subGlErrorInvalidEnum(observer, call, pname);
}
@@ -4572,6 +4611,11 @@
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
break;
}
+ case GLenum::GL_TEXTURE_MAX_ANISOTROPY_EXT: {
+ subRequiresExtension(observer, call, ExtensionId::GL_EXT_texture_filter_anisotropic);
+ checkNotNull(l_s).mMaxAnisotropy = (GLfloat)(observer->read(slice(params, 0ULL, 1ULL), 0ULL));
+ break;
+ }
default: {
subGlErrorInvalidEnum(observer, call, pname);
}
@@ -6655,6 +6699,11 @@
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
break;
}
+ case GLenum::GL_TEXTURE_MAX_ANISOTROPY_EXT: {
+ subRequiresExtension(observer, call, ExtensionId::GL_EXT_texture_filter_anisotropic);
+ checkNotNull(l_s).mMaxAnisotropy = observer->read(slice(params, 0ULL, 1ULL), 0ULL);
+ break;
+ }
default: {
subGlErrorInvalidEnum(observer, call, pname);
}
@@ -6706,6 +6755,11 @@
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
break;
}
+ case GLenum::GL_TEXTURE_MAX_ANISOTROPY_EXT: {
+ subRequiresExtension(observer, call, ExtensionId::GL_EXT_texture_filter_anisotropic);
+ checkNotNull(l_s).mMaxAnisotropy = (GLfloat)(params[0ULL]);
+ break;
+ }
default: {
subGlErrorInvalidEnum(observer, call, pname);
}
diff --git a/cc/gapii/gles_types.h b/cc/gapii/gles_types.h
index a33fd3c..146df7c 100644
--- a/cc/gapii/gles_types.h
+++ b/cc/gapii/gles_types.h
@@ -39,6 +39,33 @@
namespace gapii {
class CallObserver;
+namespace AndroidGraphicsBufferFormat {
+ static const uint32_t HAL_PIXEL_FORMAT_RGBA_8888 = 1;
+ static const uint32_t HAL_PIXEL_FORMAT_RGBX_8888 = 2;
+ static const uint32_t HAL_PIXEL_FORMAT_RGB_888 = 3;
+ static const uint32_t HAL_PIXEL_FORMAT_RGB_565 = 4;
+ static const uint32_t HAL_PIXEL_FORMAT_BGRA_8888 = 5;
+ static const uint32_t HAL_PIXEL_FORMAT_RGBA_5551 = 6;
+ static const uint32_t HAL_PIXEL_FORMAT_RGBA_4444 = 7;
+ static const uint32_t HAL_PIXEL_FORMAT_YCrCb_420_SP = 17;
+}
+
+namespace AndroidGraphicsBufferUsage {
+ static const uint32_t USAGE_SW_READ_NEVER = 0;
+ static const uint32_t USAGE_SW_READ_RARELY = 2;
+ static const uint32_t USAGE_SW_READ_OFTEN = 3;
+ static const uint32_t USAGE_SW_READ_MASK = 15;
+ static const uint32_t USAGE_SW_WRITE_NEVER = 0;
+ static const uint32_t USAGE_SW_WRITE_RARELY = 32;
+ static const uint32_t USAGE_SW_WRITE_OFTEN = 48;
+ static const uint32_t USAGE_SW_WRITE_MASK = 240;
+ static const uint32_t USAGE_HW_TEXTURE = 256;
+ static const uint32_t USAGE_HW_RENDER = 512;
+ static const uint32_t USAGE_HW_2D = 1024;
+ static const uint32_t USAGE_HW_FB = 4096;
+ static const uint32_t USAGE_HW_MASK = 7936;
+}
+
namespace EGLenum {
static const uint32_t EGL_ALPHA_FORMAT = 12424;
static const uint32_t EGL_ALPHA_FORMAT_NONPRE = 12427;
@@ -413,6 +440,7 @@
static const uint32_t GL_MULTISAMPLE_BUFFER_BIT7_QCOM = 2147483648;
static const uint32_t GL_TEXTURE_DEFORMATION_BIT_SGIX = 1;
static const uint32_t GL_GEOMETRY_DEFORMATION_BIT_SGIX = 2;
+ static const uint32_t GL_CONTEXT_FLAG_PROTECTED_CONTENT_BIT_EXT = 16;
}
namespace GLenum {
@@ -5804,6 +5832,71 @@
static const uint32_t GL_VERTEX_CONSISTENT_HINT_PGI = 107051;
static const uint32_t GL_MATERIAL_SIDE_HINT_PGI = 107052;
static const uint32_t GL_MAX_VERTEX_HINT_PGI = 107053;
+ static const uint32_t GL_NUM_WINDOW_RECTANGLES_EXT = 36629;
+ static const uint32_t GL_FLOAT16_MAT4_AMD = 37319;
+ static const uint32_t GL_VIEWPORT_INDEX_PROVOKING_VERTEX_OES = 33375;
+ static const uint32_t GL_VIEWPORT_POSITION_W_SCALE_NV = 37756;
+ static const uint32_t GL_MAX_VIEWPORTS_OES = 33371;
+ static const uint32_t GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_AND_DOWNSAMPLE_IMG = 37180;
+ static const uint32_t GL_VIEWPORT_SWIZZLE_POSITIVE_W_NV = 37718;
+ static const uint32_t GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SCALE_IMG = 37183;
+ static const uint32_t GL_VIEWPORT_POSITION_W_SCALE_X_COEFF_NV = 37757;
+ static const uint32_t GL_VIEWPORT_SWIZZLE_Y_NV = 37721;
+ static const uint32_t GL_CUBIC_MIPMAP_NEAREST_IMG = 37178;
+ static const uint32_t GL_FLOAT16_MAT2_AMD = 37317;
+ static const uint32_t GL_CUBIC_IMG = 37177;
+ static const uint32_t GL_DOWNSAMPLE_SCALES_IMG = 37182;
+ static const uint32_t GL_NUM_DOWNSAMPLE_SCALES_IMG = 37181;
+ static const uint32_t GL_PIXELS_PER_SAMPLE_PATTERN_X_AMD = 37294;
+ static const uint32_t GL_FLOAT16_MAT4x3_AMD = 37325;
+ static const uint32_t GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES_EXT = 33530;
+ static const uint32_t GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_FAST_SIZE_EXT = 38480;
+ static const uint32_t GL_FLOAT16_MAT2x3_AMD = 37320;
+ static const uint32_t GL_CONSERVATIVE_RASTERIZATION_INTEL = 33790;
+ static const uint32_t GL_VIEWPORT_SWIZZLE_POSITIVE_Z_NV = 37716;
+ static const uint32_t GL_VIEWPORT_SWIZZLE_W_NV = 37723;
+ static const uint32_t GL_MAX_WINDOW_RECTANGLES_EXT = 36628;
+ static const uint32_t GL_EXCLUSIVE_EXT = 36625;
+ static const uint32_t GL_WINDOW_RECTANGLE_EXT = 36626;
+ static const uint32_t GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR = 38451;
+ static const uint32_t GL_CLIP_DISTANCE1_EXT = 12289;
+ static const uint32_t GL_FLOAT16_MAT4x2_AMD = 37324;
+ static const uint32_t GL_CONSERVATIVE_RASTER_MODE_NV = 38221;
+ static const uint32_t GL_CLIP_DISTANCE7_EXT = 12295;
+ static const uint32_t GL_VIEWPORT_SWIZZLE_Z_NV = 37722;
+ static const uint32_t GL_VIEWPORT_SWIZZLE_NEGATIVE_Y_NV = 37715;
+ static const uint32_t GL_PURGED_CONTEXT_RESET_NV = 37563;
+ static const uint32_t GL_CONSERVATIVE_RASTER_MODE_POST_SNAP_NV = 38222;
+ static const uint32_t GL_FLOAT16_MAT2x4_AMD = 37321;
+ static const uint32_t GL_CUBIC_MIPMAP_LINEAR_IMG = 37179;
+ static const uint32_t GL_ALL_PIXELS_AMD = 4294967295;
+ static const uint32_t GL_CLIP_DISTANCE5_EXT = 12293;
+ static const uint32_t GL_VIEWPORT_SWIZZLE_POSITIVE_Y_NV = 37714;
+ static const uint32_t GL_CLIP_DISTANCE4_EXT = 12292;
+ static const uint32_t GL_PIXELS_PER_SAMPLE_PATTERN_Y_AMD = 37295;
+ static const uint32_t GL_VIEWPORT_SUBPIXEL_BITS_OES = 33372;
+ static const uint32_t GL_VIEWPORT_SWIZZLE_NEGATIVE_Z_NV = 37717;
+ static const uint32_t GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV = 38223;
+ static const uint32_t GL_FLOAT16_MAT3_AMD = 37318;
+ static const uint32_t GL_VIEWPORT_SWIZZLE_NEGATIVE_W_NV = 37719;
+ static const uint32_t GL_CLIP_DISTANCE3_EXT = 12291;
+ static const uint32_t GL_FLOAT16_MAT3x4_AMD = 37323;
+ static const uint32_t GL_VIEWPORT_BOUNDS_RANGE_OES = 33373;
+ static const uint32_t GL_MAX_CULL_DISTANCES_EXT = 33529;
+ static const uint32_t GL_VIEWPORT_SWIZZLE_X_NV = 37720;
+ static const uint32_t GL_MAX_CLIP_DISTANCES_EXT = 3378;
+ static const uint32_t GL_CLIP_DISTANCE2_EXT = 12290;
+ static const uint32_t GL_VIEWPORT_SWIZZLE_NEGATIVE_X_NV = 37713;
+ static const uint32_t GL_FLOAT16_MAT3x2_AMD = 37322;
+ static const uint32_t GL_FRAMEBUFFER_INCOMPLETE_INSUFFICIENT_SHADER_COMBINED_LOCAL_STORAGE_EXT = 38482;
+ static const uint32_t GL_VIEWPORT_POSITION_W_SCALE_Y_COEFF_NV = 37758;
+ static const uint32_t GL_WINDOW_RECTANGLE_MODE_EXT = 36627;
+ static const uint32_t GL_INCLUSIVE_EXT = 36624;
+ static const uint32_t GL_VIEWPORT_SWIZZLE_POSITIVE_X_NV = 37712;
+ static const uint32_t GL_TEXTURE_PROTECTED_EXT = 35834;
+ static const uint32_t GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_SIZE_EXT = 38481;
+ static const uint32_t GL_CLIP_DISTANCE6_EXT = 12294;
+ static const uint32_t GL_CLIP_DISTANCE0_EXT = 12288;
}
namespace ExtensionId {
@@ -5920,7 +6013,20 @@
static const uint32_t GL_EXT_texture_compression_s3tc = 111;
static const uint32_t GL_OES_packed_depth_stencil = 112;
static const uint32_t GL_EXT_texture_format_BGRA8888 = 113;
+ static const uint32_t GL_OES_viewport_array = 114;
+ static const uint32_t GL_EXT_shader_pixel_local_storage2 = 115;
+ static const uint32_t GL_EXT_clear_texture = 116;
+ static const uint32_t GL_NV_conservative_raster_pre_snap_triangles = 118;
+ static const uint32_t GL_EXT_draw_transform_feedback = 119;
+ static const uint32_t GL_IMG_framebuffer_downsample = 123;
+ static const uint32_t GL_OVR_multiview_multisampled_render_to_texture = 124;
+ static const uint32_t GL_IMG_bindless_texture = 125;
+ static const uint32_t GL_NV_gpu_shader5 = 126;
+ static const uint32_t GL_EXT_polygon_offset_clamp = 127;
+ static const uint32_t GL_NV_viewport_swizzle = 128;
+ static const uint32_t GL_EXT_window_rectangles = 129;
static const uint32_t EGL_KHR_image_base = 400;
+ static const uint32_t EGL_ANDROID_create_native_client_buffer = 401;
static const uint32_t ANDROID_image_native_buffer = 500;
}
@@ -6120,8 +6226,12 @@
typedef int64_t GLint64;
+typedef int64_t GLint64EXT;
+
typedef uint64_t GLuint64;
+typedef uint64_t GLuint64EXT;
+
typedef int32_t GLfixed;
typedef int32_t GLsizei;
@@ -6895,8 +7005,9 @@
, mImmutableFormat(GLbooleanLabels::GL_FALSE)
, mImmutableLevels((GLuint)(0UL))
, mLabel("")
- , mMaxAnisotropy((GLfloat)(1.f)) {}
- inline Texture(TextureId ID, uint32_t Kind, uint32_t TexelFormat, uint32_t TexelType, GLintToImage Texture2D, GLintToCubemapLevel Cubemap, uint32_t SwizzleR, uint32_t SwizzleG, uint32_t SwizzleB, uint32_t SwizzleA, Vec4f BorderColor, uint32_t MinFilter, uint32_t MagFilter, uint32_t WrapS, uint32_t WrapT, uint32_t WrapR, GLfloat MinLod, GLfloat MaxLod, GLint BaseLevel, GLint MaxLevel, uint32_t DepthStencilTextureMode, uint32_t CompareMode, uint32_t CompareFunc, GLboolean ImmutableFormat, GLuint ImmutableLevels, std::string Label, GLfloat MaxAnisotropy)
+ , mMaxAnisotropy((GLfloat)(1.f))
+ , mEGLImage(nullptr) {}
+ inline Texture(TextureId ID, uint32_t Kind, uint32_t TexelFormat, uint32_t TexelType, GLintToImage Texture2D, GLintToCubemapLevel Cubemap, uint32_t SwizzleR, uint32_t SwizzleG, uint32_t SwizzleB, uint32_t SwizzleA, Vec4f BorderColor, uint32_t MinFilter, uint32_t MagFilter, uint32_t WrapS, uint32_t WrapT, uint32_t WrapR, GLfloat MinLod, GLfloat MaxLod, GLint BaseLevel, GLint MaxLevel, uint32_t DepthStencilTextureMode, uint32_t CompareMode, uint32_t CompareFunc, GLboolean ImmutableFormat, GLuint ImmutableLevels, std::string Label, GLfloat MaxAnisotropy, GLeglImageOES EGLImage)
: mID(ID)
, mKind(Kind)
, mTexelFormat(TexelFormat)
@@ -6923,7 +7034,8 @@
, mImmutableFormat(ImmutableFormat)
, mImmutableLevels(ImmutableLevels)
, mLabel(Label)
- , mMaxAnisotropy(MaxAnisotropy) {}
+ , mMaxAnisotropy(MaxAnisotropy)
+ , mEGLImage(EGLImage) {}
TextureId mID;
@@ -6953,6 +7065,7 @@
GLuint mImmutableLevels;
std::string mLabel;
GLfloat mMaxAnisotropy;
+ GLeglImageOES mEGLImage;
};
@@ -7074,8 +7187,9 @@
, mMaxLod((GLfloat)(1000.f))
, mCompareMode(GLenum::GL_NONE)
, mCompareFunc(GLenum::GL_LEQUAL)
- , mLabel("") {}
- inline Sampler(Vec4f BorderColor, uint32_t MinFilter, uint32_t MagFilter, uint32_t WrapS, uint32_t WrapT, uint32_t WrapR, GLfloat MinLod, GLfloat MaxLod, uint32_t CompareMode, uint32_t CompareFunc, std::string Label)
+ , mLabel("")
+ , mMaxAnisotropy((GLfloat)(1.f)) {}
+ inline Sampler(Vec4f BorderColor, uint32_t MinFilter, uint32_t MagFilter, uint32_t WrapS, uint32_t WrapT, uint32_t WrapR, GLfloat MinLod, GLfloat MaxLod, uint32_t CompareMode, uint32_t CompareFunc, std::string Label, GLfloat MaxAnisotropy)
: mBorderColor(BorderColor)
, mMinFilter(MinFilter)
, mMagFilter(MagFilter)
@@ -7086,7 +7200,8 @@
, mMaxLod(MaxLod)
, mCompareMode(CompareMode)
, mCompareFunc(CompareFunc)
- , mLabel(Label) {}
+ , mLabel(Label)
+ , mMaxAnisotropy(MaxAnisotropy) {}
Vec4f mBorderColor;
@@ -7100,6 +7215,7 @@
uint32_t mCompareMode;
uint32_t mCompareFunc;
std::string mLabel;
+ GLfloat mMaxAnisotropy;
};
@@ -7993,6 +8109,36 @@
typedef std::unordered_map<EGLContext, std::shared_ptr<Context>> EGLContextToContext__R;
+class AndroidNativeBufferExtra {
+public:
+ typedef gapic::coder::gles::AndroidNativeBufferExtra CoderType;
+ inline AndroidNativeBufferExtra()
+ : mWidth(0)
+ , mHeight(0)
+ , mStride(0)
+ , mFormat(0)
+ , mUsage(0) {}
+ inline AndroidNativeBufferExtra(uint32_t Width, uint32_t Height, uint32_t Stride, uint32_t Format, uint32_t Usage)
+ : mWidth(Width)
+ , mHeight(Height)
+ , mStride(Stride)
+ , mFormat(Format)
+ , mUsage(Usage) {}
+
+ inline CoderType encodeable(gapic::DefaultScratchAllocator& alloc) const {
+ return CoderType(mWidth, mHeight, mStride, mFormat, mUsage);
+ }
+
+ uint32_t mWidth;
+ uint32_t mHeight;
+ uint32_t mStride;
+ uint32_t mFormat;
+ uint32_t mUsage;
+};
+
+
+typedef std::unordered_map<EGLImageKHR, std::shared_ptr<AndroidNativeBufferExtra>> EGLImageKHRToAndroidNativeBufferExtra__R;
+
typedef std::unordered_map<GLXContext, std::shared_ptr<Context>> GLXContextToContext__R;
typedef std::unordered_map<HGLRC, std::shared_ptr<Context>> HGLRCToContext__R;
diff --git a/cc/gapii/vulkan_spy.h b/cc/gapii/vulkan_spy.h
index 247d4a6..12b27d1 100644
--- a/cc/gapii/vulkan_spy.h
+++ b/cc/gapii/vulkan_spy.h
@@ -54,6 +54,7 @@
uint32_t subRoundUpTo(CallObserver* observer, const std::function<void()>& call, uint32_t dividend, uint32_t divisor);
void subDoCmdBindPipeline(CallObserver* observer, const std::function<void()>& call, CmdBindPipeline args);
void subDoCmdBindBuffers(CallObserver* observer, const std::function<void()>& call, CmdBindBuffer bind);
+ void subDoCmdCopyImage(CallObserver* observer, const std::function<void()>& call, CmdCopyImage args);
ElementAndTexelBlockSize subGetElementAndTexelBlockSize(CallObserver* observer, const std::function<void()>& call, uint32_t format);
RowLengthAndImageHeight subGetRowLengthAndImageHeight(CallObserver* observer, const std::function<void()>& call, VkBufferImageCopy region);
void subDoCmdCopyBufferToImage(CallObserver* observer, const std::function<void()>& call, CmdCopyBufferToImage args);
diff --git a/cc/gapii/vulkan_spy_0.cpp b/cc/gapii/vulkan_spy_0.cpp
index 8d1fc35..0939669 100644
--- a/cc/gapii/vulkan_spy_0.cpp
+++ b/cc/gapii/vulkan_spy_0.cpp
@@ -417,6 +417,15 @@
try {
do {
VkMemoryAllocateInfo l_allocateInfo = observer->read(slice(pAllocateInfo, 0ULL, 1ULL), 0ULL);
+ if ((l_allocateInfo.mpNext) != (nullptr)) {
+ uint32_t l_t = observer->read(slice((uint32_t*)(l_allocateInfo.mpNext), 0ULL, 1ULL), 0ULL);
+ switch (l_t) {
+ case VkStructureType::VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV: {
+ (void)observer->read(slice((VkDedicatedAllocationMemoryAllocateInfoNV*)(l_allocateInfo.mpNext), 0ULL, 1ULL), 0ULL);
+ break;
+ }
+ }
+ }
std::shared_ptr<DeviceMemoryObject> l_memoryObject = std::shared_ptr<DeviceMemoryObject>(new DeviceMemoryObject(0, 0, U64ToVkDeviceSize(), VkCommandBufferToVkCommandBuffer(), 0, 0, nullptr, 0, Slice<uint8_t>()));
checkNotNull(l_memoryObject).mDevice = device;
checkNotNull(l_memoryObject).mAllocationSize = l_allocateInfo.mallocationSize;
@@ -585,7 +594,8 @@
try {
do {
- (void)observer->read(slice(pCreateInfo, 0ULL, 1ULL), 0ULL);
+ VkPipelineCacheCreateInfo l_create_info = observer->read(slice(pCreateInfo, 0ULL, 1ULL), 0ULL);
+ observer->read(slice((uint8_t*)(l_create_info.mpInitialData), (uint64_t)(0L), (uint64_t)(l_create_info.minitialDataSize)));
call();
observer->write<VkPipelineCache>(slice(pPipelineCache, 0ULL, 1ULL), 0ULL, slice(pPipelineCache, 0ULL, 1ULL)[0ULL]);
break;
diff --git a/cc/gapii/vulkan_spy_1.cpp b/cc/gapii/vulkan_spy_1.cpp
index b04cb9a..ab53d6e 100644
--- a/cc/gapii/vulkan_spy_1.cpp
+++ b/cc/gapii/vulkan_spy_1.cpp
@@ -321,6 +321,9 @@
try {
do {
+ CmdBindBuffer l_bindBuffer = CmdBindBuffer(U32ToBoundBuffer());
+ l_bindBuffer.mBuffers[0UL] = BoundBuffer(buffer, offset);
+ addCmd(observer, commandBuffer, l_bindBuffer, &VulkanSpy::subDoCmdBindBuffers);
call();
} while(false);
} catch (gapii::AbortException& e) {
diff --git a/cc/gapii/vulkan_spy_2.cpp b/cc/gapii/vulkan_spy_2.cpp
index bd3d74d..dc72b27 100644
--- a/cc/gapii/vulkan_spy_2.cpp
+++ b/cc/gapii/vulkan_spy_2.cpp
@@ -353,6 +353,7 @@
try {
do {
checkNotNull(findOrZero(this->State.mBuffers, buffer)).mMemory = memory;
+ checkNotNull(findOrZero(this->State.mBuffers, buffer)).mMemoryOffset = memoryOffset;
checkNotNull(findOrZero(this->State.mDeviceMemories, memory)).mBoundObjects[(uint64_t)(buffer)] = memoryOffset;
call();
break;
@@ -619,11 +620,21 @@
try {
do {
- std::shared_ptr<BufferObject> l_bufferObject = std::shared_ptr<BufferObject>(new BufferObject(0, 0, 0));
+ VkBufferCreateInfo l_buffer_create_info = observer->read(slice(pCreateInfo, 0ULL, 1ULL), 0ULL);
+ std::shared_ptr<BufferObject> l_bufferObject = std::shared_ptr<BufferObject>(new BufferObject(0, 0, 0, 0));
checkNotNull(l_bufferObject).mDevice = device;
checkNotNull(l_bufferObject).mMemory = (VkDeviceMemory)(0ULL);
checkNotNull(l_bufferObject).mMemoryOffset = (VkDeviceSize)(0ULL);
- VkBufferCreateInfo l_buffer_create_info = observer->read(slice(pCreateInfo, 0ULL, 1ULL), 0ULL);
+ checkNotNull(l_bufferObject).mMemorySize = l_buffer_create_info.msize;
+ if ((l_buffer_create_info.mpNext) != (nullptr)) {
+ uint32_t l_t = observer->read(slice((uint32_t*)(l_buffer_create_info.mpNext), 0ULL, 1ULL), 0ULL);
+ switch (l_t) {
+ case VkStructureType::VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV: {
+ (void)observer->read(slice((VkDedicatedAllocationBufferCreateInfoNV*)(l_buffer_create_info.mpNext), 0ULL, 1ULL), 0ULL);
+ break;
+ }
+ }
+ }
observer->read(slice(l_buffer_create_info.mpQueueFamilyIndices, (uint64_t)(0UL), (uint64_t)(l_buffer_create_info.mqueueFamilyIndexCount)));
call();
auto l_buffer = slice(pBuffer, 0ULL, 1ULL)[0ULL];
diff --git a/cc/gapii/vulkan_spy_3.cpp b/cc/gapii/vulkan_spy_3.cpp
index 8055794..d0082c0 100644
--- a/cc/gapii/vulkan_spy_3.cpp
+++ b/cc/gapii/vulkan_spy_3.cpp
@@ -409,6 +409,7 @@
try {
do {
+ observer->read(slice(pFences, (uint64_t)(0UL), (uint64_t)(fenceCount)));
call();
break;
} while(false);
@@ -462,6 +463,15 @@
try {
do {
VkImageCreateInfo l_info = observer->read(slice(pCreateInfo, 0ULL, 1ULL), 0ULL);
+ if ((l_info.mpNext) != (nullptr)) {
+ uint32_t l_t = observer->read(slice((uint32_t*)(l_info.mpNext), 0ULL, 1ULL), 0ULL);
+ switch (l_t) {
+ case VkStructureType::VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV: {
+ (void)observer->read(slice((VkDedicatedAllocationImageCreateInfoNV*)(l_info.mpNext), 0ULL, 1ULL), 0ULL);
+ break;
+ }
+ }
+ }
observer->read(slice(l_info.mpQueueFamilyIndices, (uint64_t)(0UL), (uint64_t)(l_info.mqueueFamilyIndexCount)));
call();
auto l_handle = slice(pImage, 0ULL, 1ULL)[0ULL];
@@ -852,6 +862,8 @@
try {
do {
+ observer->read(slice(pAttachments, (uint64_t)(0UL), (uint64_t)(attachmentCount)));
+ observer->read(slice(pRects, (uint64_t)(0UL), (uint64_t)(rectCount)));
call();
} while(false);
} catch (gapii::AbortException& e) {
diff --git a/cc/gapii/vulkan_spy_5.cpp b/cc/gapii/vulkan_spy_5.cpp
index 68305e8..129f1b9 100644
--- a/cc/gapii/vulkan_spy_5.cpp
+++ b/cc/gapii/vulkan_spy_5.cpp
@@ -1198,19 +1198,21 @@
observer->read(slice(pDynamicOffsets, (uint64_t)(0UL), (uint64_t)(dynamicOffsetCount)));
CmdBindBuffer l_bindBuffer = CmdBindBuffer(U32ToBoundBuffer());
for (uint32_t l_i = 0UL; l_i < descriptorSetCount; ++l_i) {
- std::shared_ptr<DescriptorSetObject> l_set = findOrZero(this->State.mDescriptorSets, observer->read(l_sets, (uint64_t)(l_i)));
- {
- int32_t l__ = 0;
- for (U32ToU32ToVkDescriptorBufferInfo::iterator it = checkNotNull(l_set).mBufferInfo.begin(); it != checkNotNull(l_set).mBufferInfo.end(); ++it, ++l__) {
- uint32_t l__ = it->first;
- U32ToVkDescriptorBufferInfo l_buffers = it->second;
- int32_t l_length = int32_t((l_bindBuffer.mBuffers.size()));
- {
- int32_t l_j = 0;
- for (U32ToVkDescriptorBufferInfo::iterator it = l_buffers.begin(); it != l_buffers.end(); ++it, ++l_j) {
- uint32_t l__ = it->first;
- VkDescriptorBufferInfo l_v = it->second;
- l_bindBuffer.mBuffers[(uint32_t)((l_length) + (l_j))] = BoundBuffer(l_v.mbuffer, l_v.moffset);
+ if (this->State.mDescriptorSets.count(observer->read(l_sets, (uint64_t)(l_i))) > 0) {
+ std::shared_ptr<DescriptorSetObject> l_set = findOrZero(this->State.mDescriptorSets, observer->read(l_sets, (uint64_t)(l_i)));
+ {
+ int32_t l__ = 0;
+ for (U32ToU32ToVkDescriptorBufferInfo::iterator it = checkNotNull(l_set).mBufferInfo.begin(); it != checkNotNull(l_set).mBufferInfo.end(); ++it, ++l__) {
+ uint32_t l__ = it->first;
+ U32ToVkDescriptorBufferInfo l_buffers = it->second;
+ int32_t l_length = int32_t((l_bindBuffer.mBuffers.size()));
+ {
+ int32_t l_j = 0;
+ for (U32ToVkDescriptorBufferInfo::iterator it = l_buffers.begin(); it != l_buffers.end(); ++it, ++l_j) {
+ uint32_t l__ = it->first;
+ VkDescriptorBufferInfo l_v = it->second;
+ l_bindBuffer.mBuffers[(uint32_t)((l_length) + (l_j))] = BoundBuffer(l_v.mbuffer, l_v.moffset);
+ }
}
}
}
diff --git a/cc/gapii/vulkan_spy_6.cpp b/cc/gapii/vulkan_spy_6.cpp
index aa4f72b..ea3869c 100644
--- a/cc/gapii/vulkan_spy_6.cpp
+++ b/cc/gapii/vulkan_spy_6.cpp
@@ -843,6 +843,12 @@
try {
do {
+ Slice<VkImageCopy> l_regions = slice(pRegions, (uint64_t)(0UL), (uint64_t)(regionCount));
+ CmdCopyImage l_copyArgs = CmdCopyImage(srcImage, dstImage, U64ToVkImageCopy());
+ for (uint32_t l_i = 0UL; l_i < regionCount; ++l_i) {
+ l_copyArgs.mRegions[(uint64_t)(l_i)] = observer->read(l_regions, (uint64_t)(l_i));
+ }
+ addCmd(observer, commandBuffer, l_copyArgs, &VulkanSpy::subDoCmdCopyImage);
call();
} while(false);
} catch (gapii::AbortException& e) {
diff --git a/cc/gapii/vulkan_spy_7.cpp b/cc/gapii/vulkan_spy_7.cpp
index 37375b7..c7f6773 100644
--- a/cc/gapii/vulkan_spy_7.cpp
+++ b/cc/gapii/vulkan_spy_7.cpp
@@ -1035,6 +1035,8 @@
try {
do {
+ (void)observer->read(slice(pColor, 0ULL, 1ULL), 0ULL);
+ observer->read(slice(pRanges, (uint64_t)(0UL), (uint64_t)(rangeCount)));
call();
} while(false);
} catch (gapii::AbortException& e) {
diff --git a/cc/gapii/vulkan_spy_subroutines_0.cpp b/cc/gapii/vulkan_spy_subroutines_0.cpp
index 9382b7c..4833ee4 100644
--- a/cc/gapii/vulkan_spy_subroutines_0.cpp
+++ b/cc/gapii/vulkan_spy_subroutines_0.cpp
@@ -63,7 +63,66 @@
uint32_t l__ = it->first;
BoundBuffer l_v = it->second;
std::shared_ptr<BufferObject> l_buffer = findOrZero(this->State.mBuffers, l_v.mBuffer);
- subReadMemoryIfCoherent(observer, call, checkNotNull(l_buffer).mMemory, l_v.mOffset, (VkDeviceSize)(18446744073709551615ULL));
+ subReadMemoryIfCoherent(observer, call, checkNotNull(l_buffer).mMemory, l_v.mOffset, checkNotNull(l_buffer).mMemorySize);
+ }
+ }
+ return;
+}
+
+void VulkanSpy::subDoCmdCopyImage(CallObserver* observer, const std::function<void()>& call, CmdCopyImage args) {
+ std::shared_ptr<ImageObject> l_srcImageObject = findOrZero(this->State.mImages, args.mSrcImage);
+ std::shared_ptr<ImageObject> l_dstImageObject = findOrZero(this->State.mImages, args.mDstImage);
+ uint32_t l_srcFormat = checkNotNull(l_srcImageObject).mFormat;
+ ElementAndTexelBlockSize l_srcElementAndTexelBlockSize = subGetElementAndTexelBlockSize(observer, call, l_srcFormat);
+ uint32_t l_dstFormat = checkNotNull(l_dstImageObject).mFormat;
+ ElementAndTexelBlockSize l_dstElementAndTexelBlockSize = subGetElementAndTexelBlockSize(observer, call, l_dstFormat);
+ for (int32_t l_r = 0L; l_r < int32_t((args.mRegions.size())); ++l_r) {
+ VkImageCopy l_region = findOrZero(args.mRegions, (uint64_t)(l_r));
+ uint32_t l_srcBaseLayer = l_region.msrcSubresource.mbaseArrayLayer;
+ uint32_t l_dstBaseLayer = l_region.msrcSubresource.mbaseArrayLayer;
+ uint32_t l_srcMipLevel = l_region.msrcSubresource.mmipLevel;
+ uint32_t l_dstMipLevel = l_region.mdstSubresource.mmipLevel;
+ uint64_t l_srcElementSize = (uint64_t)(l_srcElementAndTexelBlockSize.mElementSize);
+ uint64_t l_srcBlockWidth = (uint64_t)(l_srcElementAndTexelBlockSize.mTexelBlockSize.mWidth);
+ uint64_t l_srcBlockHeight = (uint64_t)(l_srcElementAndTexelBlockSize.mTexelBlockSize.mHeight);
+ uint64_t l_dstElementSize = (uint64_t)(l_dstElementAndTexelBlockSize.mElementSize);
+ uint64_t l_dstBlockWidth = (uint64_t)(l_dstElementAndTexelBlockSize.mTexelBlockSize.mWidth);
+ uint64_t l_dstBlockHeight = (uint64_t)(l_dstElementAndTexelBlockSize.mTexelBlockSize.mHeight);
+ uint64_t l_srcXStartInBlocks = ((uint64_t)(l_region.msrcOffset.mx)) / (l_srcBlockWidth);
+ uint64_t l_srcYStartInBlocks = ((uint64_t)(l_region.msrcOffset.my)) / (l_srcBlockHeight);
+ uint64_t l_srcZStart = (uint64_t)(l_region.msrcOffset.mz);
+ uint64_t l_dstXStartInBlocks = ((uint64_t)(l_region.mdstOffset.mx)) / (l_dstBlockWidth);
+ uint64_t l_dstYStartInBlocks = ((uint64_t)(l_region.mdstOffset.my)) / (l_dstBlockHeight);
+ uint64_t l_dstZStart = (uint64_t)(l_region.mdstOffset.mz);
+ uint32_t l_extentXInBlocks = subRoundUpTo(observer, call, l_region.mextent.mwidth, (uint32_t)(l_srcBlockWidth));
+ uint32_t l_extentYInBlocks = subRoundUpTo(observer, call, l_region.mextent.mheight, (uint32_t)(l_srcBlockHeight));
+ uint32_t l_extentZ = l_region.mextent.mdepth;
+ for (uint32_t l_l = 0UL; l_l < l_region.msrcSubresource.mlayerCount; ++l_l) {
+ std::shared_ptr<ImageLevel> l_srcImageLevel = findOrZero(checkNotNull(findOrZero(checkNotNull(l_srcImageObject).mLayers, (l_srcBaseLayer) + (l_l))).mLevels, l_srcMipLevel);
+ std::shared_ptr<ImageLevel> l_dstImageLevel = findOrZero(checkNotNull(findOrZero(checkNotNull(l_dstImageObject).mLayers, (l_dstBaseLayer) + (l_l))).mLevels, l_dstMipLevel);
+ uint32_t l__res_0 = subRoundUpTo(observer, call, checkNotNull(l_srcImageLevel).mWidth, (uint32_t)(l_srcBlockWidth));
+ uint64_t l_srcImageLevelWidthInBlocks = (uint64_t)(l__res_0);
+ uint32_t l__res_1 = subRoundUpTo(observer, call, checkNotNull(l_srcImageLevel).mHeight, (uint32_t)(l_srcBlockHeight));
+ uint64_t l_srcImageLevelHeightInBlocks = (uint64_t)(l__res_1);
+ uint32_t l__res_2 = subRoundUpTo(observer, call, checkNotNull(l_dstImageLevel).mWidth, (uint32_t)(l_dstBlockWidth));
+ uint64_t l_dstImageLevelWidthInBlocks = (uint64_t)(l__res_2);
+ uint32_t l__res_3 = subRoundUpTo(observer, call, checkNotNull(l_dstImageLevel).mHeight, (uint32_t)(l_dstBlockHeight));
+ uint64_t l_dstImageLevelHeightInBlocks = (uint64_t)(l__res_3);
+ Slice<uint8_t> l_srcData = checkNotNull(l_srcImageLevel).mData;
+ Slice<uint8_t> l_dstData = checkNotNull(l_dstImageLevel).mData;
+ for (uint32_t l_z = 0UL; l_z < l_extentZ; ++l_z) {
+ for (uint32_t l_y = 0UL; l_y < l_extentYInBlocks; ++l_y) {
+ uint64_t l_copySize = ((uint64_t)(l_extentXInBlocks)) * (l_srcElementSize);
+ uint64_t l_dstY = (l_dstYStartInBlocks) + ((uint64_t)(l_y));
+ uint64_t l_dstZ = (l_dstZStart) + ((uint64_t)(l_z));
+ uint64_t l_srcY = (l_srcYStartInBlocks) + ((uint64_t)(l_y));
+ uint64_t l_srcZ = (l_srcZStart) + ((uint64_t)(l_z));
+ uint64_t l_dstStart = (((((l_dstZ) * (l_dstImageLevelHeightInBlocks)) + (l_dstY)) * (l_dstImageLevelWidthInBlocks)) + (l_dstXStartInBlocks)) * (l_dstElementSize);
+ uint64_t l_srcStart = (((((l_srcZ) * (l_srcImageLevelHeightInBlocks)) + (l_srcY)) * (l_srcImageLevelWidthInBlocks)) + (l_srcXStartInBlocks)) * (l_srcElementSize);
+ subReadMemoryIfCoherent(observer, call, checkNotNull(l_srcImageObject).mBoundMemory, (VkDeviceSize)(l_srcStart), (VkDeviceSize)(l_copySize));
+ observer->copy(slice(l_dstData, l_dstStart, (l_dstStart) + (l_copySize)), slice(l_srcData, l_srcStart, (l_srcStart) + (l_copySize)));
+ }
+ }
}
}
return;
@@ -74,6 +133,7 @@
/* case VkFormat::VK_FORMAT_R8G8B8_UNORM: */(((format) == (VkFormat::VK_FORMAT_R8G8B8_UNORM))) ? (ElementAndTexelBlockSize(3UL, TexelBlockSizePair(1UL, 1UL))) :
/* case VkFormat::VK_FORMAT_R8G8B8A8_UNORM: */(((format) == (VkFormat::VK_FORMAT_R8G8B8A8_UNORM))) ? (ElementAndTexelBlockSize(4UL, TexelBlockSizePair(1UL, 1UL))) :
/* case VkFormat::VK_FORMAT_B8G8R8A8_UNORM: */(((format) == (VkFormat::VK_FORMAT_B8G8R8A8_UNORM))) ? (ElementAndTexelBlockSize(4UL, TexelBlockSizePair(1UL, 1UL))) :
+ /* case VkFormat::VK_FORMAT_BC1_RGB_UNORM_BLOCK, VkFormat::VK_FORMAT_BC1_RGB_SRGB_BLOCK, VkFormat::VK_FORMAT_BC1_RGBA_UNORM_BLOCK, VkFormat::VK_FORMAT_BC1_RGBA_SRGB_BLOCK: */(((format) == (VkFormat::VK_FORMAT_BC1_RGB_UNORM_BLOCK))|| ((format) == (VkFormat::VK_FORMAT_BC1_RGB_SRGB_BLOCK))|| ((format) == (VkFormat::VK_FORMAT_BC1_RGBA_UNORM_BLOCK))|| ((format) == (VkFormat::VK_FORMAT_BC1_RGBA_SRGB_BLOCK))) ? (ElementAndTexelBlockSize(8UL, TexelBlockSizePair(4UL, 4UL))) :
/* case VkFormat::VK_FORMAT_BC2_UNORM_BLOCK: */(((format) == (VkFormat::VK_FORMAT_BC2_UNORM_BLOCK))) ? (ElementAndTexelBlockSize(16UL, TexelBlockSizePair(4UL, 4UL))) :
/* case VkFormat::VK_FORMAT_BC3_UNORM_BLOCK: */(((format) == (VkFormat::VK_FORMAT_BC3_UNORM_BLOCK))) ? (ElementAndTexelBlockSize(16UL, TexelBlockSizePair(4UL, 4UL))) :
/* case VkFormat::VK_FORMAT_R16G16B16A16_SFLOAT: */(((format) == (VkFormat::VK_FORMAT_R16G16B16A16_SFLOAT))) ? (ElementAndTexelBlockSize(8UL, TexelBlockSizePair(1UL, 1UL))) :
diff --git a/cc/gapii/vulkan_spy_subroutines_1.cpp b/cc/gapii/vulkan_spy_subroutines_1.cpp
index 5a01073..b55004a 100644
--- a/cc/gapii/vulkan_spy_subroutines_1.cpp
+++ b/cc/gapii/vulkan_spy_subroutines_1.cpp
@@ -128,14 +128,20 @@
uint32_t l_layerIndex = (l_region.mimageSubresource.mbaseArrayLayer) + (l_j);
uint64_t l_bufferLayerOffset = ((uint64_t)(l_j)) * (l_layerSize);
std::shared_ptr<ImageLevel> l_imageLevel = findOrZero(checkNotNull(findOrZero(checkNotNull(l_imageObject).mLayers, l_layerIndex)).mLevels, l_region.mimageSubresource.mmipLevel);
+ uint64_t l_imageLevelWidthInBlocks = (uint64_t)((checkNotNull(l_imageLevel).mWidth) / (l_elementAndTexelBlockSize.mTexelBlockSize.mWidth));
+ uint64_t l_imageLevelHeightInBlocks = (uint64_t)((checkNotNull(l_imageLevel).mHeight) / (l_elementAndTexelBlockSize.mTexelBlockSize.mHeight));
Slice<uint8_t> l_dstData = checkNotNull(l_imageLevel).mData;
for (uint64_t l_z = l_zStart; l_z < l_zEnd; ++l_z) {
for (uint64_t l_y = l_yStart; l_y < l_yEnd; ++l_y) {
uint64_t l_copySize = ((l_xEnd) - (l_xStart)) * (l_elementSize);
- uint64_t l_dstStart = ((((l_z) * (l_imageHeight)) + (l_y)) * ((l_rowLength) + (l_xStart))) * (l_elementSize);
+ uint64_t l_dstStart = (((((l_z) * (l_imageLevelHeightInBlocks)) + (l_y)) * (l_imageLevelWidthInBlocks)) + (l_xStart)) * (l_elementSize);
uint64_t l_dstEnd = (l_dstStart) + (l_copySize);
- uint64_t l_srcStart = ((uint64_t)(checkNotNull(l_bufferObject).mMemoryOffset)) + (((uint64_t)(l_region.mbufferOffset)) + ((l_bufferLayerOffset) + (l_dstStart)));
+ uint64_t l_zInExtent = (l_z) - (l_zStart);
+ uint64_t l_yInExtent = (l_y) - (l_yStart);
+ uint64_t l_rowStartInExtent = ((((l_zInExtent) * (l_imageHeight)) + (l_yInExtent)) * (l_rowLength)) * (l_elementSize);
+ uint64_t l_srcStart = ((uint64_t)(checkNotNull(l_bufferObject).mMemoryOffset)) + (((uint64_t)(l_region.mbufferOffset)) + ((l_bufferLayerOffset) + (l_rowStartInExtent)));
uint64_t l_srcEnd = (l_srcStart) + (l_copySize);
+ subReadMemoryIfCoherent(observer, call, checkNotNull(l_bufferObject).mMemory, (VkDeviceSize)(l_srcStart), (VkDeviceSize)(l_copySize));
observer->copy(slice(l_dstData, l_dstStart, l_dstEnd), slice(l_srcData, l_srcStart, l_srcEnd));
}
}
diff --git a/cc/gapii/vulkan_types.h b/cc/gapii/vulkan_types.h
index 65b1589..8170543 100644
--- a/cc/gapii/vulkan_types.h
+++ b/cc/gapii/vulkan_types.h
@@ -133,6 +133,9 @@
static const uint32_t VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000;
static const uint32_t VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID = 1000010000;
static const uint32_t VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = 1000011000;
+ static const uint32_t VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000;
+ static const uint32_t VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001;
+ static const uint32_t VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002;
}
namespace VkSystemAllocationScope {
@@ -821,6 +824,13 @@
static const uint32_t VK_STENCIL_FRONT_AND_BACK = 3;
}
+namespace VkExternalMemoryHandleTypeFlagBitsNV {
+ static const uint32_t VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 1;
+ static const uint32_t VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 2;
+ static const uint32_t VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 4;
+ static const uint32_t VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 8;
+}
+
namespace VkColorSpaceKHR {
static const uint32_t VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0;
}
@@ -1120,6 +1130,8 @@
typedef void* PFN_vkVoidFunction;
+typedef VkFlags VkExternalMemoryHandleTypeFlagsNV;
+
typedef VkFlags VkSurfaceTransformFlagsKHR;
typedef VkFlags VkCompositeAlphaFlagsKHR;
@@ -1402,6 +1414,35 @@
typedef std::unordered_map<uint64_t, VkDeviceSize> U64ToVkDeviceSize;
+class VkImageCopy {
+public:
+ typedef gapic::coder::vulkan::VkImageCopy CoderType;
+ inline VkImageCopy()
+ : msrcSubresource(VkImageSubresourceLayers())
+ , msrcOffset(VkOffset3D())
+ , mdstSubresource(VkImageSubresourceLayers())
+ , mdstOffset(VkOffset3D())
+ , mextent(VkExtent3D()) {}
+ inline VkImageCopy(VkImageSubresourceLayers srcSubresource, VkOffset3D srcOffset, VkImageSubresourceLayers dstSubresource, VkOffset3D dstOffset, VkExtent3D extent)
+ : msrcSubresource(srcSubresource)
+ , msrcOffset(srcOffset)
+ , mdstSubresource(dstSubresource)
+ , mdstOffset(dstOffset)
+ , mextent(extent) {}
+
+ inline CoderType encodeable(gapic::DefaultScratchAllocator& alloc) const {
+ return CoderType(toEncoder< gapic::coder::vulkan::VkImageSubresourceLayers >(msrcSubresource, alloc), toEncoder< gapic::coder::vulkan::VkOffset3D >(msrcOffset, alloc), toEncoder< gapic::coder::vulkan::VkImageSubresourceLayers >(mdstSubresource, alloc), toEncoder< gapic::coder::vulkan::VkOffset3D >(mdstOffset, alloc), toEncoder< gapic::coder::vulkan::VkExtent3D >(mextent, alloc));
+ }
+
+ VkImageSubresourceLayers msrcSubresource;
+ VkOffset3D msrcOffset;
+ VkImageSubresourceLayers mdstSubresource;
+ VkOffset3D mdstOffset;
+ VkExtent3D mextent;
+};
+
+typedef std::unordered_map<uint64_t, VkImageCopy> U64ToVkImageCopy;
+
class BufferViewObject {
public:
inline BufferViewObject()
@@ -1424,16 +1465,19 @@
inline BufferObject()
: mDevice(0)
, mMemory(0)
- , mMemoryOffset(0) {}
- inline BufferObject(VkDevice Device, VkDeviceMemory Memory, VkDeviceSize MemoryOffset)
+ , mMemoryOffset(0)
+ , mMemorySize(0) {}
+ inline BufferObject(VkDevice Device, VkDeviceMemory Memory, VkDeviceSize MemoryOffset, VkDeviceSize MemorySize)
: mDevice(Device)
, mMemory(Memory)
- , mMemoryOffset(MemoryOffset) {}
+ , mMemoryOffset(MemoryOffset)
+ , mMemorySize(MemorySize) {}
VkDevice mDevice;
VkDeviceMemory mMemory;
VkDeviceSize mMemoryOffset;
+ VkDeviceSize mMemorySize;
};
@@ -5184,33 +5228,6 @@
VkDeviceSize msize;
};
-class VkImageCopy {
-public:
- typedef gapic::coder::vulkan::VkImageCopy CoderType;
- inline VkImageCopy()
- : msrcSubresource(VkImageSubresourceLayers())
- , msrcOffset(VkOffset3D())
- , mdstSubresource(VkImageSubresourceLayers())
- , mdstOffset(VkOffset3D())
- , mextent(VkExtent3D()) {}
- inline VkImageCopy(VkImageSubresourceLayers srcSubresource, VkOffset3D srcOffset, VkImageSubresourceLayers dstSubresource, VkOffset3D dstOffset, VkExtent3D extent)
- : msrcSubresource(srcSubresource)
- , msrcOffset(srcOffset)
- , mdstSubresource(dstSubresource)
- , mdstOffset(dstOffset)
- , mextent(extent) {}
-
- inline CoderType encodeable(gapic::DefaultScratchAllocator& alloc) const {
- return CoderType(toEncoder< gapic::coder::vulkan::VkImageSubresourceLayers >(msrcSubresource, alloc), toEncoder< gapic::coder::vulkan::VkOffset3D >(msrcOffset, alloc), toEncoder< gapic::coder::vulkan::VkImageSubresourceLayers >(mdstSubresource, alloc), toEncoder< gapic::coder::vulkan::VkOffset3D >(mdstOffset, alloc), toEncoder< gapic::coder::vulkan::VkExtent3D >(mextent, alloc));
- }
-
- VkImageSubresourceLayers msrcSubresource;
- VkOffset3D msrcOffset;
- VkImageSubresourceLayers mdstSubresource;
- VkOffset3D mdstOffset;
- VkExtent3D mextent;
-};
-
class VkImageBlit {
public:
@@ -5523,6 +5540,72 @@
uint32_t mfirstInstance;
};
+class VkDedicatedAllocationImageCreateInfoNV {
+public:
+ typedef gapic::coder::vulkan::VkDedicatedAllocationImageCreateInfoNV CoderType;
+ inline VkDedicatedAllocationImageCreateInfoNV()
+ : msType(0)
+ , mpNext(nullptr)
+ , mdedicatedAllocation(0) {}
+ inline VkDedicatedAllocationImageCreateInfoNV(uint32_t sType, void* pNext, VkBool32 dedicatedAllocation)
+ : msType(sType)
+ , mpNext(pNext)
+ , mdedicatedAllocation(dedicatedAllocation) {}
+
+ inline CoderType encodeable(gapic::DefaultScratchAllocator& alloc) const {
+ return CoderType(msType, toEncoder< gapic::coder::vulkan::Void__CP >(mpNext, alloc), toEncoder< uint32_t >(mdedicatedAllocation, alloc));
+ }
+
+ uint32_t msType;
+ void* mpNext;
+ VkBool32 mdedicatedAllocation;
+};
+
+class VkDedicatedAllocationBufferCreateInfoNV {
+public:
+ typedef gapic::coder::vulkan::VkDedicatedAllocationBufferCreateInfoNV CoderType;
+ inline VkDedicatedAllocationBufferCreateInfoNV()
+ : msType(0)
+ , mpNext(nullptr)
+ , mdedicatedAllocation(0) {}
+ inline VkDedicatedAllocationBufferCreateInfoNV(uint32_t sType, void* pNext, VkBool32 dedicatedAllocation)
+ : msType(sType)
+ , mpNext(pNext)
+ , mdedicatedAllocation(dedicatedAllocation) {}
+
+ inline CoderType encodeable(gapic::DefaultScratchAllocator& alloc) const {
+ return CoderType(msType, toEncoder< gapic::coder::vulkan::Void__CP >(mpNext, alloc), toEncoder< uint32_t >(mdedicatedAllocation, alloc));
+ }
+
+ uint32_t msType;
+ void* mpNext;
+ VkBool32 mdedicatedAllocation;
+};
+
+class VkDedicatedAllocationMemoryAllocateInfoNV {
+public:
+ typedef gapic::coder::vulkan::VkDedicatedAllocationMemoryAllocateInfoNV CoderType;
+ inline VkDedicatedAllocationMemoryAllocateInfoNV()
+ : msType(0)
+ , mpNext(nullptr)
+ , mimage(0)
+ , mbuffer(0) {}
+ inline VkDedicatedAllocationMemoryAllocateInfoNV(uint32_t sType, void* pNext, VkImage image, VkBuffer buffer)
+ : msType(sType)
+ , mpNext(pNext)
+ , mimage(image)
+ , mbuffer(buffer) {}
+
+ inline CoderType encodeable(gapic::DefaultScratchAllocator& alloc) const {
+ return CoderType(msType, toEncoder< gapic::coder::vulkan::Void__CP >(mpNext, alloc), toEncoder< uint64_t >(mimage, alloc), toEncoder< uint64_t >(mbuffer, alloc));
+ }
+
+ uint32_t msType;
+ void* mpNext;
+ VkImage mimage;
+ VkBuffer mbuffer;
+};
+
class MemoryRangeArray {
public:
inline MemoryRangeArray()
@@ -5565,6 +5648,23 @@
U32ToBoundBuffer mBuffers;
};
+class CmdCopyImage {
+public:
+ inline CmdCopyImage()
+ : mSrcImage(0)
+ , mDstImage(0)
+ , mRegions(U64ToVkImageCopy()) {}
+ inline CmdCopyImage(VkImage SrcImage, VkImage DstImage, U64ToVkImageCopy Regions)
+ : mSrcImage(SrcImage)
+ , mDstImage(DstImage)
+ , mRegions(Regions) {}
+
+
+ VkImage mSrcImage;
+ VkImage mDstImage;
+ U64ToVkImageCopy mRegions;
+};
+
class TexelBlockSizePair {
public:
inline TexelBlockSizePair()
diff --git a/cc/gapir/gles_gfx_api.cpp b/cc/gapir/gles_gfx_api.cpp
index b71ec0c..b496e89 100644
--- a/cc/gapir/gles_gfx_api.cpp
+++ b/cc/gapir/gles_gfx_api.cpp
@@ -146,847 +146,910 @@
mFunctions.insert(120, std::bind(&Gles::callEglWaitNative, this, _1, _2));
mFunctions.insert(121, std::bind(&Gles::callEglCreateImageKHR, this, _1, _2));
mFunctions.insert(122, std::bind(&Gles::callEglDestroyImageKHR, this, _1, _2));
- mFunctions.insert(123, std::bind(&Gles::callGlActiveShaderProgramEXT, this, _1, _2));
- mFunctions.insert(124, std::bind(&Gles::callGlAlphaFuncQCOM, this, _1, _2));
- mFunctions.insert(125, std::bind(&Gles::callGlApplyFramebufferAttachmentCMAAINTEL, this, _1, _2));
- mFunctions.insert(126, std::bind(&Gles::callGlBeginConditionalRenderNV, this, _1, _2));
- mFunctions.insert(127, std::bind(&Gles::callGlBeginPerfMonitorAMD, this, _1, _2));
- mFunctions.insert(128, std::bind(&Gles::callGlBeginPerfQueryINTEL, this, _1, _2));
- mFunctions.insert(129, std::bind(&Gles::callGlBeginQueryEXT, this, _1, _2));
- mFunctions.insert(130, std::bind(&Gles::callGlBindFragDataLocationEXT, this, _1, _2));
- mFunctions.insert(131, std::bind(&Gles::callGlBindFragDataLocationIndexedEXT, this, _1, _2));
- mFunctions.insert(132, std::bind(&Gles::callGlBindProgramPipelineEXT, this, _1, _2));
- mFunctions.insert(133, std::bind(&Gles::callGlBindVertexArrayOES, this, _1, _2));
- mFunctions.insert(134, std::bind(&Gles::callGlBlendBarrierNV, this, _1, _2));
- mFunctions.insert(135, std::bind(&Gles::callGlBlendEquationSeparateiOES, this, _1, _2));
- mFunctions.insert(136, std::bind(&Gles::callGlBlendEquationiOES, this, _1, _2));
- mFunctions.insert(137, std::bind(&Gles::callGlBlendFuncSeparateiOES, this, _1, _2));
- mFunctions.insert(138, std::bind(&Gles::callGlBlendFunciOES, this, _1, _2));
- mFunctions.insert(139, std::bind(&Gles::callGlBlendParameteriNV, this, _1, _2));
- mFunctions.insert(140, std::bind(&Gles::callGlBlitFramebufferANGLE, this, _1, _2));
- mFunctions.insert(141, std::bind(&Gles::callGlBlitFramebufferNV, this, _1, _2));
- mFunctions.insert(142, std::bind(&Gles::callGlBufferStorageEXT, this, _1, _2));
- mFunctions.insert(143, std::bind(&Gles::callGlClientWaitSyncAPPLE, this, _1, _2));
- mFunctions.insert(144, std::bind(&Gles::callGlColorMaskiOES, this, _1, _2));
- mFunctions.insert(145, std::bind(&Gles::callGlCompressedTexImage3DOES, this, _1, _2));
- mFunctions.insert(146, std::bind(&Gles::callGlCompressedTexSubImage3DOES, this, _1, _2));
- mFunctions.insert(147, std::bind(&Gles::callGlCopyBufferSubDataNV, this, _1, _2));
- mFunctions.insert(148, std::bind(&Gles::callGlCopyImageSubDataOES, this, _1, _2));
- mFunctions.insert(149, std::bind(&Gles::callGlCopyPathNV, this, _1, _2));
- mFunctions.insert(150, std::bind(&Gles::callGlCopyTexSubImage3DOES, this, _1, _2));
- mFunctions.insert(151, std::bind(&Gles::callGlCopyTextureLevelsAPPLE, this, _1, _2));
- mFunctions.insert(152, std::bind(&Gles::callGlCoverFillPathInstancedNV, this, _1, _2));
- mFunctions.insert(153, std::bind(&Gles::callGlCoverFillPathNV, this, _1, _2));
- mFunctions.insert(154, std::bind(&Gles::callGlCoverStrokePathInstancedNV, this, _1, _2));
- mFunctions.insert(155, std::bind(&Gles::callGlCoverStrokePathNV, this, _1, _2));
- mFunctions.insert(156, std::bind(&Gles::callGlCoverageMaskNV, this, _1, _2));
- mFunctions.insert(157, std::bind(&Gles::callGlCoverageModulationNV, this, _1, _2));
- mFunctions.insert(158, std::bind(&Gles::callGlCoverageModulationTableNV, this, _1, _2));
- mFunctions.insert(159, std::bind(&Gles::callGlCoverageOperationNV, this, _1, _2));
- mFunctions.insert(160, std::bind(&Gles::callGlCreatePerfQueryINTEL, this, _1, _2));
- mFunctions.insert(161, std::bind(&Gles::callGlCreateShaderProgramvEXT, this, _1, _2));
- mFunctions.insert(162, std::bind(&Gles::callGlDeleteFencesNV, this, _1, _2));
- mFunctions.insert(163, std::bind(&Gles::callGlDeletePathsNV, this, _1, _2));
- mFunctions.insert(164, std::bind(&Gles::callGlDeletePerfMonitorsAMD, this, _1, _2));
- mFunctions.insert(165, std::bind(&Gles::callGlDeletePerfQueryINTEL, this, _1, _2));
- mFunctions.insert(166, std::bind(&Gles::callGlDeleteProgramPipelinesEXT, this, _1, _2));
- mFunctions.insert(167, std::bind(&Gles::callGlDeleteQueriesEXT, this, _1, _2));
- mFunctions.insert(168, std::bind(&Gles::callGlDeleteSyncAPPLE, this, _1, _2));
- mFunctions.insert(169, std::bind(&Gles::callGlDeleteVertexArraysOES, this, _1, _2));
- mFunctions.insert(170, std::bind(&Gles::callGlDepthRangeArrayfvNV, this, _1, _2));
- mFunctions.insert(171, std::bind(&Gles::callGlDepthRangeIndexedfNV, this, _1, _2));
- mFunctions.insert(172, std::bind(&Gles::callGlDisableDriverControlQCOM, this, _1, _2));
- mFunctions.insert(173, std::bind(&Gles::callGlDisableiNV, this, _1, _2));
- mFunctions.insert(174, std::bind(&Gles::callGlDisableiOES, this, _1, _2));
- mFunctions.insert(175, std::bind(&Gles::callGlDiscardFramebufferEXT, this, _1, _2));
- mFunctions.insert(176, std::bind(&Gles::callGlDrawArraysInstancedANGLE, this, _1, _2));
- mFunctions.insert(177, std::bind(&Gles::callGlDrawArraysInstancedBaseInstanceEXT, this, _1, _2));
- mFunctions.insert(178, std::bind(&Gles::callGlDrawArraysInstancedEXT, this, _1, _2));
- mFunctions.insert(179, std::bind(&Gles::callGlDrawArraysInstancedNV, this, _1, _2));
- mFunctions.insert(180, std::bind(&Gles::callGlDrawBuffersEXT, this, _1, _2));
- mFunctions.insert(181, std::bind(&Gles::callGlDrawBuffersIndexedEXT, this, _1, _2));
- mFunctions.insert(182, std::bind(&Gles::callGlDrawBuffersNV, this, _1, _2));
- mFunctions.insert(183, std::bind(&Gles::callGlDrawElementsBaseVertexEXT, this, _1, _2));
- mFunctions.insert(184, std::bind(&Gles::callGlDrawElementsBaseVertexOES, this, _1, _2));
- mFunctions.insert(185, std::bind(&Gles::callGlDrawElementsInstancedANGLE, this, _1, _2));
- mFunctions.insert(186, std::bind(&Gles::callGlDrawElementsInstancedBaseInstanceEXT, this, _1, _2));
- mFunctions.insert(187, std::bind(&Gles::callGlDrawElementsInstancedBaseVertexBaseInstanceEXT, this, _1, _2));
- mFunctions.insert(188, std::bind(&Gles::callGlDrawElementsInstancedBaseVertexEXT, this, _1, _2));
- mFunctions.insert(189, std::bind(&Gles::callGlDrawElementsInstancedBaseVertexOES, this, _1, _2));
- mFunctions.insert(190, std::bind(&Gles::callGlDrawElementsInstancedEXT, this, _1, _2));
- mFunctions.insert(191, std::bind(&Gles::callGlDrawElementsInstancedNV, this, _1, _2));
- mFunctions.insert(192, std::bind(&Gles::callGlDrawRangeElementsBaseVertexEXT, this, _1, _2));
- mFunctions.insert(193, std::bind(&Gles::callGlDrawRangeElementsBaseVertexOES, this, _1, _2));
- mFunctions.insert(194, std::bind(&Gles::callGlEGLImageTargetRenderbufferStorageOES, this, _1, _2));
- mFunctions.insert(195, std::bind(&Gles::callGlEGLImageTargetTexture2DOES, this, _1, _2));
- mFunctions.insert(196, std::bind(&Gles::callGlEnableDriverControlQCOM, this, _1, _2));
- mFunctions.insert(197, std::bind(&Gles::callGlEnableiNV, this, _1, _2));
- mFunctions.insert(198, std::bind(&Gles::callGlEnableiOES, this, _1, _2));
- mFunctions.insert(199, std::bind(&Gles::callGlEndConditionalRenderNV, this, _1, _2));
- mFunctions.insert(200, std::bind(&Gles::callGlEndPerfMonitorAMD, this, _1, _2));
- mFunctions.insert(201, std::bind(&Gles::callGlEndPerfQueryINTEL, this, _1, _2));
- mFunctions.insert(202, std::bind(&Gles::callGlEndQueryEXT, this, _1, _2));
- mFunctions.insert(203, std::bind(&Gles::callGlEndTilingQCOM, this, _1, _2));
- mFunctions.insert(204, std::bind(&Gles::callGlExtGetBufferPointervQCOM, this, _1, _2));
- mFunctions.insert(205, std::bind(&Gles::callGlExtGetBuffersQCOM, this, _1, _2));
- mFunctions.insert(206, std::bind(&Gles::callGlExtGetFramebuffersQCOM, this, _1, _2));
- mFunctions.insert(207, std::bind(&Gles::callGlExtGetProgramBinarySourceQCOM, this, _1, _2));
- mFunctions.insert(208, std::bind(&Gles::callGlExtGetProgramsQCOM, this, _1, _2));
- mFunctions.insert(209, std::bind(&Gles::callGlExtGetRenderbuffersQCOM, this, _1, _2));
- mFunctions.insert(210, std::bind(&Gles::callGlExtGetShadersQCOM, this, _1, _2));
- mFunctions.insert(211, std::bind(&Gles::callGlExtGetTexLevelParameterivQCOM, this, _1, _2));
- mFunctions.insert(212, std::bind(&Gles::callGlExtGetTexSubImageQCOM, this, _1, _2));
- mFunctions.insert(213, std::bind(&Gles::callGlExtGetTexturesQCOM, this, _1, _2));
- mFunctions.insert(214, std::bind(&Gles::callGlExtIsProgramBinaryQCOM, this, _1, _2));
- mFunctions.insert(215, std::bind(&Gles::callGlExtTexObjectStateOverrideiQCOM, this, _1, _2));
- mFunctions.insert(216, std::bind(&Gles::callGlFenceSyncAPPLE, this, _1, _2));
- mFunctions.insert(217, std::bind(&Gles::callGlFinishFenceNV, this, _1, _2));
- mFunctions.insert(218, std::bind(&Gles::callGlFlushMappedBufferRangeEXT, this, _1, _2));
- mFunctions.insert(219, std::bind(&Gles::callGlFragmentCoverageColorNV, this, _1, _2));
- mFunctions.insert(220, std::bind(&Gles::callGlFramebufferSampleLocationsfvNV, this, _1, _2));
- mFunctions.insert(221, std::bind(&Gles::callGlFramebufferTexture2DMultisampleEXT, this, _1, _2));
- mFunctions.insert(222, std::bind(&Gles::callGlFramebufferTexture2DMultisampleIMG, this, _1, _2));
- mFunctions.insert(223, std::bind(&Gles::callGlFramebufferTexture3DOES, this, _1, _2));
- mFunctions.insert(224, std::bind(&Gles::callGlFramebufferTextureMultiviewOVR, this, _1, _2));
- mFunctions.insert(225, std::bind(&Gles::callGlFramebufferTextureOES, this, _1, _2));
- mFunctions.insert(226, std::bind(&Gles::callGlGenFencesNV, this, _1, _2));
- mFunctions.insert(227, std::bind(&Gles::callGlGenPathsNV, this, _1, _2));
- mFunctions.insert(228, std::bind(&Gles::callGlGenPerfMonitorsAMD, this, _1, _2));
- mFunctions.insert(229, std::bind(&Gles::callGlGenProgramPipelinesEXT, this, _1, _2));
- mFunctions.insert(230, std::bind(&Gles::callGlGenQueriesEXT, this, _1, _2));
- mFunctions.insert(231, std::bind(&Gles::callGlGenVertexArraysOES, this, _1, _2));
- mFunctions.insert(232, std::bind(&Gles::callGlGetBufferPointervOES, this, _1, _2));
- mFunctions.insert(233, std::bind(&Gles::callGlGetCoverageModulationTableNV, this, _1, _2));
- mFunctions.insert(234, std::bind(&Gles::callGlGetDriverControlStringQCOM, this, _1, _2));
- mFunctions.insert(235, std::bind(&Gles::callGlGetDriverControlsQCOM, this, _1, _2));
- mFunctions.insert(236, std::bind(&Gles::callGlGetFenceivNV, this, _1, _2));
- mFunctions.insert(237, std::bind(&Gles::callGlGetFirstPerfQueryIdINTEL, this, _1, _2));
- mFunctions.insert(238, std::bind(&Gles::callGlGetFloatiVNV, this, _1, _2));
- mFunctions.insert(239, std::bind(&Gles::callGlGetFragDataIndexEXT, this, _1, _2));
- mFunctions.insert(240, std::bind(&Gles::callGlGetGraphicsResetStatusEXT, this, _1, _2));
- mFunctions.insert(241, std::bind(&Gles::callGlGetGraphicsResetStatusKHR, this, _1, _2));
- mFunctions.insert(242, std::bind(&Gles::callGlGetImageHandleNV, this, _1, _2));
- mFunctions.insert(243, std::bind(&Gles::callGlGetInteger64vAPPLE, this, _1, _2));
- mFunctions.insert(244, std::bind(&Gles::callGlGetIntegeriVEXT, this, _1, _2));
- mFunctions.insert(245, std::bind(&Gles::callGlGetInternalformatSampleivNV, this, _1, _2));
- mFunctions.insert(246, std::bind(&Gles::callGlGetNextPerfQueryIdINTEL, this, _1, _2));
- mFunctions.insert(247, std::bind(&Gles::callGlGetObjectLabelEXT, this, _1, _2));
- mFunctions.insert(248, std::bind(&Gles::callGlGetPathCommandsNV, this, _1, _2));
- mFunctions.insert(249, std::bind(&Gles::callGlGetPathCoordsNV, this, _1, _2));
- mFunctions.insert(250, std::bind(&Gles::callGlGetPathDashArrayNV, this, _1, _2));
- mFunctions.insert(251, std::bind(&Gles::callGlGetPathLengthNV, this, _1, _2));
- mFunctions.insert(252, std::bind(&Gles::callGlGetPathMetricRangeNV, this, _1, _2));
- mFunctions.insert(253, std::bind(&Gles::callGlGetPathMetricsNV, this, _1, _2));
- mFunctions.insert(254, std::bind(&Gles::callGlGetPathParameterfvNV, this, _1, _2));
- mFunctions.insert(255, std::bind(&Gles::callGlGetPathParameterivNV, this, _1, _2));
- mFunctions.insert(256, std::bind(&Gles::callGlGetPathSpacingNV, this, _1, _2));
- mFunctions.insert(257, std::bind(&Gles::callGlGetPerfCounterInfoINTEL, this, _1, _2));
- mFunctions.insert(258, std::bind(&Gles::callGlGetPerfMonitorCounterDataAMD, this, _1, _2));
- mFunctions.insert(259, std::bind(&Gles::callGlGetPerfMonitorCounterInfoAMD, this, _1, _2));
- mFunctions.insert(260, std::bind(&Gles::callGlGetPerfMonitorCounterStringAMD, this, _1, _2));
- mFunctions.insert(261, std::bind(&Gles::callGlGetPerfMonitorCountersAMD, this, _1, _2));
- mFunctions.insert(262, std::bind(&Gles::callGlGetPerfMonitorGroupStringAMD, this, _1, _2));
- mFunctions.insert(263, std::bind(&Gles::callGlGetPerfMonitorGroupsAMD, this, _1, _2));
- mFunctions.insert(264, std::bind(&Gles::callGlGetPerfQueryDataINTEL, this, _1, _2));
- mFunctions.insert(265, std::bind(&Gles::callGlGetPerfQueryIdByNameINTEL, this, _1, _2));
- mFunctions.insert(266, std::bind(&Gles::callGlGetPerfQueryInfoINTEL, this, _1, _2));
- mFunctions.insert(267, std::bind(&Gles::callGlGetProgramBinaryOES, this, _1, _2));
- mFunctions.insert(268, std::bind(&Gles::callGlGetProgramPipelineInfoLogEXT, this, _1, _2));
- mFunctions.insert(269, std::bind(&Gles::callGlGetProgramPipelineivEXT, this, _1, _2));
- mFunctions.insert(270, std::bind(&Gles::callGlGetProgramResourceLocationIndexEXT, this, _1, _2));
- mFunctions.insert(271, std::bind(&Gles::callGlGetProgramResourcefvNV, this, _1, _2));
- mFunctions.insert(272, std::bind(&Gles::callGlGetQueryObjecti64vEXT, this, _1, _2));
- mFunctions.insert(273, std::bind(&Gles::callGlGetQueryObjectivEXT, this, _1, _2));
- mFunctions.insert(274, std::bind(&Gles::callGlGetQueryObjectui64vEXT, this, _1, _2));
- mFunctions.insert(275, std::bind(&Gles::callGlGetQueryObjectuivEXT, this, _1, _2));
- mFunctions.insert(276, std::bind(&Gles::callGlGetQueryivEXT, this, _1, _2));
- mFunctions.insert(277, std::bind(&Gles::callGlGetSamplerParameterIivOES, this, _1, _2));
- mFunctions.insert(278, std::bind(&Gles::callGlGetSamplerParameterIuivOES, this, _1, _2));
- mFunctions.insert(279, std::bind(&Gles::callGlGetSyncivAPPLE, this, _1, _2));
- mFunctions.insert(280, std::bind(&Gles::callGlGetTexParameterIivOES, this, _1, _2));
- mFunctions.insert(281, std::bind(&Gles::callGlGetTexParameterIuivOES, this, _1, _2));
- mFunctions.insert(282, std::bind(&Gles::callGlGetTextureHandleNV, this, _1, _2));
- mFunctions.insert(283, std::bind(&Gles::callGlGetTextureSamplerHandleNV, this, _1, _2));
- mFunctions.insert(284, std::bind(&Gles::callGlGetTranslatedShaderSourceANGLE, this, _1, _2));
- mFunctions.insert(285, std::bind(&Gles::callGlGetnUniformfvEXT, this, _1, _2));
- mFunctions.insert(286, std::bind(&Gles::callGlGetnUniformfvKHR, this, _1, _2));
- mFunctions.insert(287, std::bind(&Gles::callGlGetnUniformivEXT, this, _1, _2));
- mFunctions.insert(288, std::bind(&Gles::callGlGetnUniformivKHR, this, _1, _2));
- mFunctions.insert(289, std::bind(&Gles::callGlGetnUniformuivKHR, this, _1, _2));
- mFunctions.insert(290, std::bind(&Gles::callGlInsertEventMarkerEXT, this, _1, _2));
- mFunctions.insert(291, std::bind(&Gles::callGlInterpolatePathsNV, this, _1, _2));
- mFunctions.insert(292, std::bind(&Gles::callGlIsEnablediNV, this, _1, _2));
- mFunctions.insert(293, std::bind(&Gles::callGlIsEnablediOES, this, _1, _2));
- mFunctions.insert(294, std::bind(&Gles::callGlIsFenceNV, this, _1, _2));
- mFunctions.insert(295, std::bind(&Gles::callGlIsImageHandleResidentNV, this, _1, _2));
- mFunctions.insert(296, std::bind(&Gles::callGlIsPathNV, this, _1, _2));
- mFunctions.insert(297, std::bind(&Gles::callGlIsPointInFillPathNV, this, _1, _2));
- mFunctions.insert(298, std::bind(&Gles::callGlIsPointInStrokePathNV, this, _1, _2));
- mFunctions.insert(299, std::bind(&Gles::callGlIsProgramPipelineEXT, this, _1, _2));
- mFunctions.insert(300, std::bind(&Gles::callGlIsQueryEXT, this, _1, _2));
- mFunctions.insert(301, std::bind(&Gles::callGlIsSyncAPPLE, this, _1, _2));
- mFunctions.insert(302, std::bind(&Gles::callGlIsTextureHandleResidentNV, this, _1, _2));
- mFunctions.insert(303, std::bind(&Gles::callGlIsVertexArrayOES, this, _1, _2));
- mFunctions.insert(304, std::bind(&Gles::callGlLabelObjectEXT, this, _1, _2));
- mFunctions.insert(305, std::bind(&Gles::callGlMakeImageHandleNonResidentNV, this, _1, _2));
- mFunctions.insert(306, std::bind(&Gles::callGlMakeImageHandleResidentNV, this, _1, _2));
- mFunctions.insert(307, std::bind(&Gles::callGlMakeTextureHandleNonResidentNV, this, _1, _2));
- mFunctions.insert(308, std::bind(&Gles::callGlMakeTextureHandleResidentNV, this, _1, _2));
- mFunctions.insert(309, std::bind(&Gles::callGlMapBufferOES, this, _1, _2));
- mFunctions.insert(310, std::bind(&Gles::callGlMapBufferRangeEXT, this, _1, _2));
- mFunctions.insert(311, std::bind(&Gles::callGlMatrixLoad3x2fNV, this, _1, _2));
- mFunctions.insert(312, std::bind(&Gles::callGlMatrixLoad3x3fNV, this, _1, _2));
- mFunctions.insert(313, std::bind(&Gles::callGlMatrixLoadTranspose3x3fNV, this, _1, _2));
- mFunctions.insert(314, std::bind(&Gles::callGlMatrixMult3x2fNV, this, _1, _2));
- mFunctions.insert(315, std::bind(&Gles::callGlMatrixMult3x3fNV, this, _1, _2));
- mFunctions.insert(316, std::bind(&Gles::callGlMatrixMultTranspose3x3fNV, this, _1, _2));
- mFunctions.insert(317, std::bind(&Gles::callGlMultiDrawArraysEXT, this, _1, _2));
- mFunctions.insert(318, std::bind(&Gles::callGlMultiDrawArraysIndirectEXT, this, _1, _2));
- mFunctions.insert(319, std::bind(&Gles::callGlMultiDrawElementsBaseVertexEXT, this, _1, _2));
- mFunctions.insert(320, std::bind(&Gles::callGlMultiDrawElementsBaseVertexOES, this, _1, _2));
- mFunctions.insert(321, std::bind(&Gles::callGlMultiDrawElementsEXT, this, _1, _2));
- mFunctions.insert(322, std::bind(&Gles::callGlMultiDrawElementsIndirectEXT, this, _1, _2));
- mFunctions.insert(323, std::bind(&Gles::callGlNamedFramebufferSampleLocationsfvNV, this, _1, _2));
- mFunctions.insert(324, std::bind(&Gles::callGlPatchParameteriOES, this, _1, _2));
- mFunctions.insert(325, std::bind(&Gles::callGlPathCommandsNV, this, _1, _2));
- mFunctions.insert(326, std::bind(&Gles::callGlPathCoordsNV, this, _1, _2));
- mFunctions.insert(327, std::bind(&Gles::callGlPathCoverDepthFuncNV, this, _1, _2));
- mFunctions.insert(328, std::bind(&Gles::callGlPathDashArrayNV, this, _1, _2));
- mFunctions.insert(329, std::bind(&Gles::callGlPathGlyphIndexArrayNV, this, _1, _2));
- mFunctions.insert(330, std::bind(&Gles::callGlPathGlyphIndexRangeNV, this, _1, _2));
- mFunctions.insert(331, std::bind(&Gles::callGlPathGlyphRangeNV, this, _1, _2));
- mFunctions.insert(332, std::bind(&Gles::callGlPathGlyphsNV, this, _1, _2));
- mFunctions.insert(333, std::bind(&Gles::callGlPathMemoryGlyphIndexArrayNV, this, _1, _2));
- mFunctions.insert(334, std::bind(&Gles::callGlPathParameterfNV, this, _1, _2));
- mFunctions.insert(335, std::bind(&Gles::callGlPathParameterfvNV, this, _1, _2));
- mFunctions.insert(336, std::bind(&Gles::callGlPathParameteriNV, this, _1, _2));
- mFunctions.insert(337, std::bind(&Gles::callGlPathParameterivNV, this, _1, _2));
- mFunctions.insert(338, std::bind(&Gles::callGlPathStencilDepthOffsetNV, this, _1, _2));
- mFunctions.insert(339, std::bind(&Gles::callGlPathStencilFuncNV, this, _1, _2));
- mFunctions.insert(340, std::bind(&Gles::callGlPathStringNV, this, _1, _2));
- mFunctions.insert(341, std::bind(&Gles::callGlPathSubCommandsNV, this, _1, _2));
- mFunctions.insert(342, std::bind(&Gles::callGlPathSubCoordsNV, this, _1, _2));
- mFunctions.insert(343, std::bind(&Gles::callGlPointAlongPathNV, this, _1, _2));
- mFunctions.insert(344, std::bind(&Gles::callGlPolygonModeNV, this, _1, _2));
- mFunctions.insert(345, std::bind(&Gles::callGlPopGroupMarkerEXT, this, _1, _2));
- mFunctions.insert(346, std::bind(&Gles::callGlPrimitiveBoundingBoxOES, this, _1, _2));
- mFunctions.insert(347, std::bind(&Gles::callGlProgramBinaryOES, this, _1, _2));
- mFunctions.insert(348, std::bind(&Gles::callGlProgramParameteriEXT, this, _1, _2));
- mFunctions.insert(349, std::bind(&Gles::callGlProgramPathFragmentInputGenNV, this, _1, _2));
- mFunctions.insert(350, std::bind(&Gles::callGlProgramUniform1fEXT, this, _1, _2));
- mFunctions.insert(351, std::bind(&Gles::callGlProgramUniform1fvEXT, this, _1, _2));
- mFunctions.insert(352, std::bind(&Gles::callGlProgramUniform1iEXT, this, _1, _2));
- mFunctions.insert(353, std::bind(&Gles::callGlProgramUniform1ivEXT, this, _1, _2));
- mFunctions.insert(354, std::bind(&Gles::callGlProgramUniform1uiEXT, this, _1, _2));
- mFunctions.insert(355, std::bind(&Gles::callGlProgramUniform1uivEXT, this, _1, _2));
- mFunctions.insert(356, std::bind(&Gles::callGlProgramUniform2fEXT, this, _1, _2));
- mFunctions.insert(357, std::bind(&Gles::callGlProgramUniform2fvEXT, this, _1, _2));
- mFunctions.insert(358, std::bind(&Gles::callGlProgramUniform2iEXT, this, _1, _2));
- mFunctions.insert(359, std::bind(&Gles::callGlProgramUniform2ivEXT, this, _1, _2));
- mFunctions.insert(360, std::bind(&Gles::callGlProgramUniform2uiEXT, this, _1, _2));
- mFunctions.insert(361, std::bind(&Gles::callGlProgramUniform2uivEXT, this, _1, _2));
- mFunctions.insert(362, std::bind(&Gles::callGlProgramUniform3fEXT, this, _1, _2));
- mFunctions.insert(363, std::bind(&Gles::callGlProgramUniform3fvEXT, this, _1, _2));
- mFunctions.insert(364, std::bind(&Gles::callGlProgramUniform3iEXT, this, _1, _2));
- mFunctions.insert(365, std::bind(&Gles::callGlProgramUniform3ivEXT, this, _1, _2));
- mFunctions.insert(366, std::bind(&Gles::callGlProgramUniform3uiEXT, this, _1, _2));
- mFunctions.insert(367, std::bind(&Gles::callGlProgramUniform3uivEXT, this, _1, _2));
- mFunctions.insert(368, std::bind(&Gles::callGlProgramUniform4fEXT, this, _1, _2));
- mFunctions.insert(369, std::bind(&Gles::callGlProgramUniform4fvEXT, this, _1, _2));
- mFunctions.insert(370, std::bind(&Gles::callGlProgramUniform4iEXT, this, _1, _2));
- mFunctions.insert(371, std::bind(&Gles::callGlProgramUniform4ivEXT, this, _1, _2));
- mFunctions.insert(372, std::bind(&Gles::callGlProgramUniform4uiEXT, this, _1, _2));
- mFunctions.insert(373, std::bind(&Gles::callGlProgramUniform4uivEXT, this, _1, _2));
- mFunctions.insert(374, std::bind(&Gles::callGlProgramUniformHandleui64NV, this, _1, _2));
- mFunctions.insert(375, std::bind(&Gles::callGlProgramUniformHandleui64vNV, this, _1, _2));
- mFunctions.insert(376, std::bind(&Gles::callGlProgramUniformMatrix2fvEXT, this, _1, _2));
- mFunctions.insert(377, std::bind(&Gles::callGlProgramUniformMatrix2x3fvEXT, this, _1, _2));
- mFunctions.insert(378, std::bind(&Gles::callGlProgramUniformMatrix2x4fvEXT, this, _1, _2));
- mFunctions.insert(379, std::bind(&Gles::callGlProgramUniformMatrix3fvEXT, this, _1, _2));
- mFunctions.insert(380, std::bind(&Gles::callGlProgramUniformMatrix3x2fvEXT, this, _1, _2));
- mFunctions.insert(381, std::bind(&Gles::callGlProgramUniformMatrix3x4fvEXT, this, _1, _2));
- mFunctions.insert(382, std::bind(&Gles::callGlProgramUniformMatrix4fvEXT, this, _1, _2));
- mFunctions.insert(383, std::bind(&Gles::callGlProgramUniformMatrix4x2fvEXT, this, _1, _2));
- mFunctions.insert(384, std::bind(&Gles::callGlProgramUniformMatrix4x3fvEXT, this, _1, _2));
- mFunctions.insert(385, std::bind(&Gles::callGlPushGroupMarkerEXT, this, _1, _2));
- mFunctions.insert(386, std::bind(&Gles::callGlQueryCounterEXT, this, _1, _2));
- mFunctions.insert(387, std::bind(&Gles::callGlRasterSamplesEXT, this, _1, _2));
- mFunctions.insert(388, std::bind(&Gles::callGlReadBufferIndexedEXT, this, _1, _2));
- mFunctions.insert(389, std::bind(&Gles::callGlReadBufferNV, this, _1, _2));
- mFunctions.insert(390, std::bind(&Gles::callGlReadnPixelsEXT, this, _1, _2));
- mFunctions.insert(391, std::bind(&Gles::callGlReadnPixelsKHR, this, _1, _2));
- mFunctions.insert(392, std::bind(&Gles::callGlRenderbufferStorageMultisampleANGLE, this, _1, _2));
- mFunctions.insert(393, std::bind(&Gles::callGlRenderbufferStorageMultisampleAPPLE, this, _1, _2));
- mFunctions.insert(394, std::bind(&Gles::callGlRenderbufferStorageMultisampleEXT, this, _1, _2));
- mFunctions.insert(395, std::bind(&Gles::callGlRenderbufferStorageMultisampleIMG, this, _1, _2));
- mFunctions.insert(396, std::bind(&Gles::callGlRenderbufferStorageMultisampleNV, this, _1, _2));
- mFunctions.insert(397, std::bind(&Gles::callGlResolveDepthValuesNV, this, _1, _2));
- mFunctions.insert(398, std::bind(&Gles::callGlResolveMultisampleFramebufferAPPLE, this, _1, _2));
- mFunctions.insert(399, std::bind(&Gles::callGlSamplerParameterIivOES, this, _1, _2));
- mFunctions.insert(400, std::bind(&Gles::callGlSamplerParameterIuivOES, this, _1, _2));
- mFunctions.insert(401, std::bind(&Gles::callGlScissorArrayvNV, this, _1, _2));
- mFunctions.insert(402, std::bind(&Gles::callGlScissorIndexedNV, this, _1, _2));
- mFunctions.insert(403, std::bind(&Gles::callGlScissorIndexedvNV, this, _1, _2));
- mFunctions.insert(404, std::bind(&Gles::callGlSelectPerfMonitorCountersAMD, this, _1, _2));
- mFunctions.insert(405, std::bind(&Gles::callGlSetFenceNV, this, _1, _2));
- mFunctions.insert(406, std::bind(&Gles::callGlStartTilingQCOM, this, _1, _2));
- mFunctions.insert(407, std::bind(&Gles::callGlStencilFillPathInstancedNV, this, _1, _2));
- mFunctions.insert(408, std::bind(&Gles::callGlStencilFillPathNV, this, _1, _2));
- mFunctions.insert(409, std::bind(&Gles::callGlStencilStrokePathInstancedNV, this, _1, _2));
- mFunctions.insert(410, std::bind(&Gles::callGlStencilStrokePathNV, this, _1, _2));
- mFunctions.insert(411, std::bind(&Gles::callGlStencilThenCoverFillPathInstancedNV, this, _1, _2));
- mFunctions.insert(412, std::bind(&Gles::callGlStencilThenCoverFillPathNV, this, _1, _2));
- mFunctions.insert(413, std::bind(&Gles::callGlStencilThenCoverStrokePathInstancedNV, this, _1, _2));
- mFunctions.insert(414, std::bind(&Gles::callGlStencilThenCoverStrokePathNV, this, _1, _2));
- mFunctions.insert(415, std::bind(&Gles::callGlSubpixelPrecisionBiasNV, this, _1, _2));
- mFunctions.insert(416, std::bind(&Gles::callGlTestFenceNV, this, _1, _2));
- mFunctions.insert(417, std::bind(&Gles::callGlTexBufferOES, this, _1, _2));
- mFunctions.insert(418, std::bind(&Gles::callGlTexBufferRangeOES, this, _1, _2));
- mFunctions.insert(419, std::bind(&Gles::callGlTexImage3DOES, this, _1, _2));
- mFunctions.insert(420, std::bind(&Gles::callGlTexPageCommitmentEXT, this, _1, _2));
- mFunctions.insert(421, std::bind(&Gles::callGlTexParameterIivOES, this, _1, _2));
- mFunctions.insert(422, std::bind(&Gles::callGlTexParameterIuivOES, this, _1, _2));
- mFunctions.insert(423, std::bind(&Gles::callGlTexStorage1DEXT, this, _1, _2));
- mFunctions.insert(424, std::bind(&Gles::callGlTexStorage2DEXT, this, _1, _2));
- mFunctions.insert(425, std::bind(&Gles::callGlTexStorage3DEXT, this, _1, _2));
- mFunctions.insert(426, std::bind(&Gles::callGlTexSubImage3DOES, this, _1, _2));
- mFunctions.insert(427, std::bind(&Gles::callGlTextureStorage1DEXT, this, _1, _2));
- mFunctions.insert(428, std::bind(&Gles::callGlTextureStorage2DEXT, this, _1, _2));
- mFunctions.insert(429, std::bind(&Gles::callGlTextureStorage3DEXT, this, _1, _2));
- mFunctions.insert(430, std::bind(&Gles::callGlTextureViewEXT, this, _1, _2));
- mFunctions.insert(431, std::bind(&Gles::callGlTextureViewOES, this, _1, _2));
- mFunctions.insert(432, std::bind(&Gles::callGlTransformPathNV, this, _1, _2));
- mFunctions.insert(433, std::bind(&Gles::callGlUniformHandleui64NV, this, _1, _2));
- mFunctions.insert(434, std::bind(&Gles::callGlUniformHandleui64vNV, this, _1, _2));
- mFunctions.insert(435, std::bind(&Gles::callGlUniformMatrix2x3fvNV, this, _1, _2));
- mFunctions.insert(436, std::bind(&Gles::callGlUniformMatrix2x4fvNV, this, _1, _2));
- mFunctions.insert(437, std::bind(&Gles::callGlUniformMatrix3x2fvNV, this, _1, _2));
- mFunctions.insert(438, std::bind(&Gles::callGlUniformMatrix3x4fvNV, this, _1, _2));
- mFunctions.insert(439, std::bind(&Gles::callGlUniformMatrix4x2fvNV, this, _1, _2));
- mFunctions.insert(440, std::bind(&Gles::callGlUniformMatrix4x3fvNV, this, _1, _2));
- mFunctions.insert(441, std::bind(&Gles::callGlUnmapBufferOES, this, _1, _2));
- mFunctions.insert(442, std::bind(&Gles::callGlUseProgramStagesEXT, this, _1, _2));
- mFunctions.insert(443, std::bind(&Gles::callGlValidateProgramPipelineEXT, this, _1, _2));
- mFunctions.insert(444, std::bind(&Gles::callGlVertexAttribDivisorANGLE, this, _1, _2));
- mFunctions.insert(445, std::bind(&Gles::callGlVertexAttribDivisorEXT, this, _1, _2));
- mFunctions.insert(446, std::bind(&Gles::callGlVertexAttribDivisorNV, this, _1, _2));
- mFunctions.insert(447, std::bind(&Gles::callGlViewportArrayvNV, this, _1, _2));
- mFunctions.insert(448, std::bind(&Gles::callGlViewportIndexedfNV, this, _1, _2));
- mFunctions.insert(449, std::bind(&Gles::callGlViewportIndexedfvNV, this, _1, _2));
- mFunctions.insert(450, std::bind(&Gles::callGlWaitSyncAPPLE, this, _1, _2));
- mFunctions.insert(451, std::bind(&Gles::callGlWeightPathsNV, this, _1, _2));
- mFunctions.insert(452, std::bind(&Gles::callGlBlendBarrier, this, _1, _2));
- mFunctions.insert(453, std::bind(&Gles::callGlBlendColor, this, _1, _2));
- mFunctions.insert(454, std::bind(&Gles::callGlBlendEquation, this, _1, _2));
- mFunctions.insert(455, std::bind(&Gles::callGlBlendEquationSeparate, this, _1, _2));
- mFunctions.insert(456, std::bind(&Gles::callGlBlendEquationSeparatei, this, _1, _2));
- mFunctions.insert(457, std::bind(&Gles::callGlBlendEquationi, this, _1, _2));
- mFunctions.insert(458, std::bind(&Gles::callGlBlendFunc, this, _1, _2));
- mFunctions.insert(459, std::bind(&Gles::callGlBlendFuncSeparate, this, _1, _2));
- mFunctions.insert(460, std::bind(&Gles::callGlBlendFuncSeparatei, this, _1, _2));
- mFunctions.insert(461, std::bind(&Gles::callGlBlendFunci, this, _1, _2));
- mFunctions.insert(462, std::bind(&Gles::callGlDepthFunc, this, _1, _2));
- mFunctions.insert(463, std::bind(&Gles::callGlSampleCoverage, this, _1, _2));
- mFunctions.insert(464, std::bind(&Gles::callGlSampleMaski, this, _1, _2));
- mFunctions.insert(465, std::bind(&Gles::callGlScissor, this, _1, _2));
- mFunctions.insert(466, std::bind(&Gles::callGlStencilFunc, this, _1, _2));
- mFunctions.insert(467, std::bind(&Gles::callGlStencilFuncSeparate, this, _1, _2));
- mFunctions.insert(468, std::bind(&Gles::callGlStencilOp, this, _1, _2));
- mFunctions.insert(469, std::bind(&Gles::callGlStencilOpSeparate, this, _1, _2));
- mFunctions.insert(470, std::bind(&Gles::callGlBindFramebuffer, this, _1, _2));
- mFunctions.insert(471, std::bind(&Gles::callGlBindRenderbuffer, this, _1, _2));
- mFunctions.insert(472, std::bind(&Gles::callGlBlitFramebuffer, this, _1, _2));
- mFunctions.insert(473, std::bind(&Gles::callGlCheckFramebufferStatus, this, _1, _2));
- mFunctions.insert(474, std::bind(&Gles::callGlClear, this, _1, _2));
- mFunctions.insert(475, std::bind(&Gles::callGlClearBufferfi, this, _1, _2));
- mFunctions.insert(476, std::bind(&Gles::callGlClearBufferfv, this, _1, _2));
- mFunctions.insert(477, std::bind(&Gles::callGlClearBufferiv, this, _1, _2));
- mFunctions.insert(478, std::bind(&Gles::callGlClearBufferuiv, this, _1, _2));
- mFunctions.insert(479, std::bind(&Gles::callGlClearColor, this, _1, _2));
- mFunctions.insert(480, std::bind(&Gles::callGlClearDepthf, this, _1, _2));
- mFunctions.insert(481, std::bind(&Gles::callGlClearStencil, this, _1, _2));
- mFunctions.insert(482, std::bind(&Gles::callGlColorMask, this, _1, _2));
- mFunctions.insert(483, std::bind(&Gles::callGlColorMaski, this, _1, _2));
- mFunctions.insert(484, std::bind(&Gles::callGlDeleteFramebuffers, this, _1, _2));
- mFunctions.insert(485, std::bind(&Gles::callGlDeleteRenderbuffers, this, _1, _2));
- mFunctions.insert(486, std::bind(&Gles::callGlDepthMask, this, _1, _2));
- mFunctions.insert(487, std::bind(&Gles::callGlDrawBuffers, this, _1, _2));
- mFunctions.insert(488, std::bind(&Gles::callGlFramebufferParameteri, this, _1, _2));
- mFunctions.insert(489, std::bind(&Gles::callGlFramebufferRenderbuffer, this, _1, _2));
- mFunctions.insert(490, std::bind(&Gles::callGlFramebufferTexture, this, _1, _2));
- mFunctions.insert(491, std::bind(&Gles::callGlFramebufferTexture2D, this, _1, _2));
- mFunctions.insert(492, std::bind(&Gles::callGlFramebufferTextureLayer, this, _1, _2));
- mFunctions.insert(493, std::bind(&Gles::callGlGenFramebuffers, this, _1, _2));
- mFunctions.insert(494, std::bind(&Gles::callGlGenRenderbuffers, this, _1, _2));
- mFunctions.insert(495, std::bind(&Gles::callGlGetFramebufferAttachmentParameteriv, this, _1, _2));
- mFunctions.insert(496, std::bind(&Gles::callGlGetFramebufferParameteriv, this, _1, _2));
- mFunctions.insert(497, std::bind(&Gles::callGlGetRenderbufferParameteriv, this, _1, _2));
- mFunctions.insert(498, std::bind(&Gles::callGlInvalidateFramebuffer, this, _1, _2));
- mFunctions.insert(499, std::bind(&Gles::callGlInvalidateSubFramebuffer, this, _1, _2));
- mFunctions.insert(500, std::bind(&Gles::callGlIsFramebuffer, this, _1, _2));
- mFunctions.insert(501, std::bind(&Gles::callGlIsRenderbuffer, this, _1, _2));
- mFunctions.insert(502, std::bind(&Gles::callGlReadBuffer, this, _1, _2));
- mFunctions.insert(503, std::bind(&Gles::callGlReadPixels, this, _1, _2));
- mFunctions.insert(504, std::bind(&Gles::callGlReadnPixels, this, _1, _2));
- mFunctions.insert(505, std::bind(&Gles::callGlRenderbufferStorage, this, _1, _2));
- mFunctions.insert(506, std::bind(&Gles::callGlRenderbufferStorageMultisample, this, _1, _2));
- mFunctions.insert(507, std::bind(&Gles::callGlStencilMask, this, _1, _2));
- mFunctions.insert(508, std::bind(&Gles::callGlStencilMaskSeparate, this, _1, _2));
- mFunctions.insert(509, std::bind(&Gles::callGlDisable, this, _1, _2));
- mFunctions.insert(510, std::bind(&Gles::callGlDisablei, this, _1, _2));
- mFunctions.insert(511, std::bind(&Gles::callGlEnable, this, _1, _2));
- mFunctions.insert(512, std::bind(&Gles::callGlEnablei, this, _1, _2));
- mFunctions.insert(513, std::bind(&Gles::callGlFinish, this, _1, _2));
- mFunctions.insert(514, std::bind(&Gles::callGlFlush, this, _1, _2));
- mFunctions.insert(515, std::bind(&Gles::callGlGetError, this, _1, _2));
- mFunctions.insert(516, std::bind(&Gles::callGlGetGraphicsResetStatus, this, _1, _2));
- mFunctions.insert(517, std::bind(&Gles::callGlHint, this, _1, _2));
- mFunctions.insert(518, std::bind(&Gles::callGlActiveShaderProgram, this, _1, _2));
- mFunctions.insert(519, std::bind(&Gles::callGlAttachShader, this, _1, _2));
- mFunctions.insert(520, std::bind(&Gles::callGlBindAttribLocation, this, _1, _2));
- mFunctions.insert(521, std::bind(&Gles::callGlBindProgramPipeline, this, _1, _2));
- mFunctions.insert(522, std::bind(&Gles::callGlCompileShader, this, _1, _2));
- mFunctions.insert(523, std::bind(&Gles::callGlCreateProgram, this, _1, _2));
- mFunctions.insert(524, std::bind(&Gles::callGlCreateShader, this, _1, _2));
- mFunctions.insert(525, std::bind(&Gles::callGlCreateShaderProgramv, this, _1, _2));
- mFunctions.insert(526, std::bind(&Gles::callGlDeleteProgram, this, _1, _2));
- mFunctions.insert(527, std::bind(&Gles::callGlDeleteProgramPipelines, this, _1, _2));
- mFunctions.insert(528, std::bind(&Gles::callGlDeleteShader, this, _1, _2));
- mFunctions.insert(529, std::bind(&Gles::callGlDetachShader, this, _1, _2));
- mFunctions.insert(530, std::bind(&Gles::callGlDispatchCompute, this, _1, _2));
- mFunctions.insert(531, std::bind(&Gles::callGlDispatchComputeIndirect, this, _1, _2));
- mFunctions.insert(532, std::bind(&Gles::callGlGenProgramPipelines, this, _1, _2));
- mFunctions.insert(533, std::bind(&Gles::callGlGetActiveAttrib, this, _1, _2));
- mFunctions.insert(534, std::bind(&Gles::callGlGetActiveUniform, this, _1, _2));
- mFunctions.insert(535, std::bind(&Gles::callGlGetActiveUniformBlockName, this, _1, _2));
- mFunctions.insert(536, std::bind(&Gles::callGlGetActiveUniformBlockiv, this, _1, _2));
- mFunctions.insert(537, std::bind(&Gles::callGlGetActiveUniformsiv, this, _1, _2));
- mFunctions.insert(538, std::bind(&Gles::callGlGetAttachedShaders, this, _1, _2));
- mFunctions.insert(539, std::bind(&Gles::callGlGetAttribLocation, this, _1, _2));
- mFunctions.insert(540, std::bind(&Gles::callGlGetFragDataLocation, this, _1, _2));
- mFunctions.insert(541, std::bind(&Gles::callGlGetProgramBinary, this, _1, _2));
- mFunctions.insert(542, std::bind(&Gles::callGlGetProgramInfoLog, this, _1, _2));
- mFunctions.insert(543, std::bind(&Gles::callGlGetProgramInterfaceiv, this, _1, _2));
- mFunctions.insert(544, std::bind(&Gles::callGlGetProgramPipelineInfoLog, this, _1, _2));
- mFunctions.insert(545, std::bind(&Gles::callGlGetProgramPipelineiv, this, _1, _2));
- mFunctions.insert(546, std::bind(&Gles::callGlGetProgramResourceIndex, this, _1, _2));
- mFunctions.insert(547, std::bind(&Gles::callGlGetProgramResourceLocation, this, _1, _2));
- mFunctions.insert(548, std::bind(&Gles::callGlGetProgramResourceName, this, _1, _2));
- mFunctions.insert(549, std::bind(&Gles::callGlGetProgramResourceiv, this, _1, _2));
- mFunctions.insert(550, std::bind(&Gles::callGlGetProgramiv, this, _1, _2));
- mFunctions.insert(551, std::bind(&Gles::callGlGetShaderInfoLog, this, _1, _2));
- mFunctions.insert(552, std::bind(&Gles::callGlGetShaderPrecisionFormat, this, _1, _2));
- mFunctions.insert(553, std::bind(&Gles::callGlGetShaderSource, this, _1, _2));
- mFunctions.insert(554, std::bind(&Gles::callGlGetShaderiv, this, _1, _2));
- mFunctions.insert(555, std::bind(&Gles::callGlGetUniformBlockIndex, this, _1, _2));
- mFunctions.insert(556, std::bind(&Gles::callGlGetUniformIndices, this, _1, _2));
- mFunctions.insert(557, std::bind(&Gles::callGlGetUniformLocation, this, _1, _2));
- mFunctions.insert(558, std::bind(&Gles::callGlGetUniformfv, this, _1, _2));
- mFunctions.insert(559, std::bind(&Gles::callGlGetUniformiv, this, _1, _2));
- mFunctions.insert(560, std::bind(&Gles::callGlGetUniformuiv, this, _1, _2));
- mFunctions.insert(561, std::bind(&Gles::callGlGetnUniformfv, this, _1, _2));
- mFunctions.insert(562, std::bind(&Gles::callGlGetnUniformiv, this, _1, _2));
- mFunctions.insert(563, std::bind(&Gles::callGlGetnUniformuiv, this, _1, _2));
- mFunctions.insert(564, std::bind(&Gles::callGlIsProgram, this, _1, _2));
- mFunctions.insert(565, std::bind(&Gles::callGlIsProgramPipeline, this, _1, _2));
- mFunctions.insert(566, std::bind(&Gles::callGlIsShader, this, _1, _2));
- mFunctions.insert(567, std::bind(&Gles::callGlLinkProgram, this, _1, _2));
- mFunctions.insert(568, std::bind(&Gles::callGlMemoryBarrier, this, _1, _2));
- mFunctions.insert(569, std::bind(&Gles::callGlMemoryBarrierByRegion, this, _1, _2));
- mFunctions.insert(570, std::bind(&Gles::callGlProgramBinary, this, _1, _2));
- mFunctions.insert(571, std::bind(&Gles::callGlProgramParameteri, this, _1, _2));
- mFunctions.insert(572, std::bind(&Gles::callGlProgramUniform1f, this, _1, _2));
- mFunctions.insert(573, std::bind(&Gles::callGlProgramUniform1fv, this, _1, _2));
- mFunctions.insert(574, std::bind(&Gles::callGlProgramUniform1i, this, _1, _2));
- mFunctions.insert(575, std::bind(&Gles::callGlProgramUniform1iv, this, _1, _2));
- mFunctions.insert(576, std::bind(&Gles::callGlProgramUniform1ui, this, _1, _2));
- mFunctions.insert(577, std::bind(&Gles::callGlProgramUniform1uiv, this, _1, _2));
- mFunctions.insert(578, std::bind(&Gles::callGlProgramUniform2f, this, _1, _2));
- mFunctions.insert(579, std::bind(&Gles::callGlProgramUniform2fv, this, _1, _2));
- mFunctions.insert(580, std::bind(&Gles::callGlProgramUniform2i, this, _1, _2));
- mFunctions.insert(581, std::bind(&Gles::callGlProgramUniform2iv, this, _1, _2));
- mFunctions.insert(582, std::bind(&Gles::callGlProgramUniform2ui, this, _1, _2));
- mFunctions.insert(583, std::bind(&Gles::callGlProgramUniform2uiv, this, _1, _2));
- mFunctions.insert(584, std::bind(&Gles::callGlProgramUniform3f, this, _1, _2));
- mFunctions.insert(585, std::bind(&Gles::callGlProgramUniform3fv, this, _1, _2));
- mFunctions.insert(586, std::bind(&Gles::callGlProgramUniform3i, this, _1, _2));
- mFunctions.insert(587, std::bind(&Gles::callGlProgramUniform3iv, this, _1, _2));
- mFunctions.insert(588, std::bind(&Gles::callGlProgramUniform3ui, this, _1, _2));
- mFunctions.insert(589, std::bind(&Gles::callGlProgramUniform3uiv, this, _1, _2));
- mFunctions.insert(590, std::bind(&Gles::callGlProgramUniform4f, this, _1, _2));
- mFunctions.insert(591, std::bind(&Gles::callGlProgramUniform4fv, this, _1, _2));
- mFunctions.insert(592, std::bind(&Gles::callGlProgramUniform4i, this, _1, _2));
- mFunctions.insert(593, std::bind(&Gles::callGlProgramUniform4iv, this, _1, _2));
- mFunctions.insert(594, std::bind(&Gles::callGlProgramUniform4ui, this, _1, _2));
- mFunctions.insert(595, std::bind(&Gles::callGlProgramUniform4uiv, this, _1, _2));
- mFunctions.insert(596, std::bind(&Gles::callGlProgramUniformMatrix2fv, this, _1, _2));
- mFunctions.insert(597, std::bind(&Gles::callGlProgramUniformMatrix2x3fv, this, _1, _2));
- mFunctions.insert(598, std::bind(&Gles::callGlProgramUniformMatrix2x4fv, this, _1, _2));
- mFunctions.insert(599, std::bind(&Gles::callGlProgramUniformMatrix3fv, this, _1, _2));
- mFunctions.insert(600, std::bind(&Gles::callGlProgramUniformMatrix3x2fv, this, _1, _2));
- mFunctions.insert(601, std::bind(&Gles::callGlProgramUniformMatrix3x4fv, this, _1, _2));
- mFunctions.insert(602, std::bind(&Gles::callGlProgramUniformMatrix4fv, this, _1, _2));
- mFunctions.insert(603, std::bind(&Gles::callGlProgramUniformMatrix4x2fv, this, _1, _2));
- mFunctions.insert(604, std::bind(&Gles::callGlProgramUniformMatrix4x3fv, this, _1, _2));
- mFunctions.insert(605, std::bind(&Gles::callGlReleaseShaderCompiler, this, _1, _2));
- mFunctions.insert(606, std::bind(&Gles::callGlShaderBinary, this, _1, _2));
- mFunctions.insert(607, std::bind(&Gles::callGlShaderSource, this, _1, _2));
- mFunctions.insert(608, std::bind(&Gles::callGlUniform1f, this, _1, _2));
- mFunctions.insert(609, std::bind(&Gles::callGlUniform1fv, this, _1, _2));
- mFunctions.insert(610, std::bind(&Gles::callGlUniform1i, this, _1, _2));
- mFunctions.insert(611, std::bind(&Gles::callGlUniform1iv, this, _1, _2));
- mFunctions.insert(612, std::bind(&Gles::callGlUniform1ui, this, _1, _2));
- mFunctions.insert(613, std::bind(&Gles::callGlUniform1uiv, this, _1, _2));
- mFunctions.insert(614, std::bind(&Gles::callGlUniform2f, this, _1, _2));
- mFunctions.insert(615, std::bind(&Gles::callGlUniform2fv, this, _1, _2));
- mFunctions.insert(616, std::bind(&Gles::callGlUniform2i, this, _1, _2));
- mFunctions.insert(617, std::bind(&Gles::callGlUniform2iv, this, _1, _2));
- mFunctions.insert(618, std::bind(&Gles::callGlUniform2ui, this, _1, _2));
- mFunctions.insert(619, std::bind(&Gles::callGlUniform2uiv, this, _1, _2));
- mFunctions.insert(620, std::bind(&Gles::callGlUniform3f, this, _1, _2));
- mFunctions.insert(621, std::bind(&Gles::callGlUniform3fv, this, _1, _2));
- mFunctions.insert(622, std::bind(&Gles::callGlUniform3i, this, _1, _2));
- mFunctions.insert(623, std::bind(&Gles::callGlUniform3iv, this, _1, _2));
- mFunctions.insert(624, std::bind(&Gles::callGlUniform3ui, this, _1, _2));
- mFunctions.insert(625, std::bind(&Gles::callGlUniform3uiv, this, _1, _2));
- mFunctions.insert(626, std::bind(&Gles::callGlUniform4f, this, _1, _2));
- mFunctions.insert(627, std::bind(&Gles::callGlUniform4fv, this, _1, _2));
- mFunctions.insert(628, std::bind(&Gles::callGlUniform4i, this, _1, _2));
- mFunctions.insert(629, std::bind(&Gles::callGlUniform4iv, this, _1, _2));
- mFunctions.insert(630, std::bind(&Gles::callGlUniform4ui, this, _1, _2));
- mFunctions.insert(631, std::bind(&Gles::callGlUniform4uiv, this, _1, _2));
- mFunctions.insert(632, std::bind(&Gles::callGlUniformBlockBinding, this, _1, _2));
- mFunctions.insert(633, std::bind(&Gles::callGlUniformMatrix2fv, this, _1, _2));
- mFunctions.insert(634, std::bind(&Gles::callGlUniformMatrix2x3fv, this, _1, _2));
- mFunctions.insert(635, std::bind(&Gles::callGlUniformMatrix2x4fv, this, _1, _2));
- mFunctions.insert(636, std::bind(&Gles::callGlUniformMatrix3fv, this, _1, _2));
- mFunctions.insert(637, std::bind(&Gles::callGlUniformMatrix3x2fv, this, _1, _2));
- mFunctions.insert(638, std::bind(&Gles::callGlUniformMatrix3x4fv, this, _1, _2));
- mFunctions.insert(639, std::bind(&Gles::callGlUniformMatrix4fv, this, _1, _2));
- mFunctions.insert(640, std::bind(&Gles::callGlUniformMatrix4x2fv, this, _1, _2));
- mFunctions.insert(641, std::bind(&Gles::callGlUniformMatrix4x3fv, this, _1, _2));
- mFunctions.insert(642, std::bind(&Gles::callGlUseProgram, this, _1, _2));
- mFunctions.insert(643, std::bind(&Gles::callGlUseProgramStages, this, _1, _2));
- mFunctions.insert(644, std::bind(&Gles::callGlValidateProgram, this, _1, _2));
- mFunctions.insert(645, std::bind(&Gles::callGlValidateProgramPipeline, this, _1, _2));
- mFunctions.insert(646, std::bind(&Gles::callGlCullFace, this, _1, _2));
- mFunctions.insert(647, std::bind(&Gles::callGlDepthRangef, this, _1, _2));
- mFunctions.insert(648, std::bind(&Gles::callGlFrontFace, this, _1, _2));
- mFunctions.insert(649, std::bind(&Gles::callGlGetMultisamplefv, this, _1, _2));
- mFunctions.insert(650, std::bind(&Gles::callGlLineWidth, this, _1, _2));
- mFunctions.insert(651, std::bind(&Gles::callGlMinSampleShading, this, _1, _2));
- mFunctions.insert(652, std::bind(&Gles::callGlPolygonOffset, this, _1, _2));
- mFunctions.insert(653, std::bind(&Gles::callGlViewport, this, _1, _2));
- mFunctions.insert(654, std::bind(&Gles::callGlGetBooleaniV, this, _1, _2));
- mFunctions.insert(655, std::bind(&Gles::callGlGetBooleanv, this, _1, _2));
- mFunctions.insert(656, std::bind(&Gles::callGlGetFloatv, this, _1, _2));
- mFunctions.insert(657, std::bind(&Gles::callGlGetInteger64iV, this, _1, _2));
- mFunctions.insert(658, std::bind(&Gles::callGlGetInteger64v, this, _1, _2));
- mFunctions.insert(659, std::bind(&Gles::callGlGetIntegeriV, this, _1, _2));
- mFunctions.insert(660, std::bind(&Gles::callGlGetIntegerv, this, _1, _2));
- mFunctions.insert(661, std::bind(&Gles::callGlGetInternalformativ, this, _1, _2));
- mFunctions.insert(662, std::bind(&Gles::callGlGetString, this, _1, _2));
- mFunctions.insert(663, std::bind(&Gles::callGlGetStringi, this, _1, _2));
- mFunctions.insert(664, std::bind(&Gles::callGlIsEnabled, this, _1, _2));
- mFunctions.insert(665, std::bind(&Gles::callGlIsEnabledi, this, _1, _2));
- mFunctions.insert(666, std::bind(&Gles::callGlClientWaitSync, this, _1, _2));
- mFunctions.insert(667, std::bind(&Gles::callGlDeleteSync, this, _1, _2));
- mFunctions.insert(668, std::bind(&Gles::callGlFenceSync, this, _1, _2));
- mFunctions.insert(669, std::bind(&Gles::callGlGetSynciv, this, _1, _2));
- mFunctions.insert(670, std::bind(&Gles::callGlIsSync, this, _1, _2));
- mFunctions.insert(671, std::bind(&Gles::callGlWaitSync, this, _1, _2));
- mFunctions.insert(672, std::bind(&Gles::callGlActiveTexture, this, _1, _2));
- mFunctions.insert(673, std::bind(&Gles::callGlBindImageTexture, this, _1, _2));
- mFunctions.insert(674, std::bind(&Gles::callGlBindSampler, this, _1, _2));
- mFunctions.insert(675, std::bind(&Gles::callGlBindTexture, this, _1, _2));
- mFunctions.insert(676, std::bind(&Gles::callGlCompressedTexImage2D, this, _1, _2));
- mFunctions.insert(677, std::bind(&Gles::callGlCompressedTexImage3D, this, _1, _2));
- mFunctions.insert(678, std::bind(&Gles::callGlCompressedTexSubImage2D, this, _1, _2));
- mFunctions.insert(679, std::bind(&Gles::callGlCompressedTexSubImage3D, this, _1, _2));
- mFunctions.insert(680, std::bind(&Gles::callGlCopyImageSubData, this, _1, _2));
- mFunctions.insert(681, std::bind(&Gles::callGlCopyTexImage2D, this, _1, _2));
- mFunctions.insert(682, std::bind(&Gles::callGlCopyTexSubImage2D, this, _1, _2));
- mFunctions.insert(683, std::bind(&Gles::callGlCopyTexSubImage3D, this, _1, _2));
- mFunctions.insert(684, std::bind(&Gles::callGlDeleteSamplers, this, _1, _2));
- mFunctions.insert(685, std::bind(&Gles::callGlDeleteTextures, this, _1, _2));
- mFunctions.insert(686, std::bind(&Gles::callGlGenSamplers, this, _1, _2));
- mFunctions.insert(687, std::bind(&Gles::callGlGenTextures, this, _1, _2));
- mFunctions.insert(688, std::bind(&Gles::callGlGenerateMipmap, this, _1, _2));
- mFunctions.insert(689, std::bind(&Gles::callGlGetSamplerParameterIiv, this, _1, _2));
- mFunctions.insert(690, std::bind(&Gles::callGlGetSamplerParameterIuiv, this, _1, _2));
- mFunctions.insert(691, std::bind(&Gles::callGlGetSamplerParameterfv, this, _1, _2));
- mFunctions.insert(692, std::bind(&Gles::callGlGetSamplerParameteriv, this, _1, _2));
- mFunctions.insert(693, std::bind(&Gles::callGlGetTexLevelParameterfv, this, _1, _2));
- mFunctions.insert(694, std::bind(&Gles::callGlGetTexLevelParameteriv, this, _1, _2));
- mFunctions.insert(695, std::bind(&Gles::callGlGetTexParameterIiv, this, _1, _2));
- mFunctions.insert(696, std::bind(&Gles::callGlGetTexParameterIuiv, this, _1, _2));
- mFunctions.insert(697, std::bind(&Gles::callGlGetTexParameterfv, this, _1, _2));
- mFunctions.insert(698, std::bind(&Gles::callGlGetTexParameteriv, this, _1, _2));
- mFunctions.insert(699, std::bind(&Gles::callGlIsSampler, this, _1, _2));
- mFunctions.insert(700, std::bind(&Gles::callGlIsTexture, this, _1, _2));
- mFunctions.insert(701, std::bind(&Gles::callGlPixelStorei, this, _1, _2));
- mFunctions.insert(702, std::bind(&Gles::callGlSamplerParameterIiv, this, _1, _2));
- mFunctions.insert(703, std::bind(&Gles::callGlSamplerParameterIuiv, this, _1, _2));
- mFunctions.insert(704, std::bind(&Gles::callGlSamplerParameterf, this, _1, _2));
- mFunctions.insert(705, std::bind(&Gles::callGlSamplerParameterfv, this, _1, _2));
- mFunctions.insert(706, std::bind(&Gles::callGlSamplerParameteri, this, _1, _2));
- mFunctions.insert(707, std::bind(&Gles::callGlSamplerParameteriv, this, _1, _2));
- mFunctions.insert(708, std::bind(&Gles::callGlTexBuffer, this, _1, _2));
- mFunctions.insert(709, std::bind(&Gles::callGlTexBufferRange, this, _1, _2));
- mFunctions.insert(710, std::bind(&Gles::callGlTexImage2D, this, _1, _2));
- mFunctions.insert(711, std::bind(&Gles::callGlTexImage3D, this, _1, _2));
- mFunctions.insert(712, std::bind(&Gles::callGlTexParameterIiv, this, _1, _2));
- mFunctions.insert(713, std::bind(&Gles::callGlTexParameterIuiv, this, _1, _2));
- mFunctions.insert(714, std::bind(&Gles::callGlTexParameterf, this, _1, _2));
- mFunctions.insert(715, std::bind(&Gles::callGlTexParameterfv, this, _1, _2));
- mFunctions.insert(716, std::bind(&Gles::callGlTexParameteri, this, _1, _2));
- mFunctions.insert(717, std::bind(&Gles::callGlTexParameteriv, this, _1, _2));
- mFunctions.insert(718, std::bind(&Gles::callGlTexStorage2D, this, _1, _2));
- mFunctions.insert(719, std::bind(&Gles::callGlTexStorage2DMultisample, this, _1, _2));
- mFunctions.insert(720, std::bind(&Gles::callGlTexStorage3D, this, _1, _2));
- mFunctions.insert(721, std::bind(&Gles::callGlTexStorage3DMultisample, this, _1, _2));
- mFunctions.insert(722, std::bind(&Gles::callGlTexSubImage2D, this, _1, _2));
- mFunctions.insert(723, std::bind(&Gles::callGlTexSubImage3D, this, _1, _2));
- mFunctions.insert(724, std::bind(&Gles::callGlBeginTransformFeedback, this, _1, _2));
- mFunctions.insert(725, std::bind(&Gles::callGlBindTransformFeedback, this, _1, _2));
- mFunctions.insert(726, std::bind(&Gles::callGlDeleteTransformFeedbacks, this, _1, _2));
- mFunctions.insert(727, std::bind(&Gles::callGlEndTransformFeedback, this, _1, _2));
- mFunctions.insert(728, std::bind(&Gles::callGlGenTransformFeedbacks, this, _1, _2));
- mFunctions.insert(729, std::bind(&Gles::callGlGetTransformFeedbackVarying, this, _1, _2));
- mFunctions.insert(730, std::bind(&Gles::callGlIsTransformFeedback, this, _1, _2));
- mFunctions.insert(731, std::bind(&Gles::callGlPauseTransformFeedback, this, _1, _2));
- mFunctions.insert(732, std::bind(&Gles::callGlResumeTransformFeedback, this, _1, _2));
- mFunctions.insert(733, std::bind(&Gles::callGlTransformFeedbackVaryings, this, _1, _2));
- mFunctions.insert(734, std::bind(&Gles::callGlBindVertexArray, this, _1, _2));
- mFunctions.insert(735, std::bind(&Gles::callGlBindVertexBuffer, this, _1, _2));
- mFunctions.insert(736, std::bind(&Gles::callGlDeleteVertexArrays, this, _1, _2));
- mFunctions.insert(737, std::bind(&Gles::callGlDisableVertexAttribArray, this, _1, _2));
- mFunctions.insert(738, std::bind(&Gles::callGlEnableVertexAttribArray, this, _1, _2));
- mFunctions.insert(739, std::bind(&Gles::callGlGenVertexArrays, this, _1, _2));
- mFunctions.insert(740, std::bind(&Gles::callGlGetVertexAttribIiv, this, _1, _2));
- mFunctions.insert(741, std::bind(&Gles::callGlGetVertexAttribIuiv, this, _1, _2));
- mFunctions.insert(742, std::bind(&Gles::callGlGetVertexAttribPointerv, this, _1, _2));
- mFunctions.insert(743, std::bind(&Gles::callGlGetVertexAttribfv, this, _1, _2));
- mFunctions.insert(744, std::bind(&Gles::callGlGetVertexAttribiv, this, _1, _2));
- mFunctions.insert(745, std::bind(&Gles::callGlIsVertexArray, this, _1, _2));
- mFunctions.insert(746, std::bind(&Gles::callGlVertexAttrib1f, this, _1, _2));
- mFunctions.insert(747, std::bind(&Gles::callGlVertexAttrib1fv, this, _1, _2));
- mFunctions.insert(748, std::bind(&Gles::callGlVertexAttrib2f, this, _1, _2));
- mFunctions.insert(749, std::bind(&Gles::callGlVertexAttrib2fv, this, _1, _2));
- mFunctions.insert(750, std::bind(&Gles::callGlVertexAttrib3f, this, _1, _2));
- mFunctions.insert(751, std::bind(&Gles::callGlVertexAttrib3fv, this, _1, _2));
- mFunctions.insert(752, std::bind(&Gles::callGlVertexAttrib4f, this, _1, _2));
- mFunctions.insert(753, std::bind(&Gles::callGlVertexAttrib4fv, this, _1, _2));
- mFunctions.insert(754, std::bind(&Gles::callGlVertexAttribBinding, this, _1, _2));
- mFunctions.insert(755, std::bind(&Gles::callGlVertexAttribDivisor, this, _1, _2));
- mFunctions.insert(756, std::bind(&Gles::callGlVertexAttribFormat, this, _1, _2));
- mFunctions.insert(757, std::bind(&Gles::callGlVertexAttribI4i, this, _1, _2));
- mFunctions.insert(758, std::bind(&Gles::callGlVertexAttribI4iv, this, _1, _2));
- mFunctions.insert(759, std::bind(&Gles::callGlVertexAttribI4ui, this, _1, _2));
- mFunctions.insert(760, std::bind(&Gles::callGlVertexAttribI4uiv, this, _1, _2));
- mFunctions.insert(761, std::bind(&Gles::callGlVertexAttribIFormat, this, _1, _2));
- mFunctions.insert(762, std::bind(&Gles::callGlVertexAttribIPointer, this, _1, _2));
- mFunctions.insert(763, std::bind(&Gles::callGlVertexAttribPointer, this, _1, _2));
- mFunctions.insert(764, std::bind(&Gles::callGlVertexBindingDivisor, this, _1, _2));
- mFunctions.insert(765, std::bind(&Gles::callGlXCreateContext, this, _1, _2));
- mFunctions.insert(766, std::bind(&Gles::callGlXCreateNewContext, this, _1, _2));
- mFunctions.insert(767, std::bind(&Gles::callGlXMakeContextCurrent, this, _1, _2));
- mFunctions.insert(768, std::bind(&Gles::callGlXMakeCurrent, this, _1, _2));
- mFunctions.insert(769, std::bind(&Gles::callGlXSwapBuffers, this, _1, _2));
- mFunctions.insert(770, std::bind(&Gles::callGlXQueryDrawable, this, _1, _2));
- mFunctions.insert(771, std::bind(&Gles::callWglCreateContext, this, _1, _2));
- mFunctions.insert(772, std::bind(&Gles::callWglCreateContextAttribsARB, this, _1, _2));
- mFunctions.insert(773, std::bind(&Gles::callWglMakeCurrent, this, _1, _2));
- mFunctions.insert(774, std::bind(&Gles::callWglSwapBuffers, this, _1, _2));
- mFunctions.insert(775, std::bind(&Gles::callCGLCreateContext, this, _1, _2));
- mFunctions.insert(776, std::bind(&Gles::callCGLSetCurrentContext, this, _1, _2));
- mFunctions.insert(777, std::bind(&Gles::callCGLGetSurface, this, _1, _2));
- mFunctions.insert(778, std::bind(&Gles::callCGSGetSurfaceBounds, this, _1, _2));
- mFunctions.insert(779, std::bind(&Gles::callCGLFlushDrawable, this, _1, _2));
- mFunctions.insert(780, std::bind(&Gles::callGlGetQueryObjecti64v, this, _1, _2));
- mFunctions.insert(781, std::bind(&Gles::callGlGetQueryObjectui64v, this, _1, _2));
- mFunctions.insert(782, std::bind(&Gles::callGlTexStorage1D, this, _1, _2));
- mFunctions.insert(783, std::bind(&Gles::callGlBindFragDataLocation, this, _1, _2));
- mFunctions.insert(784, std::bind(&Gles::callGlAlphaFunc, this, _1, _2));
- mFunctions.insert(785, std::bind(&Gles::callGlAlphaFuncx, this, _1, _2));
- mFunctions.insert(786, std::bind(&Gles::callGlAlphaFuncxOES, this, _1, _2));
- mFunctions.insert(787, std::bind(&Gles::callGlBindFramebufferOES, this, _1, _2));
- mFunctions.insert(788, std::bind(&Gles::callGlBindRenderbufferOES, this, _1, _2));
- mFunctions.insert(789, std::bind(&Gles::callGlBlendEquationOES, this, _1, _2));
- mFunctions.insert(790, std::bind(&Gles::callGlBlendEquationSeparateOES, this, _1, _2));
- mFunctions.insert(791, std::bind(&Gles::callGlBlendFuncSeparateOES, this, _1, _2));
- mFunctions.insert(792, std::bind(&Gles::callGlCheckFramebufferStatusOES, this, _1, _2));
- mFunctions.insert(793, std::bind(&Gles::callGlClearColorx, this, _1, _2));
- mFunctions.insert(794, std::bind(&Gles::callGlClearColorxOES, this, _1, _2));
- mFunctions.insert(795, std::bind(&Gles::callGlClearDepthfOES, this, _1, _2));
- mFunctions.insert(796, std::bind(&Gles::callGlClearDepthx, this, _1, _2));
- mFunctions.insert(797, std::bind(&Gles::callGlClearDepthxOES, this, _1, _2));
- mFunctions.insert(798, std::bind(&Gles::callGlClientActiveTexture, this, _1, _2));
- mFunctions.insert(799, std::bind(&Gles::callGlClipPlanef, this, _1, _2));
- mFunctions.insert(800, std::bind(&Gles::callGlClipPlanefIMG, this, _1, _2));
- mFunctions.insert(801, std::bind(&Gles::callGlClipPlanefOES, this, _1, _2));
- mFunctions.insert(802, std::bind(&Gles::callGlClipPlanex, this, _1, _2));
- mFunctions.insert(803, std::bind(&Gles::callGlClipPlanexIMG, this, _1, _2));
- mFunctions.insert(804, std::bind(&Gles::callGlClipPlanexOES, this, _1, _2));
- mFunctions.insert(805, std::bind(&Gles::callGlColor4f, this, _1, _2));
- mFunctions.insert(806, std::bind(&Gles::callGlColor4ub, this, _1, _2));
- mFunctions.insert(807, std::bind(&Gles::callGlColor4x, this, _1, _2));
- mFunctions.insert(808, std::bind(&Gles::callGlColor4xOES, this, _1, _2));
- mFunctions.insert(809, std::bind(&Gles::callGlColorPointer, this, _1, _2));
- mFunctions.insert(810, std::bind(&Gles::callGlCurrentPaletteMatrixOES, this, _1, _2));
- mFunctions.insert(811, std::bind(&Gles::callGlDeleteFramebuffersOES, this, _1, _2));
- mFunctions.insert(812, std::bind(&Gles::callGlDeleteRenderbuffersOES, this, _1, _2));
- mFunctions.insert(813, std::bind(&Gles::callGlDepthRangefOES, this, _1, _2));
- mFunctions.insert(814, std::bind(&Gles::callGlDepthRangex, this, _1, _2));
- mFunctions.insert(815, std::bind(&Gles::callGlDepthRangexOES, this, _1, _2));
- mFunctions.insert(816, std::bind(&Gles::callGlDisableClientState, this, _1, _2));
- mFunctions.insert(817, std::bind(&Gles::callGlDrawTexfOES, this, _1, _2));
- mFunctions.insert(818, std::bind(&Gles::callGlDrawTexfvOES, this, _1, _2));
- mFunctions.insert(819, std::bind(&Gles::callGlDrawTexiOES, this, _1, _2));
- mFunctions.insert(820, std::bind(&Gles::callGlDrawTexivOES, this, _1, _2));
- mFunctions.insert(821, std::bind(&Gles::callGlDrawTexsOES, this, _1, _2));
- mFunctions.insert(822, std::bind(&Gles::callGlDrawTexsvOES, this, _1, _2));
- mFunctions.insert(823, std::bind(&Gles::callGlDrawTexxOES, this, _1, _2));
- mFunctions.insert(824, std::bind(&Gles::callGlDrawTexxvOES, this, _1, _2));
- mFunctions.insert(825, std::bind(&Gles::callGlEnableClientState, this, _1, _2));
- mFunctions.insert(826, std::bind(&Gles::callGlFogf, this, _1, _2));
- mFunctions.insert(827, std::bind(&Gles::callGlFogfv, this, _1, _2));
- mFunctions.insert(828, std::bind(&Gles::callGlFogx, this, _1, _2));
- mFunctions.insert(829, std::bind(&Gles::callGlFogxOES, this, _1, _2));
- mFunctions.insert(830, std::bind(&Gles::callGlFogxv, this, _1, _2));
- mFunctions.insert(831, std::bind(&Gles::callGlFogxvOES, this, _1, _2));
- mFunctions.insert(832, std::bind(&Gles::callGlFramebufferRenderbufferOES, this, _1, _2));
- mFunctions.insert(833, std::bind(&Gles::callGlFramebufferTexture2DOES, this, _1, _2));
- mFunctions.insert(834, std::bind(&Gles::callGlFrustumf, this, _1, _2));
- mFunctions.insert(835, std::bind(&Gles::callGlFrustumfOES, this, _1, _2));
- mFunctions.insert(836, std::bind(&Gles::callGlFrustumx, this, _1, _2));
- mFunctions.insert(837, std::bind(&Gles::callGlFrustumxOES, this, _1, _2));
- mFunctions.insert(838, std::bind(&Gles::callGlGenFramebuffersOES, this, _1, _2));
- mFunctions.insert(839, std::bind(&Gles::callGlGenRenderbuffersOES, this, _1, _2));
- mFunctions.insert(840, std::bind(&Gles::callGlGenerateMipmapOES, this, _1, _2));
- mFunctions.insert(841, std::bind(&Gles::callGlGetClipPlanef, this, _1, _2));
- mFunctions.insert(842, std::bind(&Gles::callGlGetClipPlanefOES, this, _1, _2));
- mFunctions.insert(843, std::bind(&Gles::callGlGetClipPlanex, this, _1, _2));
- mFunctions.insert(844, std::bind(&Gles::callGlGetClipPlanexOES, this, _1, _2));
- mFunctions.insert(845, std::bind(&Gles::callGlGetFixedv, this, _1, _2));
- mFunctions.insert(846, std::bind(&Gles::callGlGetFixedvOES, this, _1, _2));
- mFunctions.insert(847, std::bind(&Gles::callGlGetFramebufferAttachmentParameterivOES, this, _1, _2));
- mFunctions.insert(848, std::bind(&Gles::callGlGetLightfv, this, _1, _2));
- mFunctions.insert(849, std::bind(&Gles::callGlGetLightxv, this, _1, _2));
- mFunctions.insert(850, std::bind(&Gles::callGlGetLightxvOES, this, _1, _2));
- mFunctions.insert(851, std::bind(&Gles::callGlGetMaterialfv, this, _1, _2));
- mFunctions.insert(852, std::bind(&Gles::callGlGetMaterialxv, this, _1, _2));
- mFunctions.insert(853, std::bind(&Gles::callGlGetMaterialxvOES, this, _1, _2));
- mFunctions.insert(854, std::bind(&Gles::callGlGetRenderbufferParameterivOES, this, _1, _2));
- mFunctions.insert(855, std::bind(&Gles::callGlGetTexEnvfv, this, _1, _2));
- mFunctions.insert(856, std::bind(&Gles::callGlGetTexEnviv, this, _1, _2));
- mFunctions.insert(857, std::bind(&Gles::callGlGetTexEnvxv, this, _1, _2));
- mFunctions.insert(858, std::bind(&Gles::callGlGetTexEnvxvOES, this, _1, _2));
- mFunctions.insert(859, std::bind(&Gles::callGlGetTexGenfvOES, this, _1, _2));
- mFunctions.insert(860, std::bind(&Gles::callGlGetTexGenivOES, this, _1, _2));
- mFunctions.insert(861, std::bind(&Gles::callGlGetTexGenxvOES, this, _1, _2));
- mFunctions.insert(862, std::bind(&Gles::callGlGetTexParameterxv, this, _1, _2));
- mFunctions.insert(863, std::bind(&Gles::callGlGetTexParameterxvOES, this, _1, _2));
- mFunctions.insert(864, std::bind(&Gles::callGlIsFramebufferOES, this, _1, _2));
- mFunctions.insert(865, std::bind(&Gles::callGlIsRenderbufferOES, this, _1, _2));
- mFunctions.insert(866, std::bind(&Gles::callGlLightModelf, this, _1, _2));
- mFunctions.insert(867, std::bind(&Gles::callGlLightModelfv, this, _1, _2));
- mFunctions.insert(868, std::bind(&Gles::callGlLightModelx, this, _1, _2));
- mFunctions.insert(869, std::bind(&Gles::callGlLightModelxOES, this, _1, _2));
- mFunctions.insert(870, std::bind(&Gles::callGlLightModelxv, this, _1, _2));
- mFunctions.insert(871, std::bind(&Gles::callGlLightModelxvOES, this, _1, _2));
- mFunctions.insert(872, std::bind(&Gles::callGlLightf, this, _1, _2));
- mFunctions.insert(873, std::bind(&Gles::callGlLightfv, this, _1, _2));
- mFunctions.insert(874, std::bind(&Gles::callGlLightx, this, _1, _2));
- mFunctions.insert(875, std::bind(&Gles::callGlLightxOES, this, _1, _2));
- mFunctions.insert(876, std::bind(&Gles::callGlLightxv, this, _1, _2));
- mFunctions.insert(877, std::bind(&Gles::callGlLightxvOES, this, _1, _2));
- mFunctions.insert(878, std::bind(&Gles::callGlLineWidthx, this, _1, _2));
- mFunctions.insert(879, std::bind(&Gles::callGlLineWidthxOES, this, _1, _2));
- mFunctions.insert(880, std::bind(&Gles::callGlLoadIdentity, this, _1, _2));
- mFunctions.insert(881, std::bind(&Gles::callGlLoadMatrixf, this, _1, _2));
- mFunctions.insert(882, std::bind(&Gles::callGlLoadMatrixx, this, _1, _2));
- mFunctions.insert(883, std::bind(&Gles::callGlLoadMatrixxOES, this, _1, _2));
- mFunctions.insert(884, std::bind(&Gles::callGlLoadPaletteFromModelViewMatrixOES, this, _1, _2));
- mFunctions.insert(885, std::bind(&Gles::callGlLogicOp, this, _1, _2));
- mFunctions.insert(886, std::bind(&Gles::callGlMaterialf, this, _1, _2));
- mFunctions.insert(887, std::bind(&Gles::callGlMaterialfv, this, _1, _2));
- mFunctions.insert(888, std::bind(&Gles::callGlMaterialx, this, _1, _2));
- mFunctions.insert(889, std::bind(&Gles::callGlMaterialxOES, this, _1, _2));
- mFunctions.insert(890, std::bind(&Gles::callGlMaterialxv, this, _1, _2));
- mFunctions.insert(891, std::bind(&Gles::callGlMaterialxvOES, this, _1, _2));
- mFunctions.insert(892, std::bind(&Gles::callGlMatrixIndexPointerOES, this, _1, _2));
- mFunctions.insert(893, std::bind(&Gles::callGlMatrixMode, this, _1, _2));
- mFunctions.insert(894, std::bind(&Gles::callGlMultMatrixf, this, _1, _2));
- mFunctions.insert(895, std::bind(&Gles::callGlMultMatrixx, this, _1, _2));
- mFunctions.insert(896, std::bind(&Gles::callGlMultMatrixxOES, this, _1, _2));
- mFunctions.insert(897, std::bind(&Gles::callGlMultiTexCoord4f, this, _1, _2));
- mFunctions.insert(898, std::bind(&Gles::callGlMultiTexCoord4x, this, _1, _2));
- mFunctions.insert(899, std::bind(&Gles::callGlMultiTexCoord4xOES, this, _1, _2));
- mFunctions.insert(900, std::bind(&Gles::callGlNormal3f, this, _1, _2));
- mFunctions.insert(901, std::bind(&Gles::callGlNormal3x, this, _1, _2));
- mFunctions.insert(902, std::bind(&Gles::callGlNormal3xOES, this, _1, _2));
- mFunctions.insert(903, std::bind(&Gles::callGlNormalPointer, this, _1, _2));
- mFunctions.insert(904, std::bind(&Gles::callGlOrthof, this, _1, _2));
- mFunctions.insert(905, std::bind(&Gles::callGlOrthofOES, this, _1, _2));
- mFunctions.insert(906, std::bind(&Gles::callGlOrthox, this, _1, _2));
- mFunctions.insert(907, std::bind(&Gles::callGlOrthoxOES, this, _1, _2));
- mFunctions.insert(908, std::bind(&Gles::callGlPointParameterf, this, _1, _2));
- mFunctions.insert(909, std::bind(&Gles::callGlPointParameterfv, this, _1, _2));
- mFunctions.insert(910, std::bind(&Gles::callGlPointParameterx, this, _1, _2));
- mFunctions.insert(911, std::bind(&Gles::callGlPointParameterxOES, this, _1, _2));
- mFunctions.insert(912, std::bind(&Gles::callGlPointParameterxv, this, _1, _2));
- mFunctions.insert(913, std::bind(&Gles::callGlPointParameterxvOES, this, _1, _2));
- mFunctions.insert(914, std::bind(&Gles::callGlPointSize, this, _1, _2));
- mFunctions.insert(915, std::bind(&Gles::callGlPointSizePointerOES, this, _1, _2));
- mFunctions.insert(916, std::bind(&Gles::callGlPointSizex, this, _1, _2));
- mFunctions.insert(917, std::bind(&Gles::callGlPointSizexOES, this, _1, _2));
- mFunctions.insert(918, std::bind(&Gles::callGlPolygonOffsetx, this, _1, _2));
- mFunctions.insert(919, std::bind(&Gles::callGlPolygonOffsetxOES, this, _1, _2));
- mFunctions.insert(920, std::bind(&Gles::callGlPopMatrix, this, _1, _2));
- mFunctions.insert(921, std::bind(&Gles::callGlPushMatrix, this, _1, _2));
- mFunctions.insert(922, std::bind(&Gles::callGlQueryMatrixxOES, this, _1, _2));
- mFunctions.insert(923, std::bind(&Gles::callGlRenderbufferStorageOES, this, _1, _2));
- mFunctions.insert(924, std::bind(&Gles::callGlRotatef, this, _1, _2));
- mFunctions.insert(925, std::bind(&Gles::callGlRotatex, this, _1, _2));
- mFunctions.insert(926, std::bind(&Gles::callGlRotatexOES, this, _1, _2));
- mFunctions.insert(927, std::bind(&Gles::callGlSampleCoveragex, this, _1, _2));
- mFunctions.insert(928, std::bind(&Gles::callGlSampleCoveragexOES, this, _1, _2));
- mFunctions.insert(929, std::bind(&Gles::callGlScalef, this, _1, _2));
- mFunctions.insert(930, std::bind(&Gles::callGlScalex, this, _1, _2));
- mFunctions.insert(931, std::bind(&Gles::callGlScalexOES, this, _1, _2));
- mFunctions.insert(932, std::bind(&Gles::callGlShadeModel, this, _1, _2));
- mFunctions.insert(933, std::bind(&Gles::callGlTexCoordPointer, this, _1, _2));
- mFunctions.insert(934, std::bind(&Gles::callGlTexEnvf, this, _1, _2));
- mFunctions.insert(935, std::bind(&Gles::callGlTexEnvfv, this, _1, _2));
- mFunctions.insert(936, std::bind(&Gles::callGlTexEnvi, this, _1, _2));
- mFunctions.insert(937, std::bind(&Gles::callGlTexEnviv, this, _1, _2));
- mFunctions.insert(938, std::bind(&Gles::callGlTexEnvx, this, _1, _2));
- mFunctions.insert(939, std::bind(&Gles::callGlTexEnvxOES, this, _1, _2));
- mFunctions.insert(940, std::bind(&Gles::callGlTexEnvxv, this, _1, _2));
- mFunctions.insert(941, std::bind(&Gles::callGlTexEnvxvOES, this, _1, _2));
- mFunctions.insert(942, std::bind(&Gles::callGlTexGenfOES, this, _1, _2));
- mFunctions.insert(943, std::bind(&Gles::callGlTexGenfvOES, this, _1, _2));
- mFunctions.insert(944, std::bind(&Gles::callGlTexGeniOES, this, _1, _2));
- mFunctions.insert(945, std::bind(&Gles::callGlTexGenivOES, this, _1, _2));
- mFunctions.insert(946, std::bind(&Gles::callGlTexGenxOES, this, _1, _2));
- mFunctions.insert(947, std::bind(&Gles::callGlTexGenxvOES, this, _1, _2));
- mFunctions.insert(948, std::bind(&Gles::callGlTexParameterx, this, _1, _2));
- mFunctions.insert(949, std::bind(&Gles::callGlTexParameterxOES, this, _1, _2));
- mFunctions.insert(950, std::bind(&Gles::callGlTexParameterxv, this, _1, _2));
- mFunctions.insert(951, std::bind(&Gles::callGlTexParameterxvOES, this, _1, _2));
- mFunctions.insert(952, std::bind(&Gles::callGlTranslatef, this, _1, _2));
- mFunctions.insert(953, std::bind(&Gles::callGlTranslatex, this, _1, _2));
- mFunctions.insert(954, std::bind(&Gles::callGlTranslatexOES, this, _1, _2));
- mFunctions.insert(955, std::bind(&Gles::callGlVertexPointer, this, _1, _2));
- mFunctions.insert(956, std::bind(&Gles::callGlWeightPointerOES, this, _1, _2));
- mFunctions.insert(957, std::bind(&Gles::callGlColorPointerBounds, this, _1, _2));
- mFunctions.insert(958, std::bind(&Gles::callGlNormalPointerBounds, this, _1, _2));
- mFunctions.insert(959, std::bind(&Gles::callGlTexCoordPointerBounds, this, _1, _2));
- mFunctions.insert(960, std::bind(&Gles::callGlVertexPointerBounds, this, _1, _2));
- mFunctions.insert(961, std::bind(&Gles::callGlPointSizePointerOESBounds, this, _1, _2));
- mFunctions.insert(962, std::bind(&Gles::callGlMatrixIndexPointerOESBounds, this, _1, _2));
- mFunctions.insert(963, std::bind(&Gles::callGlWeightPointerOESBounds, this, _1, _2));
+ mFunctions.insert(123, std::bind(&Gles::callEglCreateNativeClientBufferANDROID, this, _1, _2));
+ mFunctions.insert(124, std::bind(&Gles::callGlActiveShaderProgramEXT, this, _1, _2));
+ mFunctions.insert(125, std::bind(&Gles::callGlAlphaFuncQCOM, this, _1, _2));
+ mFunctions.insert(126, std::bind(&Gles::callGlApplyFramebufferAttachmentCMAAINTEL, this, _1, _2));
+ mFunctions.insert(127, std::bind(&Gles::callGlBeginConditionalRenderNV, this, _1, _2));
+ mFunctions.insert(128, std::bind(&Gles::callGlBeginPerfMonitorAMD, this, _1, _2));
+ mFunctions.insert(129, std::bind(&Gles::callGlBeginPerfQueryINTEL, this, _1, _2));
+ mFunctions.insert(130, std::bind(&Gles::callGlBeginQueryEXT, this, _1, _2));
+ mFunctions.insert(131, std::bind(&Gles::callGlBindFragDataLocationEXT, this, _1, _2));
+ mFunctions.insert(132, std::bind(&Gles::callGlBindFragDataLocationIndexedEXT, this, _1, _2));
+ mFunctions.insert(133, std::bind(&Gles::callGlBindProgramPipelineEXT, this, _1, _2));
+ mFunctions.insert(134, std::bind(&Gles::callGlBindVertexArrayOES, this, _1, _2));
+ mFunctions.insert(135, std::bind(&Gles::callGlBlendBarrierNV, this, _1, _2));
+ mFunctions.insert(136, std::bind(&Gles::callGlBlendEquationSeparateiOES, this, _1, _2));
+ mFunctions.insert(137, std::bind(&Gles::callGlBlendEquationiOES, this, _1, _2));
+ mFunctions.insert(138, std::bind(&Gles::callGlBlendFuncSeparateiOES, this, _1, _2));
+ mFunctions.insert(139, std::bind(&Gles::callGlBlendFunciOES, this, _1, _2));
+ mFunctions.insert(140, std::bind(&Gles::callGlBlendParameteriNV, this, _1, _2));
+ mFunctions.insert(141, std::bind(&Gles::callGlBlitFramebufferANGLE, this, _1, _2));
+ mFunctions.insert(142, std::bind(&Gles::callGlBlitFramebufferNV, this, _1, _2));
+ mFunctions.insert(143, std::bind(&Gles::callGlBufferStorageEXT, this, _1, _2));
+ mFunctions.insert(144, std::bind(&Gles::callGlClientWaitSyncAPPLE, this, _1, _2));
+ mFunctions.insert(145, std::bind(&Gles::callGlColorMaskiOES, this, _1, _2));
+ mFunctions.insert(146, std::bind(&Gles::callGlCompressedTexImage3DOES, this, _1, _2));
+ mFunctions.insert(147, std::bind(&Gles::callGlCompressedTexSubImage3DOES, this, _1, _2));
+ mFunctions.insert(148, std::bind(&Gles::callGlCopyBufferSubDataNV, this, _1, _2));
+ mFunctions.insert(149, std::bind(&Gles::callGlCopyImageSubDataOES, this, _1, _2));
+ mFunctions.insert(150, std::bind(&Gles::callGlCopyPathNV, this, _1, _2));
+ mFunctions.insert(151, std::bind(&Gles::callGlCopyTexSubImage3DOES, this, _1, _2));
+ mFunctions.insert(152, std::bind(&Gles::callGlCopyTextureLevelsAPPLE, this, _1, _2));
+ mFunctions.insert(153, std::bind(&Gles::callGlCoverFillPathInstancedNV, this, _1, _2));
+ mFunctions.insert(154, std::bind(&Gles::callGlCoverFillPathNV, this, _1, _2));
+ mFunctions.insert(155, std::bind(&Gles::callGlCoverStrokePathInstancedNV, this, _1, _2));
+ mFunctions.insert(156, std::bind(&Gles::callGlCoverStrokePathNV, this, _1, _2));
+ mFunctions.insert(157, std::bind(&Gles::callGlCoverageMaskNV, this, _1, _2));
+ mFunctions.insert(158, std::bind(&Gles::callGlCoverageModulationNV, this, _1, _2));
+ mFunctions.insert(159, std::bind(&Gles::callGlCoverageModulationTableNV, this, _1, _2));
+ mFunctions.insert(160, std::bind(&Gles::callGlCoverageOperationNV, this, _1, _2));
+ mFunctions.insert(161, std::bind(&Gles::callGlCreatePerfQueryINTEL, this, _1, _2));
+ mFunctions.insert(162, std::bind(&Gles::callGlCreateShaderProgramvEXT, this, _1, _2));
+ mFunctions.insert(163, std::bind(&Gles::callGlDeleteFencesNV, this, _1, _2));
+ mFunctions.insert(164, std::bind(&Gles::callGlDeletePathsNV, this, _1, _2));
+ mFunctions.insert(165, std::bind(&Gles::callGlDeletePerfMonitorsAMD, this, _1, _2));
+ mFunctions.insert(166, std::bind(&Gles::callGlDeletePerfQueryINTEL, this, _1, _2));
+ mFunctions.insert(167, std::bind(&Gles::callGlDeleteProgramPipelinesEXT, this, _1, _2));
+ mFunctions.insert(168, std::bind(&Gles::callGlDeleteQueriesEXT, this, _1, _2));
+ mFunctions.insert(169, std::bind(&Gles::callGlDeleteSyncAPPLE, this, _1, _2));
+ mFunctions.insert(170, std::bind(&Gles::callGlDeleteVertexArraysOES, this, _1, _2));
+ mFunctions.insert(171, std::bind(&Gles::callGlDepthRangeArrayfvNV, this, _1, _2));
+ mFunctions.insert(172, std::bind(&Gles::callGlDepthRangeIndexedfNV, this, _1, _2));
+ mFunctions.insert(173, std::bind(&Gles::callGlDisableDriverControlQCOM, this, _1, _2));
+ mFunctions.insert(174, std::bind(&Gles::callGlDisableiNV, this, _1, _2));
+ mFunctions.insert(175, std::bind(&Gles::callGlDisableiOES, this, _1, _2));
+ mFunctions.insert(176, std::bind(&Gles::callGlDiscardFramebufferEXT, this, _1, _2));
+ mFunctions.insert(177, std::bind(&Gles::callGlDrawArraysInstancedANGLE, this, _1, _2));
+ mFunctions.insert(178, std::bind(&Gles::callGlDrawArraysInstancedBaseInstanceEXT, this, _1, _2));
+ mFunctions.insert(179, std::bind(&Gles::callGlDrawArraysInstancedEXT, this, _1, _2));
+ mFunctions.insert(180, std::bind(&Gles::callGlDrawArraysInstancedNV, this, _1, _2));
+ mFunctions.insert(181, std::bind(&Gles::callGlDrawBuffersEXT, this, _1, _2));
+ mFunctions.insert(182, std::bind(&Gles::callGlDrawBuffersIndexedEXT, this, _1, _2));
+ mFunctions.insert(183, std::bind(&Gles::callGlDrawBuffersNV, this, _1, _2));
+ mFunctions.insert(184, std::bind(&Gles::callGlDrawElementsBaseVertexEXT, this, _1, _2));
+ mFunctions.insert(185, std::bind(&Gles::callGlDrawElementsBaseVertexOES, this, _1, _2));
+ mFunctions.insert(186, std::bind(&Gles::callGlDrawElementsInstancedANGLE, this, _1, _2));
+ mFunctions.insert(187, std::bind(&Gles::callGlDrawElementsInstancedBaseInstanceEXT, this, _1, _2));
+ mFunctions.insert(188, std::bind(&Gles::callGlDrawElementsInstancedBaseVertexBaseInstanceEXT, this, _1, _2));
+ mFunctions.insert(189, std::bind(&Gles::callGlDrawElementsInstancedBaseVertexEXT, this, _1, _2));
+ mFunctions.insert(190, std::bind(&Gles::callGlDrawElementsInstancedBaseVertexOES, this, _1, _2));
+ mFunctions.insert(191, std::bind(&Gles::callGlDrawElementsInstancedEXT, this, _1, _2));
+ mFunctions.insert(192, std::bind(&Gles::callGlDrawElementsInstancedNV, this, _1, _2));
+ mFunctions.insert(193, std::bind(&Gles::callGlDrawRangeElementsBaseVertexEXT, this, _1, _2));
+ mFunctions.insert(194, std::bind(&Gles::callGlDrawRangeElementsBaseVertexOES, this, _1, _2));
+ mFunctions.insert(195, std::bind(&Gles::callGlEGLImageTargetRenderbufferStorageOES, this, _1, _2));
+ mFunctions.insert(196, std::bind(&Gles::callGlEGLImageTargetTexture2DOES, this, _1, _2));
+ mFunctions.insert(197, std::bind(&Gles::callGlEnableDriverControlQCOM, this, _1, _2));
+ mFunctions.insert(198, std::bind(&Gles::callGlEnableiNV, this, _1, _2));
+ mFunctions.insert(199, std::bind(&Gles::callGlEnableiOES, this, _1, _2));
+ mFunctions.insert(200, std::bind(&Gles::callGlEndConditionalRenderNV, this, _1, _2));
+ mFunctions.insert(201, std::bind(&Gles::callGlEndPerfMonitorAMD, this, _1, _2));
+ mFunctions.insert(202, std::bind(&Gles::callGlEndPerfQueryINTEL, this, _1, _2));
+ mFunctions.insert(203, std::bind(&Gles::callGlEndQueryEXT, this, _1, _2));
+ mFunctions.insert(204, std::bind(&Gles::callGlEndTilingQCOM, this, _1, _2));
+ mFunctions.insert(205, std::bind(&Gles::callGlExtGetBufferPointervQCOM, this, _1, _2));
+ mFunctions.insert(206, std::bind(&Gles::callGlExtGetBuffersQCOM, this, _1, _2));
+ mFunctions.insert(207, std::bind(&Gles::callGlExtGetFramebuffersQCOM, this, _1, _2));
+ mFunctions.insert(208, std::bind(&Gles::callGlExtGetProgramBinarySourceQCOM, this, _1, _2));
+ mFunctions.insert(209, std::bind(&Gles::callGlExtGetProgramsQCOM, this, _1, _2));
+ mFunctions.insert(210, std::bind(&Gles::callGlExtGetRenderbuffersQCOM, this, _1, _2));
+ mFunctions.insert(211, std::bind(&Gles::callGlExtGetShadersQCOM, this, _1, _2));
+ mFunctions.insert(212, std::bind(&Gles::callGlExtGetTexLevelParameterivQCOM, this, _1, _2));
+ mFunctions.insert(213, std::bind(&Gles::callGlExtGetTexSubImageQCOM, this, _1, _2));
+ mFunctions.insert(214, std::bind(&Gles::callGlExtGetTexturesQCOM, this, _1, _2));
+ mFunctions.insert(215, std::bind(&Gles::callGlExtIsProgramBinaryQCOM, this, _1, _2));
+ mFunctions.insert(216, std::bind(&Gles::callGlExtTexObjectStateOverrideiQCOM, this, _1, _2));
+ mFunctions.insert(217, std::bind(&Gles::callGlFenceSyncAPPLE, this, _1, _2));
+ mFunctions.insert(218, std::bind(&Gles::callGlFinishFenceNV, this, _1, _2));
+ mFunctions.insert(219, std::bind(&Gles::callGlFlushMappedBufferRangeEXT, this, _1, _2));
+ mFunctions.insert(220, std::bind(&Gles::callGlFragmentCoverageColorNV, this, _1, _2));
+ mFunctions.insert(221, std::bind(&Gles::callGlFramebufferSampleLocationsfvNV, this, _1, _2));
+ mFunctions.insert(222, std::bind(&Gles::callGlFramebufferTexture2DMultisampleEXT, this, _1, _2));
+ mFunctions.insert(223, std::bind(&Gles::callGlFramebufferTexture2DMultisampleIMG, this, _1, _2));
+ mFunctions.insert(224, std::bind(&Gles::callGlFramebufferTexture3DOES, this, _1, _2));
+ mFunctions.insert(225, std::bind(&Gles::callGlFramebufferTextureMultiviewOVR, this, _1, _2));
+ mFunctions.insert(226, std::bind(&Gles::callGlFramebufferTextureOES, this, _1, _2));
+ mFunctions.insert(227, std::bind(&Gles::callGlGenFencesNV, this, _1, _2));
+ mFunctions.insert(228, std::bind(&Gles::callGlGenPathsNV, this, _1, _2));
+ mFunctions.insert(229, std::bind(&Gles::callGlGenPerfMonitorsAMD, this, _1, _2));
+ mFunctions.insert(230, std::bind(&Gles::callGlGenProgramPipelinesEXT, this, _1, _2));
+ mFunctions.insert(231, std::bind(&Gles::callGlGenQueriesEXT, this, _1, _2));
+ mFunctions.insert(232, std::bind(&Gles::callGlGenVertexArraysOES, this, _1, _2));
+ mFunctions.insert(233, std::bind(&Gles::callGlGetBufferPointervOES, this, _1, _2));
+ mFunctions.insert(234, std::bind(&Gles::callGlGetCoverageModulationTableNV, this, _1, _2));
+ mFunctions.insert(235, std::bind(&Gles::callGlGetDriverControlStringQCOM, this, _1, _2));
+ mFunctions.insert(236, std::bind(&Gles::callGlGetDriverControlsQCOM, this, _1, _2));
+ mFunctions.insert(237, std::bind(&Gles::callGlGetFenceivNV, this, _1, _2));
+ mFunctions.insert(238, std::bind(&Gles::callGlGetFirstPerfQueryIdINTEL, this, _1, _2));
+ mFunctions.insert(239, std::bind(&Gles::callGlGetFloatiVNV, this, _1, _2));
+ mFunctions.insert(240, std::bind(&Gles::callGlGetFragDataIndexEXT, this, _1, _2));
+ mFunctions.insert(241, std::bind(&Gles::callGlGetGraphicsResetStatusEXT, this, _1, _2));
+ mFunctions.insert(242, std::bind(&Gles::callGlGetGraphicsResetStatusKHR, this, _1, _2));
+ mFunctions.insert(243, std::bind(&Gles::callGlGetImageHandleNV, this, _1, _2));
+ mFunctions.insert(244, std::bind(&Gles::callGlGetInteger64vAPPLE, this, _1, _2));
+ mFunctions.insert(245, std::bind(&Gles::callGlGetIntegeriVEXT, this, _1, _2));
+ mFunctions.insert(246, std::bind(&Gles::callGlGetInternalformatSampleivNV, this, _1, _2));
+ mFunctions.insert(247, std::bind(&Gles::callGlGetNextPerfQueryIdINTEL, this, _1, _2));
+ mFunctions.insert(248, std::bind(&Gles::callGlGetObjectLabelEXT, this, _1, _2));
+ mFunctions.insert(249, std::bind(&Gles::callGlGetPathCommandsNV, this, _1, _2));
+ mFunctions.insert(250, std::bind(&Gles::callGlGetPathCoordsNV, this, _1, _2));
+ mFunctions.insert(251, std::bind(&Gles::callGlGetPathDashArrayNV, this, _1, _2));
+ mFunctions.insert(252, std::bind(&Gles::callGlGetPathLengthNV, this, _1, _2));
+ mFunctions.insert(253, std::bind(&Gles::callGlGetPathMetricRangeNV, this, _1, _2));
+ mFunctions.insert(254, std::bind(&Gles::callGlGetPathMetricsNV, this, _1, _2));
+ mFunctions.insert(255, std::bind(&Gles::callGlGetPathParameterfvNV, this, _1, _2));
+ mFunctions.insert(256, std::bind(&Gles::callGlGetPathParameterivNV, this, _1, _2));
+ mFunctions.insert(257, std::bind(&Gles::callGlGetPathSpacingNV, this, _1, _2));
+ mFunctions.insert(258, std::bind(&Gles::callGlGetPerfCounterInfoINTEL, this, _1, _2));
+ mFunctions.insert(259, std::bind(&Gles::callGlGetPerfMonitorCounterDataAMD, this, _1, _2));
+ mFunctions.insert(260, std::bind(&Gles::callGlGetPerfMonitorCounterInfoAMD, this, _1, _2));
+ mFunctions.insert(261, std::bind(&Gles::callGlGetPerfMonitorCounterStringAMD, this, _1, _2));
+ mFunctions.insert(262, std::bind(&Gles::callGlGetPerfMonitorCountersAMD, this, _1, _2));
+ mFunctions.insert(263, std::bind(&Gles::callGlGetPerfMonitorGroupStringAMD, this, _1, _2));
+ mFunctions.insert(264, std::bind(&Gles::callGlGetPerfMonitorGroupsAMD, this, _1, _2));
+ mFunctions.insert(265, std::bind(&Gles::callGlGetPerfQueryDataINTEL, this, _1, _2));
+ mFunctions.insert(266, std::bind(&Gles::callGlGetPerfQueryIdByNameINTEL, this, _1, _2));
+ mFunctions.insert(267, std::bind(&Gles::callGlGetPerfQueryInfoINTEL, this, _1, _2));
+ mFunctions.insert(268, std::bind(&Gles::callGlGetProgramBinaryOES, this, _1, _2));
+ mFunctions.insert(269, std::bind(&Gles::callGlGetProgramPipelineInfoLogEXT, this, _1, _2));
+ mFunctions.insert(270, std::bind(&Gles::callGlGetProgramPipelineivEXT, this, _1, _2));
+ mFunctions.insert(271, std::bind(&Gles::callGlGetProgramResourceLocationIndexEXT, this, _1, _2));
+ mFunctions.insert(272, std::bind(&Gles::callGlGetProgramResourcefvNV, this, _1, _2));
+ mFunctions.insert(273, std::bind(&Gles::callGlGetQueryObjecti64vEXT, this, _1, _2));
+ mFunctions.insert(274, std::bind(&Gles::callGlGetQueryObjectivEXT, this, _1, _2));
+ mFunctions.insert(275, std::bind(&Gles::callGlGetQueryObjectui64vEXT, this, _1, _2));
+ mFunctions.insert(276, std::bind(&Gles::callGlGetQueryObjectuivEXT, this, _1, _2));
+ mFunctions.insert(277, std::bind(&Gles::callGlGetQueryivEXT, this, _1, _2));
+ mFunctions.insert(278, std::bind(&Gles::callGlGetSamplerParameterIivOES, this, _1, _2));
+ mFunctions.insert(279, std::bind(&Gles::callGlGetSamplerParameterIuivOES, this, _1, _2));
+ mFunctions.insert(280, std::bind(&Gles::callGlGetSyncivAPPLE, this, _1, _2));
+ mFunctions.insert(281, std::bind(&Gles::callGlGetTexParameterIivOES, this, _1, _2));
+ mFunctions.insert(282, std::bind(&Gles::callGlGetTexParameterIuivOES, this, _1, _2));
+ mFunctions.insert(283, std::bind(&Gles::callGlGetTextureHandleNV, this, _1, _2));
+ mFunctions.insert(284, std::bind(&Gles::callGlGetTextureSamplerHandleNV, this, _1, _2));
+ mFunctions.insert(285, std::bind(&Gles::callGlGetTranslatedShaderSourceANGLE, this, _1, _2));
+ mFunctions.insert(286, std::bind(&Gles::callGlGetnUniformfvEXT, this, _1, _2));
+ mFunctions.insert(287, std::bind(&Gles::callGlGetnUniformfvKHR, this, _1, _2));
+ mFunctions.insert(288, std::bind(&Gles::callGlGetnUniformivEXT, this, _1, _2));
+ mFunctions.insert(289, std::bind(&Gles::callGlGetnUniformivKHR, this, _1, _2));
+ mFunctions.insert(290, std::bind(&Gles::callGlGetnUniformuivKHR, this, _1, _2));
+ mFunctions.insert(291, std::bind(&Gles::callGlInsertEventMarkerEXT, this, _1, _2));
+ mFunctions.insert(292, std::bind(&Gles::callGlInterpolatePathsNV, this, _1, _2));
+ mFunctions.insert(293, std::bind(&Gles::callGlIsEnablediNV, this, _1, _2));
+ mFunctions.insert(294, std::bind(&Gles::callGlIsEnablediOES, this, _1, _2));
+ mFunctions.insert(295, std::bind(&Gles::callGlIsFenceNV, this, _1, _2));
+ mFunctions.insert(296, std::bind(&Gles::callGlIsImageHandleResidentNV, this, _1, _2));
+ mFunctions.insert(297, std::bind(&Gles::callGlIsPathNV, this, _1, _2));
+ mFunctions.insert(298, std::bind(&Gles::callGlIsPointInFillPathNV, this, _1, _2));
+ mFunctions.insert(299, std::bind(&Gles::callGlIsPointInStrokePathNV, this, _1, _2));
+ mFunctions.insert(300, std::bind(&Gles::callGlIsProgramPipelineEXT, this, _1, _2));
+ mFunctions.insert(301, std::bind(&Gles::callGlIsQueryEXT, this, _1, _2));
+ mFunctions.insert(302, std::bind(&Gles::callGlIsSyncAPPLE, this, _1, _2));
+ mFunctions.insert(303, std::bind(&Gles::callGlIsTextureHandleResidentNV, this, _1, _2));
+ mFunctions.insert(304, std::bind(&Gles::callGlIsVertexArrayOES, this, _1, _2));
+ mFunctions.insert(305, std::bind(&Gles::callGlLabelObjectEXT, this, _1, _2));
+ mFunctions.insert(306, std::bind(&Gles::callGlMakeImageHandleNonResidentNV, this, _1, _2));
+ mFunctions.insert(307, std::bind(&Gles::callGlMakeImageHandleResidentNV, this, _1, _2));
+ mFunctions.insert(308, std::bind(&Gles::callGlMakeTextureHandleNonResidentNV, this, _1, _2));
+ mFunctions.insert(309, std::bind(&Gles::callGlMakeTextureHandleResidentNV, this, _1, _2));
+ mFunctions.insert(310, std::bind(&Gles::callGlMapBufferOES, this, _1, _2));
+ mFunctions.insert(311, std::bind(&Gles::callGlMapBufferRangeEXT, this, _1, _2));
+ mFunctions.insert(312, std::bind(&Gles::callGlMatrixLoad3x2fNV, this, _1, _2));
+ mFunctions.insert(313, std::bind(&Gles::callGlMatrixLoad3x3fNV, this, _1, _2));
+ mFunctions.insert(314, std::bind(&Gles::callGlMatrixLoadTranspose3x3fNV, this, _1, _2));
+ mFunctions.insert(315, std::bind(&Gles::callGlMatrixMult3x2fNV, this, _1, _2));
+ mFunctions.insert(316, std::bind(&Gles::callGlMatrixMult3x3fNV, this, _1, _2));
+ mFunctions.insert(317, std::bind(&Gles::callGlMatrixMultTranspose3x3fNV, this, _1, _2));
+ mFunctions.insert(318, std::bind(&Gles::callGlMultiDrawArraysEXT, this, _1, _2));
+ mFunctions.insert(319, std::bind(&Gles::callGlMultiDrawArraysIndirectEXT, this, _1, _2));
+ mFunctions.insert(320, std::bind(&Gles::callGlMultiDrawElementsBaseVertexEXT, this, _1, _2));
+ mFunctions.insert(321, std::bind(&Gles::callGlMultiDrawElementsBaseVertexOES, this, _1, _2));
+ mFunctions.insert(322, std::bind(&Gles::callGlMultiDrawElementsEXT, this, _1, _2));
+ mFunctions.insert(323, std::bind(&Gles::callGlMultiDrawElementsIndirectEXT, this, _1, _2));
+ mFunctions.insert(324, std::bind(&Gles::callGlNamedFramebufferSampleLocationsfvNV, this, _1, _2));
+ mFunctions.insert(325, std::bind(&Gles::callGlPatchParameteriOES, this, _1, _2));
+ mFunctions.insert(326, std::bind(&Gles::callGlPathCommandsNV, this, _1, _2));
+ mFunctions.insert(327, std::bind(&Gles::callGlPathCoordsNV, this, _1, _2));
+ mFunctions.insert(328, std::bind(&Gles::callGlPathCoverDepthFuncNV, this, _1, _2));
+ mFunctions.insert(329, std::bind(&Gles::callGlPathDashArrayNV, this, _1, _2));
+ mFunctions.insert(330, std::bind(&Gles::callGlPathGlyphIndexArrayNV, this, _1, _2));
+ mFunctions.insert(331, std::bind(&Gles::callGlPathGlyphIndexRangeNV, this, _1, _2));
+ mFunctions.insert(332, std::bind(&Gles::callGlPathGlyphRangeNV, this, _1, _2));
+ mFunctions.insert(333, std::bind(&Gles::callGlPathGlyphsNV, this, _1, _2));
+ mFunctions.insert(334, std::bind(&Gles::callGlPathMemoryGlyphIndexArrayNV, this, _1, _2));
+ mFunctions.insert(335, std::bind(&Gles::callGlPathParameterfNV, this, _1, _2));
+ mFunctions.insert(336, std::bind(&Gles::callGlPathParameterfvNV, this, _1, _2));
+ mFunctions.insert(337, std::bind(&Gles::callGlPathParameteriNV, this, _1, _2));
+ mFunctions.insert(338, std::bind(&Gles::callGlPathParameterivNV, this, _1, _2));
+ mFunctions.insert(339, std::bind(&Gles::callGlPathStencilDepthOffsetNV, this, _1, _2));
+ mFunctions.insert(340, std::bind(&Gles::callGlPathStencilFuncNV, this, _1, _2));
+ mFunctions.insert(341, std::bind(&Gles::callGlPathStringNV, this, _1, _2));
+ mFunctions.insert(342, std::bind(&Gles::callGlPathSubCommandsNV, this, _1, _2));
+ mFunctions.insert(343, std::bind(&Gles::callGlPathSubCoordsNV, this, _1, _2));
+ mFunctions.insert(344, std::bind(&Gles::callGlPointAlongPathNV, this, _1, _2));
+ mFunctions.insert(345, std::bind(&Gles::callGlPolygonModeNV, this, _1, _2));
+ mFunctions.insert(346, std::bind(&Gles::callGlPopGroupMarkerEXT, this, _1, _2));
+ mFunctions.insert(347, std::bind(&Gles::callGlPrimitiveBoundingBoxOES, this, _1, _2));
+ mFunctions.insert(348, std::bind(&Gles::callGlProgramBinaryOES, this, _1, _2));
+ mFunctions.insert(349, std::bind(&Gles::callGlProgramParameteriEXT, this, _1, _2));
+ mFunctions.insert(350, std::bind(&Gles::callGlProgramPathFragmentInputGenNV, this, _1, _2));
+ mFunctions.insert(351, std::bind(&Gles::callGlProgramUniform1fEXT, this, _1, _2));
+ mFunctions.insert(352, std::bind(&Gles::callGlProgramUniform1fvEXT, this, _1, _2));
+ mFunctions.insert(353, std::bind(&Gles::callGlProgramUniform1iEXT, this, _1, _2));
+ mFunctions.insert(354, std::bind(&Gles::callGlProgramUniform1ivEXT, this, _1, _2));
+ mFunctions.insert(355, std::bind(&Gles::callGlProgramUniform1uiEXT, this, _1, _2));
+ mFunctions.insert(356, std::bind(&Gles::callGlProgramUniform1uivEXT, this, _1, _2));
+ mFunctions.insert(357, std::bind(&Gles::callGlProgramUniform2fEXT, this, _1, _2));
+ mFunctions.insert(358, std::bind(&Gles::callGlProgramUniform2fvEXT, this, _1, _2));
+ mFunctions.insert(359, std::bind(&Gles::callGlProgramUniform2iEXT, this, _1, _2));
+ mFunctions.insert(360, std::bind(&Gles::callGlProgramUniform2ivEXT, this, _1, _2));
+ mFunctions.insert(361, std::bind(&Gles::callGlProgramUniform2uiEXT, this, _1, _2));
+ mFunctions.insert(362, std::bind(&Gles::callGlProgramUniform2uivEXT, this, _1, _2));
+ mFunctions.insert(363, std::bind(&Gles::callGlProgramUniform3fEXT, this, _1, _2));
+ mFunctions.insert(364, std::bind(&Gles::callGlProgramUniform3fvEXT, this, _1, _2));
+ mFunctions.insert(365, std::bind(&Gles::callGlProgramUniform3iEXT, this, _1, _2));
+ mFunctions.insert(366, std::bind(&Gles::callGlProgramUniform3ivEXT, this, _1, _2));
+ mFunctions.insert(367, std::bind(&Gles::callGlProgramUniform3uiEXT, this, _1, _2));
+ mFunctions.insert(368, std::bind(&Gles::callGlProgramUniform3uivEXT, this, _1, _2));
+ mFunctions.insert(369, std::bind(&Gles::callGlProgramUniform4fEXT, this, _1, _2));
+ mFunctions.insert(370, std::bind(&Gles::callGlProgramUniform4fvEXT, this, _1, _2));
+ mFunctions.insert(371, std::bind(&Gles::callGlProgramUniform4iEXT, this, _1, _2));
+ mFunctions.insert(372, std::bind(&Gles::callGlProgramUniform4ivEXT, this, _1, _2));
+ mFunctions.insert(373, std::bind(&Gles::callGlProgramUniform4uiEXT, this, _1, _2));
+ mFunctions.insert(374, std::bind(&Gles::callGlProgramUniform4uivEXT, this, _1, _2));
+ mFunctions.insert(375, std::bind(&Gles::callGlProgramUniformHandleui64NV, this, _1, _2));
+ mFunctions.insert(376, std::bind(&Gles::callGlProgramUniformHandleui64vNV, this, _1, _2));
+ mFunctions.insert(377, std::bind(&Gles::callGlProgramUniformMatrix2fvEXT, this, _1, _2));
+ mFunctions.insert(378, std::bind(&Gles::callGlProgramUniformMatrix2x3fvEXT, this, _1, _2));
+ mFunctions.insert(379, std::bind(&Gles::callGlProgramUniformMatrix2x4fvEXT, this, _1, _2));
+ mFunctions.insert(380, std::bind(&Gles::callGlProgramUniformMatrix3fvEXT, this, _1, _2));
+ mFunctions.insert(381, std::bind(&Gles::callGlProgramUniformMatrix3x2fvEXT, this, _1, _2));
+ mFunctions.insert(382, std::bind(&Gles::callGlProgramUniformMatrix3x4fvEXT, this, _1, _2));
+ mFunctions.insert(383, std::bind(&Gles::callGlProgramUniformMatrix4fvEXT, this, _1, _2));
+ mFunctions.insert(384, std::bind(&Gles::callGlProgramUniformMatrix4x2fvEXT, this, _1, _2));
+ mFunctions.insert(385, std::bind(&Gles::callGlProgramUniformMatrix4x3fvEXT, this, _1, _2));
+ mFunctions.insert(386, std::bind(&Gles::callGlPushGroupMarkerEXT, this, _1, _2));
+ mFunctions.insert(387, std::bind(&Gles::callGlQueryCounterEXT, this, _1, _2));
+ mFunctions.insert(388, std::bind(&Gles::callGlRasterSamplesEXT, this, _1, _2));
+ mFunctions.insert(389, std::bind(&Gles::callGlReadBufferIndexedEXT, this, _1, _2));
+ mFunctions.insert(390, std::bind(&Gles::callGlReadBufferNV, this, _1, _2));
+ mFunctions.insert(391, std::bind(&Gles::callGlReadnPixelsEXT, this, _1, _2));
+ mFunctions.insert(392, std::bind(&Gles::callGlReadnPixelsKHR, this, _1, _2));
+ mFunctions.insert(393, std::bind(&Gles::callGlRenderbufferStorageMultisampleANGLE, this, _1, _2));
+ mFunctions.insert(394, std::bind(&Gles::callGlRenderbufferStorageMultisampleAPPLE, this, _1, _2));
+ mFunctions.insert(395, std::bind(&Gles::callGlRenderbufferStorageMultisampleEXT, this, _1, _2));
+ mFunctions.insert(396, std::bind(&Gles::callGlRenderbufferStorageMultisampleIMG, this, _1, _2));
+ mFunctions.insert(397, std::bind(&Gles::callGlRenderbufferStorageMultisampleNV, this, _1, _2));
+ mFunctions.insert(398, std::bind(&Gles::callGlResolveDepthValuesNV, this, _1, _2));
+ mFunctions.insert(399, std::bind(&Gles::callGlResolveMultisampleFramebufferAPPLE, this, _1, _2));
+ mFunctions.insert(400, std::bind(&Gles::callGlSamplerParameterIivOES, this, _1, _2));
+ mFunctions.insert(401, std::bind(&Gles::callGlSamplerParameterIuivOES, this, _1, _2));
+ mFunctions.insert(402, std::bind(&Gles::callGlScissorArrayvNV, this, _1, _2));
+ mFunctions.insert(403, std::bind(&Gles::callGlScissorIndexedNV, this, _1, _2));
+ mFunctions.insert(404, std::bind(&Gles::callGlScissorIndexedvNV, this, _1, _2));
+ mFunctions.insert(405, std::bind(&Gles::callGlSelectPerfMonitorCountersAMD, this, _1, _2));
+ mFunctions.insert(406, std::bind(&Gles::callGlSetFenceNV, this, _1, _2));
+ mFunctions.insert(407, std::bind(&Gles::callGlStartTilingQCOM, this, _1, _2));
+ mFunctions.insert(408, std::bind(&Gles::callGlStencilFillPathInstancedNV, this, _1, _2));
+ mFunctions.insert(409, std::bind(&Gles::callGlStencilFillPathNV, this, _1, _2));
+ mFunctions.insert(410, std::bind(&Gles::callGlStencilStrokePathInstancedNV, this, _1, _2));
+ mFunctions.insert(411, std::bind(&Gles::callGlStencilStrokePathNV, this, _1, _2));
+ mFunctions.insert(412, std::bind(&Gles::callGlStencilThenCoverFillPathInstancedNV, this, _1, _2));
+ mFunctions.insert(413, std::bind(&Gles::callGlStencilThenCoverFillPathNV, this, _1, _2));
+ mFunctions.insert(414, std::bind(&Gles::callGlStencilThenCoverStrokePathInstancedNV, this, _1, _2));
+ mFunctions.insert(415, std::bind(&Gles::callGlStencilThenCoverStrokePathNV, this, _1, _2));
+ mFunctions.insert(416, std::bind(&Gles::callGlSubpixelPrecisionBiasNV, this, _1, _2));
+ mFunctions.insert(417, std::bind(&Gles::callGlTestFenceNV, this, _1, _2));
+ mFunctions.insert(418, std::bind(&Gles::callGlTexBufferOES, this, _1, _2));
+ mFunctions.insert(419, std::bind(&Gles::callGlTexBufferRangeOES, this, _1, _2));
+ mFunctions.insert(420, std::bind(&Gles::callGlTexImage3DOES, this, _1, _2));
+ mFunctions.insert(421, std::bind(&Gles::callGlTexPageCommitmentEXT, this, _1, _2));
+ mFunctions.insert(422, std::bind(&Gles::callGlTexParameterIivOES, this, _1, _2));
+ mFunctions.insert(423, std::bind(&Gles::callGlTexParameterIuivOES, this, _1, _2));
+ mFunctions.insert(424, std::bind(&Gles::callGlTexStorage1DEXT, this, _1, _2));
+ mFunctions.insert(425, std::bind(&Gles::callGlTexStorage2DEXT, this, _1, _2));
+ mFunctions.insert(426, std::bind(&Gles::callGlTexStorage3DEXT, this, _1, _2));
+ mFunctions.insert(427, std::bind(&Gles::callGlTexSubImage3DOES, this, _1, _2));
+ mFunctions.insert(428, std::bind(&Gles::callGlTextureStorage1DEXT, this, _1, _2));
+ mFunctions.insert(429, std::bind(&Gles::callGlTextureStorage2DEXT, this, _1, _2));
+ mFunctions.insert(430, std::bind(&Gles::callGlTextureStorage3DEXT, this, _1, _2));
+ mFunctions.insert(431, std::bind(&Gles::callGlTextureViewEXT, this, _1, _2));
+ mFunctions.insert(432, std::bind(&Gles::callGlTextureViewOES, this, _1, _2));
+ mFunctions.insert(433, std::bind(&Gles::callGlTransformPathNV, this, _1, _2));
+ mFunctions.insert(434, std::bind(&Gles::callGlUniformHandleui64NV, this, _1, _2));
+ mFunctions.insert(435, std::bind(&Gles::callGlUniformHandleui64vNV, this, _1, _2));
+ mFunctions.insert(436, std::bind(&Gles::callGlUniformMatrix2x3fvNV, this, _1, _2));
+ mFunctions.insert(437, std::bind(&Gles::callGlUniformMatrix2x4fvNV, this, _1, _2));
+ mFunctions.insert(438, std::bind(&Gles::callGlUniformMatrix3x2fvNV, this, _1, _2));
+ mFunctions.insert(439, std::bind(&Gles::callGlUniformMatrix3x4fvNV, this, _1, _2));
+ mFunctions.insert(440, std::bind(&Gles::callGlUniformMatrix4x2fvNV, this, _1, _2));
+ mFunctions.insert(441, std::bind(&Gles::callGlUniformMatrix4x3fvNV, this, _1, _2));
+ mFunctions.insert(442, std::bind(&Gles::callGlUnmapBufferOES, this, _1, _2));
+ mFunctions.insert(443, std::bind(&Gles::callGlUseProgramStagesEXT, this, _1, _2));
+ mFunctions.insert(444, std::bind(&Gles::callGlValidateProgramPipelineEXT, this, _1, _2));
+ mFunctions.insert(445, std::bind(&Gles::callGlVertexAttribDivisorANGLE, this, _1, _2));
+ mFunctions.insert(446, std::bind(&Gles::callGlVertexAttribDivisorEXT, this, _1, _2));
+ mFunctions.insert(447, std::bind(&Gles::callGlVertexAttribDivisorNV, this, _1, _2));
+ mFunctions.insert(448, std::bind(&Gles::callGlViewportArrayvNV, this, _1, _2));
+ mFunctions.insert(449, std::bind(&Gles::callGlViewportIndexedfNV, this, _1, _2));
+ mFunctions.insert(450, std::bind(&Gles::callGlViewportIndexedfvNV, this, _1, _2));
+ mFunctions.insert(451, std::bind(&Gles::callGlWaitSyncAPPLE, this, _1, _2));
+ mFunctions.insert(452, std::bind(&Gles::callGlWeightPathsNV, this, _1, _2));
+ mFunctions.insert(453, std::bind(&Gles::callGlClearPixelLocalStorageuiEXT, this, _1, _2));
+ mFunctions.insert(454, std::bind(&Gles::callGlClearTexImageEXT, this, _1, _2));
+ mFunctions.insert(455, std::bind(&Gles::callGlClearTexSubImageEXT, this, _1, _2));
+ mFunctions.insert(456, std::bind(&Gles::callGlConservativeRasterParameteriNV, this, _1, _2));
+ mFunctions.insert(457, std::bind(&Gles::callGlDepthRangeArrayfvOES, this, _1, _2));
+ mFunctions.insert(458, std::bind(&Gles::callGlDepthRangeIndexedfOES, this, _1, _2));
+ mFunctions.insert(459, std::bind(&Gles::callGlDrawTransformFeedbackEXT, this, _1, _2));
+ mFunctions.insert(460, std::bind(&Gles::callGlDrawTransformFeedbackInstancedEXT, this, _1, _2));
+ mFunctions.insert(461, std::bind(&Gles::callGlFramebufferPixelLocalStorageSizeEXT, this, _1, _2));
+ mFunctions.insert(462, std::bind(&Gles::callGlFramebufferTexture2DDownsampleIMG, this, _1, _2));
+ mFunctions.insert(463, std::bind(&Gles::callGlFramebufferTextureLayerDownsampleIMG, this, _1, _2));
+ mFunctions.insert(464, std::bind(&Gles::callGlFramebufferTextureMultisampleMultiviewOVR, this, _1, _2));
+ mFunctions.insert(465, std::bind(&Gles::callGlGetFloatiVOES, this, _1, _2));
+ mFunctions.insert(466, std::bind(&Gles::callGlGetFramebufferPixelLocalStorageSizeEXT, this, _1, _2));
+ mFunctions.insert(467, std::bind(&Gles::callGlGetTextureHandleIMG, this, _1, _2));
+ mFunctions.insert(468, std::bind(&Gles::callGlGetTextureSamplerHandleIMG, this, _1, _2));
+ mFunctions.insert(469, std::bind(&Gles::callGlGetUniformi64vNV, this, _1, _2));
+ mFunctions.insert(470, std::bind(&Gles::callGlPolygonOffsetClampEXT, this, _1, _2));
+ mFunctions.insert(471, std::bind(&Gles::callGlProgramUniform1i64NV, this, _1, _2));
+ mFunctions.insert(472, std::bind(&Gles::callGlProgramUniform1i64vNV, this, _1, _2));
+ mFunctions.insert(473, std::bind(&Gles::callGlProgramUniform1ui64NV, this, _1, _2));
+ mFunctions.insert(474, std::bind(&Gles::callGlProgramUniform1ui64vNV, this, _1, _2));
+ mFunctions.insert(475, std::bind(&Gles::callGlProgramUniform2i64NV, this, _1, _2));
+ mFunctions.insert(476, std::bind(&Gles::callGlProgramUniform2i64vNV, this, _1, _2));
+ mFunctions.insert(477, std::bind(&Gles::callGlProgramUniform2ui64NV, this, _1, _2));
+ mFunctions.insert(478, std::bind(&Gles::callGlProgramUniform2ui64vNV, this, _1, _2));
+ mFunctions.insert(479, std::bind(&Gles::callGlProgramUniform3i64NV, this, _1, _2));
+ mFunctions.insert(480, std::bind(&Gles::callGlProgramUniform3i64vNV, this, _1, _2));
+ mFunctions.insert(481, std::bind(&Gles::callGlProgramUniform3ui64NV, this, _1, _2));
+ mFunctions.insert(482, std::bind(&Gles::callGlProgramUniform3ui64vNV, this, _1, _2));
+ mFunctions.insert(483, std::bind(&Gles::callGlProgramUniform4i64NV, this, _1, _2));
+ mFunctions.insert(484, std::bind(&Gles::callGlProgramUniform4i64vNV, this, _1, _2));
+ mFunctions.insert(485, std::bind(&Gles::callGlProgramUniform4ui64NV, this, _1, _2));
+ mFunctions.insert(486, std::bind(&Gles::callGlProgramUniform4ui64vNV, this, _1, _2));
+ mFunctions.insert(487, std::bind(&Gles::callGlProgramUniformHandleui64IMG, this, _1, _2));
+ mFunctions.insert(488, std::bind(&Gles::callGlProgramUniformHandleui64vIMG, this, _1, _2));
+ mFunctions.insert(489, std::bind(&Gles::callGlScissorArrayvOES, this, _1, _2));
+ mFunctions.insert(490, std::bind(&Gles::callGlScissorIndexedOES, this, _1, _2));
+ mFunctions.insert(491, std::bind(&Gles::callGlScissorIndexedvOES, this, _1, _2));
+ mFunctions.insert(492, std::bind(&Gles::callGlUniform1i64NV, this, _1, _2));
+ mFunctions.insert(493, std::bind(&Gles::callGlUniform1i64vNV, this, _1, _2));
+ mFunctions.insert(494, std::bind(&Gles::callGlUniform1ui64NV, this, _1, _2));
+ mFunctions.insert(495, std::bind(&Gles::callGlUniform1ui64vNV, this, _1, _2));
+ mFunctions.insert(496, std::bind(&Gles::callGlUniform2i64NV, this, _1, _2));
+ mFunctions.insert(497, std::bind(&Gles::callGlUniform2i64vNV, this, _1, _2));
+ mFunctions.insert(498, std::bind(&Gles::callGlUniform2ui64NV, this, _1, _2));
+ mFunctions.insert(499, std::bind(&Gles::callGlUniform2ui64vNV, this, _1, _2));
+ mFunctions.insert(500, std::bind(&Gles::callGlUniform3i64NV, this, _1, _2));
+ mFunctions.insert(501, std::bind(&Gles::callGlUniform3i64vNV, this, _1, _2));
+ mFunctions.insert(502, std::bind(&Gles::callGlUniform3ui64NV, this, _1, _2));
+ mFunctions.insert(503, std::bind(&Gles::callGlUniform3ui64vNV, this, _1, _2));
+ mFunctions.insert(504, std::bind(&Gles::callGlUniform4i64NV, this, _1, _2));
+ mFunctions.insert(505, std::bind(&Gles::callGlUniform4i64vNV, this, _1, _2));
+ mFunctions.insert(506, std::bind(&Gles::callGlUniform4ui64NV, this, _1, _2));
+ mFunctions.insert(507, std::bind(&Gles::callGlUniform4ui64vNV, this, _1, _2));
+ mFunctions.insert(508, std::bind(&Gles::callGlUniformHandleui64IMG, this, _1, _2));
+ mFunctions.insert(509, std::bind(&Gles::callGlUniformHandleui64vIMG, this, _1, _2));
+ mFunctions.insert(510, std::bind(&Gles::callGlViewportArrayvOES, this, _1, _2));
+ mFunctions.insert(511, std::bind(&Gles::callGlViewportIndexedfOES, this, _1, _2));
+ mFunctions.insert(512, std::bind(&Gles::callGlViewportIndexedfvOES, this, _1, _2));
+ mFunctions.insert(513, std::bind(&Gles::callGlViewportSwizzleNV, this, _1, _2));
+ mFunctions.insert(514, std::bind(&Gles::callGlWindowRectanglesEXT, this, _1, _2));
+ mFunctions.insert(515, std::bind(&Gles::callGlBlendBarrier, this, _1, _2));
+ mFunctions.insert(516, std::bind(&Gles::callGlBlendColor, this, _1, _2));
+ mFunctions.insert(517, std::bind(&Gles::callGlBlendEquation, this, _1, _2));
+ mFunctions.insert(518, std::bind(&Gles::callGlBlendEquationSeparate, this, _1, _2));
+ mFunctions.insert(519, std::bind(&Gles::callGlBlendEquationSeparatei, this, _1, _2));
+ mFunctions.insert(520, std::bind(&Gles::callGlBlendEquationi, this, _1, _2));
+ mFunctions.insert(521, std::bind(&Gles::callGlBlendFunc, this, _1, _2));
+ mFunctions.insert(522, std::bind(&Gles::callGlBlendFuncSeparate, this, _1, _2));
+ mFunctions.insert(523, std::bind(&Gles::callGlBlendFuncSeparatei, this, _1, _2));
+ mFunctions.insert(524, std::bind(&Gles::callGlBlendFunci, this, _1, _2));
+ mFunctions.insert(525, std::bind(&Gles::callGlDepthFunc, this, _1, _2));
+ mFunctions.insert(526, std::bind(&Gles::callGlSampleCoverage, this, _1, _2));
+ mFunctions.insert(527, std::bind(&Gles::callGlSampleMaski, this, _1, _2));
+ mFunctions.insert(528, std::bind(&Gles::callGlScissor, this, _1, _2));
+ mFunctions.insert(529, std::bind(&Gles::callGlStencilFunc, this, _1, _2));
+ mFunctions.insert(530, std::bind(&Gles::callGlStencilFuncSeparate, this, _1, _2));
+ mFunctions.insert(531, std::bind(&Gles::callGlStencilOp, this, _1, _2));
+ mFunctions.insert(532, std::bind(&Gles::callGlStencilOpSeparate, this, _1, _2));
+ mFunctions.insert(533, std::bind(&Gles::callGlBindFramebuffer, this, _1, _2));
+ mFunctions.insert(534, std::bind(&Gles::callGlBindRenderbuffer, this, _1, _2));
+ mFunctions.insert(535, std::bind(&Gles::callGlBlitFramebuffer, this, _1, _2));
+ mFunctions.insert(536, std::bind(&Gles::callGlCheckFramebufferStatus, this, _1, _2));
+ mFunctions.insert(537, std::bind(&Gles::callGlClear, this, _1, _2));
+ mFunctions.insert(538, std::bind(&Gles::callGlClearBufferfi, this, _1, _2));
+ mFunctions.insert(539, std::bind(&Gles::callGlClearBufferfv, this, _1, _2));
+ mFunctions.insert(540, std::bind(&Gles::callGlClearBufferiv, this, _1, _2));
+ mFunctions.insert(541, std::bind(&Gles::callGlClearBufferuiv, this, _1, _2));
+ mFunctions.insert(542, std::bind(&Gles::callGlClearColor, this, _1, _2));
+ mFunctions.insert(543, std::bind(&Gles::callGlClearDepthf, this, _1, _2));
+ mFunctions.insert(544, std::bind(&Gles::callGlClearStencil, this, _1, _2));
+ mFunctions.insert(545, std::bind(&Gles::callGlColorMask, this, _1, _2));
+ mFunctions.insert(546, std::bind(&Gles::callGlColorMaski, this, _1, _2));
+ mFunctions.insert(547, std::bind(&Gles::callGlDeleteFramebuffers, this, _1, _2));
+ mFunctions.insert(548, std::bind(&Gles::callGlDeleteRenderbuffers, this, _1, _2));
+ mFunctions.insert(549, std::bind(&Gles::callGlDepthMask, this, _1, _2));
+ mFunctions.insert(550, std::bind(&Gles::callGlDrawBuffers, this, _1, _2));
+ mFunctions.insert(551, std::bind(&Gles::callGlFramebufferParameteri, this, _1, _2));
+ mFunctions.insert(552, std::bind(&Gles::callGlFramebufferRenderbuffer, this, _1, _2));
+ mFunctions.insert(553, std::bind(&Gles::callGlFramebufferTexture, this, _1, _2));
+ mFunctions.insert(554, std::bind(&Gles::callGlFramebufferTexture2D, this, _1, _2));
+ mFunctions.insert(555, std::bind(&Gles::callGlFramebufferTextureLayer, this, _1, _2));
+ mFunctions.insert(556, std::bind(&Gles::callGlGenFramebuffers, this, _1, _2));
+ mFunctions.insert(557, std::bind(&Gles::callGlGenRenderbuffers, this, _1, _2));
+ mFunctions.insert(558, std::bind(&Gles::callGlGetFramebufferAttachmentParameteriv, this, _1, _2));
+ mFunctions.insert(559, std::bind(&Gles::callGlGetFramebufferParameteriv, this, _1, _2));
+ mFunctions.insert(560, std::bind(&Gles::callGlGetRenderbufferParameteriv, this, _1, _2));
+ mFunctions.insert(561, std::bind(&Gles::callGlInvalidateFramebuffer, this, _1, _2));
+ mFunctions.insert(562, std::bind(&Gles::callGlInvalidateSubFramebuffer, this, _1, _2));
+ mFunctions.insert(563, std::bind(&Gles::callGlIsFramebuffer, this, _1, _2));
+ mFunctions.insert(564, std::bind(&Gles::callGlIsRenderbuffer, this, _1, _2));
+ mFunctions.insert(565, std::bind(&Gles::callGlReadBuffer, this, _1, _2));
+ mFunctions.insert(566, std::bind(&Gles::callGlReadPixels, this, _1, _2));
+ mFunctions.insert(567, std::bind(&Gles::callGlReadnPixels, this, _1, _2));
+ mFunctions.insert(568, std::bind(&Gles::callGlRenderbufferStorage, this, _1, _2));
+ mFunctions.insert(569, std::bind(&Gles::callGlRenderbufferStorageMultisample, this, _1, _2));
+ mFunctions.insert(570, std::bind(&Gles::callGlStencilMask, this, _1, _2));
+ mFunctions.insert(571, std::bind(&Gles::callGlStencilMaskSeparate, this, _1, _2));
+ mFunctions.insert(572, std::bind(&Gles::callGlDisable, this, _1, _2));
+ mFunctions.insert(573, std::bind(&Gles::callGlDisablei, this, _1, _2));
+ mFunctions.insert(574, std::bind(&Gles::callGlEnable, this, _1, _2));
+ mFunctions.insert(575, std::bind(&Gles::callGlEnablei, this, _1, _2));
+ mFunctions.insert(576, std::bind(&Gles::callGlFinish, this, _1, _2));
+ mFunctions.insert(577, std::bind(&Gles::callGlFlush, this, _1, _2));
+ mFunctions.insert(578, std::bind(&Gles::callGlGetError, this, _1, _2));
+ mFunctions.insert(579, std::bind(&Gles::callGlGetGraphicsResetStatus, this, _1, _2));
+ mFunctions.insert(580, std::bind(&Gles::callGlHint, this, _1, _2));
+ mFunctions.insert(581, std::bind(&Gles::callGlActiveShaderProgram, this, _1, _2));
+ mFunctions.insert(582, std::bind(&Gles::callGlAttachShader, this, _1, _2));
+ mFunctions.insert(583, std::bind(&Gles::callGlBindAttribLocation, this, _1, _2));
+ mFunctions.insert(584, std::bind(&Gles::callGlBindProgramPipeline, this, _1, _2));
+ mFunctions.insert(585, std::bind(&Gles::callGlCompileShader, this, _1, _2));
+ mFunctions.insert(586, std::bind(&Gles::callGlCreateProgram, this, _1, _2));
+ mFunctions.insert(587, std::bind(&Gles::callGlCreateShader, this, _1, _2));
+ mFunctions.insert(588, std::bind(&Gles::callGlCreateShaderProgramv, this, _1, _2));
+ mFunctions.insert(589, std::bind(&Gles::callGlDeleteProgram, this, _1, _2));
+ mFunctions.insert(590, std::bind(&Gles::callGlDeleteProgramPipelines, this, _1, _2));
+ mFunctions.insert(591, std::bind(&Gles::callGlDeleteShader, this, _1, _2));
+ mFunctions.insert(592, std::bind(&Gles::callGlDetachShader, this, _1, _2));
+ mFunctions.insert(593, std::bind(&Gles::callGlDispatchCompute, this, _1, _2));
+ mFunctions.insert(594, std::bind(&Gles::callGlDispatchComputeIndirect, this, _1, _2));
+ mFunctions.insert(595, std::bind(&Gles::callGlGenProgramPipelines, this, _1, _2));
+ mFunctions.insert(596, std::bind(&Gles::callGlGetActiveAttrib, this, _1, _2));
+ mFunctions.insert(597, std::bind(&Gles::callGlGetActiveUniform, this, _1, _2));
+ mFunctions.insert(598, std::bind(&Gles::callGlGetActiveUniformBlockName, this, _1, _2));
+ mFunctions.insert(599, std::bind(&Gles::callGlGetActiveUniformBlockiv, this, _1, _2));
+ mFunctions.insert(600, std::bind(&Gles::callGlGetActiveUniformsiv, this, _1, _2));
+ mFunctions.insert(601, std::bind(&Gles::callGlGetAttachedShaders, this, _1, _2));
+ mFunctions.insert(602, std::bind(&Gles::callGlGetAttribLocation, this, _1, _2));
+ mFunctions.insert(603, std::bind(&Gles::callGlGetFragDataLocation, this, _1, _2));
+ mFunctions.insert(604, std::bind(&Gles::callGlGetProgramBinary, this, _1, _2));
+ mFunctions.insert(605, std::bind(&Gles::callGlGetProgramInfoLog, this, _1, _2));
+ mFunctions.insert(606, std::bind(&Gles::callGlGetProgramInterfaceiv, this, _1, _2));
+ mFunctions.insert(607, std::bind(&Gles::callGlGetProgramPipelineInfoLog, this, _1, _2));
+ mFunctions.insert(608, std::bind(&Gles::callGlGetProgramPipelineiv, this, _1, _2));
+ mFunctions.insert(609, std::bind(&Gles::callGlGetProgramResourceIndex, this, _1, _2));
+ mFunctions.insert(610, std::bind(&Gles::callGlGetProgramResourceLocation, this, _1, _2));
+ mFunctions.insert(611, std::bind(&Gles::callGlGetProgramResourceName, this, _1, _2));
+ mFunctions.insert(612, std::bind(&Gles::callGlGetProgramResourceiv, this, _1, _2));
+ mFunctions.insert(613, std::bind(&Gles::callGlGetProgramiv, this, _1, _2));
+ mFunctions.insert(614, std::bind(&Gles::callGlGetShaderInfoLog, this, _1, _2));
+ mFunctions.insert(615, std::bind(&Gles::callGlGetShaderPrecisionFormat, this, _1, _2));
+ mFunctions.insert(616, std::bind(&Gles::callGlGetShaderSource, this, _1, _2));
+ mFunctions.insert(617, std::bind(&Gles::callGlGetShaderiv, this, _1, _2));
+ mFunctions.insert(618, std::bind(&Gles::callGlGetUniformBlockIndex, this, _1, _2));
+ mFunctions.insert(619, std::bind(&Gles::callGlGetUniformIndices, this, _1, _2));
+ mFunctions.insert(620, std::bind(&Gles::callGlGetUniformLocation, this, _1, _2));
+ mFunctions.insert(621, std::bind(&Gles::callGlGetUniformfv, this, _1, _2));
+ mFunctions.insert(622, std::bind(&Gles::callGlGetUniformiv, this, _1, _2));
+ mFunctions.insert(623, std::bind(&Gles::callGlGetUniformuiv, this, _1, _2));
+ mFunctions.insert(624, std::bind(&Gles::callGlGetnUniformfv, this, _1, _2));
+ mFunctions.insert(625, std::bind(&Gles::callGlGetnUniformiv, this, _1, _2));
+ mFunctions.insert(626, std::bind(&Gles::callGlGetnUniformuiv, this, _1, _2));
+ mFunctions.insert(627, std::bind(&Gles::callGlIsProgram, this, _1, _2));
+ mFunctions.insert(628, std::bind(&Gles::callGlIsProgramPipeline, this, _1, _2));
+ mFunctions.insert(629, std::bind(&Gles::callGlIsShader, this, _1, _2));
+ mFunctions.insert(630, std::bind(&Gles::callGlLinkProgram, this, _1, _2));
+ mFunctions.insert(631, std::bind(&Gles::callGlMemoryBarrier, this, _1, _2));
+ mFunctions.insert(632, std::bind(&Gles::callGlMemoryBarrierByRegion, this, _1, _2));
+ mFunctions.insert(633, std::bind(&Gles::callGlProgramBinary, this, _1, _2));
+ mFunctions.insert(634, std::bind(&Gles::callGlProgramParameteri, this, _1, _2));
+ mFunctions.insert(635, std::bind(&Gles::callGlProgramUniform1f, this, _1, _2));
+ mFunctions.insert(636, std::bind(&Gles::callGlProgramUniform1fv, this, _1, _2));
+ mFunctions.insert(637, std::bind(&Gles::callGlProgramUniform1i, this, _1, _2));
+ mFunctions.insert(638, std::bind(&Gles::callGlProgramUniform1iv, this, _1, _2));
+ mFunctions.insert(639, std::bind(&Gles::callGlProgramUniform1ui, this, _1, _2));
+ mFunctions.insert(640, std::bind(&Gles::callGlProgramUniform1uiv, this, _1, _2));
+ mFunctions.insert(641, std::bind(&Gles::callGlProgramUniform2f, this, _1, _2));
+ mFunctions.insert(642, std::bind(&Gles::callGlProgramUniform2fv, this, _1, _2));
+ mFunctions.insert(643, std::bind(&Gles::callGlProgramUniform2i, this, _1, _2));
+ mFunctions.insert(644, std::bind(&Gles::callGlProgramUniform2iv, this, _1, _2));
+ mFunctions.insert(645, std::bind(&Gles::callGlProgramUniform2ui, this, _1, _2));
+ mFunctions.insert(646, std::bind(&Gles::callGlProgramUniform2uiv, this, _1, _2));
+ mFunctions.insert(647, std::bind(&Gles::callGlProgramUniform3f, this, _1, _2));
+ mFunctions.insert(648, std::bind(&Gles::callGlProgramUniform3fv, this, _1, _2));
+ mFunctions.insert(649, std::bind(&Gles::callGlProgramUniform3i, this, _1, _2));
+ mFunctions.insert(650, std::bind(&Gles::callGlProgramUniform3iv, this, _1, _2));
+ mFunctions.insert(651, std::bind(&Gles::callGlProgramUniform3ui, this, _1, _2));
+ mFunctions.insert(652, std::bind(&Gles::callGlProgramUniform3uiv, this, _1, _2));
+ mFunctions.insert(653, std::bind(&Gles::callGlProgramUniform4f, this, _1, _2));
+ mFunctions.insert(654, std::bind(&Gles::callGlProgramUniform4fv, this, _1, _2));
+ mFunctions.insert(655, std::bind(&Gles::callGlProgramUniform4i, this, _1, _2));
+ mFunctions.insert(656, std::bind(&Gles::callGlProgramUniform4iv, this, _1, _2));
+ mFunctions.insert(657, std::bind(&Gles::callGlProgramUniform4ui, this, _1, _2));
+ mFunctions.insert(658, std::bind(&Gles::callGlProgramUniform4uiv, this, _1, _2));
+ mFunctions.insert(659, std::bind(&Gles::callGlProgramUniformMatrix2fv, this, _1, _2));
+ mFunctions.insert(660, std::bind(&Gles::callGlProgramUniformMatrix2x3fv, this, _1, _2));
+ mFunctions.insert(661, std::bind(&Gles::callGlProgramUniformMatrix2x4fv, this, _1, _2));
+ mFunctions.insert(662, std::bind(&Gles::callGlProgramUniformMatrix3fv, this, _1, _2));
+ mFunctions.insert(663, std::bind(&Gles::callGlProgramUniformMatrix3x2fv, this, _1, _2));
+ mFunctions.insert(664, std::bind(&Gles::callGlProgramUniformMatrix3x4fv, this, _1, _2));
+ mFunctions.insert(665, std::bind(&Gles::callGlProgramUniformMatrix4fv, this, _1, _2));
+ mFunctions.insert(666, std::bind(&Gles::callGlProgramUniformMatrix4x2fv, this, _1, _2));
+ mFunctions.insert(667, std::bind(&Gles::callGlProgramUniformMatrix4x3fv, this, _1, _2));
+ mFunctions.insert(668, std::bind(&Gles::callGlReleaseShaderCompiler, this, _1, _2));
+ mFunctions.insert(669, std::bind(&Gles::callGlShaderBinary, this, _1, _2));
+ mFunctions.insert(670, std::bind(&Gles::callGlShaderSource, this, _1, _2));
+ mFunctions.insert(671, std::bind(&Gles::callGlUniform1f, this, _1, _2));
+ mFunctions.insert(672, std::bind(&Gles::callGlUniform1fv, this, _1, _2));
+ mFunctions.insert(673, std::bind(&Gles::callGlUniform1i, this, _1, _2));
+ mFunctions.insert(674, std::bind(&Gles::callGlUniform1iv, this, _1, _2));
+ mFunctions.insert(675, std::bind(&Gles::callGlUniform1ui, this, _1, _2));
+ mFunctions.insert(676, std::bind(&Gles::callGlUniform1uiv, this, _1, _2));
+ mFunctions.insert(677, std::bind(&Gles::callGlUniform2f, this, _1, _2));
+ mFunctions.insert(678, std::bind(&Gles::callGlUniform2fv, this, _1, _2));
+ mFunctions.insert(679, std::bind(&Gles::callGlUniform2i, this, _1, _2));
+ mFunctions.insert(680, std::bind(&Gles::callGlUniform2iv, this, _1, _2));
+ mFunctions.insert(681, std::bind(&Gles::callGlUniform2ui, this, _1, _2));
+ mFunctions.insert(682, std::bind(&Gles::callGlUniform2uiv, this, _1, _2));
+ mFunctions.insert(683, std::bind(&Gles::callGlUniform3f, this, _1, _2));
+ mFunctions.insert(684, std::bind(&Gles::callGlUniform3fv, this, _1, _2));
+ mFunctions.insert(685, std::bind(&Gles::callGlUniform3i, this, _1, _2));
+ mFunctions.insert(686, std::bind(&Gles::callGlUniform3iv, this, _1, _2));
+ mFunctions.insert(687, std::bind(&Gles::callGlUniform3ui, this, _1, _2));
+ mFunctions.insert(688, std::bind(&Gles::callGlUniform3uiv, this, _1, _2));
+ mFunctions.insert(689, std::bind(&Gles::callGlUniform4f, this, _1, _2));
+ mFunctions.insert(690, std::bind(&Gles::callGlUniform4fv, this, _1, _2));
+ mFunctions.insert(691, std::bind(&Gles::callGlUniform4i, this, _1, _2));
+ mFunctions.insert(692, std::bind(&Gles::callGlUniform4iv, this, _1, _2));
+ mFunctions.insert(693, std::bind(&Gles::callGlUniform4ui, this, _1, _2));
+ mFunctions.insert(694, std::bind(&Gles::callGlUniform4uiv, this, _1, _2));
+ mFunctions.insert(695, std::bind(&Gles::callGlUniformBlockBinding, this, _1, _2));
+ mFunctions.insert(696, std::bind(&Gles::callGlUniformMatrix2fv, this, _1, _2));
+ mFunctions.insert(697, std::bind(&Gles::callGlUniformMatrix2x3fv, this, _1, _2));
+ mFunctions.insert(698, std::bind(&Gles::callGlUniformMatrix2x4fv, this, _1, _2));
+ mFunctions.insert(699, std::bind(&Gles::callGlUniformMatrix3fv, this, _1, _2));
+ mFunctions.insert(700, std::bind(&Gles::callGlUniformMatrix3x2fv, this, _1, _2));
+ mFunctions.insert(701, std::bind(&Gles::callGlUniformMatrix3x4fv, this, _1, _2));
+ mFunctions.insert(702, std::bind(&Gles::callGlUniformMatrix4fv, this, _1, _2));
+ mFunctions.insert(703, std::bind(&Gles::callGlUniformMatrix4x2fv, this, _1, _2));
+ mFunctions.insert(704, std::bind(&Gles::callGlUniformMatrix4x3fv, this, _1, _2));
+ mFunctions.insert(705, std::bind(&Gles::callGlUseProgram, this, _1, _2));
+ mFunctions.insert(706, std::bind(&Gles::callGlUseProgramStages, this, _1, _2));
+ mFunctions.insert(707, std::bind(&Gles::callGlValidateProgram, this, _1, _2));
+ mFunctions.insert(708, std::bind(&Gles::callGlValidateProgramPipeline, this, _1, _2));
+ mFunctions.insert(709, std::bind(&Gles::callGlCullFace, this, _1, _2));
+ mFunctions.insert(710, std::bind(&Gles::callGlDepthRangef, this, _1, _2));
+ mFunctions.insert(711, std::bind(&Gles::callGlFrontFace, this, _1, _2));
+ mFunctions.insert(712, std::bind(&Gles::callGlGetMultisamplefv, this, _1, _2));
+ mFunctions.insert(713, std::bind(&Gles::callGlLineWidth, this, _1, _2));
+ mFunctions.insert(714, std::bind(&Gles::callGlMinSampleShading, this, _1, _2));
+ mFunctions.insert(715, std::bind(&Gles::callGlPolygonOffset, this, _1, _2));
+ mFunctions.insert(716, std::bind(&Gles::callGlViewport, this, _1, _2));
+ mFunctions.insert(717, std::bind(&Gles::callGlGetBooleaniV, this, _1, _2));
+ mFunctions.insert(718, std::bind(&Gles::callGlGetBooleanv, this, _1, _2));
+ mFunctions.insert(719, std::bind(&Gles::callGlGetFloatv, this, _1, _2));
+ mFunctions.insert(720, std::bind(&Gles::callGlGetInteger64iV, this, _1, _2));
+ mFunctions.insert(721, std::bind(&Gles::callGlGetInteger64v, this, _1, _2));
+ mFunctions.insert(722, std::bind(&Gles::callGlGetIntegeriV, this, _1, _2));
+ mFunctions.insert(723, std::bind(&Gles::callGlGetIntegerv, this, _1, _2));
+ mFunctions.insert(724, std::bind(&Gles::callGlGetInternalformativ, this, _1, _2));
+ mFunctions.insert(725, std::bind(&Gles::callGlGetString, this, _1, _2));
+ mFunctions.insert(726, std::bind(&Gles::callGlGetStringi, this, _1, _2));
+ mFunctions.insert(727, std::bind(&Gles::callGlIsEnabled, this, _1, _2));
+ mFunctions.insert(728, std::bind(&Gles::callGlIsEnabledi, this, _1, _2));
+ mFunctions.insert(729, std::bind(&Gles::callGlClientWaitSync, this, _1, _2));
+ mFunctions.insert(730, std::bind(&Gles::callGlDeleteSync, this, _1, _2));
+ mFunctions.insert(731, std::bind(&Gles::callGlFenceSync, this, _1, _2));
+ mFunctions.insert(732, std::bind(&Gles::callGlGetSynciv, this, _1, _2));
+ mFunctions.insert(733, std::bind(&Gles::callGlIsSync, this, _1, _2));
+ mFunctions.insert(734, std::bind(&Gles::callGlWaitSync, this, _1, _2));
+ mFunctions.insert(735, std::bind(&Gles::callGlActiveTexture, this, _1, _2));
+ mFunctions.insert(736, std::bind(&Gles::callGlBindImageTexture, this, _1, _2));
+ mFunctions.insert(737, std::bind(&Gles::callGlBindSampler, this, _1, _2));
+ mFunctions.insert(738, std::bind(&Gles::callGlBindTexture, this, _1, _2));
+ mFunctions.insert(739, std::bind(&Gles::callGlCompressedTexImage2D, this, _1, _2));
+ mFunctions.insert(740, std::bind(&Gles::callGlCompressedTexImage3D, this, _1, _2));
+ mFunctions.insert(741, std::bind(&Gles::callGlCompressedTexSubImage2D, this, _1, _2));
+ mFunctions.insert(742, std::bind(&Gles::callGlCompressedTexSubImage3D, this, _1, _2));
+ mFunctions.insert(743, std::bind(&Gles::callGlCopyImageSubData, this, _1, _2));
+ mFunctions.insert(744, std::bind(&Gles::callGlCopyTexImage2D, this, _1, _2));
+ mFunctions.insert(745, std::bind(&Gles::callGlCopyTexSubImage2D, this, _1, _2));
+ mFunctions.insert(746, std::bind(&Gles::callGlCopyTexSubImage3D, this, _1, _2));
+ mFunctions.insert(747, std::bind(&Gles::callGlDeleteSamplers, this, _1, _2));
+ mFunctions.insert(748, std::bind(&Gles::callGlDeleteTextures, this, _1, _2));
+ mFunctions.insert(749, std::bind(&Gles::callGlGenSamplers, this, _1, _2));
+ mFunctions.insert(750, std::bind(&Gles::callGlGenTextures, this, _1, _2));
+ mFunctions.insert(751, std::bind(&Gles::callGlGenerateMipmap, this, _1, _2));
+ mFunctions.insert(752, std::bind(&Gles::callGlGetSamplerParameterIiv, this, _1, _2));
+ mFunctions.insert(753, std::bind(&Gles::callGlGetSamplerParameterIuiv, this, _1, _2));
+ mFunctions.insert(754, std::bind(&Gles::callGlGetSamplerParameterfv, this, _1, _2));
+ mFunctions.insert(755, std::bind(&Gles::callGlGetSamplerParameteriv, this, _1, _2));
+ mFunctions.insert(756, std::bind(&Gles::callGlGetTexLevelParameterfv, this, _1, _2));
+ mFunctions.insert(757, std::bind(&Gles::callGlGetTexLevelParameteriv, this, _1, _2));
+ mFunctions.insert(758, std::bind(&Gles::callGlGetTexParameterIiv, this, _1, _2));
+ mFunctions.insert(759, std::bind(&Gles::callGlGetTexParameterIuiv, this, _1, _2));
+ mFunctions.insert(760, std::bind(&Gles::callGlGetTexParameterfv, this, _1, _2));
+ mFunctions.insert(761, std::bind(&Gles::callGlGetTexParameteriv, this, _1, _2));
+ mFunctions.insert(762, std::bind(&Gles::callGlIsSampler, this, _1, _2));
+ mFunctions.insert(763, std::bind(&Gles::callGlIsTexture, this, _1, _2));
+ mFunctions.insert(764, std::bind(&Gles::callGlPixelStorei, this, _1, _2));
+ mFunctions.insert(765, std::bind(&Gles::callGlSamplerParameterIiv, this, _1, _2));
+ mFunctions.insert(766, std::bind(&Gles::callGlSamplerParameterIuiv, this, _1, _2));
+ mFunctions.insert(767, std::bind(&Gles::callGlSamplerParameterf, this, _1, _2));
+ mFunctions.insert(768, std::bind(&Gles::callGlSamplerParameterfv, this, _1, _2));
+ mFunctions.insert(769, std::bind(&Gles::callGlSamplerParameteri, this, _1, _2));
+ mFunctions.insert(770, std::bind(&Gles::callGlSamplerParameteriv, this, _1, _2));
+ mFunctions.insert(771, std::bind(&Gles::callGlTexBuffer, this, _1, _2));
+ mFunctions.insert(772, std::bind(&Gles::callGlTexBufferRange, this, _1, _2));
+ mFunctions.insert(773, std::bind(&Gles::callGlTexImage2D, this, _1, _2));
+ mFunctions.insert(774, std::bind(&Gles::callGlTexImage3D, this, _1, _2));
+ mFunctions.insert(775, std::bind(&Gles::callGlTexParameterIiv, this, _1, _2));
+ mFunctions.insert(776, std::bind(&Gles::callGlTexParameterIuiv, this, _1, _2));
+ mFunctions.insert(777, std::bind(&Gles::callGlTexParameterf, this, _1, _2));
+ mFunctions.insert(778, std::bind(&Gles::callGlTexParameterfv, this, _1, _2));
+ mFunctions.insert(779, std::bind(&Gles::callGlTexParameteri, this, _1, _2));
+ mFunctions.insert(780, std::bind(&Gles::callGlTexParameteriv, this, _1, _2));
+ mFunctions.insert(781, std::bind(&Gles::callGlTexStorage2D, this, _1, _2));
+ mFunctions.insert(782, std::bind(&Gles::callGlTexStorage2DMultisample, this, _1, _2));
+ mFunctions.insert(783, std::bind(&Gles::callGlTexStorage3D, this, _1, _2));
+ mFunctions.insert(784, std::bind(&Gles::callGlTexStorage3DMultisample, this, _1, _2));
+ mFunctions.insert(785, std::bind(&Gles::callGlTexSubImage2D, this, _1, _2));
+ mFunctions.insert(786, std::bind(&Gles::callGlTexSubImage3D, this, _1, _2));
+ mFunctions.insert(787, std::bind(&Gles::callGlBeginTransformFeedback, this, _1, _2));
+ mFunctions.insert(788, std::bind(&Gles::callGlBindTransformFeedback, this, _1, _2));
+ mFunctions.insert(789, std::bind(&Gles::callGlDeleteTransformFeedbacks, this, _1, _2));
+ mFunctions.insert(790, std::bind(&Gles::callGlEndTransformFeedback, this, _1, _2));
+ mFunctions.insert(791, std::bind(&Gles::callGlGenTransformFeedbacks, this, _1, _2));
+ mFunctions.insert(792, std::bind(&Gles::callGlGetTransformFeedbackVarying, this, _1, _2));
+ mFunctions.insert(793, std::bind(&Gles::callGlIsTransformFeedback, this, _1, _2));
+ mFunctions.insert(794, std::bind(&Gles::callGlPauseTransformFeedback, this, _1, _2));
+ mFunctions.insert(795, std::bind(&Gles::callGlResumeTransformFeedback, this, _1, _2));
+ mFunctions.insert(796, std::bind(&Gles::callGlTransformFeedbackVaryings, this, _1, _2));
+ mFunctions.insert(797, std::bind(&Gles::callGlBindVertexArray, this, _1, _2));
+ mFunctions.insert(798, std::bind(&Gles::callGlBindVertexBuffer, this, _1, _2));
+ mFunctions.insert(799, std::bind(&Gles::callGlDeleteVertexArrays, this, _1, _2));
+ mFunctions.insert(800, std::bind(&Gles::callGlDisableVertexAttribArray, this, _1, _2));
+ mFunctions.insert(801, std::bind(&Gles::callGlEnableVertexAttribArray, this, _1, _2));
+ mFunctions.insert(802, std::bind(&Gles::callGlGenVertexArrays, this, _1, _2));
+ mFunctions.insert(803, std::bind(&Gles::callGlGetVertexAttribIiv, this, _1, _2));
+ mFunctions.insert(804, std::bind(&Gles::callGlGetVertexAttribIuiv, this, _1, _2));
+ mFunctions.insert(805, std::bind(&Gles::callGlGetVertexAttribPointerv, this, _1, _2));
+ mFunctions.insert(806, std::bind(&Gles::callGlGetVertexAttribfv, this, _1, _2));
+ mFunctions.insert(807, std::bind(&Gles::callGlGetVertexAttribiv, this, _1, _2));
+ mFunctions.insert(808, std::bind(&Gles::callGlIsVertexArray, this, _1, _2));
+ mFunctions.insert(809, std::bind(&Gles::callGlVertexAttrib1f, this, _1, _2));
+ mFunctions.insert(810, std::bind(&Gles::callGlVertexAttrib1fv, this, _1, _2));
+ mFunctions.insert(811, std::bind(&Gles::callGlVertexAttrib2f, this, _1, _2));
+ mFunctions.insert(812, std::bind(&Gles::callGlVertexAttrib2fv, this, _1, _2));
+ mFunctions.insert(813, std::bind(&Gles::callGlVertexAttrib3f, this, _1, _2));
+ mFunctions.insert(814, std::bind(&Gles::callGlVertexAttrib3fv, this, _1, _2));
+ mFunctions.insert(815, std::bind(&Gles::callGlVertexAttrib4f, this, _1, _2));
+ mFunctions.insert(816, std::bind(&Gles::callGlVertexAttrib4fv, this, _1, _2));
+ mFunctions.insert(817, std::bind(&Gles::callGlVertexAttribBinding, this, _1, _2));
+ mFunctions.insert(818, std::bind(&Gles::callGlVertexAttribDivisor, this, _1, _2));
+ mFunctions.insert(819, std::bind(&Gles::callGlVertexAttribFormat, this, _1, _2));
+ mFunctions.insert(820, std::bind(&Gles::callGlVertexAttribI4i, this, _1, _2));
+ mFunctions.insert(821, std::bind(&Gles::callGlVertexAttribI4iv, this, _1, _2));
+ mFunctions.insert(822, std::bind(&Gles::callGlVertexAttribI4ui, this, _1, _2));
+ mFunctions.insert(823, std::bind(&Gles::callGlVertexAttribI4uiv, this, _1, _2));
+ mFunctions.insert(824, std::bind(&Gles::callGlVertexAttribIFormat, this, _1, _2));
+ mFunctions.insert(825, std::bind(&Gles::callGlVertexAttribIPointer, this, _1, _2));
+ mFunctions.insert(826, std::bind(&Gles::callGlVertexAttribPointer, this, _1, _2));
+ mFunctions.insert(827, std::bind(&Gles::callGlVertexBindingDivisor, this, _1, _2));
+ mFunctions.insert(828, std::bind(&Gles::callGlXCreateContext, this, _1, _2));
+ mFunctions.insert(829, std::bind(&Gles::callGlXCreateNewContext, this, _1, _2));
+ mFunctions.insert(830, std::bind(&Gles::callGlXMakeContextCurrent, this, _1, _2));
+ mFunctions.insert(831, std::bind(&Gles::callGlXMakeCurrent, this, _1, _2));
+ mFunctions.insert(832, std::bind(&Gles::callGlXSwapBuffers, this, _1, _2));
+ mFunctions.insert(833, std::bind(&Gles::callGlXQueryDrawable, this, _1, _2));
+ mFunctions.insert(834, std::bind(&Gles::callWglCreateContext, this, _1, _2));
+ mFunctions.insert(835, std::bind(&Gles::callWglCreateContextAttribsARB, this, _1, _2));
+ mFunctions.insert(836, std::bind(&Gles::callWglMakeCurrent, this, _1, _2));
+ mFunctions.insert(837, std::bind(&Gles::callWglSwapBuffers, this, _1, _2));
+ mFunctions.insert(838, std::bind(&Gles::callCGLCreateContext, this, _1, _2));
+ mFunctions.insert(839, std::bind(&Gles::callCGLSetCurrentContext, this, _1, _2));
+ mFunctions.insert(840, std::bind(&Gles::callCGLGetSurface, this, _1, _2));
+ mFunctions.insert(841, std::bind(&Gles::callCGSGetSurfaceBounds, this, _1, _2));
+ mFunctions.insert(842, std::bind(&Gles::callCGLFlushDrawable, this, _1, _2));
+ mFunctions.insert(843, std::bind(&Gles::callGlGetQueryObjecti64v, this, _1, _2));
+ mFunctions.insert(844, std::bind(&Gles::callGlGetQueryObjectui64v, this, _1, _2));
+ mFunctions.insert(845, std::bind(&Gles::callGlTexStorage1D, this, _1, _2));
+ mFunctions.insert(846, std::bind(&Gles::callGlBindFragDataLocation, this, _1, _2));
+ mFunctions.insert(847, std::bind(&Gles::callGlAlphaFunc, this, _1, _2));
+ mFunctions.insert(848, std::bind(&Gles::callGlAlphaFuncx, this, _1, _2));
+ mFunctions.insert(849, std::bind(&Gles::callGlAlphaFuncxOES, this, _1, _2));
+ mFunctions.insert(850, std::bind(&Gles::callGlBindFramebufferOES, this, _1, _2));
+ mFunctions.insert(851, std::bind(&Gles::callGlBindRenderbufferOES, this, _1, _2));
+ mFunctions.insert(852, std::bind(&Gles::callGlBlendEquationOES, this, _1, _2));
+ mFunctions.insert(853, std::bind(&Gles::callGlBlendEquationSeparateOES, this, _1, _2));
+ mFunctions.insert(854, std::bind(&Gles::callGlBlendFuncSeparateOES, this, _1, _2));
+ mFunctions.insert(855, std::bind(&Gles::callGlCheckFramebufferStatusOES, this, _1, _2));
+ mFunctions.insert(856, std::bind(&Gles::callGlClearColorx, this, _1, _2));
+ mFunctions.insert(857, std::bind(&Gles::callGlClearColorxOES, this, _1, _2));
+ mFunctions.insert(858, std::bind(&Gles::callGlClearDepthfOES, this, _1, _2));
+ mFunctions.insert(859, std::bind(&Gles::callGlClearDepthx, this, _1, _2));
+ mFunctions.insert(860, std::bind(&Gles::callGlClearDepthxOES, this, _1, _2));
+ mFunctions.insert(861, std::bind(&Gles::callGlClientActiveTexture, this, _1, _2));
+ mFunctions.insert(862, std::bind(&Gles::callGlClipPlanef, this, _1, _2));
+ mFunctions.insert(863, std::bind(&Gles::callGlClipPlanefIMG, this, _1, _2));
+ mFunctions.insert(864, std::bind(&Gles::callGlClipPlanefOES, this, _1, _2));
+ mFunctions.insert(865, std::bind(&Gles::callGlClipPlanex, this, _1, _2));
+ mFunctions.insert(866, std::bind(&Gles::callGlClipPlanexIMG, this, _1, _2));
+ mFunctions.insert(867, std::bind(&Gles::callGlClipPlanexOES, this, _1, _2));
+ mFunctions.insert(868, std::bind(&Gles::callGlColor4f, this, _1, _2));
+ mFunctions.insert(869, std::bind(&Gles::callGlColor4ub, this, _1, _2));
+ mFunctions.insert(870, std::bind(&Gles::callGlColor4x, this, _1, _2));
+ mFunctions.insert(871, std::bind(&Gles::callGlColor4xOES, this, _1, _2));
+ mFunctions.insert(872, std::bind(&Gles::callGlColorPointer, this, _1, _2));
+ mFunctions.insert(873, std::bind(&Gles::callGlCurrentPaletteMatrixOES, this, _1, _2));
+ mFunctions.insert(874, std::bind(&Gles::callGlDeleteFramebuffersOES, this, _1, _2));
+ mFunctions.insert(875, std::bind(&Gles::callGlDeleteRenderbuffersOES, this, _1, _2));
+ mFunctions.insert(876, std::bind(&Gles::callGlDepthRangefOES, this, _1, _2));
+ mFunctions.insert(877, std::bind(&Gles::callGlDepthRangex, this, _1, _2));
+ mFunctions.insert(878, std::bind(&Gles::callGlDepthRangexOES, this, _1, _2));
+ mFunctions.insert(879, std::bind(&Gles::callGlDisableClientState, this, _1, _2));
+ mFunctions.insert(880, std::bind(&Gles::callGlDrawTexfOES, this, _1, _2));
+ mFunctions.insert(881, std::bind(&Gles::callGlDrawTexfvOES, this, _1, _2));
+ mFunctions.insert(882, std::bind(&Gles::callGlDrawTexiOES, this, _1, _2));
+ mFunctions.insert(883, std::bind(&Gles::callGlDrawTexivOES, this, _1, _2));
+ mFunctions.insert(884, std::bind(&Gles::callGlDrawTexsOES, this, _1, _2));
+ mFunctions.insert(885, std::bind(&Gles::callGlDrawTexsvOES, this, _1, _2));
+ mFunctions.insert(886, std::bind(&Gles::callGlDrawTexxOES, this, _1, _2));
+ mFunctions.insert(887, std::bind(&Gles::callGlDrawTexxvOES, this, _1, _2));
+ mFunctions.insert(888, std::bind(&Gles::callGlEnableClientState, this, _1, _2));
+ mFunctions.insert(889, std::bind(&Gles::callGlFogf, this, _1, _2));
+ mFunctions.insert(890, std::bind(&Gles::callGlFogfv, this, _1, _2));
+ mFunctions.insert(891, std::bind(&Gles::callGlFogx, this, _1, _2));
+ mFunctions.insert(892, std::bind(&Gles::callGlFogxOES, this, _1, _2));
+ mFunctions.insert(893, std::bind(&Gles::callGlFogxv, this, _1, _2));
+ mFunctions.insert(894, std::bind(&Gles::callGlFogxvOES, this, _1, _2));
+ mFunctions.insert(895, std::bind(&Gles::callGlFramebufferRenderbufferOES, this, _1, _2));
+ mFunctions.insert(896, std::bind(&Gles::callGlFramebufferTexture2DOES, this, _1, _2));
+ mFunctions.insert(897, std::bind(&Gles::callGlFrustumf, this, _1, _2));
+ mFunctions.insert(898, std::bind(&Gles::callGlFrustumfOES, this, _1, _2));
+ mFunctions.insert(899, std::bind(&Gles::callGlFrustumx, this, _1, _2));
+ mFunctions.insert(900, std::bind(&Gles::callGlFrustumxOES, this, _1, _2));
+ mFunctions.insert(901, std::bind(&Gles::callGlGenFramebuffersOES, this, _1, _2));
+ mFunctions.insert(902, std::bind(&Gles::callGlGenRenderbuffersOES, this, _1, _2));
+ mFunctions.insert(903, std::bind(&Gles::callGlGenerateMipmapOES, this, _1, _2));
+ mFunctions.insert(904, std::bind(&Gles::callGlGetClipPlanef, this, _1, _2));
+ mFunctions.insert(905, std::bind(&Gles::callGlGetClipPlanefOES, this, _1, _2));
+ mFunctions.insert(906, std::bind(&Gles::callGlGetClipPlanex, this, _1, _2));
+ mFunctions.insert(907, std::bind(&Gles::callGlGetClipPlanexOES, this, _1, _2));
+ mFunctions.insert(908, std::bind(&Gles::callGlGetFixedv, this, _1, _2));
+ mFunctions.insert(909, std::bind(&Gles::callGlGetFixedvOES, this, _1, _2));
+ mFunctions.insert(910, std::bind(&Gles::callGlGetFramebufferAttachmentParameterivOES, this, _1, _2));
+ mFunctions.insert(911, std::bind(&Gles::callGlGetLightfv, this, _1, _2));
+ mFunctions.insert(912, std::bind(&Gles::callGlGetLightxv, this, _1, _2));
+ mFunctions.insert(913, std::bind(&Gles::callGlGetLightxvOES, this, _1, _2));
+ mFunctions.insert(914, std::bind(&Gles::callGlGetMaterialfv, this, _1, _2));
+ mFunctions.insert(915, std::bind(&Gles::callGlGetMaterialxv, this, _1, _2));
+ mFunctions.insert(916, std::bind(&Gles::callGlGetMaterialxvOES, this, _1, _2));
+ mFunctions.insert(917, std::bind(&Gles::callGlGetRenderbufferParameterivOES, this, _1, _2));
+ mFunctions.insert(918, std::bind(&Gles::callGlGetTexEnvfv, this, _1, _2));
+ mFunctions.insert(919, std::bind(&Gles::callGlGetTexEnviv, this, _1, _2));
+ mFunctions.insert(920, std::bind(&Gles::callGlGetTexEnvxv, this, _1, _2));
+ mFunctions.insert(921, std::bind(&Gles::callGlGetTexEnvxvOES, this, _1, _2));
+ mFunctions.insert(922, std::bind(&Gles::callGlGetTexGenfvOES, this, _1, _2));
+ mFunctions.insert(923, std::bind(&Gles::callGlGetTexGenivOES, this, _1, _2));
+ mFunctions.insert(924, std::bind(&Gles::callGlGetTexGenxvOES, this, _1, _2));
+ mFunctions.insert(925, std::bind(&Gles::callGlGetTexParameterxv, this, _1, _2));
+ mFunctions.insert(926, std::bind(&Gles::callGlGetTexParameterxvOES, this, _1, _2));
+ mFunctions.insert(927, std::bind(&Gles::callGlIsFramebufferOES, this, _1, _2));
+ mFunctions.insert(928, std::bind(&Gles::callGlIsRenderbufferOES, this, _1, _2));
+ mFunctions.insert(929, std::bind(&Gles::callGlLightModelf, this, _1, _2));
+ mFunctions.insert(930, std::bind(&Gles::callGlLightModelfv, this, _1, _2));
+ mFunctions.insert(931, std::bind(&Gles::callGlLightModelx, this, _1, _2));
+ mFunctions.insert(932, std::bind(&Gles::callGlLightModelxOES, this, _1, _2));
+ mFunctions.insert(933, std::bind(&Gles::callGlLightModelxv, this, _1, _2));
+ mFunctions.insert(934, std::bind(&Gles::callGlLightModelxvOES, this, _1, _2));
+ mFunctions.insert(935, std::bind(&Gles::callGlLightf, this, _1, _2));
+ mFunctions.insert(936, std::bind(&Gles::callGlLightfv, this, _1, _2));
+ mFunctions.insert(937, std::bind(&Gles::callGlLightx, this, _1, _2));
+ mFunctions.insert(938, std::bind(&Gles::callGlLightxOES, this, _1, _2));
+ mFunctions.insert(939, std::bind(&Gles::callGlLightxv, this, _1, _2));
+ mFunctions.insert(940, std::bind(&Gles::callGlLightxvOES, this, _1, _2));
+ mFunctions.insert(941, std::bind(&Gles::callGlLineWidthx, this, _1, _2));
+ mFunctions.insert(942, std::bind(&Gles::callGlLineWidthxOES, this, _1, _2));
+ mFunctions.insert(943, std::bind(&Gles::callGlLoadIdentity, this, _1, _2));
+ mFunctions.insert(944, std::bind(&Gles::callGlLoadMatrixf, this, _1, _2));
+ mFunctions.insert(945, std::bind(&Gles::callGlLoadMatrixx, this, _1, _2));
+ mFunctions.insert(946, std::bind(&Gles::callGlLoadMatrixxOES, this, _1, _2));
+ mFunctions.insert(947, std::bind(&Gles::callGlLoadPaletteFromModelViewMatrixOES, this, _1, _2));
+ mFunctions.insert(948, std::bind(&Gles::callGlLogicOp, this, _1, _2));
+ mFunctions.insert(949, std::bind(&Gles::callGlMaterialf, this, _1, _2));
+ mFunctions.insert(950, std::bind(&Gles::callGlMaterialfv, this, _1, _2));
+ mFunctions.insert(951, std::bind(&Gles::callGlMaterialx, this, _1, _2));
+ mFunctions.insert(952, std::bind(&Gles::callGlMaterialxOES, this, _1, _2));
+ mFunctions.insert(953, std::bind(&Gles::callGlMaterialxv, this, _1, _2));
+ mFunctions.insert(954, std::bind(&Gles::callGlMaterialxvOES, this, _1, _2));
+ mFunctions.insert(955, std::bind(&Gles::callGlMatrixIndexPointerOES, this, _1, _2));
+ mFunctions.insert(956, std::bind(&Gles::callGlMatrixMode, this, _1, _2));
+ mFunctions.insert(957, std::bind(&Gles::callGlMultMatrixf, this, _1, _2));
+ mFunctions.insert(958, std::bind(&Gles::callGlMultMatrixx, this, _1, _2));
+ mFunctions.insert(959, std::bind(&Gles::callGlMultMatrixxOES, this, _1, _2));
+ mFunctions.insert(960, std::bind(&Gles::callGlMultiTexCoord4f, this, _1, _2));
+ mFunctions.insert(961, std::bind(&Gles::callGlMultiTexCoord4x, this, _1, _2));
+ mFunctions.insert(962, std::bind(&Gles::callGlMultiTexCoord4xOES, this, _1, _2));
+ mFunctions.insert(963, std::bind(&Gles::callGlNormal3f, this, _1, _2));
+ mFunctions.insert(964, std::bind(&Gles::callGlNormal3x, this, _1, _2));
+ mFunctions.insert(965, std::bind(&Gles::callGlNormal3xOES, this, _1, _2));
+ mFunctions.insert(966, std::bind(&Gles::callGlNormalPointer, this, _1, _2));
+ mFunctions.insert(967, std::bind(&Gles::callGlOrthof, this, _1, _2));
+ mFunctions.insert(968, std::bind(&Gles::callGlOrthofOES, this, _1, _2));
+ mFunctions.insert(969, std::bind(&Gles::callGlOrthox, this, _1, _2));
+ mFunctions.insert(970, std::bind(&Gles::callGlOrthoxOES, this, _1, _2));
+ mFunctions.insert(971, std::bind(&Gles::callGlPointParameterf, this, _1, _2));
+ mFunctions.insert(972, std::bind(&Gles::callGlPointParameterfv, this, _1, _2));
+ mFunctions.insert(973, std::bind(&Gles::callGlPointParameterx, this, _1, _2));
+ mFunctions.insert(974, std::bind(&Gles::callGlPointParameterxOES, this, _1, _2));
+ mFunctions.insert(975, std::bind(&Gles::callGlPointParameterxv, this, _1, _2));
+ mFunctions.insert(976, std::bind(&Gles::callGlPointParameterxvOES, this, _1, _2));
+ mFunctions.insert(977, std::bind(&Gles::callGlPointSize, this, _1, _2));
+ mFunctions.insert(978, std::bind(&Gles::callGlPointSizePointerOES, this, _1, _2));
+ mFunctions.insert(979, std::bind(&Gles::callGlPointSizex, this, _1, _2));
+ mFunctions.insert(980, std::bind(&Gles::callGlPointSizexOES, this, _1, _2));
+ mFunctions.insert(981, std::bind(&Gles::callGlPolygonOffsetx, this, _1, _2));
+ mFunctions.insert(982, std::bind(&Gles::callGlPolygonOffsetxOES, this, _1, _2));
+ mFunctions.insert(983, std::bind(&Gles::callGlPopMatrix, this, _1, _2));
+ mFunctions.insert(984, std::bind(&Gles::callGlPushMatrix, this, _1, _2));
+ mFunctions.insert(985, std::bind(&Gles::callGlQueryMatrixxOES, this, _1, _2));
+ mFunctions.insert(986, std::bind(&Gles::callGlRenderbufferStorageOES, this, _1, _2));
+ mFunctions.insert(987, std::bind(&Gles::callGlRotatef, this, _1, _2));
+ mFunctions.insert(988, std::bind(&Gles::callGlRotatex, this, _1, _2));
+ mFunctions.insert(989, std::bind(&Gles::callGlRotatexOES, this, _1, _2));
+ mFunctions.insert(990, std::bind(&Gles::callGlSampleCoveragex, this, _1, _2));
+ mFunctions.insert(991, std::bind(&Gles::callGlSampleCoveragexOES, this, _1, _2));
+ mFunctions.insert(992, std::bind(&Gles::callGlScalef, this, _1, _2));
+ mFunctions.insert(993, std::bind(&Gles::callGlScalex, this, _1, _2));
+ mFunctions.insert(994, std::bind(&Gles::callGlScalexOES, this, _1, _2));
+ mFunctions.insert(995, std::bind(&Gles::callGlShadeModel, this, _1, _2));
+ mFunctions.insert(996, std::bind(&Gles::callGlTexCoordPointer, this, _1, _2));
+ mFunctions.insert(997, std::bind(&Gles::callGlTexEnvf, this, _1, _2));
+ mFunctions.insert(998, std::bind(&Gles::callGlTexEnvfv, this, _1, _2));
+ mFunctions.insert(999, std::bind(&Gles::callGlTexEnvi, this, _1, _2));
+ mFunctions.insert(1000, std::bind(&Gles::callGlTexEnviv, this, _1, _2));
+ mFunctions.insert(1001, std::bind(&Gles::callGlTexEnvx, this, _1, _2));
+ mFunctions.insert(1002, std::bind(&Gles::callGlTexEnvxOES, this, _1, _2));
+ mFunctions.insert(1003, std::bind(&Gles::callGlTexEnvxv, this, _1, _2));
+ mFunctions.insert(1004, std::bind(&Gles::callGlTexEnvxvOES, this, _1, _2));
+ mFunctions.insert(1005, std::bind(&Gles::callGlTexGenfOES, this, _1, _2));
+ mFunctions.insert(1006, std::bind(&Gles::callGlTexGenfvOES, this, _1, _2));
+ mFunctions.insert(1007, std::bind(&Gles::callGlTexGeniOES, this, _1, _2));
+ mFunctions.insert(1008, std::bind(&Gles::callGlTexGenivOES, this, _1, _2));
+ mFunctions.insert(1009, std::bind(&Gles::callGlTexGenxOES, this, _1, _2));
+ mFunctions.insert(1010, std::bind(&Gles::callGlTexGenxvOES, this, _1, _2));
+ mFunctions.insert(1011, std::bind(&Gles::callGlTexParameterx, this, _1, _2));
+ mFunctions.insert(1012, std::bind(&Gles::callGlTexParameterxOES, this, _1, _2));
+ mFunctions.insert(1013, std::bind(&Gles::callGlTexParameterxv, this, _1, _2));
+ mFunctions.insert(1014, std::bind(&Gles::callGlTexParameterxvOES, this, _1, _2));
+ mFunctions.insert(1015, std::bind(&Gles::callGlTranslatef, this, _1, _2));
+ mFunctions.insert(1016, std::bind(&Gles::callGlTranslatex, this, _1, _2));
+ mFunctions.insert(1017, std::bind(&Gles::callGlTranslatexOES, this, _1, _2));
+ mFunctions.insert(1018, std::bind(&Gles::callGlVertexPointer, this, _1, _2));
+ mFunctions.insert(1019, std::bind(&Gles::callGlWeightPointerOES, this, _1, _2));
+ mFunctions.insert(1020, std::bind(&Gles::callGlColorPointerBounds, this, _1, _2));
+ mFunctions.insert(1021, std::bind(&Gles::callGlNormalPointerBounds, this, _1, _2));
+ mFunctions.insert(1022, std::bind(&Gles::callGlTexCoordPointerBounds, this, _1, _2));
+ mFunctions.insert(1023, std::bind(&Gles::callGlVertexPointerBounds, this, _1, _2));
+ mFunctions.insert(1024, std::bind(&Gles::callGlPointSizePointerOESBounds, this, _1, _2));
+ mFunctions.insert(1025, std::bind(&Gles::callGlMatrixIndexPointerOESBounds, this, _1, _2));
+ mFunctions.insert(1026, std::bind(&Gles::callGlWeightPointerOESBounds, this, _1, _2));
}
void Gles::resolve() {
@@ -1113,6 +1176,7 @@
mFunctionStubs.eglWaitNative = reinterpret_cast<PFNEGLWAITNATIVE>(gapic::GetGlesProcAddress("eglWaitNative", false));
mFunctionStubs.eglCreateImageKHR = reinterpret_cast<PFNEGLCREATEIMAGEKHR>(gapic::GetGlesProcAddress("eglCreateImageKHR", false));
mFunctionStubs.eglDestroyImageKHR = reinterpret_cast<PFNEGLDESTROYIMAGEKHR>(gapic::GetGlesProcAddress("eglDestroyImageKHR", false));
+ mFunctionStubs.eglCreateNativeClientBufferANDROID = reinterpret_cast<PFNEGLCREATENATIVECLIENTBUFFERANDROID>(gapic::GetGlesProcAddress("eglCreateNativeClientBufferANDROID", false));
mFunctionStubs.glActiveShaderProgramEXT = reinterpret_cast<PFNGLACTIVESHADERPROGRAMEXT>(gapic::GetGlesProcAddress("glActiveShaderProgramEXT", false));
mFunctionStubs.glAlphaFuncQCOM = reinterpret_cast<PFNGLALPHAFUNCQCOM>(gapic::GetGlesProcAddress("glAlphaFuncQCOM", false));
mFunctionStubs.glApplyFramebufferAttachmentCMAAINTEL = reinterpret_cast<PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTEL>(gapic::GetGlesProcAddress("glApplyFramebufferAttachmentCMAAINTEL", false));
@@ -1442,6 +1506,68 @@
mFunctionStubs.glViewportIndexedfvNV = reinterpret_cast<PFNGLVIEWPORTINDEXEDFVNV>(gapic::GetGlesProcAddress("glViewportIndexedfvNV", false));
mFunctionStubs.glWaitSyncAPPLE = reinterpret_cast<PFNGLWAITSYNCAPPLE>(gapic::GetGlesProcAddress("glWaitSyncAPPLE", false));
mFunctionStubs.glWeightPathsNV = reinterpret_cast<PFNGLWEIGHTPATHSNV>(gapic::GetGlesProcAddress("glWeightPathsNV", false));
+ mFunctionStubs.glClearPixelLocalStorageuiEXT = reinterpret_cast<PFNGLCLEARPIXELLOCALSTORAGEUIEXT>(gapic::GetGlesProcAddress("glClearPixelLocalStorageuiEXT", false));
+ mFunctionStubs.glClearTexImageEXT = reinterpret_cast<PFNGLCLEARTEXIMAGEEXT>(gapic::GetGlesProcAddress("glClearTexImageEXT", false));
+ mFunctionStubs.glClearTexSubImageEXT = reinterpret_cast<PFNGLCLEARTEXSUBIMAGEEXT>(gapic::GetGlesProcAddress("glClearTexSubImageEXT", false));
+ mFunctionStubs.glConservativeRasterParameteriNV = reinterpret_cast<PFNGLCONSERVATIVERASTERPARAMETERINV>(gapic::GetGlesProcAddress("glConservativeRasterParameteriNV", false));
+ mFunctionStubs.glDepthRangeArrayfvOES = reinterpret_cast<PFNGLDEPTHRANGEARRAYFVOES>(gapic::GetGlesProcAddress("glDepthRangeArrayfvOES", false));
+ mFunctionStubs.glDepthRangeIndexedfOES = reinterpret_cast<PFNGLDEPTHRANGEINDEXEDFOES>(gapic::GetGlesProcAddress("glDepthRangeIndexedfOES", false));
+ mFunctionStubs.glDrawTransformFeedbackEXT = reinterpret_cast<PFNGLDRAWTRANSFORMFEEDBACKEXT>(gapic::GetGlesProcAddress("glDrawTransformFeedbackEXT", false));
+ mFunctionStubs.glDrawTransformFeedbackInstancedEXT = reinterpret_cast<PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDEXT>(gapic::GetGlesProcAddress("glDrawTransformFeedbackInstancedEXT", false));
+ mFunctionStubs.glFramebufferPixelLocalStorageSizeEXT = reinterpret_cast<PFNGLFRAMEBUFFERPIXELLOCALSTORAGESIZEEXT>(gapic::GetGlesProcAddress("glFramebufferPixelLocalStorageSizeEXT", false));
+ mFunctionStubs.glFramebufferTexture2DDownsampleIMG = reinterpret_cast<PFNGLFRAMEBUFFERTEXTURE2DDOWNSAMPLEIMG>(gapic::GetGlesProcAddress("glFramebufferTexture2DDownsampleIMG", false));
+ mFunctionStubs.glFramebufferTextureLayerDownsampleIMG = reinterpret_cast<PFNGLFRAMEBUFFERTEXTURELAYERDOWNSAMPLEIMG>(gapic::GetGlesProcAddress("glFramebufferTextureLayerDownsampleIMG", false));
+ mFunctionStubs.glFramebufferTextureMultisampleMultiviewOVR = reinterpret_cast<PFNGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVR>(gapic::GetGlesProcAddress("glFramebufferTextureMultisampleMultiviewOVR", false));
+ mFunctionStubs.glGetFloati_vOES = reinterpret_cast<PFNGLGETFLOATI_VOES>(gapic::GetGlesProcAddress("glGetFloati_vOES", false));
+ mFunctionStubs.glGetFramebufferPixelLocalStorageSizeEXT = reinterpret_cast<PFNGLGETFRAMEBUFFERPIXELLOCALSTORAGESIZEEXT>(gapic::GetGlesProcAddress("glGetFramebufferPixelLocalStorageSizeEXT", false));
+ mFunctionStubs.glGetTextureHandleIMG = reinterpret_cast<PFNGLGETTEXTUREHANDLEIMG>(gapic::GetGlesProcAddress("glGetTextureHandleIMG", false));
+ mFunctionStubs.glGetTextureSamplerHandleIMG = reinterpret_cast<PFNGLGETTEXTURESAMPLERHANDLEIMG>(gapic::GetGlesProcAddress("glGetTextureSamplerHandleIMG", false));
+ mFunctionStubs.glGetUniformi64vNV = reinterpret_cast<PFNGLGETUNIFORMI64VNV>(gapic::GetGlesProcAddress("glGetUniformi64vNV", false));
+ mFunctionStubs.glPolygonOffsetClampEXT = reinterpret_cast<PFNGLPOLYGONOFFSETCLAMPEXT>(gapic::GetGlesProcAddress("glPolygonOffsetClampEXT", false));
+ mFunctionStubs.glProgramUniform1i64NV = reinterpret_cast<PFNGLPROGRAMUNIFORM1I64NV>(gapic::GetGlesProcAddress("glProgramUniform1i64NV", false));
+ mFunctionStubs.glProgramUniform1i64vNV = reinterpret_cast<PFNGLPROGRAMUNIFORM1I64VNV>(gapic::GetGlesProcAddress("glProgramUniform1i64vNV", false));
+ mFunctionStubs.glProgramUniform1ui64NV = reinterpret_cast<PFNGLPROGRAMUNIFORM1UI64NV>(gapic::GetGlesProcAddress("glProgramUniform1ui64NV", false));
+ mFunctionStubs.glProgramUniform1ui64vNV = reinterpret_cast<PFNGLPROGRAMUNIFORM1UI64VNV>(gapic::GetGlesProcAddress("glProgramUniform1ui64vNV", false));
+ mFunctionStubs.glProgramUniform2i64NV = reinterpret_cast<PFNGLPROGRAMUNIFORM2I64NV>(gapic::GetGlesProcAddress("glProgramUniform2i64NV", false));
+ mFunctionStubs.glProgramUniform2i64vNV = reinterpret_cast<PFNGLPROGRAMUNIFORM2I64VNV>(gapic::GetGlesProcAddress("glProgramUniform2i64vNV", false));
+ mFunctionStubs.glProgramUniform2ui64NV = reinterpret_cast<PFNGLPROGRAMUNIFORM2UI64NV>(gapic::GetGlesProcAddress("glProgramUniform2ui64NV", false));
+ mFunctionStubs.glProgramUniform2ui64vNV = reinterpret_cast<PFNGLPROGRAMUNIFORM2UI64VNV>(gapic::GetGlesProcAddress("glProgramUniform2ui64vNV", false));
+ mFunctionStubs.glProgramUniform3i64NV = reinterpret_cast<PFNGLPROGRAMUNIFORM3I64NV>(gapic::GetGlesProcAddress("glProgramUniform3i64NV", false));
+ mFunctionStubs.glProgramUniform3i64vNV = reinterpret_cast<PFNGLPROGRAMUNIFORM3I64VNV>(gapic::GetGlesProcAddress("glProgramUniform3i64vNV", false));
+ mFunctionStubs.glProgramUniform3ui64NV = reinterpret_cast<PFNGLPROGRAMUNIFORM3UI64NV>(gapic::GetGlesProcAddress("glProgramUniform3ui64NV", false));
+ mFunctionStubs.glProgramUniform3ui64vNV = reinterpret_cast<PFNGLPROGRAMUNIFORM3UI64VNV>(gapic::GetGlesProcAddress("glProgramUniform3ui64vNV", false));
+ mFunctionStubs.glProgramUniform4i64NV = reinterpret_cast<PFNGLPROGRAMUNIFORM4I64NV>(gapic::GetGlesProcAddress("glProgramUniform4i64NV", false));
+ mFunctionStubs.glProgramUniform4i64vNV = reinterpret_cast<PFNGLPROGRAMUNIFORM4I64VNV>(gapic::GetGlesProcAddress("glProgramUniform4i64vNV", false));
+ mFunctionStubs.glProgramUniform4ui64NV = reinterpret_cast<PFNGLPROGRAMUNIFORM4UI64NV>(gapic::GetGlesProcAddress("glProgramUniform4ui64NV", false));
+ mFunctionStubs.glProgramUniform4ui64vNV = reinterpret_cast<PFNGLPROGRAMUNIFORM4UI64VNV>(gapic::GetGlesProcAddress("glProgramUniform4ui64vNV", false));
+ mFunctionStubs.glProgramUniformHandleui64IMG = reinterpret_cast<PFNGLPROGRAMUNIFORMHANDLEUI64IMG>(gapic::GetGlesProcAddress("glProgramUniformHandleui64IMG", false));
+ mFunctionStubs.glProgramUniformHandleui64vIMG = reinterpret_cast<PFNGLPROGRAMUNIFORMHANDLEUI64VIMG>(gapic::GetGlesProcAddress("glProgramUniformHandleui64vIMG", false));
+ mFunctionStubs.glScissorArrayvOES = reinterpret_cast<PFNGLSCISSORARRAYVOES>(gapic::GetGlesProcAddress("glScissorArrayvOES", false));
+ mFunctionStubs.glScissorIndexedOES = reinterpret_cast<PFNGLSCISSORINDEXEDOES>(gapic::GetGlesProcAddress("glScissorIndexedOES", false));
+ mFunctionStubs.glScissorIndexedvOES = reinterpret_cast<PFNGLSCISSORINDEXEDVOES>(gapic::GetGlesProcAddress("glScissorIndexedvOES", false));
+ mFunctionStubs.glUniform1i64NV = reinterpret_cast<PFNGLUNIFORM1I64NV>(gapic::GetGlesProcAddress("glUniform1i64NV", false));
+ mFunctionStubs.glUniform1i64vNV = reinterpret_cast<PFNGLUNIFORM1I64VNV>(gapic::GetGlesProcAddress("glUniform1i64vNV", false));
+ mFunctionStubs.glUniform1ui64NV = reinterpret_cast<PFNGLUNIFORM1UI64NV>(gapic::GetGlesProcAddress("glUniform1ui64NV", false));
+ mFunctionStubs.glUniform1ui64vNV = reinterpret_cast<PFNGLUNIFORM1UI64VNV>(gapic::GetGlesProcAddress("glUniform1ui64vNV", false));
+ mFunctionStubs.glUniform2i64NV = reinterpret_cast<PFNGLUNIFORM2I64NV>(gapic::GetGlesProcAddress("glUniform2i64NV", false));
+ mFunctionStubs.glUniform2i64vNV = reinterpret_cast<PFNGLUNIFORM2I64VNV>(gapic::GetGlesProcAddress("glUniform2i64vNV", false));
+ mFunctionStubs.glUniform2ui64NV = reinterpret_cast<PFNGLUNIFORM2UI64NV>(gapic::GetGlesProcAddress("glUniform2ui64NV", false));
+ mFunctionStubs.glUniform2ui64vNV = reinterpret_cast<PFNGLUNIFORM2UI64VNV>(gapic::GetGlesProcAddress("glUniform2ui64vNV", false));
+ mFunctionStubs.glUniform3i64NV = reinterpret_cast<PFNGLUNIFORM3I64NV>(gapic::GetGlesProcAddress("glUniform3i64NV", false));
+ mFunctionStubs.glUniform3i64vNV = reinterpret_cast<PFNGLUNIFORM3I64VNV>(gapic::GetGlesProcAddress("glUniform3i64vNV", false));
+ mFunctionStubs.glUniform3ui64NV = reinterpret_cast<PFNGLUNIFORM3UI64NV>(gapic::GetGlesProcAddress("glUniform3ui64NV", false));
+ mFunctionStubs.glUniform3ui64vNV = reinterpret_cast<PFNGLUNIFORM3UI64VNV>(gapic::GetGlesProcAddress("glUniform3ui64vNV", false));
+ mFunctionStubs.glUniform4i64NV = reinterpret_cast<PFNGLUNIFORM4I64NV>(gapic::GetGlesProcAddress("glUniform4i64NV", false));
+ mFunctionStubs.glUniform4i64vNV = reinterpret_cast<PFNGLUNIFORM4I64VNV>(gapic::GetGlesProcAddress("glUniform4i64vNV", false));
+ mFunctionStubs.glUniform4ui64NV = reinterpret_cast<PFNGLUNIFORM4UI64NV>(gapic::GetGlesProcAddress("glUniform4ui64NV", false));
+ mFunctionStubs.glUniform4ui64vNV = reinterpret_cast<PFNGLUNIFORM4UI64VNV>(gapic::GetGlesProcAddress("glUniform4ui64vNV", false));
+ mFunctionStubs.glUniformHandleui64IMG = reinterpret_cast<PFNGLUNIFORMHANDLEUI64IMG>(gapic::GetGlesProcAddress("glUniformHandleui64IMG", false));
+ mFunctionStubs.glUniformHandleui64vIMG = reinterpret_cast<PFNGLUNIFORMHANDLEUI64VIMG>(gapic::GetGlesProcAddress("glUniformHandleui64vIMG", false));
+ mFunctionStubs.glViewportArrayvOES = reinterpret_cast<PFNGLVIEWPORTARRAYVOES>(gapic::GetGlesProcAddress("glViewportArrayvOES", false));
+ mFunctionStubs.glViewportIndexedfOES = reinterpret_cast<PFNGLVIEWPORTINDEXEDFOES>(gapic::GetGlesProcAddress("glViewportIndexedfOES", false));
+ mFunctionStubs.glViewportIndexedfvOES = reinterpret_cast<PFNGLVIEWPORTINDEXEDFVOES>(gapic::GetGlesProcAddress("glViewportIndexedfvOES", false));
+ mFunctionStubs.glViewportSwizzleNV = reinterpret_cast<PFNGLVIEWPORTSWIZZLENV>(gapic::GetGlesProcAddress("glViewportSwizzleNV", false));
+ mFunctionStubs.glWindowRectanglesEXT = reinterpret_cast<PFNGLWINDOWRECTANGLESEXT>(gapic::GetGlesProcAddress("glWindowRectanglesEXT", false));
mFunctionStubs.glBlendBarrier = reinterpret_cast<PFNGLBLENDBARRIER>(gapic::GetGlesProcAddress("glBlendBarrier", false));
mFunctionStubs.glBlendColor = reinterpret_cast<PFNGLBLENDCOLOR>(gapic::GetGlesProcAddress("glBlendColor", false));
mFunctionStubs.glBlendEquation = reinterpret_cast<PFNGLBLENDEQUATION>(gapic::GetGlesProcAddress("glBlendEquation", false));
@@ -4404,6 +4530,26 @@
}
}
+bool Gles::callEglCreateNativeClientBufferANDROID(Stack* stack, bool pushReturn) {
+ auto attrib_list = stack->pop<EGLint*>();
+ if (stack->isValid()) {
+ GAPID_INFO("eglCreateNativeClientBufferANDROID(%p)", attrib_list);
+ if (mFunctionStubs.eglCreateNativeClientBufferANDROID != nullptr) {
+ EGLClientBuffer return_value = mFunctionStubs.eglCreateNativeClientBufferANDROID(attrib_list);
+ GAPID_INFO("Returned: %p", return_value);
+ if (pushReturn) {
+ stack->push<EGLClientBuffer>(return_value);
+ }
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function eglCreateNativeClientBufferANDROID");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function eglCreateNativeClientBufferANDROID");
+ return false;
+ }
+}
+
bool Gles::callGlActiveShaderProgramEXT(Stack* stack, bool pushReturn) {
auto program = stack->pop<uint32_t>();
auto pipeline = stack->pop<uint32_t>();
@@ -10701,6 +10847,1176 @@
}
}
+bool Gles::callGlClearPixelLocalStorageuiEXT(Stack* stack, bool pushReturn) {
+ auto values = stack->pop<GLuint*>();
+ auto n = stack->pop<int32_t>();
+ auto offset = stack->pop<int32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glClearPixelLocalStorageuiEXT(%" PRId32 ", %" PRId32 ", %p)", offset, n, values);
+ if (mFunctionStubs.glClearPixelLocalStorageuiEXT != nullptr) {
+ mFunctionStubs.glClearPixelLocalStorageuiEXT(offset, n, values);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glClearPixelLocalStorageuiEXT");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glClearPixelLocalStorageuiEXT");
+ return false;
+ }
+}
+
+bool Gles::callGlClearTexImageEXT(Stack* stack, bool pushReturn) {
+ auto data = stack->pop<void*>();
+ auto type = stack->pop<GLenum>();
+ auto format = stack->pop<GLenum>();
+ auto level = stack->pop<int32_t>();
+ auto texture = stack->pop<uint32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glClearTexImageEXT(%" PRIu32 ", %" PRId32 ", %u, %u, %p)", texture, level, format, type, data);
+ if (mFunctionStubs.glClearTexImageEXT != nullptr) {
+ mFunctionStubs.glClearTexImageEXT(texture, level, format, type, data);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glClearTexImageEXT");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glClearTexImageEXT");
+ return false;
+ }
+}
+
+bool Gles::callGlClearTexSubImageEXT(Stack* stack, bool pushReturn) {
+ auto data = stack->pop<void*>();
+ auto type = stack->pop<GLenum>();
+ auto format = stack->pop<GLenum>();
+ auto depth = stack->pop<int32_t>();
+ auto height = stack->pop<int32_t>();
+ auto width = stack->pop<int32_t>();
+ auto zoffset = stack->pop<int32_t>();
+ auto yoffset = stack->pop<int32_t>();
+ auto xoffset = stack->pop<int32_t>();
+ auto level = stack->pop<int32_t>();
+ auto texture = stack->pop<uint32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glClearTexSubImageEXT(%" PRIu32 ", %" PRId32 ", %" PRId32 ", %" PRId32 ", %" PRId32 ", %" PRId32 ", %" PRId32 ", %" PRId32 ", %u, %u, %p)", texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, data);
+ if (mFunctionStubs.glClearTexSubImageEXT != nullptr) {
+ mFunctionStubs.glClearTexSubImageEXT(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, data);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glClearTexSubImageEXT");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glClearTexSubImageEXT");
+ return false;
+ }
+}
+
+bool Gles::callGlConservativeRasterParameteriNV(Stack* stack, bool pushReturn) {
+ auto param = stack->pop<int32_t>();
+ auto pname = stack->pop<GLenum>();
+ if (stack->isValid()) {
+ GAPID_INFO("glConservativeRasterParameteriNV(%u, %" PRId32 ")", pname, param);
+ if (mFunctionStubs.glConservativeRasterParameteriNV != nullptr) {
+ mFunctionStubs.glConservativeRasterParameteriNV(pname, param);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glConservativeRasterParameteriNV");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glConservativeRasterParameteriNV");
+ return false;
+ }
+}
+
+bool Gles::callGlDepthRangeArrayfvOES(Stack* stack, bool pushReturn) {
+ auto v = stack->pop<GLfloat*>();
+ auto count = stack->pop<int32_t>();
+ auto first = stack->pop<uint32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glDepthRangeArrayfvOES(%" PRIu32 ", %" PRId32 ", %p)", first, count, v);
+ if (mFunctionStubs.glDepthRangeArrayfvOES != nullptr) {
+ mFunctionStubs.glDepthRangeArrayfvOES(first, count, v);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glDepthRangeArrayfvOES");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glDepthRangeArrayfvOES");
+ return false;
+ }
+}
+
+bool Gles::callGlDepthRangeIndexedfOES(Stack* stack, bool pushReturn) {
+ auto f = stack->pop<float>();
+ auto n = stack->pop<float>();
+ auto index = stack->pop<uint32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glDepthRangeIndexedfOES(%" PRIu32 ", %f, %f)", index, n, f);
+ if (mFunctionStubs.glDepthRangeIndexedfOES != nullptr) {
+ mFunctionStubs.glDepthRangeIndexedfOES(index, n, f);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glDepthRangeIndexedfOES");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glDepthRangeIndexedfOES");
+ return false;
+ }
+}
+
+bool Gles::callGlDrawTransformFeedbackEXT(Stack* stack, bool pushReturn) {
+ auto id = stack->pop<uint32_t>();
+ auto mode = stack->pop<GLenum>();
+ if (stack->isValid()) {
+ GAPID_INFO("glDrawTransformFeedbackEXT(%u, %" PRIu32 ")", mode, id);
+ if (mFunctionStubs.glDrawTransformFeedbackEXT != nullptr) {
+ mFunctionStubs.glDrawTransformFeedbackEXT(mode, id);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glDrawTransformFeedbackEXT");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glDrawTransformFeedbackEXT");
+ return false;
+ }
+}
+
+bool Gles::callGlDrawTransformFeedbackInstancedEXT(Stack* stack, bool pushReturn) {
+ auto instancecount = stack->pop<int32_t>();
+ auto id = stack->pop<uint32_t>();
+ auto mode = stack->pop<GLenum>();
+ if (stack->isValid()) {
+ GAPID_INFO("glDrawTransformFeedbackInstancedEXT(%u, %" PRIu32 ", %" PRId32 ")", mode, id, instancecount);
+ if (mFunctionStubs.glDrawTransformFeedbackInstancedEXT != nullptr) {
+ mFunctionStubs.glDrawTransformFeedbackInstancedEXT(mode, id, instancecount);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glDrawTransformFeedbackInstancedEXT");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glDrawTransformFeedbackInstancedEXT");
+ return false;
+ }
+}
+
+bool Gles::callGlFramebufferPixelLocalStorageSizeEXT(Stack* stack, bool pushReturn) {
+ auto size = stack->pop<int32_t>();
+ auto target = stack->pop<uint32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glFramebufferPixelLocalStorageSizeEXT(%" PRIu32 ", %" PRId32 ")", target, size);
+ if (mFunctionStubs.glFramebufferPixelLocalStorageSizeEXT != nullptr) {
+ mFunctionStubs.glFramebufferPixelLocalStorageSizeEXT(target, size);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glFramebufferPixelLocalStorageSizeEXT");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glFramebufferPixelLocalStorageSizeEXT");
+ return false;
+ }
+}
+
+bool Gles::callGlFramebufferTexture2DDownsampleIMG(Stack* stack, bool pushReturn) {
+ auto yscale = stack->pop<int32_t>();
+ auto xscale = stack->pop<int32_t>();
+ auto level = stack->pop<int32_t>();
+ auto texture = stack->pop<uint32_t>();
+ auto textarget = stack->pop<GLenum>();
+ auto attachment = stack->pop<GLenum>();
+ auto target = stack->pop<GLenum>();
+ if (stack->isValid()) {
+ GAPID_INFO("glFramebufferTexture2DDownsampleIMG(%u, %u, %u, %" PRIu32 ", %" PRId32 ", %" PRId32 ", %" PRId32 ")", target, attachment, textarget, texture, level, xscale, yscale);
+ if (mFunctionStubs.glFramebufferTexture2DDownsampleIMG != nullptr) {
+ mFunctionStubs.glFramebufferTexture2DDownsampleIMG(target, attachment, textarget, texture, level, xscale, yscale);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glFramebufferTexture2DDownsampleIMG");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glFramebufferTexture2DDownsampleIMG");
+ return false;
+ }
+}
+
+bool Gles::callGlFramebufferTextureLayerDownsampleIMG(Stack* stack, bool pushReturn) {
+ auto yscale = stack->pop<int32_t>();
+ auto xscale = stack->pop<int32_t>();
+ auto layer = stack->pop<int32_t>();
+ auto level = stack->pop<int32_t>();
+ auto texture = stack->pop<uint32_t>();
+ auto attachment = stack->pop<GLenum>();
+ auto target = stack->pop<GLenum>();
+ if (stack->isValid()) {
+ GAPID_INFO("glFramebufferTextureLayerDownsampleIMG(%u, %u, %" PRIu32 ", %" PRId32 ", %" PRId32 ", %" PRId32 ", %" PRId32 ")", target, attachment, texture, level, layer, xscale, yscale);
+ if (mFunctionStubs.glFramebufferTextureLayerDownsampleIMG != nullptr) {
+ mFunctionStubs.glFramebufferTextureLayerDownsampleIMG(target, attachment, texture, level, layer, xscale, yscale);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glFramebufferTextureLayerDownsampleIMG");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glFramebufferTextureLayerDownsampleIMG");
+ return false;
+ }
+}
+
+bool Gles::callGlFramebufferTextureMultisampleMultiviewOVR(Stack* stack, bool pushReturn) {
+ auto numViews = stack->pop<int32_t>();
+ auto baseViewIndex = stack->pop<int32_t>();
+ auto samples = stack->pop<int32_t>();
+ auto level = stack->pop<int32_t>();
+ auto texture = stack->pop<uint32_t>();
+ auto attachment = stack->pop<GLenum>();
+ auto target = stack->pop<GLenum>();
+ if (stack->isValid()) {
+ GAPID_INFO("glFramebufferTextureMultisampleMultiviewOVR(%u, %u, %" PRIu32 ", %" PRId32 ", %" PRId32 ", %" PRId32 ", %" PRId32 ")", target, attachment, texture, level, samples, baseViewIndex, numViews);
+ if (mFunctionStubs.glFramebufferTextureMultisampleMultiviewOVR != nullptr) {
+ mFunctionStubs.glFramebufferTextureMultisampleMultiviewOVR(target, attachment, texture, level, samples, baseViewIndex, numViews);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glFramebufferTextureMultisampleMultiviewOVR");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glFramebufferTextureMultisampleMultiviewOVR");
+ return false;
+ }
+}
+
+bool Gles::callGlGetFloatiVOES(Stack* stack, bool pushReturn) {
+ auto data = stack->pop<GLfloat*>();
+ auto index = stack->pop<uint32_t>();
+ auto target = stack->pop<GLenum>();
+ if (stack->isValid()) {
+ GAPID_INFO("glGetFloati_vOES(%u, %" PRIu32 ", %p)", target, index, data);
+ if (mFunctionStubs.glGetFloati_vOES != nullptr) {
+ mFunctionStubs.glGetFloati_vOES(target, index, data);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glGetFloati_vOES");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glGetFloati_vOES");
+ return false;
+ }
+}
+
+bool Gles::callGlGetFramebufferPixelLocalStorageSizeEXT(Stack* stack, bool pushReturn) {
+ auto target = stack->pop<uint32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glGetFramebufferPixelLocalStorageSizeEXT(%" PRIu32 ")", target);
+ if (mFunctionStubs.glGetFramebufferPixelLocalStorageSizeEXT != nullptr) {
+ GLsizei return_value = mFunctionStubs.glGetFramebufferPixelLocalStorageSizeEXT(target);
+ GAPID_INFO("Returned: %" PRId32 "", return_value);
+ if (pushReturn) {
+ stack->push<GLsizei>(return_value);
+ }
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glGetFramebufferPixelLocalStorageSizeEXT");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glGetFramebufferPixelLocalStorageSizeEXT");
+ return false;
+ }
+}
+
+bool Gles::callGlGetTextureHandleIMG(Stack* stack, bool pushReturn) {
+ auto texture = stack->pop<uint32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glGetTextureHandleIMG(%" PRIu32 ")", texture);
+ if (mFunctionStubs.glGetTextureHandleIMG != nullptr) {
+ GLuint64 return_value = mFunctionStubs.glGetTextureHandleIMG(texture);
+ GAPID_INFO("Returned: %" PRIu64 "", return_value);
+ if (pushReturn) {
+ stack->push<GLuint64>(return_value);
+ }
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glGetTextureHandleIMG");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glGetTextureHandleIMG");
+ return false;
+ }
+}
+
+bool Gles::callGlGetTextureSamplerHandleIMG(Stack* stack, bool pushReturn) {
+ auto sampler = stack->pop<uint32_t>();
+ auto texture = stack->pop<uint32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glGetTextureSamplerHandleIMG(%" PRIu32 ", %" PRIu32 ")", texture, sampler);
+ if (mFunctionStubs.glGetTextureSamplerHandleIMG != nullptr) {
+ GLuint64 return_value = mFunctionStubs.glGetTextureSamplerHandleIMG(texture, sampler);
+ GAPID_INFO("Returned: %" PRIu64 "", return_value);
+ if (pushReturn) {
+ stack->push<GLuint64>(return_value);
+ }
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glGetTextureSamplerHandleIMG");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glGetTextureSamplerHandleIMG");
+ return false;
+ }
+}
+
+bool Gles::callGlGetUniformi64vNV(Stack* stack, bool pushReturn) {
+ auto params = stack->pop<GLint64EXT*>();
+ auto location = stack->pop<int32_t>();
+ auto program = stack->pop<uint32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glGetUniformi64vNV(%" PRIu32 ", %" PRId32 ", %p)", program, location, params);
+ if (mFunctionStubs.glGetUniformi64vNV != nullptr) {
+ mFunctionStubs.glGetUniformi64vNV(program, location, params);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glGetUniformi64vNV");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glGetUniformi64vNV");
+ return false;
+ }
+}
+
+bool Gles::callGlPolygonOffsetClampEXT(Stack* stack, bool pushReturn) {
+ auto clamp = stack->pop<float>();
+ auto units = stack->pop<float>();
+ auto factor = stack->pop<float>();
+ if (stack->isValid()) {
+ GAPID_INFO("glPolygonOffsetClampEXT(%f, %f, %f)", factor, units, clamp);
+ if (mFunctionStubs.glPolygonOffsetClampEXT != nullptr) {
+ mFunctionStubs.glPolygonOffsetClampEXT(factor, units, clamp);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glPolygonOffsetClampEXT");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glPolygonOffsetClampEXT");
+ return false;
+ }
+}
+
+bool Gles::callGlProgramUniform1i64NV(Stack* stack, bool pushReturn) {
+ auto x = stack->pop<int64_t>();
+ auto location = stack->pop<int32_t>();
+ auto program = stack->pop<uint32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glProgramUniform1i64NV(%" PRIu32 ", %" PRId32 ", %" PRId64 ")", program, location, x);
+ if (mFunctionStubs.glProgramUniform1i64NV != nullptr) {
+ mFunctionStubs.glProgramUniform1i64NV(program, location, x);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glProgramUniform1i64NV");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glProgramUniform1i64NV");
+ return false;
+ }
+}
+
+bool Gles::callGlProgramUniform1i64vNV(Stack* stack, bool pushReturn) {
+ auto value = stack->pop<GLint64EXT*>();
+ auto count = stack->pop<int32_t>();
+ auto location = stack->pop<int32_t>();
+ auto program = stack->pop<uint32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glProgramUniform1i64vNV(%" PRIu32 ", %" PRId32 ", %" PRId32 ", %p)", program, location, count, value);
+ if (mFunctionStubs.glProgramUniform1i64vNV != nullptr) {
+ mFunctionStubs.glProgramUniform1i64vNV(program, location, count, value);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glProgramUniform1i64vNV");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glProgramUniform1i64vNV");
+ return false;
+ }
+}
+
+bool Gles::callGlProgramUniform1ui64NV(Stack* stack, bool pushReturn) {
+ auto x = stack->pop<uint64_t>();
+ auto location = stack->pop<int32_t>();
+ auto program = stack->pop<uint32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glProgramUniform1ui64NV(%" PRIu32 ", %" PRId32 ", %" PRIu64 ")", program, location, x);
+ if (mFunctionStubs.glProgramUniform1ui64NV != nullptr) {
+ mFunctionStubs.glProgramUniform1ui64NV(program, location, x);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glProgramUniform1ui64NV");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glProgramUniform1ui64NV");
+ return false;
+ }
+}
+
+bool Gles::callGlProgramUniform1ui64vNV(Stack* stack, bool pushReturn) {
+ auto value = stack->pop<GLuint64EXT*>();
+ auto count = stack->pop<int32_t>();
+ auto location = stack->pop<int32_t>();
+ auto program = stack->pop<uint32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glProgramUniform1ui64vNV(%" PRIu32 ", %" PRId32 ", %" PRId32 ", %p)", program, location, count, value);
+ if (mFunctionStubs.glProgramUniform1ui64vNV != nullptr) {
+ mFunctionStubs.glProgramUniform1ui64vNV(program, location, count, value);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glProgramUniform1ui64vNV");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glProgramUniform1ui64vNV");
+ return false;
+ }
+}
+
+bool Gles::callGlProgramUniform2i64NV(Stack* stack, bool pushReturn) {
+ auto y = stack->pop<int64_t>();
+ auto x = stack->pop<int64_t>();
+ auto location = stack->pop<int32_t>();
+ auto program = stack->pop<uint32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glProgramUniform2i64NV(%" PRIu32 ", %" PRId32 ", %" PRId64 ", %" PRId64 ")", program, location, x, y);
+ if (mFunctionStubs.glProgramUniform2i64NV != nullptr) {
+ mFunctionStubs.glProgramUniform2i64NV(program, location, x, y);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glProgramUniform2i64NV");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glProgramUniform2i64NV");
+ return false;
+ }
+}
+
+bool Gles::callGlProgramUniform2i64vNV(Stack* stack, bool pushReturn) {
+ auto value = stack->pop<GLint64EXT*>();
+ auto count = stack->pop<int32_t>();
+ auto location = stack->pop<int32_t>();
+ auto program = stack->pop<uint32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glProgramUniform2i64vNV(%" PRIu32 ", %" PRId32 ", %" PRId32 ", %p)", program, location, count, value);
+ if (mFunctionStubs.glProgramUniform2i64vNV != nullptr) {
+ mFunctionStubs.glProgramUniform2i64vNV(program, location, count, value);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glProgramUniform2i64vNV");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glProgramUniform2i64vNV");
+ return false;
+ }
+}
+
+bool Gles::callGlProgramUniform2ui64NV(Stack* stack, bool pushReturn) {
+ auto y = stack->pop<uint64_t>();
+ auto x = stack->pop<uint64_t>();
+ auto location = stack->pop<int32_t>();
+ auto program = stack->pop<uint32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glProgramUniform2ui64NV(%" PRIu32 ", %" PRId32 ", %" PRIu64 ", %" PRIu64 ")", program, location, x, y);
+ if (mFunctionStubs.glProgramUniform2ui64NV != nullptr) {
+ mFunctionStubs.glProgramUniform2ui64NV(program, location, x, y);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glProgramUniform2ui64NV");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glProgramUniform2ui64NV");
+ return false;
+ }
+}
+
+bool Gles::callGlProgramUniform2ui64vNV(Stack* stack, bool pushReturn) {
+ auto value = stack->pop<GLuint64EXT*>();
+ auto count = stack->pop<int32_t>();
+ auto location = stack->pop<int32_t>();
+ auto program = stack->pop<uint32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glProgramUniform2ui64vNV(%" PRIu32 ", %" PRId32 ", %" PRId32 ", %p)", program, location, count, value);
+ if (mFunctionStubs.glProgramUniform2ui64vNV != nullptr) {
+ mFunctionStubs.glProgramUniform2ui64vNV(program, location, count, value);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glProgramUniform2ui64vNV");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glProgramUniform2ui64vNV");
+ return false;
+ }
+}
+
+bool Gles::callGlProgramUniform3i64NV(Stack* stack, bool pushReturn) {
+ auto z = stack->pop<int64_t>();
+ auto y = stack->pop<int64_t>();
+ auto x = stack->pop<int64_t>();
+ auto location = stack->pop<int32_t>();
+ auto program = stack->pop<uint32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glProgramUniform3i64NV(%" PRIu32 ", %" PRId32 ", %" PRId64 ", %" PRId64 ", %" PRId64 ")", program, location, x, y, z);
+ if (mFunctionStubs.glProgramUniform3i64NV != nullptr) {
+ mFunctionStubs.glProgramUniform3i64NV(program, location, x, y, z);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glProgramUniform3i64NV");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glProgramUniform3i64NV");
+ return false;
+ }
+}
+
+bool Gles::callGlProgramUniform3i64vNV(Stack* stack, bool pushReturn) {
+ auto value = stack->pop<GLint64EXT*>();
+ auto count = stack->pop<int32_t>();
+ auto location = stack->pop<int32_t>();
+ auto program = stack->pop<uint32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glProgramUniform3i64vNV(%" PRIu32 ", %" PRId32 ", %" PRId32 ", %p)", program, location, count, value);
+ if (mFunctionStubs.glProgramUniform3i64vNV != nullptr) {
+ mFunctionStubs.glProgramUniform3i64vNV(program, location, count, value);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glProgramUniform3i64vNV");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glProgramUniform3i64vNV");
+ return false;
+ }
+}
+
+bool Gles::callGlProgramUniform3ui64NV(Stack* stack, bool pushReturn) {
+ auto z = stack->pop<uint64_t>();
+ auto y = stack->pop<uint64_t>();
+ auto x = stack->pop<uint64_t>();
+ auto location = stack->pop<int32_t>();
+ auto program = stack->pop<uint32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glProgramUniform3ui64NV(%" PRIu32 ", %" PRId32 ", %" PRIu64 ", %" PRIu64 ", %" PRIu64 ")", program, location, x, y, z);
+ if (mFunctionStubs.glProgramUniform3ui64NV != nullptr) {
+ mFunctionStubs.glProgramUniform3ui64NV(program, location, x, y, z);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glProgramUniform3ui64NV");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glProgramUniform3ui64NV");
+ return false;
+ }
+}
+
+bool Gles::callGlProgramUniform3ui64vNV(Stack* stack, bool pushReturn) {
+ auto value = stack->pop<GLuint64EXT*>();
+ auto count = stack->pop<int32_t>();
+ auto location = stack->pop<int32_t>();
+ auto program = stack->pop<uint32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glProgramUniform3ui64vNV(%" PRIu32 ", %" PRId32 ", %" PRId32 ", %p)", program, location, count, value);
+ if (mFunctionStubs.glProgramUniform3ui64vNV != nullptr) {
+ mFunctionStubs.glProgramUniform3ui64vNV(program, location, count, value);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glProgramUniform3ui64vNV");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glProgramUniform3ui64vNV");
+ return false;
+ }
+}
+
+bool Gles::callGlProgramUniform4i64NV(Stack* stack, bool pushReturn) {
+ auto w = stack->pop<int64_t>();
+ auto z = stack->pop<int64_t>();
+ auto y = stack->pop<int64_t>();
+ auto x = stack->pop<int64_t>();
+ auto location = stack->pop<int32_t>();
+ auto program = stack->pop<uint32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glProgramUniform4i64NV(%" PRIu32 ", %" PRId32 ", %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 ")", program, location, x, y, z, w);
+ if (mFunctionStubs.glProgramUniform4i64NV != nullptr) {
+ mFunctionStubs.glProgramUniform4i64NV(program, location, x, y, z, w);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glProgramUniform4i64NV");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glProgramUniform4i64NV");
+ return false;
+ }
+}
+
+bool Gles::callGlProgramUniform4i64vNV(Stack* stack, bool pushReturn) {
+ auto value = stack->pop<GLint64EXT*>();
+ auto count = stack->pop<int32_t>();
+ auto location = stack->pop<int32_t>();
+ auto program = stack->pop<uint32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glProgramUniform4i64vNV(%" PRIu32 ", %" PRId32 ", %" PRId32 ", %p)", program, location, count, value);
+ if (mFunctionStubs.glProgramUniform4i64vNV != nullptr) {
+ mFunctionStubs.glProgramUniform4i64vNV(program, location, count, value);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glProgramUniform4i64vNV");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glProgramUniform4i64vNV");
+ return false;
+ }
+}
+
+bool Gles::callGlProgramUniform4ui64NV(Stack* stack, bool pushReturn) {
+ auto w = stack->pop<uint64_t>();
+ auto z = stack->pop<uint64_t>();
+ auto y = stack->pop<uint64_t>();
+ auto x = stack->pop<uint64_t>();
+ auto location = stack->pop<int32_t>();
+ auto program = stack->pop<uint32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glProgramUniform4ui64NV(%" PRIu32 ", %" PRId32 ", %" PRIu64 ", %" PRIu64 ", %" PRIu64 ", %" PRIu64 ")", program, location, x, y, z, w);
+ if (mFunctionStubs.glProgramUniform4ui64NV != nullptr) {
+ mFunctionStubs.glProgramUniform4ui64NV(program, location, x, y, z, w);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glProgramUniform4ui64NV");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glProgramUniform4ui64NV");
+ return false;
+ }
+}
+
+bool Gles::callGlProgramUniform4ui64vNV(Stack* stack, bool pushReturn) {
+ auto value = stack->pop<GLuint64EXT*>();
+ auto count = stack->pop<int32_t>();
+ auto location = stack->pop<int32_t>();
+ auto program = stack->pop<uint32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glProgramUniform4ui64vNV(%" PRIu32 ", %" PRId32 ", %" PRId32 ", %p)", program, location, count, value);
+ if (mFunctionStubs.glProgramUniform4ui64vNV != nullptr) {
+ mFunctionStubs.glProgramUniform4ui64vNV(program, location, count, value);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glProgramUniform4ui64vNV");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glProgramUniform4ui64vNV");
+ return false;
+ }
+}
+
+bool Gles::callGlProgramUniformHandleui64IMG(Stack* stack, bool pushReturn) {
+ auto value = stack->pop<uint64_t>();
+ auto location = stack->pop<int32_t>();
+ auto program = stack->pop<uint32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glProgramUniformHandleui64IMG(%" PRIu32 ", %" PRId32 ", %" PRIu64 ")", program, location, value);
+ if (mFunctionStubs.glProgramUniformHandleui64IMG != nullptr) {
+ mFunctionStubs.glProgramUniformHandleui64IMG(program, location, value);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glProgramUniformHandleui64IMG");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glProgramUniformHandleui64IMG");
+ return false;
+ }
+}
+
+bool Gles::callGlProgramUniformHandleui64vIMG(Stack* stack, bool pushReturn) {
+ auto values = stack->pop<GLuint64*>();
+ auto count = stack->pop<int32_t>();
+ auto location = stack->pop<int32_t>();
+ auto program = stack->pop<uint32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glProgramUniformHandleui64vIMG(%" PRIu32 ", %" PRId32 ", %" PRId32 ", %p)", program, location, count, values);
+ if (mFunctionStubs.glProgramUniformHandleui64vIMG != nullptr) {
+ mFunctionStubs.glProgramUniformHandleui64vIMG(program, location, count, values);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glProgramUniformHandleui64vIMG");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glProgramUniformHandleui64vIMG");
+ return false;
+ }
+}
+
+bool Gles::callGlScissorArrayvOES(Stack* stack, bool pushReturn) {
+ auto v = stack->pop<GLint*>();
+ auto count = stack->pop<int32_t>();
+ auto first = stack->pop<uint32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glScissorArrayvOES(%" PRIu32 ", %" PRId32 ", %p)", first, count, v);
+ if (mFunctionStubs.glScissorArrayvOES != nullptr) {
+ mFunctionStubs.glScissorArrayvOES(first, count, v);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glScissorArrayvOES");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glScissorArrayvOES");
+ return false;
+ }
+}
+
+bool Gles::callGlScissorIndexedOES(Stack* stack, bool pushReturn) {
+ auto height = stack->pop<int32_t>();
+ auto width = stack->pop<int32_t>();
+ auto bottom = stack->pop<int32_t>();
+ auto left = stack->pop<int32_t>();
+ auto index = stack->pop<uint32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glScissorIndexedOES(%" PRIu32 ", %" PRId32 ", %" PRId32 ", %" PRId32 ", %" PRId32 ")", index, left, bottom, width, height);
+ if (mFunctionStubs.glScissorIndexedOES != nullptr) {
+ mFunctionStubs.glScissorIndexedOES(index, left, bottom, width, height);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glScissorIndexedOES");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glScissorIndexedOES");
+ return false;
+ }
+}
+
+bool Gles::callGlScissorIndexedvOES(Stack* stack, bool pushReturn) {
+ auto v = stack->pop<GLint*>();
+ auto index = stack->pop<uint32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glScissorIndexedvOES(%" PRIu32 ", %p)", index, v);
+ if (mFunctionStubs.glScissorIndexedvOES != nullptr) {
+ mFunctionStubs.glScissorIndexedvOES(index, v);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glScissorIndexedvOES");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glScissorIndexedvOES");
+ return false;
+ }
+}
+
+bool Gles::callGlUniform1i64NV(Stack* stack, bool pushReturn) {
+ auto x = stack->pop<int64_t>();
+ auto location = stack->pop<int32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glUniform1i64NV(%" PRId32 ", %" PRId64 ")", location, x);
+ if (mFunctionStubs.glUniform1i64NV != nullptr) {
+ mFunctionStubs.glUniform1i64NV(location, x);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glUniform1i64NV");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glUniform1i64NV");
+ return false;
+ }
+}
+
+bool Gles::callGlUniform1i64vNV(Stack* stack, bool pushReturn) {
+ auto value = stack->pop<GLint64EXT*>();
+ auto count = stack->pop<int32_t>();
+ auto location = stack->pop<int32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glUniform1i64vNV(%" PRId32 ", %" PRId32 ", %p)", location, count, value);
+ if (mFunctionStubs.glUniform1i64vNV != nullptr) {
+ mFunctionStubs.glUniform1i64vNV(location, count, value);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glUniform1i64vNV");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glUniform1i64vNV");
+ return false;
+ }
+}
+
+bool Gles::callGlUniform1ui64NV(Stack* stack, bool pushReturn) {
+ auto x = stack->pop<uint64_t>();
+ auto location = stack->pop<int32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glUniform1ui64NV(%" PRId32 ", %" PRIu64 ")", location, x);
+ if (mFunctionStubs.glUniform1ui64NV != nullptr) {
+ mFunctionStubs.glUniform1ui64NV(location, x);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glUniform1ui64NV");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glUniform1ui64NV");
+ return false;
+ }
+}
+
+bool Gles::callGlUniform1ui64vNV(Stack* stack, bool pushReturn) {
+ auto value = stack->pop<GLuint64EXT*>();
+ auto count = stack->pop<int32_t>();
+ auto location = stack->pop<int32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glUniform1ui64vNV(%" PRId32 ", %" PRId32 ", %p)", location, count, value);
+ if (mFunctionStubs.glUniform1ui64vNV != nullptr) {
+ mFunctionStubs.glUniform1ui64vNV(location, count, value);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glUniform1ui64vNV");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glUniform1ui64vNV");
+ return false;
+ }
+}
+
+bool Gles::callGlUniform2i64NV(Stack* stack, bool pushReturn) {
+ auto y = stack->pop<int64_t>();
+ auto x = stack->pop<int64_t>();
+ auto location = stack->pop<int32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glUniform2i64NV(%" PRId32 ", %" PRId64 ", %" PRId64 ")", location, x, y);
+ if (mFunctionStubs.glUniform2i64NV != nullptr) {
+ mFunctionStubs.glUniform2i64NV(location, x, y);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glUniform2i64NV");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glUniform2i64NV");
+ return false;
+ }
+}
+
+bool Gles::callGlUniform2i64vNV(Stack* stack, bool pushReturn) {
+ auto value = stack->pop<GLint64EXT*>();
+ auto count = stack->pop<int32_t>();
+ auto location = stack->pop<int32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glUniform2i64vNV(%" PRId32 ", %" PRId32 ", %p)", location, count, value);
+ if (mFunctionStubs.glUniform2i64vNV != nullptr) {
+ mFunctionStubs.glUniform2i64vNV(location, count, value);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glUniform2i64vNV");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glUniform2i64vNV");
+ return false;
+ }
+}
+
+bool Gles::callGlUniform2ui64NV(Stack* stack, bool pushReturn) {
+ auto y = stack->pop<uint64_t>();
+ auto x = stack->pop<uint64_t>();
+ auto location = stack->pop<int32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glUniform2ui64NV(%" PRId32 ", %" PRIu64 ", %" PRIu64 ")", location, x, y);
+ if (mFunctionStubs.glUniform2ui64NV != nullptr) {
+ mFunctionStubs.glUniform2ui64NV(location, x, y);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glUniform2ui64NV");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glUniform2ui64NV");
+ return false;
+ }
+}
+
+bool Gles::callGlUniform2ui64vNV(Stack* stack, bool pushReturn) {
+ auto value = stack->pop<GLuint64EXT*>();
+ auto count = stack->pop<int32_t>();
+ auto location = stack->pop<int32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glUniform2ui64vNV(%" PRId32 ", %" PRId32 ", %p)", location, count, value);
+ if (mFunctionStubs.glUniform2ui64vNV != nullptr) {
+ mFunctionStubs.glUniform2ui64vNV(location, count, value);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glUniform2ui64vNV");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glUniform2ui64vNV");
+ return false;
+ }
+}
+
+bool Gles::callGlUniform3i64NV(Stack* stack, bool pushReturn) {
+ auto z = stack->pop<int64_t>();
+ auto y = stack->pop<int64_t>();
+ auto x = stack->pop<int64_t>();
+ auto location = stack->pop<int32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glUniform3i64NV(%" PRId32 ", %" PRId64 ", %" PRId64 ", %" PRId64 ")", location, x, y, z);
+ if (mFunctionStubs.glUniform3i64NV != nullptr) {
+ mFunctionStubs.glUniform3i64NV(location, x, y, z);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glUniform3i64NV");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glUniform3i64NV");
+ return false;
+ }
+}
+
+bool Gles::callGlUniform3i64vNV(Stack* stack, bool pushReturn) {
+ auto value = stack->pop<GLint64EXT*>();
+ auto count = stack->pop<int32_t>();
+ auto location = stack->pop<int32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glUniform3i64vNV(%" PRId32 ", %" PRId32 ", %p)", location, count, value);
+ if (mFunctionStubs.glUniform3i64vNV != nullptr) {
+ mFunctionStubs.glUniform3i64vNV(location, count, value);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glUniform3i64vNV");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glUniform3i64vNV");
+ return false;
+ }
+}
+
+bool Gles::callGlUniform3ui64NV(Stack* stack, bool pushReturn) {
+ auto z = stack->pop<uint64_t>();
+ auto y = stack->pop<uint64_t>();
+ auto x = stack->pop<uint64_t>();
+ auto location = stack->pop<int32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glUniform3ui64NV(%" PRId32 ", %" PRIu64 ", %" PRIu64 ", %" PRIu64 ")", location, x, y, z);
+ if (mFunctionStubs.glUniform3ui64NV != nullptr) {
+ mFunctionStubs.glUniform3ui64NV(location, x, y, z);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glUniform3ui64NV");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glUniform3ui64NV");
+ return false;
+ }
+}
+
+bool Gles::callGlUniform3ui64vNV(Stack* stack, bool pushReturn) {
+ auto value = stack->pop<GLuint64EXT*>();
+ auto count = stack->pop<int32_t>();
+ auto location = stack->pop<int32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glUniform3ui64vNV(%" PRId32 ", %" PRId32 ", %p)", location, count, value);
+ if (mFunctionStubs.glUniform3ui64vNV != nullptr) {
+ mFunctionStubs.glUniform3ui64vNV(location, count, value);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glUniform3ui64vNV");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glUniform3ui64vNV");
+ return false;
+ }
+}
+
+bool Gles::callGlUniform4i64NV(Stack* stack, bool pushReturn) {
+ auto w = stack->pop<int64_t>();
+ auto z = stack->pop<int64_t>();
+ auto y = stack->pop<int64_t>();
+ auto x = stack->pop<int64_t>();
+ auto location = stack->pop<int32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glUniform4i64NV(%" PRId32 ", %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 ")", location, x, y, z, w);
+ if (mFunctionStubs.glUniform4i64NV != nullptr) {
+ mFunctionStubs.glUniform4i64NV(location, x, y, z, w);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glUniform4i64NV");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glUniform4i64NV");
+ return false;
+ }
+}
+
+bool Gles::callGlUniform4i64vNV(Stack* stack, bool pushReturn) {
+ auto value = stack->pop<GLint64EXT*>();
+ auto count = stack->pop<int32_t>();
+ auto location = stack->pop<int32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glUniform4i64vNV(%" PRId32 ", %" PRId32 ", %p)", location, count, value);
+ if (mFunctionStubs.glUniform4i64vNV != nullptr) {
+ mFunctionStubs.glUniform4i64vNV(location, count, value);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glUniform4i64vNV");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glUniform4i64vNV");
+ return false;
+ }
+}
+
+bool Gles::callGlUniform4ui64NV(Stack* stack, bool pushReturn) {
+ auto w = stack->pop<uint64_t>();
+ auto z = stack->pop<uint64_t>();
+ auto y = stack->pop<uint64_t>();
+ auto x = stack->pop<uint64_t>();
+ auto location = stack->pop<int32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glUniform4ui64NV(%" PRId32 ", %" PRIu64 ", %" PRIu64 ", %" PRIu64 ", %" PRIu64 ")", location, x, y, z, w);
+ if (mFunctionStubs.glUniform4ui64NV != nullptr) {
+ mFunctionStubs.glUniform4ui64NV(location, x, y, z, w);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glUniform4ui64NV");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glUniform4ui64NV");
+ return false;
+ }
+}
+
+bool Gles::callGlUniform4ui64vNV(Stack* stack, bool pushReturn) {
+ auto value = stack->pop<GLuint64EXT*>();
+ auto count = stack->pop<int32_t>();
+ auto location = stack->pop<int32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glUniform4ui64vNV(%" PRId32 ", %" PRId32 ", %p)", location, count, value);
+ if (mFunctionStubs.glUniform4ui64vNV != nullptr) {
+ mFunctionStubs.glUniform4ui64vNV(location, count, value);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glUniform4ui64vNV");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glUniform4ui64vNV");
+ return false;
+ }
+}
+
+bool Gles::callGlUniformHandleui64IMG(Stack* stack, bool pushReturn) {
+ auto value = stack->pop<uint64_t>();
+ auto location = stack->pop<int32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glUniformHandleui64IMG(%" PRId32 ", %" PRIu64 ")", location, value);
+ if (mFunctionStubs.glUniformHandleui64IMG != nullptr) {
+ mFunctionStubs.glUniformHandleui64IMG(location, value);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glUniformHandleui64IMG");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glUniformHandleui64IMG");
+ return false;
+ }
+}
+
+bool Gles::callGlUniformHandleui64vIMG(Stack* stack, bool pushReturn) {
+ auto value = stack->pop<GLuint64*>();
+ auto count = stack->pop<int32_t>();
+ auto location = stack->pop<int32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glUniformHandleui64vIMG(%" PRId32 ", %" PRId32 ", %p)", location, count, value);
+ if (mFunctionStubs.glUniformHandleui64vIMG != nullptr) {
+ mFunctionStubs.glUniformHandleui64vIMG(location, count, value);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glUniformHandleui64vIMG");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glUniformHandleui64vIMG");
+ return false;
+ }
+}
+
+bool Gles::callGlViewportArrayvOES(Stack* stack, bool pushReturn) {
+ auto v = stack->pop<GLfloat*>();
+ auto count = stack->pop<int32_t>();
+ auto first = stack->pop<uint32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glViewportArrayvOES(%" PRIu32 ", %" PRId32 ", %p)", first, count, v);
+ if (mFunctionStubs.glViewportArrayvOES != nullptr) {
+ mFunctionStubs.glViewportArrayvOES(first, count, v);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glViewportArrayvOES");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glViewportArrayvOES");
+ return false;
+ }
+}
+
+bool Gles::callGlViewportIndexedfOES(Stack* stack, bool pushReturn) {
+ auto h = stack->pop<float>();
+ auto w = stack->pop<float>();
+ auto y = stack->pop<float>();
+ auto x = stack->pop<float>();
+ auto index = stack->pop<uint32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glViewportIndexedfOES(%" PRIu32 ", %f, %f, %f, %f)", index, x, y, w, h);
+ if (mFunctionStubs.glViewportIndexedfOES != nullptr) {
+ mFunctionStubs.glViewportIndexedfOES(index, x, y, w, h);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glViewportIndexedfOES");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glViewportIndexedfOES");
+ return false;
+ }
+}
+
+bool Gles::callGlViewportIndexedfvOES(Stack* stack, bool pushReturn) {
+ auto v = stack->pop<GLfloat*>();
+ auto index = stack->pop<uint32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glViewportIndexedfvOES(%" PRIu32 ", %p)", index, v);
+ if (mFunctionStubs.glViewportIndexedfvOES != nullptr) {
+ mFunctionStubs.glViewportIndexedfvOES(index, v);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glViewportIndexedfvOES");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glViewportIndexedfvOES");
+ return false;
+ }
+}
+
+bool Gles::callGlViewportSwizzleNV(Stack* stack, bool pushReturn) {
+ auto swizzlew = stack->pop<GLenum>();
+ auto swizzlez = stack->pop<GLenum>();
+ auto swizzley = stack->pop<GLenum>();
+ auto swizzlex = stack->pop<GLenum>();
+ auto index = stack->pop<uint32_t>();
+ if (stack->isValid()) {
+ GAPID_INFO("glViewportSwizzleNV(%" PRIu32 ", %u, %u, %u, %u)", index, swizzlex, swizzley, swizzlez, swizzlew);
+ if (mFunctionStubs.glViewportSwizzleNV != nullptr) {
+ mFunctionStubs.glViewportSwizzleNV(index, swizzlex, swizzley, swizzlez, swizzlew);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glViewportSwizzleNV");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glViewportSwizzleNV");
+ return false;
+ }
+}
+
+bool Gles::callGlWindowRectanglesEXT(Stack* stack, bool pushReturn) {
+ auto box = stack->pop<GLint*>();
+ auto count = stack->pop<int32_t>();
+ auto mode = stack->pop<GLenum>();
+ if (stack->isValid()) {
+ GAPID_INFO("glWindowRectanglesEXT(%u, %" PRId32 ", %p)", mode, count, box);
+ if (mFunctionStubs.glWindowRectanglesEXT != nullptr) {
+ mFunctionStubs.glWindowRectanglesEXT(mode, count, box);
+ } else {
+ GAPID_WARNING("Attempted to call unsupported function glWindowRectanglesEXT");
+ }
+ return true;
+ } else {
+ GAPID_WARNING("Error during calling function glWindowRectanglesEXT");
+ return false;
+ }
+}
+
bool Gles::callGlBlendBarrier(Stack* stack, bool pushReturn) {
if (stack->isValid()) {
GAPID_INFO("glBlendBarrier()");
diff --git a/cc/gapir/gles_gfx_api.h b/cc/gapir/gles_gfx_api.h
index 274176b..5f890f1 100644
--- a/cc/gapir/gles_gfx_api.h
+++ b/cc/gapir/gles_gfx_api.h
@@ -37,6 +37,33 @@
// Look-up the API function addresses for the graphics API.
void resolve();
+ enum class AndroidGraphicsBufferFormat : uint32_t {
+ HAL_PIXEL_FORMAT_RGBA_8888 = 1,
+ HAL_PIXEL_FORMAT_RGBX_8888 = 2,
+ HAL_PIXEL_FORMAT_RGB_888 = 3,
+ HAL_PIXEL_FORMAT_RGB_565 = 4,
+ HAL_PIXEL_FORMAT_BGRA_8888 = 5,
+ HAL_PIXEL_FORMAT_RGBA_5551 = 6,
+ HAL_PIXEL_FORMAT_RGBA_4444 = 7,
+ HAL_PIXEL_FORMAT_YCrCb_420_SP = 17,
+ };
+
+ enum class AndroidGraphicsBufferUsage : uint32_t {
+ USAGE_SW_READ_NEVER = 0,
+ USAGE_SW_READ_RARELY = 2,
+ USAGE_SW_READ_OFTEN = 3,
+ USAGE_SW_READ_MASK = 15,
+ USAGE_SW_WRITE_NEVER = 0,
+ USAGE_SW_WRITE_RARELY = 32,
+ USAGE_SW_WRITE_OFTEN = 48,
+ USAGE_SW_WRITE_MASK = 240,
+ USAGE_HW_TEXTURE = 256,
+ USAGE_HW_RENDER = 512,
+ USAGE_HW_2D = 1024,
+ USAGE_HW_FB = 4096,
+ USAGE_HW_MASK = 7936,
+ };
+
enum class EGLenum : uint32_t {
EGL_ALPHA_FORMAT = 12424,
EGL_ALPHA_FORMAT_NONPRE = 12427,
@@ -411,6 +438,7 @@
GL_MULTISAMPLE_BUFFER_BIT7_QCOM = 2147483648,
GL_TEXTURE_DEFORMATION_BIT_SGIX = 1,
GL_GEOMETRY_DEFORMATION_BIT_SGIX = 2,
+ GL_CONTEXT_FLAG_PROTECTED_CONTENT_BIT_EXT = 16,
};
enum class GLenum : uint32_t {
@@ -5802,6 +5830,71 @@
GL_VERTEX_CONSISTENT_HINT_PGI = 107051,
GL_MATERIAL_SIDE_HINT_PGI = 107052,
GL_MAX_VERTEX_HINT_PGI = 107053,
+ GL_NUM_WINDOW_RECTANGLES_EXT = 36629,
+ GL_FLOAT16_MAT4_AMD = 37319,
+ GL_VIEWPORT_INDEX_PROVOKING_VERTEX_OES = 33375,
+ GL_VIEWPORT_POSITION_W_SCALE_NV = 37756,
+ GL_MAX_VIEWPORTS_OES = 33371,
+ GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_AND_DOWNSAMPLE_IMG = 37180,
+ GL_VIEWPORT_SWIZZLE_POSITIVE_W_NV = 37718,
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SCALE_IMG = 37183,
+ GL_VIEWPORT_POSITION_W_SCALE_X_COEFF_NV = 37757,
+ GL_VIEWPORT_SWIZZLE_Y_NV = 37721,
+ GL_CUBIC_MIPMAP_NEAREST_IMG = 37178,
+ GL_FLOAT16_MAT2_AMD = 37317,
+ GL_CUBIC_IMG = 37177,
+ GL_DOWNSAMPLE_SCALES_IMG = 37182,
+ GL_NUM_DOWNSAMPLE_SCALES_IMG = 37181,
+ GL_PIXELS_PER_SAMPLE_PATTERN_X_AMD = 37294,
+ GL_FLOAT16_MAT4x3_AMD = 37325,
+ GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES_EXT = 33530,
+ GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_FAST_SIZE_EXT = 38480,
+ GL_FLOAT16_MAT2x3_AMD = 37320,
+ GL_CONSERVATIVE_RASTERIZATION_INTEL = 33790,
+ GL_VIEWPORT_SWIZZLE_POSITIVE_Z_NV = 37716,
+ GL_VIEWPORT_SWIZZLE_W_NV = 37723,
+ GL_MAX_WINDOW_RECTANGLES_EXT = 36628,
+ GL_EXCLUSIVE_EXT = 36625,
+ GL_WINDOW_RECTANGLE_EXT = 36626,
+ GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR = 38451,
+ GL_CLIP_DISTANCE1_EXT = 12289,
+ GL_FLOAT16_MAT4x2_AMD = 37324,
+ GL_CONSERVATIVE_RASTER_MODE_NV = 38221,
+ GL_CLIP_DISTANCE7_EXT = 12295,
+ GL_VIEWPORT_SWIZZLE_Z_NV = 37722,
+ GL_VIEWPORT_SWIZZLE_NEGATIVE_Y_NV = 37715,
+ GL_PURGED_CONTEXT_RESET_NV = 37563,
+ GL_CONSERVATIVE_RASTER_MODE_POST_SNAP_NV = 38222,
+ GL_FLOAT16_MAT2x4_AMD = 37321,
+ GL_CUBIC_MIPMAP_LINEAR_IMG = 37179,
+ GL_ALL_PIXELS_AMD = 4294967295,
+ GL_CLIP_DISTANCE5_EXT = 12293,
+ GL_VIEWPORT_SWIZZLE_POSITIVE_Y_NV = 37714,
+ GL_CLIP_DISTANCE4_EXT = 12292,
+ GL_PIXELS_PER_SAMPLE_PATTERN_Y_AMD = 37295,
+ GL_VIEWPORT_SUBPIXEL_BITS_OES = 33372,
+ GL_VIEWPORT_SWIZZLE_NEGATIVE_Z_NV = 37717,
+ GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV = 38223,
+ GL_FLOAT16_MAT3_AMD = 37318,
+ GL_VIEWPORT_SWIZZLE_NEGATIVE_W_NV = 37719,
+ GL_CLIP_DISTANCE3_EXT = 12291,
+ GL_FLOAT16_MAT3x4_AMD = 37323,
+ GL_VIEWPORT_BOUNDS_RANGE_OES = 33373,
+ GL_MAX_CULL_DISTANCES_EXT = 33529,
+ GL_VIEWPORT_SWIZZLE_X_NV = 37720,
+ GL_MAX_CLIP_DISTANCES_EXT = 3378,
+ GL_CLIP_DISTANCE2_EXT = 12290,
+ GL_VIEWPORT_SWIZZLE_NEGATIVE_X_NV = 37713,
+ GL_FLOAT16_MAT3x2_AMD = 37322,
+ GL_FRAMEBUFFER_INCOMPLETE_INSUFFICIENT_SHADER_COMBINED_LOCAL_STORAGE_EXT = 38482,
+ GL_VIEWPORT_POSITION_W_SCALE_Y_COEFF_NV = 37758,
+ GL_WINDOW_RECTANGLE_MODE_EXT = 36627,
+ GL_INCLUSIVE_EXT = 36624,
+ GL_VIEWPORT_SWIZZLE_POSITIVE_X_NV = 37712,
+ GL_TEXTURE_PROTECTED_EXT = 35834,
+ GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_SIZE_EXT = 38481,
+ GL_CLIP_DISTANCE6_EXT = 12294,
+ GL_CLIP_DISTANCE0_EXT = 12288,
};
enum class ExtensionId : uint32_t {
@@ -5918,7 +6011,20 @@
GL_EXT_texture_compression_s3tc = 111,
GL_OES_packed_depth_stencil = 112,
GL_EXT_texture_format_BGRA8888 = 113,
+ GL_OES_viewport_array = 114,
+ GL_EXT_shader_pixel_local_storage2 = 115,
+ GL_EXT_clear_texture = 116,
+ GL_NV_conservative_raster_pre_snap_triangles = 118,
+ GL_EXT_draw_transform_feedback = 119,
+ GL_IMG_framebuffer_downsample = 123,
+ GL_OVR_multiview_multisampled_render_to_texture = 124,
+ GL_IMG_bindless_texture = 125,
+ GL_NV_gpu_shader5 = 126,
+ GL_EXT_polygon_offset_clamp = 127,
+ GL_NV_viewport_swizzle = 128,
+ GL_EXT_window_rectangles = 129,
EGL_KHR_image_base = 400,
+ EGL_ANDROID_create_native_client_buffer = 401,
ANDROID_image_native_buffer = 500,
};
@@ -6012,7 +6118,9 @@
typedef char GLchar;
typedef int16_t GLshort;
typedef int64_t GLint64;
+ typedef int64_t GLint64EXT;
typedef uint64_t GLuint64;
+ typedef uint64_t GLuint64EXT;
typedef int32_t GLfixed;
typedef int32_t GLsizei;
typedef int32_t GLintptr;
@@ -6276,6 +6384,7 @@
typedef EGLBoolean (GLES_API_PTR *PFNEGLWAITNATIVE)(EGLint engine);
typedef EGLImageKHR (GLES_API_PTR *PFNEGLCREATEIMAGEKHR)(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, EGLint* attrib_list);
typedef EGLBoolean (GLES_API_PTR *PFNEGLDESTROYIMAGEKHR)(EGLDisplay dpy, EGLImageKHR image);
+ typedef EGLClientBuffer (GLES_API_PTR *PFNEGLCREATENATIVECLIENTBUFFERANDROID)(EGLint* attrib_list);
typedef void (GLES_API_PTR *PFNGLACTIVESHADERPROGRAMEXT)(PipelineId pipeline, ProgramId program);
typedef void (GLES_API_PTR *PFNGLALPHAFUNCQCOM)(GLenum func, GLclampf ref);
typedef void (GLES_API_PTR *PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTEL)();
@@ -6605,6 +6714,68 @@
typedef void (GLES_API_PTR *PFNGLVIEWPORTINDEXEDFVNV)(GLuint index, GLfloat* v);
typedef void (GLES_API_PTR *PFNGLWAITSYNCAPPLE)(GLsync sync, GLbitfield flag, GLuint64 timeout);
typedef void (GLES_API_PTR *PFNGLWEIGHTPATHSNV)(GLuint resultPath, GLsizei numPaths, GLuint* paths, GLfloat* weights);
+ typedef void (GLES_API_PTR *PFNGLCLEARPIXELLOCALSTORAGEUIEXT)(GLsizei offset, GLsizei n, GLuint* values);
+ typedef void (GLES_API_PTR *PFNGLCLEARTEXIMAGEEXT)(GLuint texture, GLint level, GLenum format, GLenum type, void* data);
+ typedef void (GLES_API_PTR *PFNGLCLEARTEXSUBIMAGEEXT)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, void* data);
+ typedef void (GLES_API_PTR *PFNGLCONSERVATIVERASTERPARAMETERINV)(GLenum pname, GLint param);
+ typedef void (GLES_API_PTR *PFNGLDEPTHRANGEARRAYFVOES)(GLuint first, GLsizei count, GLfloat* v);
+ typedef void (GLES_API_PTR *PFNGLDEPTHRANGEINDEXEDFOES)(GLuint index, GLfloat n, GLfloat f);
+ typedef void (GLES_API_PTR *PFNGLDRAWTRANSFORMFEEDBACKEXT)(GLenum mode, GLuint id);
+ typedef void (GLES_API_PTR *PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDEXT)(GLenum mode, GLuint id, GLsizei instancecount);
+ typedef void (GLES_API_PTR *PFNGLFRAMEBUFFERPIXELLOCALSTORAGESIZEEXT)(GLuint target, GLsizei size);
+ typedef void (GLES_API_PTR *PFNGLFRAMEBUFFERTEXTURE2DDOWNSAMPLEIMG)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint xscale, GLint yscale);
+ typedef void (GLES_API_PTR *PFNGLFRAMEBUFFERTEXTURELAYERDOWNSAMPLEIMG)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer, GLint xscale, GLint yscale);
+ typedef void (GLES_API_PTR *PFNGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVR)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLsizei samples, GLint baseViewIndex, GLsizei numViews);
+ typedef void (GLES_API_PTR *PFNGLGETFLOATI_VOES)(GLenum target, GLuint index, GLfloat* data);
+ typedef GLsizei (GLES_API_PTR *PFNGLGETFRAMEBUFFERPIXELLOCALSTORAGESIZEEXT)(GLuint target);
+ typedef GLuint64 (GLES_API_PTR *PFNGLGETTEXTUREHANDLEIMG)(GLuint texture);
+ typedef GLuint64 (GLES_API_PTR *PFNGLGETTEXTURESAMPLERHANDLEIMG)(GLuint texture, GLuint sampler);
+ typedef void (GLES_API_PTR *PFNGLGETUNIFORMI64VNV)(GLuint program, GLint location, GLint64EXT* params);
+ typedef void (GLES_API_PTR *PFNGLPOLYGONOFFSETCLAMPEXT)(GLfloat factor, GLfloat units, GLfloat clamp);
+ typedef void (GLES_API_PTR *PFNGLPROGRAMUNIFORM1I64NV)(GLuint program, GLint location, GLint64EXT x);
+ typedef void (GLES_API_PTR *PFNGLPROGRAMUNIFORM1I64VNV)(GLuint program, GLint location, GLsizei count, GLint64EXT* value);
+ typedef void (GLES_API_PTR *PFNGLPROGRAMUNIFORM1UI64NV)(GLuint program, GLint location, GLuint64EXT x);
+ typedef void (GLES_API_PTR *PFNGLPROGRAMUNIFORM1UI64VNV)(GLuint program, GLint location, GLsizei count, GLuint64EXT* value);
+ typedef void (GLES_API_PTR *PFNGLPROGRAMUNIFORM2I64NV)(GLuint program, GLint location, GLint64EXT x, GLint64EXT y);
+ typedef void (GLES_API_PTR *PFNGLPROGRAMUNIFORM2I64VNV)(GLuint program, GLint location, GLsizei count, GLint64EXT* value);
+ typedef void (GLES_API_PTR *PFNGLPROGRAMUNIFORM2UI64NV)(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y);
+ typedef void (GLES_API_PTR *PFNGLPROGRAMUNIFORM2UI64VNV)(GLuint program, GLint location, GLsizei count, GLuint64EXT* value);
+ typedef void (GLES_API_PTR *PFNGLPROGRAMUNIFORM3I64NV)(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
+ typedef void (GLES_API_PTR *PFNGLPROGRAMUNIFORM3I64VNV)(GLuint program, GLint location, GLsizei count, GLint64EXT* value);
+ typedef void (GLES_API_PTR *PFNGLPROGRAMUNIFORM3UI64NV)(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
+ typedef void (GLES_API_PTR *PFNGLPROGRAMUNIFORM3UI64VNV)(GLuint program, GLint location, GLsizei count, GLuint64EXT* value);
+ typedef void (GLES_API_PTR *PFNGLPROGRAMUNIFORM4I64NV)(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
+ typedef void (GLES_API_PTR *PFNGLPROGRAMUNIFORM4I64VNV)(GLuint program, GLint location, GLsizei count, GLint64EXT* value);
+ typedef void (GLES_API_PTR *PFNGLPROGRAMUNIFORM4UI64NV)(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
+ typedef void (GLES_API_PTR *PFNGLPROGRAMUNIFORM4UI64VNV)(GLuint program, GLint location, GLsizei count, GLuint64EXT* value);
+ typedef void (GLES_API_PTR *PFNGLPROGRAMUNIFORMHANDLEUI64IMG)(GLuint program, GLint location, GLuint64 value);
+ typedef void (GLES_API_PTR *PFNGLPROGRAMUNIFORMHANDLEUI64VIMG)(GLuint program, GLint location, GLsizei count, GLuint64* values);
+ typedef void (GLES_API_PTR *PFNGLSCISSORARRAYVOES)(GLuint first, GLsizei count, GLint* v);
+ typedef void (GLES_API_PTR *PFNGLSCISSORINDEXEDOES)(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
+ typedef void (GLES_API_PTR *PFNGLSCISSORINDEXEDVOES)(GLuint index, GLint* v);
+ typedef void (GLES_API_PTR *PFNGLUNIFORM1I64NV)(GLint location, GLint64EXT x);
+ typedef void (GLES_API_PTR *PFNGLUNIFORM1I64VNV)(GLint location, GLsizei count, GLint64EXT* value);
+ typedef void (GLES_API_PTR *PFNGLUNIFORM1UI64NV)(GLint location, GLuint64EXT x);
+ typedef void (GLES_API_PTR *PFNGLUNIFORM1UI64VNV)(GLint location, GLsizei count, GLuint64EXT* value);
+ typedef void (GLES_API_PTR *PFNGLUNIFORM2I64NV)(GLint location, GLint64EXT x, GLint64EXT y);
+ typedef void (GLES_API_PTR *PFNGLUNIFORM2I64VNV)(GLint location, GLsizei count, GLint64EXT* value);
+ typedef void (GLES_API_PTR *PFNGLUNIFORM2UI64NV)(GLint location, GLuint64EXT x, GLuint64EXT y);
+ typedef void (GLES_API_PTR *PFNGLUNIFORM2UI64VNV)(GLint location, GLsizei count, GLuint64EXT* value);
+ typedef void (GLES_API_PTR *PFNGLUNIFORM3I64NV)(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
+ typedef void (GLES_API_PTR *PFNGLUNIFORM3I64VNV)(GLint location, GLsizei count, GLint64EXT* value);
+ typedef void (GLES_API_PTR *PFNGLUNIFORM3UI64NV)(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
+ typedef void (GLES_API_PTR *PFNGLUNIFORM3UI64VNV)(GLint location, GLsizei count, GLuint64EXT* value);
+ typedef void (GLES_API_PTR *PFNGLUNIFORM4I64NV)(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
+ typedef void (GLES_API_PTR *PFNGLUNIFORM4I64VNV)(GLint location, GLsizei count, GLint64EXT* value);
+ typedef void (GLES_API_PTR *PFNGLUNIFORM4UI64NV)(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
+ typedef void (GLES_API_PTR *PFNGLUNIFORM4UI64VNV)(GLint location, GLsizei count, GLuint64EXT* value);
+ typedef void (GLES_API_PTR *PFNGLUNIFORMHANDLEUI64IMG)(GLint location, GLuint64 value);
+ typedef void (GLES_API_PTR *PFNGLUNIFORMHANDLEUI64VIMG)(GLint location, GLsizei count, GLuint64* value);
+ typedef void (GLES_API_PTR *PFNGLVIEWPORTARRAYVOES)(GLuint first, GLsizei count, GLfloat* v);
+ typedef void (GLES_API_PTR *PFNGLVIEWPORTINDEXEDFOES)(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
+ typedef void (GLES_API_PTR *PFNGLVIEWPORTINDEXEDFVOES)(GLuint index, GLfloat* v);
+ typedef void (GLES_API_PTR *PFNGLVIEWPORTSWIZZLENV)(GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew);
+ typedef void (GLES_API_PTR *PFNGLWINDOWRECTANGLESEXT)(GLenum mode, GLsizei count, GLint* box);
typedef void (GLES_API_PTR *PFNGLBLENDBARRIER)();
typedef void (GLES_API_PTR *PFNGLBLENDCOLOR)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
typedef void (GLES_API_PTR *PFNGLBLENDEQUATION)(GLenum equation);
@@ -7242,6 +7413,7 @@
PFNEGLWAITNATIVE eglWaitNative = nullptr;
PFNEGLCREATEIMAGEKHR eglCreateImageKHR = nullptr;
PFNEGLDESTROYIMAGEKHR eglDestroyImageKHR = nullptr;
+ PFNEGLCREATENATIVECLIENTBUFFERANDROID eglCreateNativeClientBufferANDROID = nullptr;
PFNGLACTIVESHADERPROGRAMEXT glActiveShaderProgramEXT = nullptr;
PFNGLALPHAFUNCQCOM glAlphaFuncQCOM = nullptr;
PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTEL glApplyFramebufferAttachmentCMAAINTEL = nullptr;
@@ -7571,6 +7743,68 @@
PFNGLVIEWPORTINDEXEDFVNV glViewportIndexedfvNV = nullptr;
PFNGLWAITSYNCAPPLE glWaitSyncAPPLE = nullptr;
PFNGLWEIGHTPATHSNV glWeightPathsNV = nullptr;
+ PFNGLCLEARPIXELLOCALSTORAGEUIEXT glClearPixelLocalStorageuiEXT = nullptr;
+ PFNGLCLEARTEXIMAGEEXT glClearTexImageEXT = nullptr;
+ PFNGLCLEARTEXSUBIMAGEEXT glClearTexSubImageEXT = nullptr;
+ PFNGLCONSERVATIVERASTERPARAMETERINV glConservativeRasterParameteriNV = nullptr;
+ PFNGLDEPTHRANGEARRAYFVOES glDepthRangeArrayfvOES = nullptr;
+ PFNGLDEPTHRANGEINDEXEDFOES glDepthRangeIndexedfOES = nullptr;
+ PFNGLDRAWTRANSFORMFEEDBACKEXT glDrawTransformFeedbackEXT = nullptr;
+ PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDEXT glDrawTransformFeedbackInstancedEXT = nullptr;
+ PFNGLFRAMEBUFFERPIXELLOCALSTORAGESIZEEXT glFramebufferPixelLocalStorageSizeEXT = nullptr;
+ PFNGLFRAMEBUFFERTEXTURE2DDOWNSAMPLEIMG glFramebufferTexture2DDownsampleIMG = nullptr;
+ PFNGLFRAMEBUFFERTEXTURELAYERDOWNSAMPLEIMG glFramebufferTextureLayerDownsampleIMG = nullptr;
+ PFNGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVR glFramebufferTextureMultisampleMultiviewOVR = nullptr;
+ PFNGLGETFLOATI_VOES glGetFloati_vOES = nullptr;
+ PFNGLGETFRAMEBUFFERPIXELLOCALSTORAGESIZEEXT glGetFramebufferPixelLocalStorageSizeEXT = nullptr;
+ PFNGLGETTEXTUREHANDLEIMG glGetTextureHandleIMG = nullptr;
+ PFNGLGETTEXTURESAMPLERHANDLEIMG glGetTextureSamplerHandleIMG = nullptr;
+ PFNGLGETUNIFORMI64VNV glGetUniformi64vNV = nullptr;
+ PFNGLPOLYGONOFFSETCLAMPEXT glPolygonOffsetClampEXT = nullptr;
+ PFNGLPROGRAMUNIFORM1I64NV glProgramUniform1i64NV = nullptr;
+ PFNGLPROGRAMUNIFORM1I64VNV glProgramUniform1i64vNV = nullptr;
+ PFNGLPROGRAMUNIFORM1UI64NV glProgramUniform1ui64NV = nullptr;
+ PFNGLPROGRAMUNIFORM1UI64VNV glProgramUniform1ui64vNV = nullptr;
+ PFNGLPROGRAMUNIFORM2I64NV glProgramUniform2i64NV = nullptr;
+ PFNGLPROGRAMUNIFORM2I64VNV glProgramUniform2i64vNV = nullptr;
+ PFNGLPROGRAMUNIFORM2UI64NV glProgramUniform2ui64NV = nullptr;
+ PFNGLPROGRAMUNIFORM2UI64VNV glProgramUniform2ui64vNV = nullptr;
+ PFNGLPROGRAMUNIFORM3I64NV glProgramUniform3i64NV = nullptr;
+ PFNGLPROGRAMUNIFORM3I64VNV glProgramUniform3i64vNV = nullptr;
+ PFNGLPROGRAMUNIFORM3UI64NV glProgramUniform3ui64NV = nullptr;
+ PFNGLPROGRAMUNIFORM3UI64VNV glProgramUniform3ui64vNV = nullptr;
+ PFNGLPROGRAMUNIFORM4I64NV glProgramUniform4i64NV = nullptr;
+ PFNGLPROGRAMUNIFORM4I64VNV glProgramUniform4i64vNV = nullptr;
+ PFNGLPROGRAMUNIFORM4UI64NV glProgramUniform4ui64NV = nullptr;
+ PFNGLPROGRAMUNIFORM4UI64VNV glProgramUniform4ui64vNV = nullptr;
+ PFNGLPROGRAMUNIFORMHANDLEUI64IMG glProgramUniformHandleui64IMG = nullptr;
+ PFNGLPROGRAMUNIFORMHANDLEUI64VIMG glProgramUniformHandleui64vIMG = nullptr;
+ PFNGLSCISSORARRAYVOES glScissorArrayvOES = nullptr;
+ PFNGLSCISSORINDEXEDOES glScissorIndexedOES = nullptr;
+ PFNGLSCISSORINDEXEDVOES glScissorIndexedvOES = nullptr;
+ PFNGLUNIFORM1I64NV glUniform1i64NV = nullptr;
+ PFNGLUNIFORM1I64VNV glUniform1i64vNV = nullptr;
+ PFNGLUNIFORM1UI64NV glUniform1ui64NV = nullptr;
+ PFNGLUNIFORM1UI64VNV glUniform1ui64vNV = nullptr;
+ PFNGLUNIFORM2I64NV glUniform2i64NV = nullptr;
+ PFNGLUNIFORM2I64VNV glUniform2i64vNV = nullptr;
+ PFNGLUNIFORM2UI64NV glUniform2ui64NV = nullptr;
+ PFNGLUNIFORM2UI64VNV glUniform2ui64vNV = nullptr;
+ PFNGLUNIFORM3I64NV glUniform3i64NV = nullptr;
+ PFNGLUNIFORM3I64VNV glUniform3i64vNV = nullptr;
+ PFNGLUNIFORM3UI64NV glUniform3ui64NV = nullptr;
+ PFNGLUNIFORM3UI64VNV glUniform3ui64vNV = nullptr;
+ PFNGLUNIFORM4I64NV glUniform4i64NV = nullptr;
+ PFNGLUNIFORM4I64VNV glUniform4i64vNV = nullptr;
+ PFNGLUNIFORM4UI64NV glUniform4ui64NV = nullptr;
+ PFNGLUNIFORM4UI64VNV glUniform4ui64vNV = nullptr;
+ PFNGLUNIFORMHANDLEUI64IMG glUniformHandleui64IMG = nullptr;
+ PFNGLUNIFORMHANDLEUI64VIMG glUniformHandleui64vIMG = nullptr;
+ PFNGLVIEWPORTARRAYVOES glViewportArrayvOES = nullptr;
+ PFNGLVIEWPORTINDEXEDFOES glViewportIndexedfOES = nullptr;
+ PFNGLVIEWPORTINDEXEDFVOES glViewportIndexedfvOES = nullptr;
+ PFNGLVIEWPORTSWIZZLENV glViewportSwizzleNV = nullptr;
+ PFNGLWINDOWRECTANGLESEXT glWindowRectanglesEXT = nullptr;
PFNGLBLENDBARRIER glBlendBarrier = nullptr;
PFNGLBLENDCOLOR glBlendColor = nullptr;
PFNGLBLENDEQUATION glBlendEquation = nullptr;
@@ -8213,6 +8447,7 @@
bool callEglWaitNative(Stack* stack, bool pushReturn);
bool callEglCreateImageKHR(Stack* stack, bool pushReturn);
bool callEglDestroyImageKHR(Stack* stack, bool pushReturn);
+ bool callEglCreateNativeClientBufferANDROID(Stack* stack, bool pushReturn);
bool callGlActiveShaderProgramEXT(Stack* stack, bool pushReturn);
bool callGlAlphaFuncQCOM(Stack* stack, bool pushReturn);
bool callGlApplyFramebufferAttachmentCMAAINTEL(Stack* stack, bool pushReturn);
@@ -8542,6 +8777,68 @@
bool callGlViewportIndexedfvNV(Stack* stack, bool pushReturn);
bool callGlWaitSyncAPPLE(Stack* stack, bool pushReturn);
bool callGlWeightPathsNV(Stack* stack, bool pushReturn);
+ bool callGlClearPixelLocalStorageuiEXT(Stack* stack, bool pushReturn);
+ bool callGlClearTexImageEXT(Stack* stack, bool pushReturn);
+ bool callGlClearTexSubImageEXT(Stack* stack, bool pushReturn);
+ bool callGlConservativeRasterParameteriNV(Stack* stack, bool pushReturn);
+ bool callGlDepthRangeArrayfvOES(Stack* stack, bool pushReturn);
+ bool callGlDepthRangeIndexedfOES(Stack* stack, bool pushReturn);
+ bool callGlDrawTransformFeedbackEXT(Stack* stack, bool pushReturn);
+ bool callGlDrawTransformFeedbackInstancedEXT(Stack* stack, bool pushReturn);
+ bool callGlFramebufferPixelLocalStorageSizeEXT(Stack* stack, bool pushReturn);
+ bool callGlFramebufferTexture2DDownsampleIMG(Stack* stack, bool pushReturn);
+ bool callGlFramebufferTextureLayerDownsampleIMG(Stack* stack, bool pushReturn);
+ bool callGlFramebufferTextureMultisampleMultiviewOVR(Stack* stack, bool pushReturn);
+ bool callGlGetFloatiVOES(Stack* stack, bool pushReturn);
+ bool callGlGetFramebufferPixelLocalStorageSizeEXT(Stack* stack, bool pushReturn);
+ bool callGlGetTextureHandleIMG(Stack* stack, bool pushReturn);
+ bool callGlGetTextureSamplerHandleIMG(Stack* stack, bool pushReturn);
+ bool callGlGetUniformi64vNV(Stack* stack, bool pushReturn);
+ bool callGlPolygonOffsetClampEXT(Stack* stack, bool pushReturn);
+ bool callGlProgramUniform1i64NV(Stack* stack, bool pushReturn);
+ bool callGlProgramUniform1i64vNV(Stack* stack, bool pushReturn);
+ bool callGlProgramUniform1ui64NV(Stack* stack, bool pushReturn);
+ bool callGlProgramUniform1ui64vNV(Stack* stack, bool pushReturn);
+ bool callGlProgramUniform2i64NV(Stack* stack, bool pushReturn);
+ bool callGlProgramUniform2i64vNV(Stack* stack, bool pushReturn);
+ bool callGlProgramUniform2ui64NV(Stack* stack, bool pushReturn);
+ bool callGlProgramUniform2ui64vNV(Stack* stack, bool pushReturn);
+ bool callGlProgramUniform3i64NV(Stack* stack, bool pushReturn);
+ bool callGlProgramUniform3i64vNV(Stack* stack, bool pushReturn);
+ bool callGlProgramUniform3ui64NV(Stack* stack, bool pushReturn);
+ bool callGlProgramUniform3ui64vNV(Stack* stack, bool pushReturn);
+ bool callGlProgramUniform4i64NV(Stack* stack, bool pushReturn);
+ bool callGlProgramUniform4i64vNV(Stack* stack, bool pushReturn);
+ bool callGlProgramUniform4ui64NV(Stack* stack, bool pushReturn);
+ bool callGlProgramUniform4ui64vNV(Stack* stack, bool pushReturn);
+ bool callGlProgramUniformHandleui64IMG(Stack* stack, bool pushReturn);
+ bool callGlProgramUniformHandleui64vIMG(Stack* stack, bool pushReturn);
+ bool callGlScissorArrayvOES(Stack* stack, bool pushReturn);
+ bool callGlScissorIndexedOES(Stack* stack, bool pushReturn);
+ bool callGlScissorIndexedvOES(Stack* stack, bool pushReturn);
+ bool callGlUniform1i64NV(Stack* stack, bool pushReturn);
+ bool callGlUniform1i64vNV(Stack* stack, bool pushReturn);
+ bool callGlUniform1ui64NV(Stack* stack, bool pushReturn);
+ bool callGlUniform1ui64vNV(Stack* stack, bool pushReturn);
+ bool callGlUniform2i64NV(Stack* stack, bool pushReturn);
+ bool callGlUniform2i64vNV(Stack* stack, bool pushReturn);
+ bool callGlUniform2ui64NV(Stack* stack, bool pushReturn);
+ bool callGlUniform2ui64vNV(Stack* stack, bool pushReturn);
+ bool callGlUniform3i64NV(Stack* stack, bool pushReturn);
+ bool callGlUniform3i64vNV(Stack* stack, bool pushReturn);
+ bool callGlUniform3ui64NV(Stack* stack, bool pushReturn);
+ bool callGlUniform3ui64vNV(Stack* stack, bool pushReturn);
+ bool callGlUniform4i64NV(Stack* stack, bool pushReturn);
+ bool callGlUniform4i64vNV(Stack* stack, bool pushReturn);
+ bool callGlUniform4ui64NV(Stack* stack, bool pushReturn);
+ bool callGlUniform4ui64vNV(Stack* stack, bool pushReturn);
+ bool callGlUniformHandleui64IMG(Stack* stack, bool pushReturn);
+ bool callGlUniformHandleui64vIMG(Stack* stack, bool pushReturn);
+ bool callGlViewportArrayvOES(Stack* stack, bool pushReturn);
+ bool callGlViewportIndexedfOES(Stack* stack, bool pushReturn);
+ bool callGlViewportIndexedfvOES(Stack* stack, bool pushReturn);
+ bool callGlViewportSwizzleNV(Stack* stack, bool pushReturn);
+ bool callGlWindowRectanglesEXT(Stack* stack, bool pushReturn);
bool callGlBlendBarrier(Stack* stack, bool pushReturn);
bool callGlBlendColor(Stack* stack, bool pushReturn);
bool callGlBlendEquation(Stack* stack, bool pushReturn);
@@ -9064,13 +9361,13 @@
// TODO(antiagainst): create a separate file for these builtins.
namespace Builtins {
-static const uint16_t ContextInfo = 0x10000 - 971 + 964;
-static const uint16_t ReplayCreateRenderer = 0x10000 - 971 + 965;
-static const uint16_t ReplayBindRenderer = 0x10000 - 971 + 966;
-static const uint16_t ReplayChangeBackbuffer = 0x10000 - 971 + 967;
-static const uint16_t StartTimer = 0x10000 - 971 + 968;
-static const uint16_t StopTimer = 0x10000 - 971 + 969;
-static const uint16_t FlushPostBuffer = 0x10000 - 971 + 970;
+static const uint16_t ContextInfo = 0x10000 - 1034 + 1027;
+static const uint16_t ReplayCreateRenderer = 0x10000 - 1034 + 1028;
+static const uint16_t ReplayBindRenderer = 0x10000 - 1034 + 1029;
+static const uint16_t ReplayChangeBackbuffer = 0x10000 - 1034 + 1030;
+static const uint16_t StartTimer = 0x10000 - 1034 + 1031;
+static const uint16_t StopTimer = 0x10000 - 1034 + 1032;
+static const uint16_t FlushPostBuffer = 0x10000 - 1034 + 1033;
} // namespace Builtins
diff --git a/cc/gapir/vulkan_gfx_api.h b/cc/gapir/vulkan_gfx_api.h
index 80779c9..5ddc602 100644
--- a/cc/gapir/vulkan_gfx_api.h
+++ b/cc/gapir/vulkan_gfx_api.h
@@ -138,6 +138,9 @@
VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000,
VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID = 1000010000,
VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = 1000011000,
+ VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000,
+ VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001,
+ VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002,
};
enum class VkSystemAllocationScope : uint32_t {
@@ -826,6 +829,13 @@
VK_STENCIL_FRONT_AND_BACK = 3,
};
+ enum class VkExternalMemoryHandleTypeFlagBitsNV : uint32_t {
+ VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 1,
+ VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 2,
+ VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 4,
+ VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 8,
+ };
+
enum class VkColorSpaceKHR : uint32_t {
VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0,
};
@@ -1016,6 +1026,7 @@
typedef void* PFN_vkInternalAllocationNotification;
typedef void* PFN_vkInternalFreeNotification;
typedef void* PFN_vkVoidFunction;
+ typedef VkFlags VkExternalMemoryHandleTypeFlagsNV;
typedef VkFlags VkSurfaceTransformFlagsKHR;
typedef VkFlags VkCompositeAlphaFlagsKHR;
typedef VkFlags VkSwapchainCreateFlagsKHR;
@@ -2145,6 +2156,25 @@
} VkDrawIndirectCommand;
typedef struct {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 dedicatedAllocation;
+ } VkDedicatedAllocationImageCreateInfoNV;
+
+ typedef struct {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 dedicatedAllocation;
+ } VkDedicatedAllocationBufferCreateInfoNV;
+
+ typedef struct {
+ VkStructureType sType;
+ void* pNext;
+ VkImage image;
+ VkBuffer buffer;
+ } VkDedicatedAllocationMemoryAllocateInfoNV;
+
+ typedef struct {
VkPipelineBindPoint PipelineBindPoint;
VkPipeline Pipeline;
} CmdBindPipeline;
diff --git a/cc/vulkan_layers/vk_virtual_swapchain/swapchain.cpp b/cc/vulkan_layers/vk_virtual_swapchain/swapchain.cpp
index 45074a8..608ed8d 100644
--- a/cc/vulkan_layers/vk_virtual_swapchain/swapchain.cpp
+++ b/cc/vulkan_layers/vk_virtual_swapchain/swapchain.cpp
@@ -278,7 +278,7 @@
// buffers.
std::vector<VkPipelineStageFlags> pipeline_stages(
pPresentInfo->waitSemaphoreCount, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT);
- for (size_t i = 0; i < pPresentInfo->waitSemaphoreCount; ++i) {
+ for (size_t i = 0; i < pPresentInfo->swapchainCount; ++i) {
uint32_t image_index = pPresentInfo->pImageIndices[i];
VirtualSwapchain *swp =
reinterpret_cast<VirtualSwapchain *>(pPresentInfo->pSwapchains[i]);
diff --git a/client/gapii/jdwp_loader.go b/client/gapii/jdwp_loader.go
index b2cfb10..f3b7c8e 100644
--- a/client/gapii/jdwp_loader.go
+++ b/client/gapii/jdwp_loader.go
@@ -119,42 +119,9 @@
defer sock.Close()
classLoaderThread := jdwp.ThreadID(0)
- if len(filedir) != 0 {
- // If filedir is empty, then we couldn't deterimine the files directory
- // therefore we cannot trace the vulkan application.
- ctx.Print("Waiting for ApplicationLoaders.getClassLoader()")
- getClassLoader, err := waitForVulkanLoad(ctx, conn)
- // If err != nil that means we could not find or break in getClassLoader
- // so we have no vulkan support.
- if err == nil {
- classLoaderThread = getClassLoader.Thread
- err = jdbg.Do(conn, getClassLoader.Thread, func(j *jdbg.JDbg) error {
- newLibraryPath := j.String(":" + filedir)
- obj := j.GetStackObject("librarySearchPath").Call("concat", newLibraryPath)
- j.SetStackObject("librarySearchPath", obj)
- return nil
- })
- if err != nil {
- return ctx.WrapError(err, "JDWP failure")
- }
- }
- }
-
- // Wait for Application.onCreate to be called.
- ctx.Print("Waiting for Application.onCreate()")
- onCreate, err := waitForOnCreate(ctx, conn, classLoaderThread)
- if err != nil {
- return ctx.WrapError(err, "Waiting for Application.OnCreate")
- }
-
- // Create a JDbg session to install and load the libraries.
- ctx.Print("Installing interceptor libraries")
- err = jdbg.Do(conn, onCreate.Thread, func(j *jdbg.JDbg) error {
- // This is the /data/data/com.foo.bar/files directory where we're going to
- // place the libraries.
- filesDir := j.This().Call("getFilesDir")
-
+ load_gapii := func(j *jdbg.JDbg, filesDir jdbg.Value) error {
+ j.Class("java.io.File").New(filesDir).Call("mkdir")
for _, library := range libraries {
if library.Path == "" {
continue
@@ -183,7 +150,52 @@
j.Class("java.lang.Runtime").Call("getRuntime").Call("doLoad", dstFile.Call("toString"), nil)
}
return nil
- })
+ }
+
+ if len(filedir) != 0 {
+ // If filedir not empty, that means we could find the filedir through normal means.
+ // It also means we have a shot at tracing vulkan applications. So try that now.
+ ctx.Print("Waiting for ApplicationLoaders.getClassLoader()")
+ getClassLoader, err := waitForVulkanLoad(ctx, conn)
+
+ // If err != nil that means we could not find or break in getClassLoader
+ // so we have no vulkan support.
+ if err == nil {
+ classLoaderThread = getClassLoader.Thread
+ err = jdbg.Do(conn, getClassLoader.Thread, func(j *jdbg.JDbg) error {
+ newLibraryPath := j.String(":" + filedir)
+ obj := j.GetStackObject("librarySearchPath").Call("concat", newLibraryPath)
+ j.SetStackObject("librarySearchPath", obj)
+ fileDir := j.String(filedir)
+ // If successfully loaded vulkan support, then we should be good to go
+ // load libgapii and friends here.
+ return load_gapii(j, fileDir)
+ })
+ if err != nil {
+ return ctx.WrapError(err, "JDWP failure")
+ }
+ }
+ }
+
+ // If we did not have vulkan support, then we should try to load with
+ // Application.onCreate().
+ if classLoaderThread == jdwp.ThreadID(0) {
+ // Wait for Application.onCreate to be called.
+ ctx.Print("Waiting for Application.onCreate()")
+ onCreate, err := waitForOnCreate(ctx, conn, classLoaderThread)
+ if err != nil {
+ return ctx.WrapError(err, "Waiting for Application.OnCreate")
+ }
+
+ // Create a JDbg session to install and load the libraries.
+ ctx.Print("Installing interceptor libraries")
+ err = jdbg.Do(conn, onCreate.Thread, func(j *jdbg.JDbg) error {
+ // This is the /data/data/com.foo.bar/files directory where we're going to
+ // place the libraries.
+ filesDir := j.This().Call("getFilesDir")
+ return load_gapii(j, filesDir)
+ })
+ }
if err != nil {
return ctx.WrapError(err, "JDWP failure")
}
diff --git a/cmd/verify_gles_api/main.go b/cmd/verify_gles_api/main.go
index 7565d86..25f9e43 100644
--- a/cmd/verify_gles_api/main.go
+++ b/cmd/verify_gles_api/main.go
@@ -55,14 +55,14 @@
api, errs := processor.Resolve(*apiPath)
if len(errs) > 0 {
for _, err := range errs {
- PrintError("%v", err.Message)
+ PrintError("%v\n", err.Message)
}
os.Exit(2)
}
apiRoot = api
reg := DownloadRegistry()
VerifyApi(reg)
- return ctx.AsError("Too many errors")
+ return nil
}
func PrintError(format string, a ...interface{}) {
@@ -87,6 +87,10 @@
for _, enums := range r.Enums {
if (enums.Type == "bitmask") == bitfields && enums.Namespace == "GL" {
for _, enum := range enums.Enum {
+ // Boolean values are handles specially (as labels)
+ if enum.Name == "GL_TRUE" || enum.Name == "GL_FALSE" {
+ continue
+ }
// The following 64bit values are not proper GLenum values.
if enum.Name == "GL_TIMEOUT_IGNORED" || enum.Name == "GL_TIMEOUT_IGNORED_APPLE" {
continue
diff --git a/framework/java/jdwp/coder.go b/framework/java/jdwp/coder.go
index 2206669..c632aba 100644
--- a/framework/java/jdwp/coder.go
+++ b/framework/java/jdwp/coder.go
@@ -234,6 +234,8 @@
data := make([]byte, r.Uint32())
r.Data(data)
v.Set(reflect.ValueOf(string(data)).Convert(t))
+ case reflect.Bool:
+ v.Set(reflect.ValueOf(r.Bool()).Convert(t))
case reflect.Uint8:
v.Set(reflect.ValueOf(r.Uint8()).Convert(t))
case reflect.Uint64:
diff --git a/gapid/gfxapi/gles/api.go b/gapid/gfxapi/gles/api.go
index 5e63d7d..8766350 100644
--- a/gapid/gfxapi/gles/api.go
+++ b/gapid/gfxapi/gles/api.go
@@ -881,7 +881,9 @@
type GLint int32
type GLuint uint32
type GLint64 int64
+type GLint64EXT int64
type GLuint64 uint64
+type GLuint64EXT uint64
type GLfixed int32
type GLsizei int32
type GLintptr int32
@@ -1475,6 +1477,108 @@
// Check interface conformance
var _ path.Linker = GLsizeiᵖ{}
+// EGLintᶜᵖ is a pointer to a EGLint element.
+type EGLintᶜᵖ memory.Pointer
+
+// NewEGLintᶜᵖ returns a EGLintᶜᵖ that points to addr in the application pool.
+func NewEGLintᶜᵖ(addr uint64) EGLintᶜᵖ {
+ return EGLintᶜᵖ{Address: addr, Pool: memory.ApplicationPool}
+}
+
+// ElementSize returns the size in bytes of an element that EGLintᶜᵖ points to.
+func (p EGLintᶜᵖ) ElementSize(ϟs *gfxapi.State) uint64 {
+ return uint64(ϟs.MemoryLayout.IntegerSize)
+}
+
+// Read reads and returns the EGLint element at the pointer.
+func (p EGLintᶜᵖ) Read(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) EGLint {
+ return p.Slice(0, 1, ϟs).Read(ϟctx, ϟa, ϟs, ϟd, ϟb)[0]
+}
+
+// Write writes value to the EGLint element at the pointer.
+func (p EGLintᶜᵖ) Write(ϟctx log.Context, value EGLint, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ p.Slice(0, 1, ϟs).Write(ϟctx, []EGLint{value}, ϟa, ϟs, ϟd, ϟb)
+}
+
+// Slice returns a new EGLintˢ from the pointer using start and end indices.
+func (p EGLintᶜᵖ) Slice(start, end uint64, ϟs *gfxapi.State) EGLintˢ {
+ if start > end {
+ panic(fmt.Errorf("Slice start (%d) is greater than the end (%d)", start, end))
+ }
+ return EGLintˢ{SliceInfo: memory.SliceInfo{Root: p.Address, Base: p.Address + start*p.ElementSize(ϟs), Count: end - start, Pool: p.Pool}}
+}
+func (p EGLintᶜᵖ) value(ϟb *builder.Builder, ϟa atom.Atom, ϟs *gfxapi.State) value.Pointer {
+ if p.Address != 0 {
+ return value.ObservedPointer(p.Address)
+ } else {
+ return value.AbsolutePointer(0)
+ }
+}
+
+// Link returns a path to the object that this is a link to, or error
+// if you can not follow this path. Typically the incoming path ϟp
+// is a path to the atom and resulting path is a path to an object
+// identified by p. Once resolved the path will return a representation
+// of the value of the instance after the atom has executed.
+func (p EGLintᶜᵖ) Link(ϟctx log.Context, ϟp path.Path, ϟd database.Database) (path.Path, error) {
+ ϟt := path.MemoryType{Kind: path.MemoryKind_Integer}
+ return resolve.TypedLink(memory.Pointer(p), ϟctx, ϟp, ϟd, ϟt)
+}
+
+// Check interface conformance
+var _ path.Linker = EGLintᶜᵖ{}
+
+// EGLintᵖ is a pointer to a EGLint element.
+type EGLintᵖ memory.Pointer
+
+// NewEGLintᵖ returns a EGLintᵖ that points to addr in the application pool.
+func NewEGLintᵖ(addr uint64) EGLintᵖ {
+ return EGLintᵖ{Address: addr, Pool: memory.ApplicationPool}
+}
+
+// ElementSize returns the size in bytes of an element that EGLintᵖ points to.
+func (p EGLintᵖ) ElementSize(ϟs *gfxapi.State) uint64 {
+ return uint64(ϟs.MemoryLayout.IntegerSize)
+}
+
+// Read reads and returns the EGLint element at the pointer.
+func (p EGLintᵖ) Read(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) EGLint {
+ return p.Slice(0, 1, ϟs).Read(ϟctx, ϟa, ϟs, ϟd, ϟb)[0]
+}
+
+// Write writes value to the EGLint element at the pointer.
+func (p EGLintᵖ) Write(ϟctx log.Context, value EGLint, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ p.Slice(0, 1, ϟs).Write(ϟctx, []EGLint{value}, ϟa, ϟs, ϟd, ϟb)
+}
+
+// Slice returns a new EGLintˢ from the pointer using start and end indices.
+func (p EGLintᵖ) Slice(start, end uint64, ϟs *gfxapi.State) EGLintˢ {
+ if start > end {
+ panic(fmt.Errorf("Slice start (%d) is greater than the end (%d)", start, end))
+ }
+ return EGLintˢ{SliceInfo: memory.SliceInfo{Root: p.Address, Base: p.Address + start*p.ElementSize(ϟs), Count: end - start, Pool: p.Pool}}
+}
+func (p EGLintᵖ) value(ϟb *builder.Builder, ϟa atom.Atom, ϟs *gfxapi.State) value.Pointer {
+ if p.Address != 0 {
+ return value.ObservedPointer(p.Address)
+ } else {
+ return value.AbsolutePointer(0)
+ }
+}
+
+// Link returns a path to the object that this is a link to, or error
+// if you can not follow this path. Typically the incoming path ϟp
+// is a path to the atom and resulting path is a path to an object
+// identified by p. Once resolved the path will return a representation
+// of the value of the instance after the atom has executed.
+func (p EGLintᵖ) Link(ϟctx log.Context, ϟp path.Path, ϟd database.Database) (path.Path, error) {
+ ϟt := path.MemoryType{Kind: path.MemoryKind_Integer}
+ return resolve.TypedLink(memory.Pointer(p), ϟctx, ϟp, ϟd, ϟt)
+}
+
+// Check interface conformance
+var _ path.Linker = EGLintᵖ{}
+
// GLenumᶜᵖ is a pointer to a GLenum element.
type GLenumᶜᵖ memory.Pointer
@@ -1996,6 +2100,57 @@
// Check interface conformance
var _ path.Linker = GLbooleanᵖ{}
+// Boolᵖ is a pointer to a bool element.
+type Boolᵖ memory.Pointer
+
+// NewBoolᵖ returns a Boolᵖ that points to addr in the application pool.
+func NewBoolᵖ(addr uint64) Boolᵖ {
+ return Boolᵖ{Address: addr, Pool: memory.ApplicationPool}
+}
+
+// ElementSize returns the size in bytes of an element that Boolᵖ points to.
+func (p Boolᵖ) ElementSize(ϟs *gfxapi.State) uint64 {
+ return uint64(1)
+}
+
+// Read reads and returns the bool element at the pointer.
+func (p Boolᵖ) Read(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) bool {
+ return p.Slice(0, 1, ϟs).Read(ϟctx, ϟa, ϟs, ϟd, ϟb)[0]
+}
+
+// Write writes value to the bool element at the pointer.
+func (p Boolᵖ) Write(ϟctx log.Context, value bool, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ p.Slice(0, 1, ϟs).Write(ϟctx, []bool{value}, ϟa, ϟs, ϟd, ϟb)
+}
+
+// Slice returns a new Boolˢ from the pointer using start and end indices.
+func (p Boolᵖ) Slice(start, end uint64, ϟs *gfxapi.State) Boolˢ {
+ if start > end {
+ panic(fmt.Errorf("Slice start (%d) is greater than the end (%d)", start, end))
+ }
+ return Boolˢ{SliceInfo: memory.SliceInfo{Root: p.Address, Base: p.Address + start*p.ElementSize(ϟs), Count: end - start, Pool: p.Pool}}
+}
+func (p Boolᵖ) value(ϟb *builder.Builder, ϟa atom.Atom, ϟs *gfxapi.State) value.Pointer {
+ if p.Address != 0 {
+ return value.ObservedPointer(p.Address)
+ } else {
+ return value.AbsolutePointer(0)
+ }
+}
+
+// Link returns a path to the object that this is a link to, or error
+// if you can not follow this path. Typically the incoming path ϟp
+// is a path to the atom and resulting path is a path to an object
+// identified by p. Once resolved the path will return a representation
+// of the value of the instance after the atom has executed.
+func (p Boolᵖ) Link(ϟctx log.Context, ϟp path.Path, ϟd database.Database) (path.Path, error) {
+ ϟt := path.MemoryType{Kind: path.MemoryKind_Integer, ByteSize: uint64(1)}
+ return resolve.TypedLink(memory.Pointer(p), ϟctx, ϟp, ϟd, ϟt)
+}
+
+// Check interface conformance
+var _ path.Linker = Boolᵖ{}
+
// Vec2fᵖ is a pointer to a Vec2f element.
type Vec2fᵖ memory.Pointer
@@ -3118,108 +3273,6 @@
// Check interface conformance
var _ path.Linker = BufferIdᵖ{}
-// EGLintᵖ is a pointer to a EGLint element.
-type EGLintᵖ memory.Pointer
-
-// NewEGLintᵖ returns a EGLintᵖ that points to addr in the application pool.
-func NewEGLintᵖ(addr uint64) EGLintᵖ {
- return EGLintᵖ{Address: addr, Pool: memory.ApplicationPool}
-}
-
-// ElementSize returns the size in bytes of an element that EGLintᵖ points to.
-func (p EGLintᵖ) ElementSize(ϟs *gfxapi.State) uint64 {
- return uint64(ϟs.MemoryLayout.IntegerSize)
-}
-
-// Read reads and returns the EGLint element at the pointer.
-func (p EGLintᵖ) Read(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) EGLint {
- return p.Slice(0, 1, ϟs).Read(ϟctx, ϟa, ϟs, ϟd, ϟb)[0]
-}
-
-// Write writes value to the EGLint element at the pointer.
-func (p EGLintᵖ) Write(ϟctx log.Context, value EGLint, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
- p.Slice(0, 1, ϟs).Write(ϟctx, []EGLint{value}, ϟa, ϟs, ϟd, ϟb)
-}
-
-// Slice returns a new EGLintˢ from the pointer using start and end indices.
-func (p EGLintᵖ) Slice(start, end uint64, ϟs *gfxapi.State) EGLintˢ {
- if start > end {
- panic(fmt.Errorf("Slice start (%d) is greater than the end (%d)", start, end))
- }
- return EGLintˢ{SliceInfo: memory.SliceInfo{Root: p.Address, Base: p.Address + start*p.ElementSize(ϟs), Count: end - start, Pool: p.Pool}}
-}
-func (p EGLintᵖ) value(ϟb *builder.Builder, ϟa atom.Atom, ϟs *gfxapi.State) value.Pointer {
- if p.Address != 0 {
- return value.ObservedPointer(p.Address)
- } else {
- return value.AbsolutePointer(0)
- }
-}
-
-// Link returns a path to the object that this is a link to, or error
-// if you can not follow this path. Typically the incoming path ϟp
-// is a path to the atom and resulting path is a path to an object
-// identified by p. Once resolved the path will return a representation
-// of the value of the instance after the atom has executed.
-func (p EGLintᵖ) Link(ϟctx log.Context, ϟp path.Path, ϟd database.Database) (path.Path, error) {
- ϟt := path.MemoryType{Kind: path.MemoryKind_Integer}
- return resolve.TypedLink(memory.Pointer(p), ϟctx, ϟp, ϟd, ϟt)
-}
-
-// Check interface conformance
-var _ path.Linker = EGLintᵖ{}
-
-// EGLintᶜᵖ is a pointer to a EGLint element.
-type EGLintᶜᵖ memory.Pointer
-
-// NewEGLintᶜᵖ returns a EGLintᶜᵖ that points to addr in the application pool.
-func NewEGLintᶜᵖ(addr uint64) EGLintᶜᵖ {
- return EGLintᶜᵖ{Address: addr, Pool: memory.ApplicationPool}
-}
-
-// ElementSize returns the size in bytes of an element that EGLintᶜᵖ points to.
-func (p EGLintᶜᵖ) ElementSize(ϟs *gfxapi.State) uint64 {
- return uint64(ϟs.MemoryLayout.IntegerSize)
-}
-
-// Read reads and returns the EGLint element at the pointer.
-func (p EGLintᶜᵖ) Read(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) EGLint {
- return p.Slice(0, 1, ϟs).Read(ϟctx, ϟa, ϟs, ϟd, ϟb)[0]
-}
-
-// Write writes value to the EGLint element at the pointer.
-func (p EGLintᶜᵖ) Write(ϟctx log.Context, value EGLint, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
- p.Slice(0, 1, ϟs).Write(ϟctx, []EGLint{value}, ϟa, ϟs, ϟd, ϟb)
-}
-
-// Slice returns a new EGLintˢ from the pointer using start and end indices.
-func (p EGLintᶜᵖ) Slice(start, end uint64, ϟs *gfxapi.State) EGLintˢ {
- if start > end {
- panic(fmt.Errorf("Slice start (%d) is greater than the end (%d)", start, end))
- }
- return EGLintˢ{SliceInfo: memory.SliceInfo{Root: p.Address, Base: p.Address + start*p.ElementSize(ϟs), Count: end - start, Pool: p.Pool}}
-}
-func (p EGLintᶜᵖ) value(ϟb *builder.Builder, ϟa atom.Atom, ϟs *gfxapi.State) value.Pointer {
- if p.Address != 0 {
- return value.ObservedPointer(p.Address)
- } else {
- return value.AbsolutePointer(0)
- }
-}
-
-// Link returns a path to the object that this is a link to, or error
-// if you can not follow this path. Typically the incoming path ϟp
-// is a path to the atom and resulting path is a path to an object
-// identified by p. Once resolved the path will return a representation
-// of the value of the instance after the atom has executed.
-func (p EGLintᶜᵖ) Link(ϟctx log.Context, ϟp path.Path, ϟd database.Database) (path.Path, error) {
- ϟt := path.MemoryType{Kind: path.MemoryKind_Integer}
- return resolve.TypedLink(memory.Pointer(p), ϟctx, ϟp, ϟd, ϟt)
-}
-
-// Check interface conformance
-var _ path.Linker = EGLintᶜᵖ{}
-
// EGLConfigᵖ is a pointer to a EGLConfig element.
// Note: Pointers are stored differently between the application pool and internal pools.
// * The application pool stores pointers as an address of an architecture-dependant size.
@@ -4171,6 +4224,210 @@
// Check interface conformance
var _ path.Linker = GLuint64ᶜᵖ{}
+// GLint64EXTᵖ is a pointer to a GLint64EXT element.
+type GLint64EXTᵖ memory.Pointer
+
+// NewGLint64EXTᵖ returns a GLint64EXTᵖ that points to addr in the application pool.
+func NewGLint64EXTᵖ(addr uint64) GLint64EXTᵖ {
+ return GLint64EXTᵖ{Address: addr, Pool: memory.ApplicationPool}
+}
+
+// ElementSize returns the size in bytes of an element that GLint64EXTᵖ points to.
+func (p GLint64EXTᵖ) ElementSize(ϟs *gfxapi.State) uint64 {
+ return uint64(8)
+}
+
+// Read reads and returns the GLint64EXT element at the pointer.
+func (p GLint64EXTᵖ) Read(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) GLint64EXT {
+ return p.Slice(0, 1, ϟs).Read(ϟctx, ϟa, ϟs, ϟd, ϟb)[0]
+}
+
+// Write writes value to the GLint64EXT element at the pointer.
+func (p GLint64EXTᵖ) Write(ϟctx log.Context, value GLint64EXT, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ p.Slice(0, 1, ϟs).Write(ϟctx, []GLint64EXT{value}, ϟa, ϟs, ϟd, ϟb)
+}
+
+// Slice returns a new GLint64EXTˢ from the pointer using start and end indices.
+func (p GLint64EXTᵖ) Slice(start, end uint64, ϟs *gfxapi.State) GLint64EXTˢ {
+ if start > end {
+ panic(fmt.Errorf("Slice start (%d) is greater than the end (%d)", start, end))
+ }
+ return GLint64EXTˢ{SliceInfo: memory.SliceInfo{Root: p.Address, Base: p.Address + start*p.ElementSize(ϟs), Count: end - start, Pool: p.Pool}}
+}
+func (p GLint64EXTᵖ) value(ϟb *builder.Builder, ϟa atom.Atom, ϟs *gfxapi.State) value.Pointer {
+ if p.Address != 0 {
+ return value.ObservedPointer(p.Address)
+ } else {
+ return value.AbsolutePointer(0)
+ }
+}
+
+// Link returns a path to the object that this is a link to, or error
+// if you can not follow this path. Typically the incoming path ϟp
+// is a path to the atom and resulting path is a path to an object
+// identified by p. Once resolved the path will return a representation
+// of the value of the instance after the atom has executed.
+func (p GLint64EXTᵖ) Link(ϟctx log.Context, ϟp path.Path, ϟd database.Database) (path.Path, error) {
+ ϟt := path.MemoryType{Kind: path.MemoryKind_Integer, ByteSize: uint64(8)}
+ return resolve.TypedLink(memory.Pointer(p), ϟctx, ϟp, ϟd, ϟt)
+}
+
+// Check interface conformance
+var _ path.Linker = GLint64EXTᵖ{}
+
+// GLint64EXTᶜᵖ is a pointer to a GLint64EXT element.
+type GLint64EXTᶜᵖ memory.Pointer
+
+// NewGLint64EXTᶜᵖ returns a GLint64EXTᶜᵖ that points to addr in the application pool.
+func NewGLint64EXTᶜᵖ(addr uint64) GLint64EXTᶜᵖ {
+ return GLint64EXTᶜᵖ{Address: addr, Pool: memory.ApplicationPool}
+}
+
+// ElementSize returns the size in bytes of an element that GLint64EXTᶜᵖ points to.
+func (p GLint64EXTᶜᵖ) ElementSize(ϟs *gfxapi.State) uint64 {
+ return uint64(8)
+}
+
+// Read reads and returns the GLint64EXT element at the pointer.
+func (p GLint64EXTᶜᵖ) Read(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) GLint64EXT {
+ return p.Slice(0, 1, ϟs).Read(ϟctx, ϟa, ϟs, ϟd, ϟb)[0]
+}
+
+// Write writes value to the GLint64EXT element at the pointer.
+func (p GLint64EXTᶜᵖ) Write(ϟctx log.Context, value GLint64EXT, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ p.Slice(0, 1, ϟs).Write(ϟctx, []GLint64EXT{value}, ϟa, ϟs, ϟd, ϟb)
+}
+
+// Slice returns a new GLint64EXTˢ from the pointer using start and end indices.
+func (p GLint64EXTᶜᵖ) Slice(start, end uint64, ϟs *gfxapi.State) GLint64EXTˢ {
+ if start > end {
+ panic(fmt.Errorf("Slice start (%d) is greater than the end (%d)", start, end))
+ }
+ return GLint64EXTˢ{SliceInfo: memory.SliceInfo{Root: p.Address, Base: p.Address + start*p.ElementSize(ϟs), Count: end - start, Pool: p.Pool}}
+}
+func (p GLint64EXTᶜᵖ) value(ϟb *builder.Builder, ϟa atom.Atom, ϟs *gfxapi.State) value.Pointer {
+ if p.Address != 0 {
+ return value.ObservedPointer(p.Address)
+ } else {
+ return value.AbsolutePointer(0)
+ }
+}
+
+// Link returns a path to the object that this is a link to, or error
+// if you can not follow this path. Typically the incoming path ϟp
+// is a path to the atom and resulting path is a path to an object
+// identified by p. Once resolved the path will return a representation
+// of the value of the instance after the atom has executed.
+func (p GLint64EXTᶜᵖ) Link(ϟctx log.Context, ϟp path.Path, ϟd database.Database) (path.Path, error) {
+ ϟt := path.MemoryType{Kind: path.MemoryKind_Integer, ByteSize: uint64(8)}
+ return resolve.TypedLink(memory.Pointer(p), ϟctx, ϟp, ϟd, ϟt)
+}
+
+// Check interface conformance
+var _ path.Linker = GLint64EXTᶜᵖ{}
+
+// GLuint64EXTᶜᵖ is a pointer to a GLuint64EXT element.
+type GLuint64EXTᶜᵖ memory.Pointer
+
+// NewGLuint64EXTᶜᵖ returns a GLuint64EXTᶜᵖ that points to addr in the application pool.
+func NewGLuint64EXTᶜᵖ(addr uint64) GLuint64EXTᶜᵖ {
+ return GLuint64EXTᶜᵖ{Address: addr, Pool: memory.ApplicationPool}
+}
+
+// ElementSize returns the size in bytes of an element that GLuint64EXTᶜᵖ points to.
+func (p GLuint64EXTᶜᵖ) ElementSize(ϟs *gfxapi.State) uint64 {
+ return uint64(8)
+}
+
+// Read reads and returns the GLuint64EXT element at the pointer.
+func (p GLuint64EXTᶜᵖ) Read(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) GLuint64EXT {
+ return p.Slice(0, 1, ϟs).Read(ϟctx, ϟa, ϟs, ϟd, ϟb)[0]
+}
+
+// Write writes value to the GLuint64EXT element at the pointer.
+func (p GLuint64EXTᶜᵖ) Write(ϟctx log.Context, value GLuint64EXT, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ p.Slice(0, 1, ϟs).Write(ϟctx, []GLuint64EXT{value}, ϟa, ϟs, ϟd, ϟb)
+}
+
+// Slice returns a new GLuint64EXTˢ from the pointer using start and end indices.
+func (p GLuint64EXTᶜᵖ) Slice(start, end uint64, ϟs *gfxapi.State) GLuint64EXTˢ {
+ if start > end {
+ panic(fmt.Errorf("Slice start (%d) is greater than the end (%d)", start, end))
+ }
+ return GLuint64EXTˢ{SliceInfo: memory.SliceInfo{Root: p.Address, Base: p.Address + start*p.ElementSize(ϟs), Count: end - start, Pool: p.Pool}}
+}
+func (p GLuint64EXTᶜᵖ) value(ϟb *builder.Builder, ϟa atom.Atom, ϟs *gfxapi.State) value.Pointer {
+ if p.Address != 0 {
+ return value.ObservedPointer(p.Address)
+ } else {
+ return value.AbsolutePointer(0)
+ }
+}
+
+// Link returns a path to the object that this is a link to, or error
+// if you can not follow this path. Typically the incoming path ϟp
+// is a path to the atom and resulting path is a path to an object
+// identified by p. Once resolved the path will return a representation
+// of the value of the instance after the atom has executed.
+func (p GLuint64EXTᶜᵖ) Link(ϟctx log.Context, ϟp path.Path, ϟd database.Database) (path.Path, error) {
+ ϟt := path.MemoryType{Kind: path.MemoryKind_Integer, ByteSize: uint64(8)}
+ return resolve.TypedLink(memory.Pointer(p), ϟctx, ϟp, ϟd, ϟt)
+}
+
+// Check interface conformance
+var _ path.Linker = GLuint64EXTᶜᵖ{}
+
+// GLuint64EXTᵖ is a pointer to a GLuint64EXT element.
+type GLuint64EXTᵖ memory.Pointer
+
+// NewGLuint64EXTᵖ returns a GLuint64EXTᵖ that points to addr in the application pool.
+func NewGLuint64EXTᵖ(addr uint64) GLuint64EXTᵖ {
+ return GLuint64EXTᵖ{Address: addr, Pool: memory.ApplicationPool}
+}
+
+// ElementSize returns the size in bytes of an element that GLuint64EXTᵖ points to.
+func (p GLuint64EXTᵖ) ElementSize(ϟs *gfxapi.State) uint64 {
+ return uint64(8)
+}
+
+// Read reads and returns the GLuint64EXT element at the pointer.
+func (p GLuint64EXTᵖ) Read(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) GLuint64EXT {
+ return p.Slice(0, 1, ϟs).Read(ϟctx, ϟa, ϟs, ϟd, ϟb)[0]
+}
+
+// Write writes value to the GLuint64EXT element at the pointer.
+func (p GLuint64EXTᵖ) Write(ϟctx log.Context, value GLuint64EXT, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ p.Slice(0, 1, ϟs).Write(ϟctx, []GLuint64EXT{value}, ϟa, ϟs, ϟd, ϟb)
+}
+
+// Slice returns a new GLuint64EXTˢ from the pointer using start and end indices.
+func (p GLuint64EXTᵖ) Slice(start, end uint64, ϟs *gfxapi.State) GLuint64EXTˢ {
+ if start > end {
+ panic(fmt.Errorf("Slice start (%d) is greater than the end (%d)", start, end))
+ }
+ return GLuint64EXTˢ{SliceInfo: memory.SliceInfo{Root: p.Address, Base: p.Address + start*p.ElementSize(ϟs), Count: end - start, Pool: p.Pool}}
+}
+func (p GLuint64EXTᵖ) value(ϟb *builder.Builder, ϟa atom.Atom, ϟs *gfxapi.State) value.Pointer {
+ if p.Address != 0 {
+ return value.ObservedPointer(p.Address)
+ } else {
+ return value.AbsolutePointer(0)
+ }
+}
+
+// Link returns a path to the object that this is a link to, or error
+// if you can not follow this path. Typically the incoming path ϟp
+// is a path to the atom and resulting path is a path to an object
+// identified by p. Once resolved the path will return a representation
+// of the value of the instance after the atom has executed.
+func (p GLuint64EXTᵖ) Link(ϟctx log.Context, ϟp path.Path, ϟd database.Database) (path.Path, error) {
+ ϟt := path.MemoryType{Kind: path.MemoryKind_Integer, ByteSize: uint64(8)}
+ return resolve.TypedLink(memory.Pointer(p), ϟctx, ϟp, ϟd, ϟt)
+}
+
+// Check interface conformance
+var _ path.Linker = GLuint64EXTᵖ{}
+
// FramebufferIdᶜᵖ is a pointer to a FramebufferId element.
type FramebufferIdᶜᵖ memory.Pointer
@@ -5504,6 +5761,194 @@
Elements [4]Vec4f
}
+// Boolˢ is a slice of bool.
+type Boolˢ struct {
+ binary.Generate
+ memory.SliceInfo
+}
+
+// MakeBoolˢ returns a Boolˢ backed by a new memory pool.
+func MakeBoolˢ(count uint64, ϟs *gfxapi.State) Boolˢ {
+ id := ϟs.NextPoolID
+ ϟs.Memory[id] = &memory.Pool{}
+ ϟs.NextPoolID++
+ return Boolˢ{SliceInfo: memory.SliceInfo{Count: count, Pool: id}}
+}
+
+// Clone returns a copy of the Boolˢ in a new memory pool.
+func (s Boolˢ) Clone(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) Boolˢ {
+ s.OnRead(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ pool := &memory.Pool{}
+ pool.Write(0, ϟs.Memory[s.Pool].Slice(s.Range(ϟs)))
+ id := ϟs.NextPoolID
+ ϟs.Memory[id] = pool
+ ϟs.NextPoolID++
+ dst := Boolˢ{SliceInfo: memory.SliceInfo{Count: s.Count, Pool: id}}
+ return dst
+}
+
+// ElementSize returns the size in bytes of an element that Boolˢ points to.
+func (s Boolˢ) ElementSize(ϟs *gfxapi.State) uint64 {
+ return uint64(1)
+}
+
+// ElementTypeName returns the name of the type of element in Boolˢ.
+func (s Boolˢ) ElementTypeName() string {
+ return "bool"
+}
+
+// Range returns the memory range this slice represents in the underlying pool.
+func (s Boolˢ) Range(ϟs *gfxapi.State) memory.Range {
+ return memory.Range{Base: s.Base, Size: s.Count * s.ElementSize(ϟs)}
+}
+
+// ResourceID returns an identifier to a resource representing the data of
+// this slice.
+func (s Boolˢ) ResourceID(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database) id.ID {
+ id, err := ϟs.Memory[s.Pool].Slice(s.Range(ϟs)).ResourceID(ϟctx, ϟd)
+ if err != nil {
+ panic(err)
+ }
+ return id
+}
+
+// Decoder returns a memory decoder for the slice.
+func (s Boolˢ) Decoder(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database) binary.Reader {
+ return ϟs.MemoryDecoder(ϟctx, ϟs.Memory[s.Pool].Slice(s.Range(ϟs)), ϟd)
+}
+
+// Encoder returns a memory encoder for the slice.
+func (s Boolˢ) Encoder(ϟs *gfxapi.State) binary.Writer {
+ return ϟs.MemoryEncoder(ϟs.Memory[s.Pool], s.Range(ϟs))
+}
+
+// AsBoolˢ returns s cast to a Boolˢ.
+// The returned slice length will be calculated so that the returned slice is
+// no longer (in bytes) than s.
+func AsBoolˢ(s slice, ϟs *gfxapi.State) Boolˢ {
+ out := Boolˢ{SliceInfo: s.Info()}
+ out.Count = (out.Count * s.ElementSize(ϟs)) / out.ElementSize(ϟs)
+ return out
+}
+
+// Read reads and returns all the bool elements in this Boolˢ.
+func (s Boolˢ) Read(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) []bool {
+ d, res := s.Decoder(ϟctx, ϟs, ϟd), make([]bool, s.Count)
+ s.OnRead(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ for i := range res {
+ if ϟv := d.Bool(); d.Error() == nil {
+ res[i] = ϟv
+ } else {
+ panic(d.Error())
+ }
+ }
+ return res
+}
+
+// Write copies elements from src to this slice. The number of elements copied is returned
+// which is the minimum of s.Count and len(src).
+func (s Boolˢ) Write(ϟctx log.Context, src []bool, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) uint64 {
+ count := min(s.Count, uint64(len(src)))
+ s = s.Slice(0, count, ϟs)
+ e := s.Encoder(ϟs)
+ for i := uint64(0); i < count; i++ {
+ if e.Bool(bool(src[i])); e.Error() != nil {
+ panic(e.Error())
+ }
+ }
+ s.OnWrite(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ return count
+}
+
+// Copy copies elements from src to this slice.
+// The number of elements copied is the minimum of dst.Count and src.Count.
+// The slices of this and dst to the copied elements is returned.
+func (dst Boolˢ) Copy(ϟctx log.Context, src Boolˢ, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) (d, s Boolˢ) {
+ count := min(dst.Count, src.Count)
+ dst, src = dst.Slice(0, count, ϟs), src.Slice(0, count, ϟs)
+ src.OnRead(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ ϟs.Memory[dst.Pool].Write(dst.Base, ϟs.Memory[src.Pool].Slice(src.Range(ϟs)))
+ dst.OnWrite(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ return dst, src
+}
+
+// Contains returns true if the slice contains the specified value.
+func (s Boolˢ) Contains(ϟctx log.Context, val bool, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) bool {
+ for _, e := range s.Read(ϟctx, ϟa, ϟs, ϟd, ϟb) {
+ if e == val {
+ return true
+ }
+ }
+ return false
+}
+
+// OnRead calls the backing pool's OnRead callback. s is returned so calls can be chained.
+func (s Boolˢ) OnRead(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) Boolˢ {
+ if f := ϟs.Memory[s.Pool].OnRead; f != nil {
+ f(s.Range(ϟs))
+ }
+ if ϟb != nil && s.Pool == memory.ApplicationPool {
+ s.ReserveMemory(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ ϟb.Write(s.Range(ϟs), s.ResourceID(ϟctx, ϟs, ϟd))
+ }
+ return s
+}
+
+// OnWrite calls the backing pool's OnWrite callback. s is returned so calls can be chained.
+func (s Boolˢ) OnWrite(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) Boolˢ {
+ if f := ϟs.Memory[s.Pool].OnWrite; f != nil {
+ f(s.Range(ϟs))
+ }
+ if ϟb != nil && s.Pool == memory.ApplicationPool {
+ ϟb.ReserveMemory(memory.Range{Base: s.Root, Size: uint64(s.Range(ϟs).End() - s.Root)})
+ }
+ return s
+}
+func (s Boolˢ) ReserveMemory(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) Boolˢ {
+ if ϟb != nil && s.Pool == memory.ApplicationPool {
+ rng := s.Range(ϟs)
+ ϟb.ReserveMemory(memory.Range{Base: s.Root, Size: uint64(rng.End() - s.Root)})
+ }
+ return s
+}
+
+// Index returns a Boolᵖ to the i'th element in this Boolˢ.
+func (s Boolˢ) Index(i uint64, ϟs *gfxapi.State) Boolᵖ {
+ return Boolᵖ{Address: s.Base + i*s.ElementSize(ϟs), Pool: s.Pool}
+}
+
+// Slice returns a sub-slice from the Boolˢ using start and end indices.
+func (s Boolˢ) Slice(start, end uint64, ϟs *gfxapi.State) Boolˢ {
+ if start > end {
+ panic(fmt.Errorf("%v.Slice start (%d) is greater than the end (%d)", s, start, end))
+ }
+ if end > s.Count {
+ panic(fmt.Errorf("%v.Slice(%d, %d) - out of bounds", s, start, end))
+ }
+ return Boolˢ{SliceInfo: memory.SliceInfo{Root: s.Root, Base: s.Base + start*s.ElementSize(ϟs), Count: end - start, Pool: s.Pool}}
+}
+
+// Info returns the memory.SliceInfo for this slice.
+func (s Boolˢ) Info() memory.SliceInfo { return s.SliceInfo }
+
+// String returns a string description of the Boolˢ slice.
+func (s Boolˢ) String() string {
+ return fmt.Sprintf("bool(%v@%v)[%d]", s.Base, s.Pool, s.Count)
+}
+
+// Link returns a path which can be used to view memory which is referenced
+// by the slice s. When resolved the path includes memory type information as well
+// as the memory context itself.
+// If nil, nil is returned then the path cannot be followed.
+func (s Boolˢ) Link(ϟctx log.Context, ϟp path.Path, ϟd database.Database) (path.Path, error) {
+ ϟt := path.MemoryType{Kind: path.MemoryKind_Integer, ByteSize: uint64(1)}
+ return resolve.TypedLink(
+ memory.Pointer{Address: s.Base, Pool: s.Pool}, ϟctx, ϟp, ϟd, ϟt)
+}
+
+// Check interface conformance
+var _ path.Linker = Boolˢ{}
+
// BufferIdˢ is a slice of BufferId.
type BufferIdˢ struct {
binary.Generate
@@ -8716,6 +9161,194 @@
// Check interface conformance
var _ path.Linker = GLfloatˢ{}
+// GLint64EXTˢ is a slice of GLint64EXT.
+type GLint64EXTˢ struct {
+ binary.Generate
+ memory.SliceInfo
+}
+
+// MakeGLint64EXTˢ returns a GLint64EXTˢ backed by a new memory pool.
+func MakeGLint64EXTˢ(count uint64, ϟs *gfxapi.State) GLint64EXTˢ {
+ id := ϟs.NextPoolID
+ ϟs.Memory[id] = &memory.Pool{}
+ ϟs.NextPoolID++
+ return GLint64EXTˢ{SliceInfo: memory.SliceInfo{Count: count, Pool: id}}
+}
+
+// Clone returns a copy of the GLint64EXTˢ in a new memory pool.
+func (s GLint64EXTˢ) Clone(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) GLint64EXTˢ {
+ s.OnRead(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ pool := &memory.Pool{}
+ pool.Write(0, ϟs.Memory[s.Pool].Slice(s.Range(ϟs)))
+ id := ϟs.NextPoolID
+ ϟs.Memory[id] = pool
+ ϟs.NextPoolID++
+ dst := GLint64EXTˢ{SliceInfo: memory.SliceInfo{Count: s.Count, Pool: id}}
+ return dst
+}
+
+// ElementSize returns the size in bytes of an element that GLint64EXTˢ points to.
+func (s GLint64EXTˢ) ElementSize(ϟs *gfxapi.State) uint64 {
+ return uint64(8)
+}
+
+// ElementTypeName returns the name of the type of element in GLint64EXTˢ.
+func (s GLint64EXTˢ) ElementTypeName() string {
+ return "GLint64EXT"
+}
+
+// Range returns the memory range this slice represents in the underlying pool.
+func (s GLint64EXTˢ) Range(ϟs *gfxapi.State) memory.Range {
+ return memory.Range{Base: s.Base, Size: s.Count * s.ElementSize(ϟs)}
+}
+
+// ResourceID returns an identifier to a resource representing the data of
+// this slice.
+func (s GLint64EXTˢ) ResourceID(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database) id.ID {
+ id, err := ϟs.Memory[s.Pool].Slice(s.Range(ϟs)).ResourceID(ϟctx, ϟd)
+ if err != nil {
+ panic(err)
+ }
+ return id
+}
+
+// Decoder returns a memory decoder for the slice.
+func (s GLint64EXTˢ) Decoder(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database) binary.Reader {
+ return ϟs.MemoryDecoder(ϟctx, ϟs.Memory[s.Pool].Slice(s.Range(ϟs)), ϟd)
+}
+
+// Encoder returns a memory encoder for the slice.
+func (s GLint64EXTˢ) Encoder(ϟs *gfxapi.State) binary.Writer {
+ return ϟs.MemoryEncoder(ϟs.Memory[s.Pool], s.Range(ϟs))
+}
+
+// AsGLint64EXTˢ returns s cast to a GLint64EXTˢ.
+// The returned slice length will be calculated so that the returned slice is
+// no longer (in bytes) than s.
+func AsGLint64EXTˢ(s slice, ϟs *gfxapi.State) GLint64EXTˢ {
+ out := GLint64EXTˢ{SliceInfo: s.Info()}
+ out.Count = (out.Count * s.ElementSize(ϟs)) / out.ElementSize(ϟs)
+ return out
+}
+
+// Read reads and returns all the GLint64EXT elements in this GLint64EXTˢ.
+func (s GLint64EXTˢ) Read(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) []GLint64EXT {
+ d, res := s.Decoder(ϟctx, ϟs, ϟd), make([]GLint64EXT, s.Count)
+ s.OnRead(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ for i := range res {
+ if ϟv := d.Int64(); d.Error() == nil {
+ res[i] = GLint64EXT(ϟv)
+ } else {
+ panic(d.Error())
+ }
+ }
+ return res
+}
+
+// Write copies elements from src to this slice. The number of elements copied is returned
+// which is the minimum of s.Count and len(src).
+func (s GLint64EXTˢ) Write(ϟctx log.Context, src []GLint64EXT, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) uint64 {
+ count := min(s.Count, uint64(len(src)))
+ s = s.Slice(0, count, ϟs)
+ e := s.Encoder(ϟs)
+ for i := uint64(0); i < count; i++ {
+ if e.Int64(int64(src[i])); e.Error() != nil {
+ panic(e.Error())
+ }
+ }
+ s.OnWrite(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ return count
+}
+
+// Copy copies elements from src to this slice.
+// The number of elements copied is the minimum of dst.Count and src.Count.
+// The slices of this and dst to the copied elements is returned.
+func (dst GLint64EXTˢ) Copy(ϟctx log.Context, src GLint64EXTˢ, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) (d, s GLint64EXTˢ) {
+ count := min(dst.Count, src.Count)
+ dst, src = dst.Slice(0, count, ϟs), src.Slice(0, count, ϟs)
+ src.OnRead(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ ϟs.Memory[dst.Pool].Write(dst.Base, ϟs.Memory[src.Pool].Slice(src.Range(ϟs)))
+ dst.OnWrite(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ return dst, src
+}
+
+// Contains returns true if the slice contains the specified value.
+func (s GLint64EXTˢ) Contains(ϟctx log.Context, val GLint64EXT, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) bool {
+ for _, e := range s.Read(ϟctx, ϟa, ϟs, ϟd, ϟb) {
+ if e == val {
+ return true
+ }
+ }
+ return false
+}
+
+// OnRead calls the backing pool's OnRead callback. s is returned so calls can be chained.
+func (s GLint64EXTˢ) OnRead(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) GLint64EXTˢ {
+ if f := ϟs.Memory[s.Pool].OnRead; f != nil {
+ f(s.Range(ϟs))
+ }
+ if ϟb != nil && s.Pool == memory.ApplicationPool {
+ s.ReserveMemory(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ ϟb.Write(s.Range(ϟs), s.ResourceID(ϟctx, ϟs, ϟd))
+ }
+ return s
+}
+
+// OnWrite calls the backing pool's OnWrite callback. s is returned so calls can be chained.
+func (s GLint64EXTˢ) OnWrite(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) GLint64EXTˢ {
+ if f := ϟs.Memory[s.Pool].OnWrite; f != nil {
+ f(s.Range(ϟs))
+ }
+ if ϟb != nil && s.Pool == memory.ApplicationPool {
+ ϟb.ReserveMemory(memory.Range{Base: s.Root, Size: uint64(s.Range(ϟs).End() - s.Root)})
+ }
+ return s
+}
+func (s GLint64EXTˢ) ReserveMemory(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) GLint64EXTˢ {
+ if ϟb != nil && s.Pool == memory.ApplicationPool {
+ rng := s.Range(ϟs)
+ ϟb.ReserveMemory(memory.Range{Base: s.Root, Size: uint64(rng.End() - s.Root)})
+ }
+ return s
+}
+
+// Index returns a GLint64EXTᵖ to the i'th element in this GLint64EXTˢ.
+func (s GLint64EXTˢ) Index(i uint64, ϟs *gfxapi.State) GLint64EXTᵖ {
+ return GLint64EXTᵖ{Address: s.Base + i*s.ElementSize(ϟs), Pool: s.Pool}
+}
+
+// Slice returns a sub-slice from the GLint64EXTˢ using start and end indices.
+func (s GLint64EXTˢ) Slice(start, end uint64, ϟs *gfxapi.State) GLint64EXTˢ {
+ if start > end {
+ panic(fmt.Errorf("%v.Slice start (%d) is greater than the end (%d)", s, start, end))
+ }
+ if end > s.Count {
+ panic(fmt.Errorf("%v.Slice(%d, %d) - out of bounds", s, start, end))
+ }
+ return GLint64EXTˢ{SliceInfo: memory.SliceInfo{Root: s.Root, Base: s.Base + start*s.ElementSize(ϟs), Count: end - start, Pool: s.Pool}}
+}
+
+// Info returns the memory.SliceInfo for this slice.
+func (s GLint64EXTˢ) Info() memory.SliceInfo { return s.SliceInfo }
+
+// String returns a string description of the GLint64EXTˢ slice.
+func (s GLint64EXTˢ) String() string {
+ return fmt.Sprintf("GLint64EXT(%v@%v)[%d]", s.Base, s.Pool, s.Count)
+}
+
+// Link returns a path which can be used to view memory which is referenced
+// by the slice s. When resolved the path includes memory type information as well
+// as the memory context itself.
+// If nil, nil is returned then the path cannot be followed.
+func (s GLint64EXTˢ) Link(ϟctx log.Context, ϟp path.Path, ϟd database.Database) (path.Path, error) {
+ ϟt := path.MemoryType{Kind: path.MemoryKind_Integer, ByteSize: uint64(8)}
+ return resolve.TypedLink(
+ memory.Pointer{Address: s.Base, Pool: s.Pool}, ϟctx, ϟp, ϟd, ϟt)
+}
+
+// Check interface conformance
+var _ path.Linker = GLint64EXTˢ{}
+
// GLint64ˢ is a slice of GLint64.
type GLint64ˢ struct {
binary.Generate
@@ -9656,6 +10289,194 @@
// Check interface conformance
var _ path.Linker = GLubyteˢ{}
+// GLuint64EXTˢ is a slice of GLuint64EXT.
+type GLuint64EXTˢ struct {
+ binary.Generate
+ memory.SliceInfo
+}
+
+// MakeGLuint64EXTˢ returns a GLuint64EXTˢ backed by a new memory pool.
+func MakeGLuint64EXTˢ(count uint64, ϟs *gfxapi.State) GLuint64EXTˢ {
+ id := ϟs.NextPoolID
+ ϟs.Memory[id] = &memory.Pool{}
+ ϟs.NextPoolID++
+ return GLuint64EXTˢ{SliceInfo: memory.SliceInfo{Count: count, Pool: id}}
+}
+
+// Clone returns a copy of the GLuint64EXTˢ in a new memory pool.
+func (s GLuint64EXTˢ) Clone(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) GLuint64EXTˢ {
+ s.OnRead(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ pool := &memory.Pool{}
+ pool.Write(0, ϟs.Memory[s.Pool].Slice(s.Range(ϟs)))
+ id := ϟs.NextPoolID
+ ϟs.Memory[id] = pool
+ ϟs.NextPoolID++
+ dst := GLuint64EXTˢ{SliceInfo: memory.SliceInfo{Count: s.Count, Pool: id}}
+ return dst
+}
+
+// ElementSize returns the size in bytes of an element that GLuint64EXTˢ points to.
+func (s GLuint64EXTˢ) ElementSize(ϟs *gfxapi.State) uint64 {
+ return uint64(8)
+}
+
+// ElementTypeName returns the name of the type of element in GLuint64EXTˢ.
+func (s GLuint64EXTˢ) ElementTypeName() string {
+ return "GLuint64EXT"
+}
+
+// Range returns the memory range this slice represents in the underlying pool.
+func (s GLuint64EXTˢ) Range(ϟs *gfxapi.State) memory.Range {
+ return memory.Range{Base: s.Base, Size: s.Count * s.ElementSize(ϟs)}
+}
+
+// ResourceID returns an identifier to a resource representing the data of
+// this slice.
+func (s GLuint64EXTˢ) ResourceID(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database) id.ID {
+ id, err := ϟs.Memory[s.Pool].Slice(s.Range(ϟs)).ResourceID(ϟctx, ϟd)
+ if err != nil {
+ panic(err)
+ }
+ return id
+}
+
+// Decoder returns a memory decoder for the slice.
+func (s GLuint64EXTˢ) Decoder(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database) binary.Reader {
+ return ϟs.MemoryDecoder(ϟctx, ϟs.Memory[s.Pool].Slice(s.Range(ϟs)), ϟd)
+}
+
+// Encoder returns a memory encoder for the slice.
+func (s GLuint64EXTˢ) Encoder(ϟs *gfxapi.State) binary.Writer {
+ return ϟs.MemoryEncoder(ϟs.Memory[s.Pool], s.Range(ϟs))
+}
+
+// AsGLuint64EXTˢ returns s cast to a GLuint64EXTˢ.
+// The returned slice length will be calculated so that the returned slice is
+// no longer (in bytes) than s.
+func AsGLuint64EXTˢ(s slice, ϟs *gfxapi.State) GLuint64EXTˢ {
+ out := GLuint64EXTˢ{SliceInfo: s.Info()}
+ out.Count = (out.Count * s.ElementSize(ϟs)) / out.ElementSize(ϟs)
+ return out
+}
+
+// Read reads and returns all the GLuint64EXT elements in this GLuint64EXTˢ.
+func (s GLuint64EXTˢ) Read(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) []GLuint64EXT {
+ d, res := s.Decoder(ϟctx, ϟs, ϟd), make([]GLuint64EXT, s.Count)
+ s.OnRead(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ for i := range res {
+ if ϟv := d.Uint64(); d.Error() == nil {
+ res[i] = GLuint64EXT(ϟv)
+ } else {
+ panic(d.Error())
+ }
+ }
+ return res
+}
+
+// Write copies elements from src to this slice. The number of elements copied is returned
+// which is the minimum of s.Count and len(src).
+func (s GLuint64EXTˢ) Write(ϟctx log.Context, src []GLuint64EXT, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) uint64 {
+ count := min(s.Count, uint64(len(src)))
+ s = s.Slice(0, count, ϟs)
+ e := s.Encoder(ϟs)
+ for i := uint64(0); i < count; i++ {
+ if e.Uint64(uint64(src[i])); e.Error() != nil {
+ panic(e.Error())
+ }
+ }
+ s.OnWrite(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ return count
+}
+
+// Copy copies elements from src to this slice.
+// The number of elements copied is the minimum of dst.Count and src.Count.
+// The slices of this and dst to the copied elements is returned.
+func (dst GLuint64EXTˢ) Copy(ϟctx log.Context, src GLuint64EXTˢ, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) (d, s GLuint64EXTˢ) {
+ count := min(dst.Count, src.Count)
+ dst, src = dst.Slice(0, count, ϟs), src.Slice(0, count, ϟs)
+ src.OnRead(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ ϟs.Memory[dst.Pool].Write(dst.Base, ϟs.Memory[src.Pool].Slice(src.Range(ϟs)))
+ dst.OnWrite(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ return dst, src
+}
+
+// Contains returns true if the slice contains the specified value.
+func (s GLuint64EXTˢ) Contains(ϟctx log.Context, val GLuint64EXT, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) bool {
+ for _, e := range s.Read(ϟctx, ϟa, ϟs, ϟd, ϟb) {
+ if e == val {
+ return true
+ }
+ }
+ return false
+}
+
+// OnRead calls the backing pool's OnRead callback. s is returned so calls can be chained.
+func (s GLuint64EXTˢ) OnRead(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) GLuint64EXTˢ {
+ if f := ϟs.Memory[s.Pool].OnRead; f != nil {
+ f(s.Range(ϟs))
+ }
+ if ϟb != nil && s.Pool == memory.ApplicationPool {
+ s.ReserveMemory(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ ϟb.Write(s.Range(ϟs), s.ResourceID(ϟctx, ϟs, ϟd))
+ }
+ return s
+}
+
+// OnWrite calls the backing pool's OnWrite callback. s is returned so calls can be chained.
+func (s GLuint64EXTˢ) OnWrite(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) GLuint64EXTˢ {
+ if f := ϟs.Memory[s.Pool].OnWrite; f != nil {
+ f(s.Range(ϟs))
+ }
+ if ϟb != nil && s.Pool == memory.ApplicationPool {
+ ϟb.ReserveMemory(memory.Range{Base: s.Root, Size: uint64(s.Range(ϟs).End() - s.Root)})
+ }
+ return s
+}
+func (s GLuint64EXTˢ) ReserveMemory(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) GLuint64EXTˢ {
+ if ϟb != nil && s.Pool == memory.ApplicationPool {
+ rng := s.Range(ϟs)
+ ϟb.ReserveMemory(memory.Range{Base: s.Root, Size: uint64(rng.End() - s.Root)})
+ }
+ return s
+}
+
+// Index returns a GLuint64EXTᵖ to the i'th element in this GLuint64EXTˢ.
+func (s GLuint64EXTˢ) Index(i uint64, ϟs *gfxapi.State) GLuint64EXTᵖ {
+ return GLuint64EXTᵖ{Address: s.Base + i*s.ElementSize(ϟs), Pool: s.Pool}
+}
+
+// Slice returns a sub-slice from the GLuint64EXTˢ using start and end indices.
+func (s GLuint64EXTˢ) Slice(start, end uint64, ϟs *gfxapi.State) GLuint64EXTˢ {
+ if start > end {
+ panic(fmt.Errorf("%v.Slice start (%d) is greater than the end (%d)", s, start, end))
+ }
+ if end > s.Count {
+ panic(fmt.Errorf("%v.Slice(%d, %d) - out of bounds", s, start, end))
+ }
+ return GLuint64EXTˢ{SliceInfo: memory.SliceInfo{Root: s.Root, Base: s.Base + start*s.ElementSize(ϟs), Count: end - start, Pool: s.Pool}}
+}
+
+// Info returns the memory.SliceInfo for this slice.
+func (s GLuint64EXTˢ) Info() memory.SliceInfo { return s.SliceInfo }
+
+// String returns a string description of the GLuint64EXTˢ slice.
+func (s GLuint64EXTˢ) String() string {
+ return fmt.Sprintf("GLuint64EXT(%v@%v)[%d]", s.Base, s.Pool, s.Count)
+}
+
+// Link returns a path which can be used to view memory which is referenced
+// by the slice s. When resolved the path includes memory type information as well
+// as the memory context itself.
+// If nil, nil is returned then the path cannot be followed.
+func (s GLuint64EXTˢ) Link(ϟctx log.Context, ϟp path.Path, ϟd database.Database) (path.Path, error) {
+ ϟt := path.MemoryType{Kind: path.MemoryKind_Integer, ByteSize: uint64(8)}
+ return resolve.TypedLink(
+ memory.Pointer{Address: s.Base, Pool: s.Pool}, ϟctx, ϟp, ϟd, ϟt)
+}
+
+// Check interface conformance
+var _ path.Linker = GLuint64EXTˢ{}
+
// GLuint64ˢ is a slice of GLuint64.
type GLuint64ˢ struct {
binary.Generate
@@ -17398,6 +18219,46 @@
return s
}
+type EGLImageKHRːAndroidNativeBufferExtraʳᵐ map[EGLImageKHR](*AndroidNativeBufferExtra)
+
+func (m EGLImageKHRːAndroidNativeBufferExtraʳᵐ) Get(key EGLImageKHR) *AndroidNativeBufferExtra {
+ return m[key]
+}
+func (m EGLImageKHRːAndroidNativeBufferExtraʳᵐ) Contains(key EGLImageKHR) bool {
+ _, ok := m[key]
+ return ok
+}
+func (m EGLImageKHRːAndroidNativeBufferExtraʳᵐ) Delete(key EGLImageKHR) {
+ delete(m, key)
+}
+func (m EGLImageKHRːAndroidNativeBufferExtraʳᵐ) Range() [](*AndroidNativeBufferExtra) {
+ values := make([](*AndroidNativeBufferExtra), 0, len(m))
+ for _, value := range m {
+ values = append(values, value)
+ }
+ return values
+}
+
+type EGLImageKHRːAndroidNativeBufferExtraʳᵐ_SortKeys []EGLImageKHR
+
+func (s EGLImageKHRːAndroidNativeBufferExtraʳᵐ_SortKeys) Len() int { return len(s) }
+func (s EGLImageKHRːAndroidNativeBufferExtraʳᵐ_SortKeys) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
+
+// Not naturally sorted EGLImageKHR, using fmt.Sprint
+func (s EGLImageKHRːAndroidNativeBufferExtraʳᵐ_SortKeys) Less(i, j int) bool {
+ return fmt.Sprint(s[i]) < fmt.Sprint(s[j])
+}
+func (m EGLImageKHRːAndroidNativeBufferExtraʳᵐ) KeysSorted() []EGLImageKHR {
+ s := make(EGLImageKHRːAndroidNativeBufferExtraʳᵐ_SortKeys, len(m))
+ i := 0
+ for k, _ := range m {
+ s[i] = k
+ i++
+ }
+ sort.Sort(s)
+ return s
+}
+
type FramebufferIdːFramebufferʳᵐ map[FramebufferId](*Framebuffer)
func (m FramebufferIdːFramebufferʳᵐ) Get(key FramebufferId) *Framebuffer {
@@ -21680,7 +22541,7 @@
Display EGLDisplay
Config EGLConfig
ShareContext EGLContext
- AttribList EGLintᵖ
+ AttribList EGLintᶜᵖ
Result EGLContext
}
@@ -22875,6 +23736,39 @@
func (ϟa *EglDestroyImageKHR) Extras() *atom.Extras { return &ϟa.extras }
////////////////////////////////////////////////////////////////////////////////
+// EglCreateNativeClientBufferANDROID
+////////////////////////////////////////////////////////////////////////////////
+type EglCreateNativeClientBufferANDROID struct {
+ binary.Generate `display:"eglCreateNativeClientBufferANDROID"`
+ extras atom.Extras
+ AttribList EGLintᶜᵖ
+ Result EGLClientBuffer
+}
+
+func (ϟa *EglCreateNativeClientBufferANDROID) String() string {
+ return fmt.Sprintf("eglCreateNativeClientBufferANDROID(attrib_list: %v) → %v", ϟa.AttribList, ϟa.Result)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The EglCreateNativeClientBufferANDROID pointer is returned so that calls can be chained.
+func (ϟa *EglCreateNativeClientBufferANDROID) AddRead(rng memory.Range, id id.ID) *EglCreateNativeClientBufferANDROID {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The EglCreateNativeClientBufferANDROID pointer is returned so that calls can be chained.
+func (ϟa *EglCreateNativeClientBufferANDROID) AddWrite(rng memory.Range, id id.ID) *EglCreateNativeClientBufferANDROID {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *EglCreateNativeClientBufferANDROID) API() gfxapi.API { return API() }
+func (ϟa *EglCreateNativeClientBufferANDROID) AtomFlags() atom.Flags { return 0 }
+func (ϟa *EglCreateNativeClientBufferANDROID) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
// GlActiveShaderProgramEXT
////////////////////////////////////////////////////////////////////////////////
type GlActiveShaderProgramEXT struct {
@@ -34339,6 +35233,2159 @@
func (ϟa *GlWeightPathsNV) Extras() *atom.Extras { return &ϟa.extras }
////////////////////////////////////////////////////////////////////////////////
+// GlClearPixelLocalStorageuiEXT
+////////////////////////////////////////////////////////////////////////////////
+type GlClearPixelLocalStorageuiEXT struct {
+ binary.Generate `display:"glClearPixelLocalStorageuiEXT"`
+ extras atom.Extras
+ Offset GLsizei
+ N GLsizei
+ Values GLuintᶜᵖ
+}
+
+func (ϟa *GlClearPixelLocalStorageuiEXT) String() string {
+ return fmt.Sprintf("glClearPixelLocalStorageuiEXT(offset: %v, n: %v, values: %v)", ϟa.Offset, ϟa.N, ϟa.Values)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlClearPixelLocalStorageuiEXT pointer is returned so that calls can be chained.
+func (ϟa *GlClearPixelLocalStorageuiEXT) AddRead(rng memory.Range, id id.ID) *GlClearPixelLocalStorageuiEXT {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlClearPixelLocalStorageuiEXT pointer is returned so that calls can be chained.
+func (ϟa *GlClearPixelLocalStorageuiEXT) AddWrite(rng memory.Range, id id.ID) *GlClearPixelLocalStorageuiEXT {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlClearPixelLocalStorageuiEXT) API() gfxapi.API { return API() }
+func (ϟa *GlClearPixelLocalStorageuiEXT) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlClearPixelLocalStorageuiEXT) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlClearTexImageEXT
+////////////////////////////////////////////////////////////////////////////////
+type GlClearTexImageEXT struct {
+ binary.Generate `display:"glClearTexImageEXT"`
+ extras atom.Extras
+ Texture GLuint
+ Level GLint
+ Format GLenum
+ Type GLenum
+ Data Voidᶜᵖ
+}
+
+func (ϟa *GlClearTexImageEXT) String() string {
+ return fmt.Sprintf("glClearTexImageEXT(texture: %v, level: %v, format: %v, type: %v, data: %v)", ϟa.Texture, ϟa.Level, ϟa.Format, ϟa.Type, ϟa.Data)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlClearTexImageEXT pointer is returned so that calls can be chained.
+func (ϟa *GlClearTexImageEXT) AddRead(rng memory.Range, id id.ID) *GlClearTexImageEXT {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlClearTexImageEXT pointer is returned so that calls can be chained.
+func (ϟa *GlClearTexImageEXT) AddWrite(rng memory.Range, id id.ID) *GlClearTexImageEXT {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlClearTexImageEXT) API() gfxapi.API { return API() }
+func (ϟa *GlClearTexImageEXT) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlClearTexImageEXT) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlClearTexSubImageEXT
+////////////////////////////////////////////////////////////////////////////////
+type GlClearTexSubImageEXT struct {
+ binary.Generate `display:"glClearTexSubImageEXT"`
+ extras atom.Extras
+ Texture GLuint
+ Level GLint
+ Xoffset GLint
+ Yoffset GLint
+ Zoffset GLint
+ Width GLsizei
+ Height GLsizei
+ Depth GLsizei
+ Format GLenum
+ Type GLenum
+ Data Voidᶜᵖ
+}
+
+func (ϟa *GlClearTexSubImageEXT) String() string {
+ return fmt.Sprintf("glClearTexSubImageEXT(texture: %v, level: %v, xoffset: %v, yoffset: %v, zoffset: %v, width: %v, height: %v, depth: %v, format: %v, type: %v, data: %v)", ϟa.Texture, ϟa.Level, ϟa.Xoffset, ϟa.Yoffset, ϟa.Zoffset, ϟa.Width, ϟa.Height, ϟa.Depth, ϟa.Format, ϟa.Type, ϟa.Data)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlClearTexSubImageEXT pointer is returned so that calls can be chained.
+func (ϟa *GlClearTexSubImageEXT) AddRead(rng memory.Range, id id.ID) *GlClearTexSubImageEXT {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlClearTexSubImageEXT pointer is returned so that calls can be chained.
+func (ϟa *GlClearTexSubImageEXT) AddWrite(rng memory.Range, id id.ID) *GlClearTexSubImageEXT {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlClearTexSubImageEXT) API() gfxapi.API { return API() }
+func (ϟa *GlClearTexSubImageEXT) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlClearTexSubImageEXT) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlConservativeRasterParameteriNV
+////////////////////////////////////////////////////////////////////////////////
+type GlConservativeRasterParameteriNV struct {
+ binary.Generate `display:"glConservativeRasterParameteriNV"`
+ extras atom.Extras
+ Pname GLenum
+ Param GLint
+}
+
+func (ϟa *GlConservativeRasterParameteriNV) String() string {
+ return fmt.Sprintf("glConservativeRasterParameteriNV(pname: %v, param: %v)", ϟa.Pname, ϟa.Param)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlConservativeRasterParameteriNV pointer is returned so that calls can be chained.
+func (ϟa *GlConservativeRasterParameteriNV) AddRead(rng memory.Range, id id.ID) *GlConservativeRasterParameteriNV {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlConservativeRasterParameteriNV pointer is returned so that calls can be chained.
+func (ϟa *GlConservativeRasterParameteriNV) AddWrite(rng memory.Range, id id.ID) *GlConservativeRasterParameteriNV {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlConservativeRasterParameteriNV) API() gfxapi.API { return API() }
+func (ϟa *GlConservativeRasterParameteriNV) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlConservativeRasterParameteriNV) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlDepthRangeArrayfvOES
+////////////////////////////////////////////////////////////////////////////////
+type GlDepthRangeArrayfvOES struct {
+ binary.Generate `display:"glDepthRangeArrayfvOES"`
+ extras atom.Extras
+ First GLuint
+ Count GLsizei
+ V GLfloatᶜᵖ
+}
+
+func (ϟa *GlDepthRangeArrayfvOES) String() string {
+ return fmt.Sprintf("glDepthRangeArrayfvOES(first: %v, count: %v, v: %v)", ϟa.First, ϟa.Count, ϟa.V)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlDepthRangeArrayfvOES pointer is returned so that calls can be chained.
+func (ϟa *GlDepthRangeArrayfvOES) AddRead(rng memory.Range, id id.ID) *GlDepthRangeArrayfvOES {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlDepthRangeArrayfvOES pointer is returned so that calls can be chained.
+func (ϟa *GlDepthRangeArrayfvOES) AddWrite(rng memory.Range, id id.ID) *GlDepthRangeArrayfvOES {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlDepthRangeArrayfvOES) API() gfxapi.API { return API() }
+func (ϟa *GlDepthRangeArrayfvOES) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlDepthRangeArrayfvOES) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlDepthRangeIndexedfOES
+////////////////////////////////////////////////////////////////////////////////
+type GlDepthRangeIndexedfOES struct {
+ binary.Generate `display:"glDepthRangeIndexedfOES"`
+ extras atom.Extras
+ Index GLuint
+ N GLfloat
+ F GLfloat
+}
+
+func (ϟa *GlDepthRangeIndexedfOES) String() string {
+ return fmt.Sprintf("glDepthRangeIndexedfOES(index: %v, n: %v, f: %v)", ϟa.Index, ϟa.N, ϟa.F)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlDepthRangeIndexedfOES pointer is returned so that calls can be chained.
+func (ϟa *GlDepthRangeIndexedfOES) AddRead(rng memory.Range, id id.ID) *GlDepthRangeIndexedfOES {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlDepthRangeIndexedfOES pointer is returned so that calls can be chained.
+func (ϟa *GlDepthRangeIndexedfOES) AddWrite(rng memory.Range, id id.ID) *GlDepthRangeIndexedfOES {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlDepthRangeIndexedfOES) API() gfxapi.API { return API() }
+func (ϟa *GlDepthRangeIndexedfOES) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlDepthRangeIndexedfOES) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlDrawTransformFeedbackEXT
+////////////////////////////////////////////////////////////////////////////////
+type GlDrawTransformFeedbackEXT struct {
+ binary.Generate `display:"glDrawTransformFeedbackEXT"`
+ extras atom.Extras
+ Mode GLenum
+ Id GLuint
+}
+
+func (ϟa *GlDrawTransformFeedbackEXT) String() string {
+ return fmt.Sprintf("glDrawTransformFeedbackEXT(mode: %v, id: %v)", ϟa.Mode, ϟa.Id)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlDrawTransformFeedbackEXT pointer is returned so that calls can be chained.
+func (ϟa *GlDrawTransformFeedbackEXT) AddRead(rng memory.Range, id id.ID) *GlDrawTransformFeedbackEXT {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlDrawTransformFeedbackEXT pointer is returned so that calls can be chained.
+func (ϟa *GlDrawTransformFeedbackEXT) AddWrite(rng memory.Range, id id.ID) *GlDrawTransformFeedbackEXT {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlDrawTransformFeedbackEXT) API() gfxapi.API { return API() }
+func (ϟa *GlDrawTransformFeedbackEXT) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlDrawTransformFeedbackEXT) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlDrawTransformFeedbackInstancedEXT
+////////////////////////////////////////////////////////////////////////////////
+type GlDrawTransformFeedbackInstancedEXT struct {
+ binary.Generate `display:"glDrawTransformFeedbackInstancedEXT"`
+ extras atom.Extras
+ Mode GLenum
+ Id GLuint
+ Instancecount GLsizei
+}
+
+func (ϟa *GlDrawTransformFeedbackInstancedEXT) String() string {
+ return fmt.Sprintf("glDrawTransformFeedbackInstancedEXT(mode: %v, id: %v, instancecount: %v)", ϟa.Mode, ϟa.Id, ϟa.Instancecount)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlDrawTransformFeedbackInstancedEXT pointer is returned so that calls can be chained.
+func (ϟa *GlDrawTransformFeedbackInstancedEXT) AddRead(rng memory.Range, id id.ID) *GlDrawTransformFeedbackInstancedEXT {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlDrawTransformFeedbackInstancedEXT pointer is returned so that calls can be chained.
+func (ϟa *GlDrawTransformFeedbackInstancedEXT) AddWrite(rng memory.Range, id id.ID) *GlDrawTransformFeedbackInstancedEXT {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlDrawTransformFeedbackInstancedEXT) API() gfxapi.API { return API() }
+func (ϟa *GlDrawTransformFeedbackInstancedEXT) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlDrawTransformFeedbackInstancedEXT) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlFramebufferPixelLocalStorageSizeEXT
+////////////////////////////////////////////////////////////////////////////////
+type GlFramebufferPixelLocalStorageSizeEXT struct {
+ binary.Generate `display:"glFramebufferPixelLocalStorageSizeEXT"`
+ extras atom.Extras
+ Target GLuint
+ Size GLsizei
+}
+
+func (ϟa *GlFramebufferPixelLocalStorageSizeEXT) String() string {
+ return fmt.Sprintf("glFramebufferPixelLocalStorageSizeEXT(target: %v, size: %v)", ϟa.Target, ϟa.Size)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlFramebufferPixelLocalStorageSizeEXT pointer is returned so that calls can be chained.
+func (ϟa *GlFramebufferPixelLocalStorageSizeEXT) AddRead(rng memory.Range, id id.ID) *GlFramebufferPixelLocalStorageSizeEXT {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlFramebufferPixelLocalStorageSizeEXT pointer is returned so that calls can be chained.
+func (ϟa *GlFramebufferPixelLocalStorageSizeEXT) AddWrite(rng memory.Range, id id.ID) *GlFramebufferPixelLocalStorageSizeEXT {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlFramebufferPixelLocalStorageSizeEXT) API() gfxapi.API { return API() }
+func (ϟa *GlFramebufferPixelLocalStorageSizeEXT) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlFramebufferPixelLocalStorageSizeEXT) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlFramebufferTexture2DDownsampleIMG
+////////////////////////////////////////////////////////////////////////////////
+type GlFramebufferTexture2DDownsampleIMG struct {
+ binary.Generate `display:"glFramebufferTexture2DDownsampleIMG"`
+ extras atom.Extras
+ Target GLenum
+ Attachment GLenum
+ Textarget GLenum
+ Texture GLuint
+ Level GLint
+ Xscale GLint
+ Yscale GLint
+}
+
+func (ϟa *GlFramebufferTexture2DDownsampleIMG) String() string {
+ return fmt.Sprintf("glFramebufferTexture2DDownsampleIMG(target: %v, attachment: %v, textarget: %v, texture: %v, level: %v, xscale: %v, yscale: %v)", ϟa.Target, ϟa.Attachment, ϟa.Textarget, ϟa.Texture, ϟa.Level, ϟa.Xscale, ϟa.Yscale)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlFramebufferTexture2DDownsampleIMG pointer is returned so that calls can be chained.
+func (ϟa *GlFramebufferTexture2DDownsampleIMG) AddRead(rng memory.Range, id id.ID) *GlFramebufferTexture2DDownsampleIMG {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlFramebufferTexture2DDownsampleIMG pointer is returned so that calls can be chained.
+func (ϟa *GlFramebufferTexture2DDownsampleIMG) AddWrite(rng memory.Range, id id.ID) *GlFramebufferTexture2DDownsampleIMG {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlFramebufferTexture2DDownsampleIMG) API() gfxapi.API { return API() }
+func (ϟa *GlFramebufferTexture2DDownsampleIMG) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlFramebufferTexture2DDownsampleIMG) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlFramebufferTextureLayerDownsampleIMG
+////////////////////////////////////////////////////////////////////////////////
+type GlFramebufferTextureLayerDownsampleIMG struct {
+ binary.Generate `display:"glFramebufferTextureLayerDownsampleIMG"`
+ extras atom.Extras
+ Target GLenum
+ Attachment GLenum
+ Texture GLuint
+ Level GLint
+ Layer GLint
+ Xscale GLint
+ Yscale GLint
+}
+
+func (ϟa *GlFramebufferTextureLayerDownsampleIMG) String() string {
+ return fmt.Sprintf("glFramebufferTextureLayerDownsampleIMG(target: %v, attachment: %v, texture: %v, level: %v, layer: %v, xscale: %v, yscale: %v)", ϟa.Target, ϟa.Attachment, ϟa.Texture, ϟa.Level, ϟa.Layer, ϟa.Xscale, ϟa.Yscale)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlFramebufferTextureLayerDownsampleIMG pointer is returned so that calls can be chained.
+func (ϟa *GlFramebufferTextureLayerDownsampleIMG) AddRead(rng memory.Range, id id.ID) *GlFramebufferTextureLayerDownsampleIMG {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlFramebufferTextureLayerDownsampleIMG pointer is returned so that calls can be chained.
+func (ϟa *GlFramebufferTextureLayerDownsampleIMG) AddWrite(rng memory.Range, id id.ID) *GlFramebufferTextureLayerDownsampleIMG {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlFramebufferTextureLayerDownsampleIMG) API() gfxapi.API { return API() }
+func (ϟa *GlFramebufferTextureLayerDownsampleIMG) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlFramebufferTextureLayerDownsampleIMG) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlFramebufferTextureMultisampleMultiviewOVR
+////////////////////////////////////////////////////////////////////////////////
+type GlFramebufferTextureMultisampleMultiviewOVR struct {
+ binary.Generate `display:"glFramebufferTextureMultisampleMultiviewOVR"`
+ extras atom.Extras
+ Target GLenum
+ Attachment GLenum
+ Texture GLuint
+ Level GLint
+ Samples GLsizei
+ BaseViewIndex GLint
+ NumViews GLsizei
+}
+
+func (ϟa *GlFramebufferTextureMultisampleMultiviewOVR) String() string {
+ return fmt.Sprintf("glFramebufferTextureMultisampleMultiviewOVR(target: %v, attachment: %v, texture: %v, level: %v, samples: %v, baseViewIndex: %v, numViews: %v)", ϟa.Target, ϟa.Attachment, ϟa.Texture, ϟa.Level, ϟa.Samples, ϟa.BaseViewIndex, ϟa.NumViews)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlFramebufferTextureMultisampleMultiviewOVR pointer is returned so that calls can be chained.
+func (ϟa *GlFramebufferTextureMultisampleMultiviewOVR) AddRead(rng memory.Range, id id.ID) *GlFramebufferTextureMultisampleMultiviewOVR {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlFramebufferTextureMultisampleMultiviewOVR pointer is returned so that calls can be chained.
+func (ϟa *GlFramebufferTextureMultisampleMultiviewOVR) AddWrite(rng memory.Range, id id.ID) *GlFramebufferTextureMultisampleMultiviewOVR {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlFramebufferTextureMultisampleMultiviewOVR) API() gfxapi.API { return API() }
+func (ϟa *GlFramebufferTextureMultisampleMultiviewOVR) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlFramebufferTextureMultisampleMultiviewOVR) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlGetFloati_vOES
+////////////////////////////////////////////////////////////////////////////////
+type GlGetFloati_vOES struct {
+ binary.Generate `display:"glGetFloati_vOES"`
+ extras atom.Extras
+ Target GLenum
+ Index GLuint
+ Data GLfloatᵖ
+}
+
+func (ϟa *GlGetFloati_vOES) String() string {
+ return fmt.Sprintf("glGetFloati_vOES(target: %v, index: %v, data: %v)", ϟa.Target, ϟa.Index, ϟa.Data)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlGetFloati_vOES pointer is returned so that calls can be chained.
+func (ϟa *GlGetFloati_vOES) AddRead(rng memory.Range, id id.ID) *GlGetFloati_vOES {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlGetFloati_vOES pointer is returned so that calls can be chained.
+func (ϟa *GlGetFloati_vOES) AddWrite(rng memory.Range, id id.ID) *GlGetFloati_vOES {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlGetFloati_vOES) API() gfxapi.API { return API() }
+func (ϟa *GlGetFloati_vOES) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlGetFloati_vOES) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlGetFramebufferPixelLocalStorageSizeEXT
+////////////////////////////////////////////////////////////////////////////////
+type GlGetFramebufferPixelLocalStorageSizeEXT struct {
+ binary.Generate `display:"glGetFramebufferPixelLocalStorageSizeEXT"`
+ extras atom.Extras
+ Target GLuint
+ Result GLsizei
+}
+
+func (ϟa *GlGetFramebufferPixelLocalStorageSizeEXT) String() string {
+ return fmt.Sprintf("glGetFramebufferPixelLocalStorageSizeEXT(target: %v) → %v", ϟa.Target, ϟa.Result)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlGetFramebufferPixelLocalStorageSizeEXT pointer is returned so that calls can be chained.
+func (ϟa *GlGetFramebufferPixelLocalStorageSizeEXT) AddRead(rng memory.Range, id id.ID) *GlGetFramebufferPixelLocalStorageSizeEXT {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlGetFramebufferPixelLocalStorageSizeEXT pointer is returned so that calls can be chained.
+func (ϟa *GlGetFramebufferPixelLocalStorageSizeEXT) AddWrite(rng memory.Range, id id.ID) *GlGetFramebufferPixelLocalStorageSizeEXT {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlGetFramebufferPixelLocalStorageSizeEXT) API() gfxapi.API { return API() }
+func (ϟa *GlGetFramebufferPixelLocalStorageSizeEXT) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlGetFramebufferPixelLocalStorageSizeEXT) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlGetTextureHandleIMG
+////////////////////////////////////////////////////////////////////////////////
+type GlGetTextureHandleIMG struct {
+ binary.Generate `display:"glGetTextureHandleIMG"`
+ extras atom.Extras
+ Texture GLuint
+ Result GLuint64
+}
+
+func (ϟa *GlGetTextureHandleIMG) String() string {
+ return fmt.Sprintf("glGetTextureHandleIMG(texture: %v) → %v", ϟa.Texture, ϟa.Result)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlGetTextureHandleIMG pointer is returned so that calls can be chained.
+func (ϟa *GlGetTextureHandleIMG) AddRead(rng memory.Range, id id.ID) *GlGetTextureHandleIMG {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlGetTextureHandleIMG pointer is returned so that calls can be chained.
+func (ϟa *GlGetTextureHandleIMG) AddWrite(rng memory.Range, id id.ID) *GlGetTextureHandleIMG {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlGetTextureHandleIMG) API() gfxapi.API { return API() }
+func (ϟa *GlGetTextureHandleIMG) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlGetTextureHandleIMG) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlGetTextureSamplerHandleIMG
+////////////////////////////////////////////////////////////////////////////////
+type GlGetTextureSamplerHandleIMG struct {
+ binary.Generate `display:"glGetTextureSamplerHandleIMG"`
+ extras atom.Extras
+ Texture GLuint
+ Sampler GLuint
+ Result GLuint64
+}
+
+func (ϟa *GlGetTextureSamplerHandleIMG) String() string {
+ return fmt.Sprintf("glGetTextureSamplerHandleIMG(texture: %v, sampler: %v) → %v", ϟa.Texture, ϟa.Sampler, ϟa.Result)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlGetTextureSamplerHandleIMG pointer is returned so that calls can be chained.
+func (ϟa *GlGetTextureSamplerHandleIMG) AddRead(rng memory.Range, id id.ID) *GlGetTextureSamplerHandleIMG {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlGetTextureSamplerHandleIMG pointer is returned so that calls can be chained.
+func (ϟa *GlGetTextureSamplerHandleIMG) AddWrite(rng memory.Range, id id.ID) *GlGetTextureSamplerHandleIMG {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlGetTextureSamplerHandleIMG) API() gfxapi.API { return API() }
+func (ϟa *GlGetTextureSamplerHandleIMG) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlGetTextureSamplerHandleIMG) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlGetUniformi64vNV
+////////////////////////////////////////////////////////////////////////////////
+type GlGetUniformi64vNV struct {
+ binary.Generate `display:"glGetUniformi64vNV"`
+ extras atom.Extras
+ Program GLuint
+ Location GLint
+ Params GLint64EXTᵖ
+}
+
+func (ϟa *GlGetUniformi64vNV) String() string {
+ return fmt.Sprintf("glGetUniformi64vNV(program: %v, location: %v, params: %v)", ϟa.Program, ϟa.Location, ϟa.Params)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlGetUniformi64vNV pointer is returned so that calls can be chained.
+func (ϟa *GlGetUniformi64vNV) AddRead(rng memory.Range, id id.ID) *GlGetUniformi64vNV {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlGetUniformi64vNV pointer is returned so that calls can be chained.
+func (ϟa *GlGetUniformi64vNV) AddWrite(rng memory.Range, id id.ID) *GlGetUniformi64vNV {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlGetUniformi64vNV) API() gfxapi.API { return API() }
+func (ϟa *GlGetUniformi64vNV) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlGetUniformi64vNV) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlPolygonOffsetClampEXT
+////////////////////////////////////////////////////////////////////////////////
+type GlPolygonOffsetClampEXT struct {
+ binary.Generate `display:"glPolygonOffsetClampEXT"`
+ extras atom.Extras
+ Factor GLfloat
+ Units GLfloat
+ Clamp GLfloat
+}
+
+func (ϟa *GlPolygonOffsetClampEXT) String() string {
+ return fmt.Sprintf("glPolygonOffsetClampEXT(factor: %v, units: %v, clamp: %v)", ϟa.Factor, ϟa.Units, ϟa.Clamp)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlPolygonOffsetClampEXT pointer is returned so that calls can be chained.
+func (ϟa *GlPolygonOffsetClampEXT) AddRead(rng memory.Range, id id.ID) *GlPolygonOffsetClampEXT {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlPolygonOffsetClampEXT pointer is returned so that calls can be chained.
+func (ϟa *GlPolygonOffsetClampEXT) AddWrite(rng memory.Range, id id.ID) *GlPolygonOffsetClampEXT {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlPolygonOffsetClampEXT) API() gfxapi.API { return API() }
+func (ϟa *GlPolygonOffsetClampEXT) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlPolygonOffsetClampEXT) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlProgramUniform1i64NV
+////////////////////////////////////////////////////////////////////////////////
+type GlProgramUniform1i64NV struct {
+ binary.Generate `display:"glProgramUniform1i64NV"`
+ extras atom.Extras
+ Program GLuint
+ Location GLint
+ X GLint64EXT
+}
+
+func (ϟa *GlProgramUniform1i64NV) String() string {
+ return fmt.Sprintf("glProgramUniform1i64NV(program: %v, location: %v, x: %v)", ϟa.Program, ϟa.Location, ϟa.X)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlProgramUniform1i64NV pointer is returned so that calls can be chained.
+func (ϟa *GlProgramUniform1i64NV) AddRead(rng memory.Range, id id.ID) *GlProgramUniform1i64NV {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlProgramUniform1i64NV pointer is returned so that calls can be chained.
+func (ϟa *GlProgramUniform1i64NV) AddWrite(rng memory.Range, id id.ID) *GlProgramUniform1i64NV {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlProgramUniform1i64NV) API() gfxapi.API { return API() }
+func (ϟa *GlProgramUniform1i64NV) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlProgramUniform1i64NV) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlProgramUniform1i64vNV
+////////////////////////////////////////////////////////////////////////////////
+type GlProgramUniform1i64vNV struct {
+ binary.Generate `display:"glProgramUniform1i64vNV"`
+ extras atom.Extras
+ Program GLuint
+ Location GLint
+ Count GLsizei
+ Value GLint64EXTᶜᵖ
+}
+
+func (ϟa *GlProgramUniform1i64vNV) String() string {
+ return fmt.Sprintf("glProgramUniform1i64vNV(program: %v, location: %v, count: %v, value: %v)", ϟa.Program, ϟa.Location, ϟa.Count, ϟa.Value)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlProgramUniform1i64vNV pointer is returned so that calls can be chained.
+func (ϟa *GlProgramUniform1i64vNV) AddRead(rng memory.Range, id id.ID) *GlProgramUniform1i64vNV {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlProgramUniform1i64vNV pointer is returned so that calls can be chained.
+func (ϟa *GlProgramUniform1i64vNV) AddWrite(rng memory.Range, id id.ID) *GlProgramUniform1i64vNV {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlProgramUniform1i64vNV) API() gfxapi.API { return API() }
+func (ϟa *GlProgramUniform1i64vNV) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlProgramUniform1i64vNV) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlProgramUniform1ui64NV
+////////////////////////////////////////////////////////////////////////////////
+type GlProgramUniform1ui64NV struct {
+ binary.Generate `display:"glProgramUniform1ui64NV"`
+ extras atom.Extras
+ Program GLuint
+ Location GLint
+ X GLuint64EXT
+}
+
+func (ϟa *GlProgramUniform1ui64NV) String() string {
+ return fmt.Sprintf("glProgramUniform1ui64NV(program: %v, location: %v, x: %v)", ϟa.Program, ϟa.Location, ϟa.X)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlProgramUniform1ui64NV pointer is returned so that calls can be chained.
+func (ϟa *GlProgramUniform1ui64NV) AddRead(rng memory.Range, id id.ID) *GlProgramUniform1ui64NV {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlProgramUniform1ui64NV pointer is returned so that calls can be chained.
+func (ϟa *GlProgramUniform1ui64NV) AddWrite(rng memory.Range, id id.ID) *GlProgramUniform1ui64NV {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlProgramUniform1ui64NV) API() gfxapi.API { return API() }
+func (ϟa *GlProgramUniform1ui64NV) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlProgramUniform1ui64NV) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlProgramUniform1ui64vNV
+////////////////////////////////////////////////////////////////////////////////
+type GlProgramUniform1ui64vNV struct {
+ binary.Generate `display:"glProgramUniform1ui64vNV"`
+ extras atom.Extras
+ Program GLuint
+ Location GLint
+ Count GLsizei
+ Value GLuint64EXTᶜᵖ
+}
+
+func (ϟa *GlProgramUniform1ui64vNV) String() string {
+ return fmt.Sprintf("glProgramUniform1ui64vNV(program: %v, location: %v, count: %v, value: %v)", ϟa.Program, ϟa.Location, ϟa.Count, ϟa.Value)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlProgramUniform1ui64vNV pointer is returned so that calls can be chained.
+func (ϟa *GlProgramUniform1ui64vNV) AddRead(rng memory.Range, id id.ID) *GlProgramUniform1ui64vNV {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlProgramUniform1ui64vNV pointer is returned so that calls can be chained.
+func (ϟa *GlProgramUniform1ui64vNV) AddWrite(rng memory.Range, id id.ID) *GlProgramUniform1ui64vNV {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlProgramUniform1ui64vNV) API() gfxapi.API { return API() }
+func (ϟa *GlProgramUniform1ui64vNV) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlProgramUniform1ui64vNV) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlProgramUniform2i64NV
+////////////////////////////////////////////////////////////////////////////////
+type GlProgramUniform2i64NV struct {
+ binary.Generate `display:"glProgramUniform2i64NV"`
+ extras atom.Extras
+ Program GLuint
+ Location GLint
+ X GLint64EXT
+ Y GLint64EXT
+}
+
+func (ϟa *GlProgramUniform2i64NV) String() string {
+ return fmt.Sprintf("glProgramUniform2i64NV(program: %v, location: %v, x: %v, y: %v)", ϟa.Program, ϟa.Location, ϟa.X, ϟa.Y)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlProgramUniform2i64NV pointer is returned so that calls can be chained.
+func (ϟa *GlProgramUniform2i64NV) AddRead(rng memory.Range, id id.ID) *GlProgramUniform2i64NV {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlProgramUniform2i64NV pointer is returned so that calls can be chained.
+func (ϟa *GlProgramUniform2i64NV) AddWrite(rng memory.Range, id id.ID) *GlProgramUniform2i64NV {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlProgramUniform2i64NV) API() gfxapi.API { return API() }
+func (ϟa *GlProgramUniform2i64NV) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlProgramUniform2i64NV) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlProgramUniform2i64vNV
+////////////////////////////////////////////////////////////////////////////////
+type GlProgramUniform2i64vNV struct {
+ binary.Generate `display:"glProgramUniform2i64vNV"`
+ extras atom.Extras
+ Program GLuint
+ Location GLint
+ Count GLsizei
+ Value GLint64EXTᶜᵖ
+}
+
+func (ϟa *GlProgramUniform2i64vNV) String() string {
+ return fmt.Sprintf("glProgramUniform2i64vNV(program: %v, location: %v, count: %v, value: %v)", ϟa.Program, ϟa.Location, ϟa.Count, ϟa.Value)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlProgramUniform2i64vNV pointer is returned so that calls can be chained.
+func (ϟa *GlProgramUniform2i64vNV) AddRead(rng memory.Range, id id.ID) *GlProgramUniform2i64vNV {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlProgramUniform2i64vNV pointer is returned so that calls can be chained.
+func (ϟa *GlProgramUniform2i64vNV) AddWrite(rng memory.Range, id id.ID) *GlProgramUniform2i64vNV {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlProgramUniform2i64vNV) API() gfxapi.API { return API() }
+func (ϟa *GlProgramUniform2i64vNV) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlProgramUniform2i64vNV) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlProgramUniform2ui64NV
+////////////////////////////////////////////////////////////////////////////////
+type GlProgramUniform2ui64NV struct {
+ binary.Generate `display:"glProgramUniform2ui64NV"`
+ extras atom.Extras
+ Program GLuint
+ Location GLint
+ X GLuint64EXT
+ Y GLuint64EXT
+}
+
+func (ϟa *GlProgramUniform2ui64NV) String() string {
+ return fmt.Sprintf("glProgramUniform2ui64NV(program: %v, location: %v, x: %v, y: %v)", ϟa.Program, ϟa.Location, ϟa.X, ϟa.Y)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlProgramUniform2ui64NV pointer is returned so that calls can be chained.
+func (ϟa *GlProgramUniform2ui64NV) AddRead(rng memory.Range, id id.ID) *GlProgramUniform2ui64NV {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlProgramUniform2ui64NV pointer is returned so that calls can be chained.
+func (ϟa *GlProgramUniform2ui64NV) AddWrite(rng memory.Range, id id.ID) *GlProgramUniform2ui64NV {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlProgramUniform2ui64NV) API() gfxapi.API { return API() }
+func (ϟa *GlProgramUniform2ui64NV) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlProgramUniform2ui64NV) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlProgramUniform2ui64vNV
+////////////////////////////////////////////////////////////////////////////////
+type GlProgramUniform2ui64vNV struct {
+ binary.Generate `display:"glProgramUniform2ui64vNV"`
+ extras atom.Extras
+ Program GLuint
+ Location GLint
+ Count GLsizei
+ Value GLuint64EXTᶜᵖ
+}
+
+func (ϟa *GlProgramUniform2ui64vNV) String() string {
+ return fmt.Sprintf("glProgramUniform2ui64vNV(program: %v, location: %v, count: %v, value: %v)", ϟa.Program, ϟa.Location, ϟa.Count, ϟa.Value)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlProgramUniform2ui64vNV pointer is returned so that calls can be chained.
+func (ϟa *GlProgramUniform2ui64vNV) AddRead(rng memory.Range, id id.ID) *GlProgramUniform2ui64vNV {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlProgramUniform2ui64vNV pointer is returned so that calls can be chained.
+func (ϟa *GlProgramUniform2ui64vNV) AddWrite(rng memory.Range, id id.ID) *GlProgramUniform2ui64vNV {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlProgramUniform2ui64vNV) API() gfxapi.API { return API() }
+func (ϟa *GlProgramUniform2ui64vNV) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlProgramUniform2ui64vNV) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlProgramUniform3i64NV
+////////////////////////////////////////////////////////////////////////////////
+type GlProgramUniform3i64NV struct {
+ binary.Generate `display:"glProgramUniform3i64NV"`
+ extras atom.Extras
+ Program GLuint
+ Location GLint
+ X GLint64EXT
+ Y GLint64EXT
+ Z GLint64EXT
+}
+
+func (ϟa *GlProgramUniform3i64NV) String() string {
+ return fmt.Sprintf("glProgramUniform3i64NV(program: %v, location: %v, x: %v, y: %v, z: %v)", ϟa.Program, ϟa.Location, ϟa.X, ϟa.Y, ϟa.Z)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlProgramUniform3i64NV pointer is returned so that calls can be chained.
+func (ϟa *GlProgramUniform3i64NV) AddRead(rng memory.Range, id id.ID) *GlProgramUniform3i64NV {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlProgramUniform3i64NV pointer is returned so that calls can be chained.
+func (ϟa *GlProgramUniform3i64NV) AddWrite(rng memory.Range, id id.ID) *GlProgramUniform3i64NV {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlProgramUniform3i64NV) API() gfxapi.API { return API() }
+func (ϟa *GlProgramUniform3i64NV) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlProgramUniform3i64NV) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlProgramUniform3i64vNV
+////////////////////////////////////////////////////////////////////////////////
+type GlProgramUniform3i64vNV struct {
+ binary.Generate `display:"glProgramUniform3i64vNV"`
+ extras atom.Extras
+ Program GLuint
+ Location GLint
+ Count GLsizei
+ Value GLint64EXTᶜᵖ
+}
+
+func (ϟa *GlProgramUniform3i64vNV) String() string {
+ return fmt.Sprintf("glProgramUniform3i64vNV(program: %v, location: %v, count: %v, value: %v)", ϟa.Program, ϟa.Location, ϟa.Count, ϟa.Value)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlProgramUniform3i64vNV pointer is returned so that calls can be chained.
+func (ϟa *GlProgramUniform3i64vNV) AddRead(rng memory.Range, id id.ID) *GlProgramUniform3i64vNV {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlProgramUniform3i64vNV pointer is returned so that calls can be chained.
+func (ϟa *GlProgramUniform3i64vNV) AddWrite(rng memory.Range, id id.ID) *GlProgramUniform3i64vNV {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlProgramUniform3i64vNV) API() gfxapi.API { return API() }
+func (ϟa *GlProgramUniform3i64vNV) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlProgramUniform3i64vNV) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlProgramUniform3ui64NV
+////////////////////////////////////////////////////////////////////////////////
+type GlProgramUniform3ui64NV struct {
+ binary.Generate `display:"glProgramUniform3ui64NV"`
+ extras atom.Extras
+ Program GLuint
+ Location GLint
+ X GLuint64EXT
+ Y GLuint64EXT
+ Z GLuint64EXT
+}
+
+func (ϟa *GlProgramUniform3ui64NV) String() string {
+ return fmt.Sprintf("glProgramUniform3ui64NV(program: %v, location: %v, x: %v, y: %v, z: %v)", ϟa.Program, ϟa.Location, ϟa.X, ϟa.Y, ϟa.Z)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlProgramUniform3ui64NV pointer is returned so that calls can be chained.
+func (ϟa *GlProgramUniform3ui64NV) AddRead(rng memory.Range, id id.ID) *GlProgramUniform3ui64NV {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlProgramUniform3ui64NV pointer is returned so that calls can be chained.
+func (ϟa *GlProgramUniform3ui64NV) AddWrite(rng memory.Range, id id.ID) *GlProgramUniform3ui64NV {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlProgramUniform3ui64NV) API() gfxapi.API { return API() }
+func (ϟa *GlProgramUniform3ui64NV) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlProgramUniform3ui64NV) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlProgramUniform3ui64vNV
+////////////////////////////////////////////////////////////////////////////////
+type GlProgramUniform3ui64vNV struct {
+ binary.Generate `display:"glProgramUniform3ui64vNV"`
+ extras atom.Extras
+ Program GLuint
+ Location GLint
+ Count GLsizei
+ Value GLuint64EXTᶜᵖ
+}
+
+func (ϟa *GlProgramUniform3ui64vNV) String() string {
+ return fmt.Sprintf("glProgramUniform3ui64vNV(program: %v, location: %v, count: %v, value: %v)", ϟa.Program, ϟa.Location, ϟa.Count, ϟa.Value)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlProgramUniform3ui64vNV pointer is returned so that calls can be chained.
+func (ϟa *GlProgramUniform3ui64vNV) AddRead(rng memory.Range, id id.ID) *GlProgramUniform3ui64vNV {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlProgramUniform3ui64vNV pointer is returned so that calls can be chained.
+func (ϟa *GlProgramUniform3ui64vNV) AddWrite(rng memory.Range, id id.ID) *GlProgramUniform3ui64vNV {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlProgramUniform3ui64vNV) API() gfxapi.API { return API() }
+func (ϟa *GlProgramUniform3ui64vNV) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlProgramUniform3ui64vNV) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlProgramUniform4i64NV
+////////////////////////////////////////////////////////////////////////////////
+type GlProgramUniform4i64NV struct {
+ binary.Generate `display:"glProgramUniform4i64NV"`
+ extras atom.Extras
+ Program GLuint
+ Location GLint
+ X GLint64EXT
+ Y GLint64EXT
+ Z GLint64EXT
+ W GLint64EXT
+}
+
+func (ϟa *GlProgramUniform4i64NV) String() string {
+ return fmt.Sprintf("glProgramUniform4i64NV(program: %v, location: %v, x: %v, y: %v, z: %v, w: %v)", ϟa.Program, ϟa.Location, ϟa.X, ϟa.Y, ϟa.Z, ϟa.W)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlProgramUniform4i64NV pointer is returned so that calls can be chained.
+func (ϟa *GlProgramUniform4i64NV) AddRead(rng memory.Range, id id.ID) *GlProgramUniform4i64NV {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlProgramUniform4i64NV pointer is returned so that calls can be chained.
+func (ϟa *GlProgramUniform4i64NV) AddWrite(rng memory.Range, id id.ID) *GlProgramUniform4i64NV {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlProgramUniform4i64NV) API() gfxapi.API { return API() }
+func (ϟa *GlProgramUniform4i64NV) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlProgramUniform4i64NV) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlProgramUniform4i64vNV
+////////////////////////////////////////////////////////////////////////////////
+type GlProgramUniform4i64vNV struct {
+ binary.Generate `display:"glProgramUniform4i64vNV"`
+ extras atom.Extras
+ Program GLuint
+ Location GLint
+ Count GLsizei
+ Value GLint64EXTᶜᵖ
+}
+
+func (ϟa *GlProgramUniform4i64vNV) String() string {
+ return fmt.Sprintf("glProgramUniform4i64vNV(program: %v, location: %v, count: %v, value: %v)", ϟa.Program, ϟa.Location, ϟa.Count, ϟa.Value)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlProgramUniform4i64vNV pointer is returned so that calls can be chained.
+func (ϟa *GlProgramUniform4i64vNV) AddRead(rng memory.Range, id id.ID) *GlProgramUniform4i64vNV {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlProgramUniform4i64vNV pointer is returned so that calls can be chained.
+func (ϟa *GlProgramUniform4i64vNV) AddWrite(rng memory.Range, id id.ID) *GlProgramUniform4i64vNV {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlProgramUniform4i64vNV) API() gfxapi.API { return API() }
+func (ϟa *GlProgramUniform4i64vNV) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlProgramUniform4i64vNV) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlProgramUniform4ui64NV
+////////////////////////////////////////////////////////////////////////////////
+type GlProgramUniform4ui64NV struct {
+ binary.Generate `display:"glProgramUniform4ui64NV"`
+ extras atom.Extras
+ Program GLuint
+ Location GLint
+ X GLuint64EXT
+ Y GLuint64EXT
+ Z GLuint64EXT
+ W GLuint64EXT
+}
+
+func (ϟa *GlProgramUniform4ui64NV) String() string {
+ return fmt.Sprintf("glProgramUniform4ui64NV(program: %v, location: %v, x: %v, y: %v, z: %v, w: %v)", ϟa.Program, ϟa.Location, ϟa.X, ϟa.Y, ϟa.Z, ϟa.W)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlProgramUniform4ui64NV pointer is returned so that calls can be chained.
+func (ϟa *GlProgramUniform4ui64NV) AddRead(rng memory.Range, id id.ID) *GlProgramUniform4ui64NV {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlProgramUniform4ui64NV pointer is returned so that calls can be chained.
+func (ϟa *GlProgramUniform4ui64NV) AddWrite(rng memory.Range, id id.ID) *GlProgramUniform4ui64NV {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlProgramUniform4ui64NV) API() gfxapi.API { return API() }
+func (ϟa *GlProgramUniform4ui64NV) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlProgramUniform4ui64NV) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlProgramUniform4ui64vNV
+////////////////////////////////////////////////////////////////////////////////
+type GlProgramUniform4ui64vNV struct {
+ binary.Generate `display:"glProgramUniform4ui64vNV"`
+ extras atom.Extras
+ Program GLuint
+ Location GLint
+ Count GLsizei
+ Value GLuint64EXTᶜᵖ
+}
+
+func (ϟa *GlProgramUniform4ui64vNV) String() string {
+ return fmt.Sprintf("glProgramUniform4ui64vNV(program: %v, location: %v, count: %v, value: %v)", ϟa.Program, ϟa.Location, ϟa.Count, ϟa.Value)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlProgramUniform4ui64vNV pointer is returned so that calls can be chained.
+func (ϟa *GlProgramUniform4ui64vNV) AddRead(rng memory.Range, id id.ID) *GlProgramUniform4ui64vNV {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlProgramUniform4ui64vNV pointer is returned so that calls can be chained.
+func (ϟa *GlProgramUniform4ui64vNV) AddWrite(rng memory.Range, id id.ID) *GlProgramUniform4ui64vNV {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlProgramUniform4ui64vNV) API() gfxapi.API { return API() }
+func (ϟa *GlProgramUniform4ui64vNV) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlProgramUniform4ui64vNV) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlProgramUniformHandleui64IMG
+////////////////////////////////////////////////////////////////////////////////
+type GlProgramUniformHandleui64IMG struct {
+ binary.Generate `display:"glProgramUniformHandleui64IMG"`
+ extras atom.Extras
+ Program GLuint
+ Location GLint
+ Value GLuint64
+}
+
+func (ϟa *GlProgramUniformHandleui64IMG) String() string {
+ return fmt.Sprintf("glProgramUniformHandleui64IMG(program: %v, location: %v, value: %v)", ϟa.Program, ϟa.Location, ϟa.Value)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlProgramUniformHandleui64IMG pointer is returned so that calls can be chained.
+func (ϟa *GlProgramUniformHandleui64IMG) AddRead(rng memory.Range, id id.ID) *GlProgramUniformHandleui64IMG {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlProgramUniformHandleui64IMG pointer is returned so that calls can be chained.
+func (ϟa *GlProgramUniformHandleui64IMG) AddWrite(rng memory.Range, id id.ID) *GlProgramUniformHandleui64IMG {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlProgramUniformHandleui64IMG) API() gfxapi.API { return API() }
+func (ϟa *GlProgramUniformHandleui64IMG) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlProgramUniformHandleui64IMG) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlProgramUniformHandleui64vIMG
+////////////////////////////////////////////////////////////////////////////////
+type GlProgramUniformHandleui64vIMG struct {
+ binary.Generate `display:"glProgramUniformHandleui64vIMG"`
+ extras atom.Extras
+ Program GLuint
+ Location GLint
+ Count GLsizei
+ Values GLuint64ᶜᵖ
+}
+
+func (ϟa *GlProgramUniformHandleui64vIMG) String() string {
+ return fmt.Sprintf("glProgramUniformHandleui64vIMG(program: %v, location: %v, count: %v, values: %v)", ϟa.Program, ϟa.Location, ϟa.Count, ϟa.Values)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlProgramUniformHandleui64vIMG pointer is returned so that calls can be chained.
+func (ϟa *GlProgramUniformHandleui64vIMG) AddRead(rng memory.Range, id id.ID) *GlProgramUniformHandleui64vIMG {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlProgramUniformHandleui64vIMG pointer is returned so that calls can be chained.
+func (ϟa *GlProgramUniformHandleui64vIMG) AddWrite(rng memory.Range, id id.ID) *GlProgramUniformHandleui64vIMG {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlProgramUniformHandleui64vIMG) API() gfxapi.API { return API() }
+func (ϟa *GlProgramUniformHandleui64vIMG) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlProgramUniformHandleui64vIMG) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlScissorArrayvOES
+////////////////////////////////////////////////////////////////////////////////
+type GlScissorArrayvOES struct {
+ binary.Generate `display:"glScissorArrayvOES"`
+ extras atom.Extras
+ First GLuint
+ Count GLsizei
+ V GLintᶜᵖ
+}
+
+func (ϟa *GlScissorArrayvOES) String() string {
+ return fmt.Sprintf("glScissorArrayvOES(first: %v, count: %v, v: %v)", ϟa.First, ϟa.Count, ϟa.V)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlScissorArrayvOES pointer is returned so that calls can be chained.
+func (ϟa *GlScissorArrayvOES) AddRead(rng memory.Range, id id.ID) *GlScissorArrayvOES {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlScissorArrayvOES pointer is returned so that calls can be chained.
+func (ϟa *GlScissorArrayvOES) AddWrite(rng memory.Range, id id.ID) *GlScissorArrayvOES {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlScissorArrayvOES) API() gfxapi.API { return API() }
+func (ϟa *GlScissorArrayvOES) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlScissorArrayvOES) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlScissorIndexedOES
+////////////////////////////////////////////////////////////////////////////////
+type GlScissorIndexedOES struct {
+ binary.Generate `display:"glScissorIndexedOES"`
+ extras atom.Extras
+ Index GLuint
+ Left GLint
+ Bottom GLint
+ Width GLsizei
+ Height GLsizei
+}
+
+func (ϟa *GlScissorIndexedOES) String() string {
+ return fmt.Sprintf("glScissorIndexedOES(index: %v, left: %v, bottom: %v, width: %v, height: %v)", ϟa.Index, ϟa.Left, ϟa.Bottom, ϟa.Width, ϟa.Height)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlScissorIndexedOES pointer is returned so that calls can be chained.
+func (ϟa *GlScissorIndexedOES) AddRead(rng memory.Range, id id.ID) *GlScissorIndexedOES {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlScissorIndexedOES pointer is returned so that calls can be chained.
+func (ϟa *GlScissorIndexedOES) AddWrite(rng memory.Range, id id.ID) *GlScissorIndexedOES {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlScissorIndexedOES) API() gfxapi.API { return API() }
+func (ϟa *GlScissorIndexedOES) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlScissorIndexedOES) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlScissorIndexedvOES
+////////////////////////////////////////////////////////////////////////////////
+type GlScissorIndexedvOES struct {
+ binary.Generate `display:"glScissorIndexedvOES"`
+ extras atom.Extras
+ Index GLuint
+ V GLintᶜᵖ
+}
+
+func (ϟa *GlScissorIndexedvOES) String() string {
+ return fmt.Sprintf("glScissorIndexedvOES(index: %v, v: %v)", ϟa.Index, ϟa.V)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlScissorIndexedvOES pointer is returned so that calls can be chained.
+func (ϟa *GlScissorIndexedvOES) AddRead(rng memory.Range, id id.ID) *GlScissorIndexedvOES {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlScissorIndexedvOES pointer is returned so that calls can be chained.
+func (ϟa *GlScissorIndexedvOES) AddWrite(rng memory.Range, id id.ID) *GlScissorIndexedvOES {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlScissorIndexedvOES) API() gfxapi.API { return API() }
+func (ϟa *GlScissorIndexedvOES) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlScissorIndexedvOES) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlUniform1i64NV
+////////////////////////////////////////////////////////////////////////////////
+type GlUniform1i64NV struct {
+ binary.Generate `display:"glUniform1i64NV"`
+ extras atom.Extras
+ Location GLint
+ X GLint64EXT
+}
+
+func (ϟa *GlUniform1i64NV) String() string {
+ return fmt.Sprintf("glUniform1i64NV(location: %v, x: %v)", ϟa.Location, ϟa.X)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlUniform1i64NV pointer is returned so that calls can be chained.
+func (ϟa *GlUniform1i64NV) AddRead(rng memory.Range, id id.ID) *GlUniform1i64NV {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlUniform1i64NV pointer is returned so that calls can be chained.
+func (ϟa *GlUniform1i64NV) AddWrite(rng memory.Range, id id.ID) *GlUniform1i64NV {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlUniform1i64NV) API() gfxapi.API { return API() }
+func (ϟa *GlUniform1i64NV) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlUniform1i64NV) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlUniform1i64vNV
+////////////////////////////////////////////////////////////////////////////////
+type GlUniform1i64vNV struct {
+ binary.Generate `display:"glUniform1i64vNV"`
+ extras atom.Extras
+ Location GLint
+ Count GLsizei
+ Value GLint64EXTᶜᵖ
+}
+
+func (ϟa *GlUniform1i64vNV) String() string {
+ return fmt.Sprintf("glUniform1i64vNV(location: %v, count: %v, value: %v)", ϟa.Location, ϟa.Count, ϟa.Value)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlUniform1i64vNV pointer is returned so that calls can be chained.
+func (ϟa *GlUniform1i64vNV) AddRead(rng memory.Range, id id.ID) *GlUniform1i64vNV {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlUniform1i64vNV pointer is returned so that calls can be chained.
+func (ϟa *GlUniform1i64vNV) AddWrite(rng memory.Range, id id.ID) *GlUniform1i64vNV {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlUniform1i64vNV) API() gfxapi.API { return API() }
+func (ϟa *GlUniform1i64vNV) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlUniform1i64vNV) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlUniform1ui64NV
+////////////////////////////////////////////////////////////////////////////////
+type GlUniform1ui64NV struct {
+ binary.Generate `display:"glUniform1ui64NV"`
+ extras atom.Extras
+ Location GLint
+ X GLuint64EXT
+}
+
+func (ϟa *GlUniform1ui64NV) String() string {
+ return fmt.Sprintf("glUniform1ui64NV(location: %v, x: %v)", ϟa.Location, ϟa.X)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlUniform1ui64NV pointer is returned so that calls can be chained.
+func (ϟa *GlUniform1ui64NV) AddRead(rng memory.Range, id id.ID) *GlUniform1ui64NV {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlUniform1ui64NV pointer is returned so that calls can be chained.
+func (ϟa *GlUniform1ui64NV) AddWrite(rng memory.Range, id id.ID) *GlUniform1ui64NV {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlUniform1ui64NV) API() gfxapi.API { return API() }
+func (ϟa *GlUniform1ui64NV) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlUniform1ui64NV) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlUniform1ui64vNV
+////////////////////////////////////////////////////////////////////////////////
+type GlUniform1ui64vNV struct {
+ binary.Generate `display:"glUniform1ui64vNV"`
+ extras atom.Extras
+ Location GLint
+ Count GLsizei
+ Value GLuint64EXTᶜᵖ
+}
+
+func (ϟa *GlUniform1ui64vNV) String() string {
+ return fmt.Sprintf("glUniform1ui64vNV(location: %v, count: %v, value: %v)", ϟa.Location, ϟa.Count, ϟa.Value)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlUniform1ui64vNV pointer is returned so that calls can be chained.
+func (ϟa *GlUniform1ui64vNV) AddRead(rng memory.Range, id id.ID) *GlUniform1ui64vNV {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlUniform1ui64vNV pointer is returned so that calls can be chained.
+func (ϟa *GlUniform1ui64vNV) AddWrite(rng memory.Range, id id.ID) *GlUniform1ui64vNV {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlUniform1ui64vNV) API() gfxapi.API { return API() }
+func (ϟa *GlUniform1ui64vNV) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlUniform1ui64vNV) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlUniform2i64NV
+////////////////////////////////////////////////////////////////////////////////
+type GlUniform2i64NV struct {
+ binary.Generate `display:"glUniform2i64NV"`
+ extras atom.Extras
+ Location GLint
+ X GLint64EXT
+ Y GLint64EXT
+}
+
+func (ϟa *GlUniform2i64NV) String() string {
+ return fmt.Sprintf("glUniform2i64NV(location: %v, x: %v, y: %v)", ϟa.Location, ϟa.X, ϟa.Y)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlUniform2i64NV pointer is returned so that calls can be chained.
+func (ϟa *GlUniform2i64NV) AddRead(rng memory.Range, id id.ID) *GlUniform2i64NV {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlUniform2i64NV pointer is returned so that calls can be chained.
+func (ϟa *GlUniform2i64NV) AddWrite(rng memory.Range, id id.ID) *GlUniform2i64NV {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlUniform2i64NV) API() gfxapi.API { return API() }
+func (ϟa *GlUniform2i64NV) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlUniform2i64NV) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlUniform2i64vNV
+////////////////////////////////////////////////////////////////////////////////
+type GlUniform2i64vNV struct {
+ binary.Generate `display:"glUniform2i64vNV"`
+ extras atom.Extras
+ Location GLint
+ Count GLsizei
+ Value GLint64EXTᶜᵖ
+}
+
+func (ϟa *GlUniform2i64vNV) String() string {
+ return fmt.Sprintf("glUniform2i64vNV(location: %v, count: %v, value: %v)", ϟa.Location, ϟa.Count, ϟa.Value)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlUniform2i64vNV pointer is returned so that calls can be chained.
+func (ϟa *GlUniform2i64vNV) AddRead(rng memory.Range, id id.ID) *GlUniform2i64vNV {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlUniform2i64vNV pointer is returned so that calls can be chained.
+func (ϟa *GlUniform2i64vNV) AddWrite(rng memory.Range, id id.ID) *GlUniform2i64vNV {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlUniform2i64vNV) API() gfxapi.API { return API() }
+func (ϟa *GlUniform2i64vNV) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlUniform2i64vNV) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlUniform2ui64NV
+////////////////////////////////////////////////////////////////////////////////
+type GlUniform2ui64NV struct {
+ binary.Generate `display:"glUniform2ui64NV"`
+ extras atom.Extras
+ Location GLint
+ X GLuint64EXT
+ Y GLuint64EXT
+}
+
+func (ϟa *GlUniform2ui64NV) String() string {
+ return fmt.Sprintf("glUniform2ui64NV(location: %v, x: %v, y: %v)", ϟa.Location, ϟa.X, ϟa.Y)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlUniform2ui64NV pointer is returned so that calls can be chained.
+func (ϟa *GlUniform2ui64NV) AddRead(rng memory.Range, id id.ID) *GlUniform2ui64NV {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlUniform2ui64NV pointer is returned so that calls can be chained.
+func (ϟa *GlUniform2ui64NV) AddWrite(rng memory.Range, id id.ID) *GlUniform2ui64NV {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlUniform2ui64NV) API() gfxapi.API { return API() }
+func (ϟa *GlUniform2ui64NV) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlUniform2ui64NV) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlUniform2ui64vNV
+////////////////////////////////////////////////////////////////////////////////
+type GlUniform2ui64vNV struct {
+ binary.Generate `display:"glUniform2ui64vNV"`
+ extras atom.Extras
+ Location GLint
+ Count GLsizei
+ Value GLuint64EXTᶜᵖ
+}
+
+func (ϟa *GlUniform2ui64vNV) String() string {
+ return fmt.Sprintf("glUniform2ui64vNV(location: %v, count: %v, value: %v)", ϟa.Location, ϟa.Count, ϟa.Value)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlUniform2ui64vNV pointer is returned so that calls can be chained.
+func (ϟa *GlUniform2ui64vNV) AddRead(rng memory.Range, id id.ID) *GlUniform2ui64vNV {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlUniform2ui64vNV pointer is returned so that calls can be chained.
+func (ϟa *GlUniform2ui64vNV) AddWrite(rng memory.Range, id id.ID) *GlUniform2ui64vNV {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlUniform2ui64vNV) API() gfxapi.API { return API() }
+func (ϟa *GlUniform2ui64vNV) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlUniform2ui64vNV) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlUniform3i64NV
+////////////////////////////////////////////////////////////////////////////////
+type GlUniform3i64NV struct {
+ binary.Generate `display:"glUniform3i64NV"`
+ extras atom.Extras
+ Location GLint
+ X GLint64EXT
+ Y GLint64EXT
+ Z GLint64EXT
+}
+
+func (ϟa *GlUniform3i64NV) String() string {
+ return fmt.Sprintf("glUniform3i64NV(location: %v, x: %v, y: %v, z: %v)", ϟa.Location, ϟa.X, ϟa.Y, ϟa.Z)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlUniform3i64NV pointer is returned so that calls can be chained.
+func (ϟa *GlUniform3i64NV) AddRead(rng memory.Range, id id.ID) *GlUniform3i64NV {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlUniform3i64NV pointer is returned so that calls can be chained.
+func (ϟa *GlUniform3i64NV) AddWrite(rng memory.Range, id id.ID) *GlUniform3i64NV {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlUniform3i64NV) API() gfxapi.API { return API() }
+func (ϟa *GlUniform3i64NV) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlUniform3i64NV) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlUniform3i64vNV
+////////////////////////////////////////////////////////////////////////////////
+type GlUniform3i64vNV struct {
+ binary.Generate `display:"glUniform3i64vNV"`
+ extras atom.Extras
+ Location GLint
+ Count GLsizei
+ Value GLint64EXTᶜᵖ
+}
+
+func (ϟa *GlUniform3i64vNV) String() string {
+ return fmt.Sprintf("glUniform3i64vNV(location: %v, count: %v, value: %v)", ϟa.Location, ϟa.Count, ϟa.Value)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlUniform3i64vNV pointer is returned so that calls can be chained.
+func (ϟa *GlUniform3i64vNV) AddRead(rng memory.Range, id id.ID) *GlUniform3i64vNV {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlUniform3i64vNV pointer is returned so that calls can be chained.
+func (ϟa *GlUniform3i64vNV) AddWrite(rng memory.Range, id id.ID) *GlUniform3i64vNV {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlUniform3i64vNV) API() gfxapi.API { return API() }
+func (ϟa *GlUniform3i64vNV) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlUniform3i64vNV) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlUniform3ui64NV
+////////////////////////////////////////////////////////////////////////////////
+type GlUniform3ui64NV struct {
+ binary.Generate `display:"glUniform3ui64NV"`
+ extras atom.Extras
+ Location GLint
+ X GLuint64EXT
+ Y GLuint64EXT
+ Z GLuint64EXT
+}
+
+func (ϟa *GlUniform3ui64NV) String() string {
+ return fmt.Sprintf("glUniform3ui64NV(location: %v, x: %v, y: %v, z: %v)", ϟa.Location, ϟa.X, ϟa.Y, ϟa.Z)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlUniform3ui64NV pointer is returned so that calls can be chained.
+func (ϟa *GlUniform3ui64NV) AddRead(rng memory.Range, id id.ID) *GlUniform3ui64NV {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlUniform3ui64NV pointer is returned so that calls can be chained.
+func (ϟa *GlUniform3ui64NV) AddWrite(rng memory.Range, id id.ID) *GlUniform3ui64NV {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlUniform3ui64NV) API() gfxapi.API { return API() }
+func (ϟa *GlUniform3ui64NV) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlUniform3ui64NV) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlUniform3ui64vNV
+////////////////////////////////////////////////////////////////////////////////
+type GlUniform3ui64vNV struct {
+ binary.Generate `display:"glUniform3ui64vNV"`
+ extras atom.Extras
+ Location GLint
+ Count GLsizei
+ Value GLuint64EXTᶜᵖ
+}
+
+func (ϟa *GlUniform3ui64vNV) String() string {
+ return fmt.Sprintf("glUniform3ui64vNV(location: %v, count: %v, value: %v)", ϟa.Location, ϟa.Count, ϟa.Value)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlUniform3ui64vNV pointer is returned so that calls can be chained.
+func (ϟa *GlUniform3ui64vNV) AddRead(rng memory.Range, id id.ID) *GlUniform3ui64vNV {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlUniform3ui64vNV pointer is returned so that calls can be chained.
+func (ϟa *GlUniform3ui64vNV) AddWrite(rng memory.Range, id id.ID) *GlUniform3ui64vNV {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlUniform3ui64vNV) API() gfxapi.API { return API() }
+func (ϟa *GlUniform3ui64vNV) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlUniform3ui64vNV) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlUniform4i64NV
+////////////////////////////////////////////////////////////////////////////////
+type GlUniform4i64NV struct {
+ binary.Generate `display:"glUniform4i64NV"`
+ extras atom.Extras
+ Location GLint
+ X GLint64EXT
+ Y GLint64EXT
+ Z GLint64EXT
+ W GLint64EXT
+}
+
+func (ϟa *GlUniform4i64NV) String() string {
+ return fmt.Sprintf("glUniform4i64NV(location: %v, x: %v, y: %v, z: %v, w: %v)", ϟa.Location, ϟa.X, ϟa.Y, ϟa.Z, ϟa.W)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlUniform4i64NV pointer is returned so that calls can be chained.
+func (ϟa *GlUniform4i64NV) AddRead(rng memory.Range, id id.ID) *GlUniform4i64NV {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlUniform4i64NV pointer is returned so that calls can be chained.
+func (ϟa *GlUniform4i64NV) AddWrite(rng memory.Range, id id.ID) *GlUniform4i64NV {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlUniform4i64NV) API() gfxapi.API { return API() }
+func (ϟa *GlUniform4i64NV) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlUniform4i64NV) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlUniform4i64vNV
+////////////////////////////////////////////////////////////////////////////////
+type GlUniform4i64vNV struct {
+ binary.Generate `display:"glUniform4i64vNV"`
+ extras atom.Extras
+ Location GLint
+ Count GLsizei
+ Value GLint64EXTᶜᵖ
+}
+
+func (ϟa *GlUniform4i64vNV) String() string {
+ return fmt.Sprintf("glUniform4i64vNV(location: %v, count: %v, value: %v)", ϟa.Location, ϟa.Count, ϟa.Value)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlUniform4i64vNV pointer is returned so that calls can be chained.
+func (ϟa *GlUniform4i64vNV) AddRead(rng memory.Range, id id.ID) *GlUniform4i64vNV {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlUniform4i64vNV pointer is returned so that calls can be chained.
+func (ϟa *GlUniform4i64vNV) AddWrite(rng memory.Range, id id.ID) *GlUniform4i64vNV {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlUniform4i64vNV) API() gfxapi.API { return API() }
+func (ϟa *GlUniform4i64vNV) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlUniform4i64vNV) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlUniform4ui64NV
+////////////////////////////////////////////////////////////////////////////////
+type GlUniform4ui64NV struct {
+ binary.Generate `display:"glUniform4ui64NV"`
+ extras atom.Extras
+ Location GLint
+ X GLuint64EXT
+ Y GLuint64EXT
+ Z GLuint64EXT
+ W GLuint64EXT
+}
+
+func (ϟa *GlUniform4ui64NV) String() string {
+ return fmt.Sprintf("glUniform4ui64NV(location: %v, x: %v, y: %v, z: %v, w: %v)", ϟa.Location, ϟa.X, ϟa.Y, ϟa.Z, ϟa.W)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlUniform4ui64NV pointer is returned so that calls can be chained.
+func (ϟa *GlUniform4ui64NV) AddRead(rng memory.Range, id id.ID) *GlUniform4ui64NV {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlUniform4ui64NV pointer is returned so that calls can be chained.
+func (ϟa *GlUniform4ui64NV) AddWrite(rng memory.Range, id id.ID) *GlUniform4ui64NV {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlUniform4ui64NV) API() gfxapi.API { return API() }
+func (ϟa *GlUniform4ui64NV) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlUniform4ui64NV) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlUniform4ui64vNV
+////////////////////////////////////////////////////////////////////////////////
+type GlUniform4ui64vNV struct {
+ binary.Generate `display:"glUniform4ui64vNV"`
+ extras atom.Extras
+ Location GLint
+ Count GLsizei
+ Value GLuint64EXTᶜᵖ
+}
+
+func (ϟa *GlUniform4ui64vNV) String() string {
+ return fmt.Sprintf("glUniform4ui64vNV(location: %v, count: %v, value: %v)", ϟa.Location, ϟa.Count, ϟa.Value)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlUniform4ui64vNV pointer is returned so that calls can be chained.
+func (ϟa *GlUniform4ui64vNV) AddRead(rng memory.Range, id id.ID) *GlUniform4ui64vNV {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlUniform4ui64vNV pointer is returned so that calls can be chained.
+func (ϟa *GlUniform4ui64vNV) AddWrite(rng memory.Range, id id.ID) *GlUniform4ui64vNV {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlUniform4ui64vNV) API() gfxapi.API { return API() }
+func (ϟa *GlUniform4ui64vNV) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlUniform4ui64vNV) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlUniformHandleui64IMG
+////////////////////////////////////////////////////////////////////////////////
+type GlUniformHandleui64IMG struct {
+ binary.Generate `display:"glUniformHandleui64IMG"`
+ extras atom.Extras
+ Location GLint
+ Value GLuint64
+}
+
+func (ϟa *GlUniformHandleui64IMG) String() string {
+ return fmt.Sprintf("glUniformHandleui64IMG(location: %v, value: %v)", ϟa.Location, ϟa.Value)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlUniformHandleui64IMG pointer is returned so that calls can be chained.
+func (ϟa *GlUniformHandleui64IMG) AddRead(rng memory.Range, id id.ID) *GlUniformHandleui64IMG {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlUniformHandleui64IMG pointer is returned so that calls can be chained.
+func (ϟa *GlUniformHandleui64IMG) AddWrite(rng memory.Range, id id.ID) *GlUniformHandleui64IMG {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlUniformHandleui64IMG) API() gfxapi.API { return API() }
+func (ϟa *GlUniformHandleui64IMG) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlUniformHandleui64IMG) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlUniformHandleui64vIMG
+////////////////////////////////////////////////////////////////////////////////
+type GlUniformHandleui64vIMG struct {
+ binary.Generate `display:"glUniformHandleui64vIMG"`
+ extras atom.Extras
+ Location GLint
+ Count GLsizei
+ Value GLuint64ᶜᵖ
+}
+
+func (ϟa *GlUniformHandleui64vIMG) String() string {
+ return fmt.Sprintf("glUniformHandleui64vIMG(location: %v, count: %v, value: %v)", ϟa.Location, ϟa.Count, ϟa.Value)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlUniformHandleui64vIMG pointer is returned so that calls can be chained.
+func (ϟa *GlUniformHandleui64vIMG) AddRead(rng memory.Range, id id.ID) *GlUniformHandleui64vIMG {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlUniformHandleui64vIMG pointer is returned so that calls can be chained.
+func (ϟa *GlUniformHandleui64vIMG) AddWrite(rng memory.Range, id id.ID) *GlUniformHandleui64vIMG {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlUniformHandleui64vIMG) API() gfxapi.API { return API() }
+func (ϟa *GlUniformHandleui64vIMG) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlUniformHandleui64vIMG) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlViewportArrayvOES
+////////////////////////////////////////////////////////////////////////////////
+type GlViewportArrayvOES struct {
+ binary.Generate `display:"glViewportArrayvOES"`
+ extras atom.Extras
+ First GLuint
+ Count GLsizei
+ V GLfloatᶜᵖ
+}
+
+func (ϟa *GlViewportArrayvOES) String() string {
+ return fmt.Sprintf("glViewportArrayvOES(first: %v, count: %v, v: %v)", ϟa.First, ϟa.Count, ϟa.V)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlViewportArrayvOES pointer is returned so that calls can be chained.
+func (ϟa *GlViewportArrayvOES) AddRead(rng memory.Range, id id.ID) *GlViewportArrayvOES {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlViewportArrayvOES pointer is returned so that calls can be chained.
+func (ϟa *GlViewportArrayvOES) AddWrite(rng memory.Range, id id.ID) *GlViewportArrayvOES {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlViewportArrayvOES) API() gfxapi.API { return API() }
+func (ϟa *GlViewportArrayvOES) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlViewportArrayvOES) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlViewportIndexedfOES
+////////////////////////////////////////////////////////////////////////////////
+type GlViewportIndexedfOES struct {
+ binary.Generate `display:"glViewportIndexedfOES"`
+ extras atom.Extras
+ Index GLuint
+ X GLfloat
+ Y GLfloat
+ W GLfloat
+ H GLfloat
+}
+
+func (ϟa *GlViewportIndexedfOES) String() string {
+ return fmt.Sprintf("glViewportIndexedfOES(index: %v, x: %v, y: %v, w: %v, h: %v)", ϟa.Index, ϟa.X, ϟa.Y, ϟa.W, ϟa.H)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlViewportIndexedfOES pointer is returned so that calls can be chained.
+func (ϟa *GlViewportIndexedfOES) AddRead(rng memory.Range, id id.ID) *GlViewportIndexedfOES {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlViewportIndexedfOES pointer is returned so that calls can be chained.
+func (ϟa *GlViewportIndexedfOES) AddWrite(rng memory.Range, id id.ID) *GlViewportIndexedfOES {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlViewportIndexedfOES) API() gfxapi.API { return API() }
+func (ϟa *GlViewportIndexedfOES) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlViewportIndexedfOES) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlViewportIndexedfvOES
+////////////////////////////////////////////////////////////////////////////////
+type GlViewportIndexedfvOES struct {
+ binary.Generate `display:"glViewportIndexedfvOES"`
+ extras atom.Extras
+ Index GLuint
+ V GLfloatᶜᵖ
+}
+
+func (ϟa *GlViewportIndexedfvOES) String() string {
+ return fmt.Sprintf("glViewportIndexedfvOES(index: %v, v: %v)", ϟa.Index, ϟa.V)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlViewportIndexedfvOES pointer is returned so that calls can be chained.
+func (ϟa *GlViewportIndexedfvOES) AddRead(rng memory.Range, id id.ID) *GlViewportIndexedfvOES {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlViewportIndexedfvOES pointer is returned so that calls can be chained.
+func (ϟa *GlViewportIndexedfvOES) AddWrite(rng memory.Range, id id.ID) *GlViewportIndexedfvOES {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlViewportIndexedfvOES) API() gfxapi.API { return API() }
+func (ϟa *GlViewportIndexedfvOES) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlViewportIndexedfvOES) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlViewportSwizzleNV
+////////////////////////////////////////////////////////////////////////////////
+type GlViewportSwizzleNV struct {
+ binary.Generate `display:"glViewportSwizzleNV"`
+ extras atom.Extras
+ Index GLuint
+ Swizzlex GLenum
+ Swizzley GLenum
+ Swizzlez GLenum
+ Swizzlew GLenum
+}
+
+func (ϟa *GlViewportSwizzleNV) String() string {
+ return fmt.Sprintf("glViewportSwizzleNV(index: %v, swizzlex: %v, swizzley: %v, swizzlez: %v, swizzlew: %v)", ϟa.Index, ϟa.Swizzlex, ϟa.Swizzley, ϟa.Swizzlez, ϟa.Swizzlew)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlViewportSwizzleNV pointer is returned so that calls can be chained.
+func (ϟa *GlViewportSwizzleNV) AddRead(rng memory.Range, id id.ID) *GlViewportSwizzleNV {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlViewportSwizzleNV pointer is returned so that calls can be chained.
+func (ϟa *GlViewportSwizzleNV) AddWrite(rng memory.Range, id id.ID) *GlViewportSwizzleNV {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlViewportSwizzleNV) API() gfxapi.API { return API() }
+func (ϟa *GlViewportSwizzleNV) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlViewportSwizzleNV) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
+// GlWindowRectanglesEXT
+////////////////////////////////////////////////////////////////////////////////
+type GlWindowRectanglesEXT struct {
+ binary.Generate `display:"glWindowRectanglesEXT"`
+ extras atom.Extras
+ Mode GLenum
+ Count GLsizei
+ Box GLintᶜᵖ
+}
+
+func (ϟa *GlWindowRectanglesEXT) String() string {
+ return fmt.Sprintf("glWindowRectanglesEXT(mode: %v, count: %v, box: %v)", ϟa.Mode, ϟa.Count, ϟa.Box)
+}
+
+// AddRead appends a new read observation to the atom of the range rng with
+// the data id.
+// The GlWindowRectanglesEXT pointer is returned so that calls can be chained.
+func (ϟa *GlWindowRectanglesEXT) AddRead(rng memory.Range, id id.ID) *GlWindowRectanglesEXT {
+ ϟa.extras.GetOrAppendObservations().AddRead(rng, id)
+ return ϟa
+}
+
+// AddWrite appends a new write observation to the atom of the range rng with
+// the data id.
+// The GlWindowRectanglesEXT pointer is returned so that calls can be chained.
+func (ϟa *GlWindowRectanglesEXT) AddWrite(rng memory.Range, id id.ID) *GlWindowRectanglesEXT {
+ ϟa.extras.GetOrAppendObservations().AddWrite(rng, id)
+ return ϟa
+}
+func (ϟa *GlWindowRectanglesEXT) API() gfxapi.API { return API() }
+func (ϟa *GlWindowRectanglesEXT) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlWindowRectanglesEXT) Extras() *atom.Extras { return &ϟa.extras }
+
+////////////////////////////////////////////////////////////////////////////////
// GlBlendBarrier
////////////////////////////////////////////////////////////////////////////////
type GlBlendBarrier struct {
@@ -36472,7 +39519,7 @@
return ϟa
}
func (ϟa *GlFlush) API() gfxapi.API { return API() }
-func (ϟa *GlFlush) AtomFlags() atom.Flags { return 0 }
+func (ϟa *GlFlush) AtomFlags() atom.Flags { return 0 | atom.EndOfFrame }
func (ϟa *GlFlush) Extras() *atom.Extras { return &ϟa.extras }
////////////////////////////////////////////////////////////////////////////////
@@ -52071,6 +55118,18 @@
func (ϟa *FlushPostBuffer) Extras() *atom.Extras { return &ϟa.extras }
////////////////////////////////////////////////////////////////////////////////
+// class AndroidNativeBufferExtra
+////////////////////////////////////////////////////////////////////////////////
+type AndroidNativeBufferExtra struct {
+ binary.Generate
+ Width uint32
+ Height uint32
+ Stride uint32
+ Format AndroidGraphicsBufferFormat
+ Usage AndroidGraphicsBufferUsage
+}
+
+////////////////////////////////////////////////////////////////////////////////
// class Query
////////////////////////////////////////////////////////////////////////////////
type Query struct {
@@ -52679,6 +55738,7 @@
ImmutableLevels GLuint
Label string
MaxAnisotropy GLfloat
+ EGLImage GLeglImageOES
}
// OnCreate should be called immediately after the Texture resource is created.
@@ -52734,6 +55794,7 @@
CompareMode GLenum
CompareFunc GLenum
Label string
+ MaxAnisotropy GLfloat
}
////////////////////////////////////////////////////////////////////////////////
@@ -55399,6 +58460,7 @@
type State struct {
binary.Generate `globals:"State" cpp:"disable"`
EGLContexts EGLContextːContextʳᵐ
+ EGLImages EGLImageKHRːAndroidNativeBufferExtraʳᵐ
NextContextID ContextID
CurrentThread ThreadID
Contexts ThreadIDːContextʳᵐ
@@ -55409,6 +58471,7 @@
func (g *State) Init() {
g.EGLContexts = EGLContextːContextʳᵐ{}
+ g.EGLImages = EGLImageKHRːAndroidNativeBufferExtraʳᵐ{}
g.Contexts = ThreadIDːContextʳᵐ{}
g.GLXContexts = GLXContextːContextʳᵐ{}
g.WGLContexts = HGLRCːContextʳᵐ{}
@@ -55679,7 +58742,7 @@
return &EglCopyBuffers{Display: EGLDisplay(Display), Surface: EGLSurface(Surface), NativePixmap: EGLNativePixmapType(Native_pixmap), Result: Result}
}
func NewEglCreateContext(Display memory.Pointer, Config memory.Pointer, Share_context memory.Pointer, Attrib_list memory.Pointer, Result memory.Pointer) *EglCreateContext {
- return &EglCreateContext{Display: EGLDisplay(Display), Config: EGLConfig(Config), ShareContext: EGLContext(Share_context), AttribList: EGLintᵖ(Attrib_list), Result: EGLContext(Result)}
+ return &EglCreateContext{Display: EGLDisplay(Display), Config: EGLConfig(Config), ShareContext: EGLContext(Share_context), AttribList: EGLintᶜᵖ(Attrib_list), Result: EGLContext(Result)}
}
func NewEglCreatePbufferFromClientBuffer(Display memory.Pointer, Buftype EGLenum, Buffer memory.Pointer, Config memory.Pointer, Attrib_list memory.Pointer, Result memory.Pointer) *EglCreatePbufferFromClientBuffer {
return &EglCreatePbufferFromClientBuffer{Display: EGLDisplay(Display), Buftype: Buftype, Buffer: EGLClientBuffer(Buffer), Config: EGLConfig(Config), AttribList: EGLintᶜᵖ(Attrib_list), Result: EGLSurface(Result)}
@@ -55783,6 +58846,9 @@
func NewEglDestroyImageKHR(Dpy memory.Pointer, Image memory.Pointer, Result EGLBoolean) *EglDestroyImageKHR {
return &EglDestroyImageKHR{Dpy: EGLDisplay(Dpy), Image: EGLImageKHR(Image), Result: Result}
}
+func NewEglCreateNativeClientBufferANDROID(Attrib_list memory.Pointer, Result memory.Pointer) *EglCreateNativeClientBufferANDROID {
+ return &EglCreateNativeClientBufferANDROID{AttribList: EGLintᶜᵖ(Attrib_list), Result: EGLClientBuffer(Result)}
+}
func NewGlActiveShaderProgramEXT(Pipeline PipelineId, Program ProgramId) *GlActiveShaderProgramEXT {
return &GlActiveShaderProgramEXT{Pipeline: Pipeline, Program: Program}
}
@@ -56770,6 +59836,192 @@
func NewGlWeightPathsNV(ResultPath GLuint, NumPaths GLsizei, Paths memory.Pointer, Weights memory.Pointer) *GlWeightPathsNV {
return &GlWeightPathsNV{ResultPath: ResultPath, NumPaths: NumPaths, Paths: GLuintᶜᵖ(Paths), Weights: GLfloatᶜᵖ(Weights)}
}
+func NewGlClearPixelLocalStorageuiEXT(Offset GLsizei, N GLsizei, Values memory.Pointer) *GlClearPixelLocalStorageuiEXT {
+ return &GlClearPixelLocalStorageuiEXT{Offset: Offset, N: N, Values: GLuintᶜᵖ(Values)}
+}
+func NewGlClearTexImageEXT(Texture GLuint, Level GLint, Format GLenum, Type GLenum, Data memory.Pointer) *GlClearTexImageEXT {
+ return &GlClearTexImageEXT{Texture: Texture, Level: Level, Format: Format, Type: Type, Data: Voidᶜᵖ(Data)}
+}
+func NewGlClearTexSubImageEXT(Texture GLuint, Level GLint, Xoffset GLint, Yoffset GLint, Zoffset GLint, Width GLsizei, Height GLsizei, Depth GLsizei, Format GLenum, Type GLenum, Data memory.Pointer) *GlClearTexSubImageEXT {
+ return &GlClearTexSubImageEXT{Texture: Texture, Level: Level, Xoffset: Xoffset, Yoffset: Yoffset, Zoffset: Zoffset, Width: Width, Height: Height, Depth: Depth, Format: Format, Type: Type, Data: Voidᶜᵖ(Data)}
+}
+func NewGlConservativeRasterParameteriNV(Pname GLenum, Param GLint) *GlConservativeRasterParameteriNV {
+ return &GlConservativeRasterParameteriNV{Pname: Pname, Param: Param}
+}
+func NewGlDepthRangeArrayfvOES(First GLuint, Count GLsizei, V memory.Pointer) *GlDepthRangeArrayfvOES {
+ return &GlDepthRangeArrayfvOES{First: First, Count: Count, V: GLfloatᶜᵖ(V)}
+}
+func NewGlDepthRangeIndexedfOES(Index GLuint, N GLfloat, F GLfloat) *GlDepthRangeIndexedfOES {
+ return &GlDepthRangeIndexedfOES{Index: Index, N: N, F: F}
+}
+func NewGlDrawTransformFeedbackEXT(Mode GLenum, Id GLuint) *GlDrawTransformFeedbackEXT {
+ return &GlDrawTransformFeedbackEXT{Mode: Mode, Id: Id}
+}
+func NewGlDrawTransformFeedbackInstancedEXT(Mode GLenum, Id GLuint, Instancecount GLsizei) *GlDrawTransformFeedbackInstancedEXT {
+ return &GlDrawTransformFeedbackInstancedEXT{Mode: Mode, Id: Id, Instancecount: Instancecount}
+}
+func NewGlFramebufferPixelLocalStorageSizeEXT(Target GLuint, Size GLsizei) *GlFramebufferPixelLocalStorageSizeEXT {
+ return &GlFramebufferPixelLocalStorageSizeEXT{Target: Target, Size: Size}
+}
+func NewGlFramebufferTexture2DDownsampleIMG(Target GLenum, Attachment GLenum, Textarget GLenum, Texture GLuint, Level GLint, Xscale GLint, Yscale GLint) *GlFramebufferTexture2DDownsampleIMG {
+ return &GlFramebufferTexture2DDownsampleIMG{Target: Target, Attachment: Attachment, Textarget: Textarget, Texture: Texture, Level: Level, Xscale: Xscale, Yscale: Yscale}
+}
+func NewGlFramebufferTextureLayerDownsampleIMG(Target GLenum, Attachment GLenum, Texture GLuint, Level GLint, Layer GLint, Xscale GLint, Yscale GLint) *GlFramebufferTextureLayerDownsampleIMG {
+ return &GlFramebufferTextureLayerDownsampleIMG{Target: Target, Attachment: Attachment, Texture: Texture, Level: Level, Layer: Layer, Xscale: Xscale, Yscale: Yscale}
+}
+func NewGlFramebufferTextureMultisampleMultiviewOVR(Target GLenum, Attachment GLenum, Texture GLuint, Level GLint, Samples GLsizei, BaseViewIndex GLint, NumViews GLsizei) *GlFramebufferTextureMultisampleMultiviewOVR {
+ return &GlFramebufferTextureMultisampleMultiviewOVR{Target: Target, Attachment: Attachment, Texture: Texture, Level: Level, Samples: Samples, BaseViewIndex: BaseViewIndex, NumViews: NumViews}
+}
+func NewGlGetFloati_vOES(Target GLenum, Index GLuint, Data memory.Pointer) *GlGetFloati_vOES {
+ return &GlGetFloati_vOES{Target: Target, Index: Index, Data: GLfloatᵖ(Data)}
+}
+func NewGlGetFramebufferPixelLocalStorageSizeEXT(Target GLuint, Result GLsizei) *GlGetFramebufferPixelLocalStorageSizeEXT {
+ return &GlGetFramebufferPixelLocalStorageSizeEXT{Target: Target, Result: Result}
+}
+func NewGlGetTextureHandleIMG(Texture GLuint, Result GLuint64) *GlGetTextureHandleIMG {
+ return &GlGetTextureHandleIMG{Texture: Texture, Result: Result}
+}
+func NewGlGetTextureSamplerHandleIMG(Texture GLuint, Sampler GLuint, Result GLuint64) *GlGetTextureSamplerHandleIMG {
+ return &GlGetTextureSamplerHandleIMG{Texture: Texture, Sampler: Sampler, Result: Result}
+}
+func NewGlGetUniformi64vNV(Program GLuint, Location GLint, Params memory.Pointer) *GlGetUniformi64vNV {
+ return &GlGetUniformi64vNV{Program: Program, Location: Location, Params: GLint64EXTᵖ(Params)}
+}
+func NewGlPolygonOffsetClampEXT(Factor GLfloat, Units GLfloat, Clamp GLfloat) *GlPolygonOffsetClampEXT {
+ return &GlPolygonOffsetClampEXT{Factor: Factor, Units: Units, Clamp: Clamp}
+}
+func NewGlProgramUniform1i64NV(Program GLuint, Location GLint, X GLint64EXT) *GlProgramUniform1i64NV {
+ return &GlProgramUniform1i64NV{Program: Program, Location: Location, X: X}
+}
+func NewGlProgramUniform1i64vNV(Program GLuint, Location GLint, Count GLsizei, Value memory.Pointer) *GlProgramUniform1i64vNV {
+ return &GlProgramUniform1i64vNV{Program: Program, Location: Location, Count: Count, Value: GLint64EXTᶜᵖ(Value)}
+}
+func NewGlProgramUniform1ui64NV(Program GLuint, Location GLint, X GLuint64EXT) *GlProgramUniform1ui64NV {
+ return &GlProgramUniform1ui64NV{Program: Program, Location: Location, X: X}
+}
+func NewGlProgramUniform1ui64vNV(Program GLuint, Location GLint, Count GLsizei, Value memory.Pointer) *GlProgramUniform1ui64vNV {
+ return &GlProgramUniform1ui64vNV{Program: Program, Location: Location, Count: Count, Value: GLuint64EXTᶜᵖ(Value)}
+}
+func NewGlProgramUniform2i64NV(Program GLuint, Location GLint, X GLint64EXT, Y GLint64EXT) *GlProgramUniform2i64NV {
+ return &GlProgramUniform2i64NV{Program: Program, Location: Location, X: X, Y: Y}
+}
+func NewGlProgramUniform2i64vNV(Program GLuint, Location GLint, Count GLsizei, Value memory.Pointer) *GlProgramUniform2i64vNV {
+ return &GlProgramUniform2i64vNV{Program: Program, Location: Location, Count: Count, Value: GLint64EXTᶜᵖ(Value)}
+}
+func NewGlProgramUniform2ui64NV(Program GLuint, Location GLint, X GLuint64EXT, Y GLuint64EXT) *GlProgramUniform2ui64NV {
+ return &GlProgramUniform2ui64NV{Program: Program, Location: Location, X: X, Y: Y}
+}
+func NewGlProgramUniform2ui64vNV(Program GLuint, Location GLint, Count GLsizei, Value memory.Pointer) *GlProgramUniform2ui64vNV {
+ return &GlProgramUniform2ui64vNV{Program: Program, Location: Location, Count: Count, Value: GLuint64EXTᶜᵖ(Value)}
+}
+func NewGlProgramUniform3i64NV(Program GLuint, Location GLint, X GLint64EXT, Y GLint64EXT, Z GLint64EXT) *GlProgramUniform3i64NV {
+ return &GlProgramUniform3i64NV{Program: Program, Location: Location, X: X, Y: Y, Z: Z}
+}
+func NewGlProgramUniform3i64vNV(Program GLuint, Location GLint, Count GLsizei, Value memory.Pointer) *GlProgramUniform3i64vNV {
+ return &GlProgramUniform3i64vNV{Program: Program, Location: Location, Count: Count, Value: GLint64EXTᶜᵖ(Value)}
+}
+func NewGlProgramUniform3ui64NV(Program GLuint, Location GLint, X GLuint64EXT, Y GLuint64EXT, Z GLuint64EXT) *GlProgramUniform3ui64NV {
+ return &GlProgramUniform3ui64NV{Program: Program, Location: Location, X: X, Y: Y, Z: Z}
+}
+func NewGlProgramUniform3ui64vNV(Program GLuint, Location GLint, Count GLsizei, Value memory.Pointer) *GlProgramUniform3ui64vNV {
+ return &GlProgramUniform3ui64vNV{Program: Program, Location: Location, Count: Count, Value: GLuint64EXTᶜᵖ(Value)}
+}
+func NewGlProgramUniform4i64NV(Program GLuint, Location GLint, X GLint64EXT, Y GLint64EXT, Z GLint64EXT, W GLint64EXT) *GlProgramUniform4i64NV {
+ return &GlProgramUniform4i64NV{Program: Program, Location: Location, X: X, Y: Y, Z: Z, W: W}
+}
+func NewGlProgramUniform4i64vNV(Program GLuint, Location GLint, Count GLsizei, Value memory.Pointer) *GlProgramUniform4i64vNV {
+ return &GlProgramUniform4i64vNV{Program: Program, Location: Location, Count: Count, Value: GLint64EXTᶜᵖ(Value)}
+}
+func NewGlProgramUniform4ui64NV(Program GLuint, Location GLint, X GLuint64EXT, Y GLuint64EXT, Z GLuint64EXT, W GLuint64EXT) *GlProgramUniform4ui64NV {
+ return &GlProgramUniform4ui64NV{Program: Program, Location: Location, X: X, Y: Y, Z: Z, W: W}
+}
+func NewGlProgramUniform4ui64vNV(Program GLuint, Location GLint, Count GLsizei, Value memory.Pointer) *GlProgramUniform4ui64vNV {
+ return &GlProgramUniform4ui64vNV{Program: Program, Location: Location, Count: Count, Value: GLuint64EXTᶜᵖ(Value)}
+}
+func NewGlProgramUniformHandleui64IMG(Program GLuint, Location GLint, Value GLuint64) *GlProgramUniformHandleui64IMG {
+ return &GlProgramUniformHandleui64IMG{Program: Program, Location: Location, Value: Value}
+}
+func NewGlProgramUniformHandleui64vIMG(Program GLuint, Location GLint, Count GLsizei, Values memory.Pointer) *GlProgramUniformHandleui64vIMG {
+ return &GlProgramUniformHandleui64vIMG{Program: Program, Location: Location, Count: Count, Values: GLuint64ᶜᵖ(Values)}
+}
+func NewGlScissorArrayvOES(First GLuint, Count GLsizei, V memory.Pointer) *GlScissorArrayvOES {
+ return &GlScissorArrayvOES{First: First, Count: Count, V: GLintᶜᵖ(V)}
+}
+func NewGlScissorIndexedOES(Index GLuint, Left GLint, Bottom GLint, Width GLsizei, Height GLsizei) *GlScissorIndexedOES {
+ return &GlScissorIndexedOES{Index: Index, Left: Left, Bottom: Bottom, Width: Width, Height: Height}
+}
+func NewGlScissorIndexedvOES(Index GLuint, V memory.Pointer) *GlScissorIndexedvOES {
+ return &GlScissorIndexedvOES{Index: Index, V: GLintᶜᵖ(V)}
+}
+func NewGlUniform1i64NV(Location GLint, X GLint64EXT) *GlUniform1i64NV {
+ return &GlUniform1i64NV{Location: Location, X: X}
+}
+func NewGlUniform1i64vNV(Location GLint, Count GLsizei, Value memory.Pointer) *GlUniform1i64vNV {
+ return &GlUniform1i64vNV{Location: Location, Count: Count, Value: GLint64EXTᶜᵖ(Value)}
+}
+func NewGlUniform1ui64NV(Location GLint, X GLuint64EXT) *GlUniform1ui64NV {
+ return &GlUniform1ui64NV{Location: Location, X: X}
+}
+func NewGlUniform1ui64vNV(Location GLint, Count GLsizei, Value memory.Pointer) *GlUniform1ui64vNV {
+ return &GlUniform1ui64vNV{Location: Location, Count: Count, Value: GLuint64EXTᶜᵖ(Value)}
+}
+func NewGlUniform2i64NV(Location GLint, X GLint64EXT, Y GLint64EXT) *GlUniform2i64NV {
+ return &GlUniform2i64NV{Location: Location, X: X, Y: Y}
+}
+func NewGlUniform2i64vNV(Location GLint, Count GLsizei, Value memory.Pointer) *GlUniform2i64vNV {
+ return &GlUniform2i64vNV{Location: Location, Count: Count, Value: GLint64EXTᶜᵖ(Value)}
+}
+func NewGlUniform2ui64NV(Location GLint, X GLuint64EXT, Y GLuint64EXT) *GlUniform2ui64NV {
+ return &GlUniform2ui64NV{Location: Location, X: X, Y: Y}
+}
+func NewGlUniform2ui64vNV(Location GLint, Count GLsizei, Value memory.Pointer) *GlUniform2ui64vNV {
+ return &GlUniform2ui64vNV{Location: Location, Count: Count, Value: GLuint64EXTᶜᵖ(Value)}
+}
+func NewGlUniform3i64NV(Location GLint, X GLint64EXT, Y GLint64EXT, Z GLint64EXT) *GlUniform3i64NV {
+ return &GlUniform3i64NV{Location: Location, X: X, Y: Y, Z: Z}
+}
+func NewGlUniform3i64vNV(Location GLint, Count GLsizei, Value memory.Pointer) *GlUniform3i64vNV {
+ return &GlUniform3i64vNV{Location: Location, Count: Count, Value: GLint64EXTᶜᵖ(Value)}
+}
+func NewGlUniform3ui64NV(Location GLint, X GLuint64EXT, Y GLuint64EXT, Z GLuint64EXT) *GlUniform3ui64NV {
+ return &GlUniform3ui64NV{Location: Location, X: X, Y: Y, Z: Z}
+}
+func NewGlUniform3ui64vNV(Location GLint, Count GLsizei, Value memory.Pointer) *GlUniform3ui64vNV {
+ return &GlUniform3ui64vNV{Location: Location, Count: Count, Value: GLuint64EXTᶜᵖ(Value)}
+}
+func NewGlUniform4i64NV(Location GLint, X GLint64EXT, Y GLint64EXT, Z GLint64EXT, W GLint64EXT) *GlUniform4i64NV {
+ return &GlUniform4i64NV{Location: Location, X: X, Y: Y, Z: Z, W: W}
+}
+func NewGlUniform4i64vNV(Location GLint, Count GLsizei, Value memory.Pointer) *GlUniform4i64vNV {
+ return &GlUniform4i64vNV{Location: Location, Count: Count, Value: GLint64EXTᶜᵖ(Value)}
+}
+func NewGlUniform4ui64NV(Location GLint, X GLuint64EXT, Y GLuint64EXT, Z GLuint64EXT, W GLuint64EXT) *GlUniform4ui64NV {
+ return &GlUniform4ui64NV{Location: Location, X: X, Y: Y, Z: Z, W: W}
+}
+func NewGlUniform4ui64vNV(Location GLint, Count GLsizei, Value memory.Pointer) *GlUniform4ui64vNV {
+ return &GlUniform4ui64vNV{Location: Location, Count: Count, Value: GLuint64EXTᶜᵖ(Value)}
+}
+func NewGlUniformHandleui64IMG(Location GLint, Value GLuint64) *GlUniformHandleui64IMG {
+ return &GlUniformHandleui64IMG{Location: Location, Value: Value}
+}
+func NewGlUniformHandleui64vIMG(Location GLint, Count GLsizei, Value memory.Pointer) *GlUniformHandleui64vIMG {
+ return &GlUniformHandleui64vIMG{Location: Location, Count: Count, Value: GLuint64ᶜᵖ(Value)}
+}
+func NewGlViewportArrayvOES(First GLuint, Count GLsizei, V memory.Pointer) *GlViewportArrayvOES {
+ return &GlViewportArrayvOES{First: First, Count: Count, V: GLfloatᶜᵖ(V)}
+}
+func NewGlViewportIndexedfOES(Index GLuint, X GLfloat, Y GLfloat, W GLfloat, H GLfloat) *GlViewportIndexedfOES {
+ return &GlViewportIndexedfOES{Index: Index, X: X, Y: Y, W: W, H: H}
+}
+func NewGlViewportIndexedfvOES(Index GLuint, V memory.Pointer) *GlViewportIndexedfvOES {
+ return &GlViewportIndexedfvOES{Index: Index, V: GLfloatᶜᵖ(V)}
+}
+func NewGlViewportSwizzleNV(Index GLuint, Swizzlex GLenum, Swizzley GLenum, Swizzlez GLenum, Swizzlew GLenum) *GlViewportSwizzleNV {
+ return &GlViewportSwizzleNV{Index: Index, Swizzlex: Swizzlex, Swizzley: Swizzley, Swizzlez: Swizzlez, Swizzlew: Swizzlew}
+}
+func NewGlWindowRectanglesEXT(Mode GLenum, Count GLsizei, Box memory.Pointer) *GlWindowRectanglesEXT {
+ return &GlWindowRectanglesEXT{Mode: Mode, Count: Count, Box: GLintᶜᵖ(Box)}
+}
func NewGlBlendBarrier() *GlBlendBarrier {
return &GlBlendBarrier{}
}
diff --git a/gapid/gfxapi/gles/api/android_native.api b/gapid/gfxapi/gles/api/android_native.api
new file mode 100644
index 0000000..ae3c0e3
--- /dev/null
+++ b/gapid/gfxapi/gles/api/android_native.api
@@ -0,0 +1,53 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+@internal
+@serialize
+class AndroidNativeBufferExtra {
+ u32 Width
+ u32 Height
+ u32 Stride
+ AndroidGraphicsBufferFormat Format
+ AndroidGraphicsBufferUsage Usage
+}
+
+@post_fence
+extern ref!AndroidNativeBufferExtra GetAndroidNativeBufferExtra(void* buffer)
+
+enum AndroidGraphicsBufferFormat {
+ HAL_PIXEL_FORMAT_RGBA_8888 = 0x01,
+ HAL_PIXEL_FORMAT_RGBX_8888 = 0x02,
+ HAL_PIXEL_FORMAT_RGB_888 = 0x03,
+ HAL_PIXEL_FORMAT_RGB_565 = 0x04,
+ HAL_PIXEL_FORMAT_BGRA_8888 = 0x05,
+ HAL_PIXEL_FORMAT_RGBA_5551 = 0x06,
+ HAL_PIXEL_FORMAT_RGBA_4444 = 0x07,
+ HAL_PIXEL_FORMAT_YCrCb_420_SP = 0x11, // NV21
+}
+
+enum AndroidGraphicsBufferUsage {
+ USAGE_SW_READ_NEVER = 0x00000000,
+ USAGE_SW_READ_RARELY = 0x00000002,
+ USAGE_SW_READ_OFTEN = 0x00000003,
+ USAGE_SW_READ_MASK = 0x0000000F,
+ USAGE_SW_WRITE_NEVER = 0x00000000,
+ USAGE_SW_WRITE_RARELY = 0x00000020,
+ USAGE_SW_WRITE_OFTEN = 0x00000030,
+ USAGE_SW_WRITE_MASK = 0x000000F0,
+ USAGE_HW_TEXTURE = 0x00000100,
+ USAGE_HW_RENDER = 0x00000200,
+ USAGE_HW_2D = 0x00000400,
+ USAGE_HW_FB = 0x00001000,
+ USAGE_HW_MASK = 0x00001F00,
+}
diff --git a/gapid/gfxapi/gles/api/asynchronous_queries.api b/gapid/gfxapi/gles/api/asynchronous_queries.api
index e9036c4..45e2b96 100644
--- a/gapid/gfxapi/gles/api/asynchronous_queries.api
+++ b/gapid/gfxapi/gles/api/asynchronous_queries.api
@@ -124,6 +124,9 @@
case GL_PRIMITIVES_GENERATED: {
minRequiredVersion(3, 2)
}
+ case GL_TIMESTAMP_EXT: {
+ requiresExtension(GL_EXT_disjoint_timer_query)
+ }
default: {
glErrorInvalidEnum(target)
}
@@ -138,6 +141,10 @@
value[0] = 0
}
}
+ case GL_QUERY_COUNTER_BITS_EXT: {
+ requiresExtension(GL_EXT_disjoint_timer_query)
+ value[0] = ?
+ }
default: {
glErrorInvalidEnum(parameter)
}
diff --git a/gapid/gfxapi/gles/api/egl.api b/gapid/gfxapi/gles/api/egl.api
index e91eb0c..3a958a1 100644
--- a/gapid/gfxapi/gles/api/egl.api
+++ b/gapid/gfxapi/gles/api/egl.api
@@ -29,7 +29,26 @@
@replay_custom_value
type void* GLeglImageOES
+sub void ObserveAttribList(const EGLint* attrib_list) {
+ // TODO: Replace with proper loop control flow
+ if (attrib_list != null) {
+ done := make!bool(1)
+ done[0] = false
+ for i in (0 .. 256) {
+ if !(done[0]) {
+ pair := attrib_list[i * 2:(i * 2) + 2]
+ if as!EGLenum(pair[0]) != EGL_NONE {
+ _ = pair[1]
+ } else {
+ done[0] = true
+ }
+ }
+ }
+ }
+}
+
map!(EGLContext, ref!Context) EGLContexts
+map!(EGLImageKHR, ref!AndroidNativeBufferExtra) EGLImages
@no_replay
cmd EGLBoolean eglGetConfigAttrib(EGLDisplay display,
@@ -53,10 +72,15 @@
@no_replay
cmd EGLBoolean eglChooseConfig(EGLDisplay display,
EGLint const* attrib_list,
- EGLConfig* configs, // TODO: Observe
+ EGLConfig* configs,
EGLint config_size,
EGLint* num_config) {
- num_config[0] = ?
+ ObserveAttribList(attrib_list)
+ num := ?
+ num_config[0] = num
+ if configs != null {
+ write(configs[0:num])
+ }
return ?
}
@@ -77,10 +101,11 @@
@custom @no_replay
///http://www.khronos.org/registry/egl/sdk/docs/man/html/eglCreateContext.xhtml
-cmd EGLContext eglCreateContext(EGLDisplay display,
- EGLConfig config,
- EGLContext share_context,
- EGLint* attrib_list) {
+cmd EGLContext eglCreateContext(EGLDisplay display,
+ EGLConfig config,
+ EGLContext share_context,
+ EGLint const* attrib_list) {
+ ObserveAttribList(attrib_list)
context := ?
EGLContexts[context] = CreateContext()
return context
@@ -92,6 +117,7 @@
EGLClientBuffer buffer,
EGLConfig config,
EGLint const* attrib_list) {
+ ObserveAttribList(attrib_list)
return ? // TODO
}
@@ -99,6 +125,7 @@
cmd EGLSurface eglCreatePbufferSurface(EGLDisplay display,
EGLConfig config,
EGLint const* attrib_list) {
+ ObserveAttribList(attrib_list)
return ? // TODO
}
@@ -107,6 +134,7 @@
EGLConfig config,
EGLNativePixmapType native_pixmap,
EGLint const* attrib_list) {
+ ObserveAttribList(attrib_list)
return ? // TODO
}
@@ -114,6 +142,7 @@
cmd EGLSyncKHR eglCreateSyncKHR(EGLDisplay dpy,
EGLenum type,
const EGLint* attrib_list) {
+ ObserveAttribList(attrib_list)
return ? // TODO
}
@@ -122,6 +151,7 @@
EGLConfig config,
EGLNativeWindowType native_window,
EGLint const* attrib_list) {
+ ObserveAttribList(attrib_list)
return ? // TODO
}
@@ -145,6 +175,11 @@
EGLConfig* configs,
EGLint config_size,
EGLint* num_config) {
+ num := ?
+ num_config[0] = num
+ if configs != null {
+ write(configs[0:num])
+ }
return ? // TODO
}
@@ -320,7 +355,7 @@
return ? // TODO
}
-@Doc("https://www.khronos.org/registry/egl/extensions/KHR/EGL_KHR_image_base.txt","EGL_KHR_image_base")
+@Doc("https://www.khronos.org/registry/egl/extensions/KHR/EGL_KHR_image_base.txt", "EGL_KHR_image_base")
@no_replay
cmd EGLImageKHR eglCreateImageKHR(EGLDisplay dpy,
EGLContext ctx,
@@ -328,14 +363,27 @@
EGLClientBuffer buffer,
const EGLint* attrib_list) {
requiresExtension(EGL_KHR_image_base)
+ ObserveAttribList(attrib_list)
+ img := ?
+ if target == EGL_NATIVE_BUFFER_ANDROID {
+ EGLImages[img] = GetAndroidNativeBufferExtra(as!void*(buffer))
+ }
+ // TODO
+ return img
+}
+
+@Doc("https://www.khronos.org/registry/egl/extensions/KHR/EGL_KHR_image_base.txt", "EGL_KHR_image_base")
+@no_replay
+cmd EGLBoolean eglDestroyImageKHR(EGLDisplay dpy, EGLImageKHR image) {
+ requiresExtension(EGL_KHR_image_base)
// TODO
return ?
}
-@Doc("https://www.khronos.org/registry/egl/extensions/KHR/EGL_KHR_image_base.txt","EGL_KHR_image_base")
-@no_replay
-cmd EGLBoolean eglDestroyImageKHR(EGLDisplay dpy, EGLImageKHR image) {
- requiresExtension(EGL_KHR_image_base)
+@Doc("https://www.khronos.org/registry/egl/extensions/ANDROID/EGL_ANDROID_create_native_client_buffer.txt", "EGL_ANDROID_create_native_client_buffer")
+cmd EGLClientBuffer eglCreateNativeClientBufferANDROID(const EGLint* attrib_list) {
+ requiresExtension(EGL_ANDROID_create_native_client_buffer)
+ ObserveAttribList(attrib_list)
// TODO
return ?
}
diff --git a/gapid/gfxapi/gles/api/extensions.api b/gapid/gfxapi/gles/api/extensions.api
index 75d89dd..15a05b8 100644
--- a/gapid/gfxapi/gles/api/extensions.api
+++ b/gapid/gfxapi/gles/api/extensions.api
@@ -12,55 +12,55 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glActiveShaderProgramEXT(PipelineId pipeline, ProgramId program) {
requiresExtension(GL_EXT_separate_shader_objects)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_alpha_test.txt","GL_QCOM_alpha_test")
+@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_alpha_test.txt", "GL_QCOM_alpha_test")
cmd void glAlphaFuncQCOM(GLenum func, GLclampf ref) {
requiresExtension(GL_QCOM_alpha_test)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/INTEL/framebuffer_CMAA.txt","GL_INTEL_framebuffer_CMAA")
+@Doc("https://www.khronos.org/registry/gles/extensions/INTEL/framebuffer_CMAA.txt", "GL_INTEL_framebuffer_CMAA")
cmd void glApplyFramebufferAttachmentCMAAINTEL() {
requiresExtension(GL_INTEL_framebuffer_CMAA)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/conditional_render.txt","GL_NV_conditional_render")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/conditional_render.txt", "GL_NV_conditional_render")
cmd void glBeginConditionalRenderNV(GLuint id, GLenum mode) {
requiresExtension(GL_NV_conditional_render)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/AMD/performance_monitor.txt","GL_AMD_performance_monitor")
+@Doc("https://www.khronos.org/registry/gles/extensions/AMD/performance_monitor.txt", "GL_AMD_performance_monitor")
cmd void glBeginPerfMonitorAMD(GLuint monitor) {
requiresExtension(GL_AMD_performance_monitor)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/INTEL/performance_query.txt","GL_INTEL_performance_query")
+@Doc("https://www.khronos.org/registry/gles/extensions/INTEL/performance_query.txt", "GL_INTEL_performance_query")
cmd void glBeginPerfQueryINTEL(GLuint queryHandle) {
requiresExtension(GL_INTEL_performance_query)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_disjoint_timer_query.txt","GL_EXT_disjoint_timer_query")
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_occlusion_query_boolean.txt","GL_EXT_occlusion_query_boolean")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_disjoint_timer_query.txt", "GL_EXT_disjoint_timer_query")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_occlusion_query_boolean.txt", "GL_EXT_occlusion_query_boolean")
cmd void glBeginQueryEXT(GLenum target, QueryId query) {
requiresExtension2(GL_EXT_disjoint_timer_query, GL_EXT_occlusion_query_boolean)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_blend_func_extended.txt","GL_EXT_blend_func_extended")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_blend_func_extended.txt", "GL_EXT_blend_func_extended")
cmd void glBindFragDataLocationEXT(ProgramId program, GLuint color, string name) {
requiresExtension(GL_EXT_blend_func_extended)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_blend_func_extended.txt","GL_EXT_blend_func_extended")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_blend_func_extended.txt", "GL_EXT_blend_func_extended")
cmd void glBindFragDataLocationIndexedEXT(ProgramId program,
GLuint colorNumber,
GLuint index,
@@ -68,37 +68,37 @@
requiresExtension(GL_EXT_blend_func_extended)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glBindProgramPipelineEXT(PipelineId pipeline) {
requiresExtension(GL_EXT_separate_shader_objects)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_vertex_array_object.txt","GL_OES_vertex_array_object")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_vertex_array_object.txt", "GL_OES_vertex_array_object")
cmd void glBindVertexArrayOES(VertexArrayId array) {
requiresExtension(GL_OES_vertex_array_object)
BindVertexArray(array)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/blend_equation_advanced.txt","GL_NV_blend_equation_advanced")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/blend_equation_advanced.txt", "GL_NV_blend_equation_advanced")
cmd void glBlendBarrierNV() {
requiresExtension(GL_NV_blend_equation_advanced)
BlendBarrier()
}
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_draw_buffers_indexed.txt","GL_OES_draw_buffers_indexed")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_draw_buffers_indexed.txt", "GL_OES_draw_buffers_indexed")
cmd void glBlendEquationSeparateiOES(DrawBufferIndex buf, GLenum modeRGB, GLenum modeAlpha) {
requiresExtension(GL_OES_draw_buffers_indexed)
BlendEquationSeparatei(buf, modeRGB, modeAlpha)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_draw_buffers_indexed.txt","GL_OES_draw_buffers_indexed")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_draw_buffers_indexed.txt", "GL_OES_draw_buffers_indexed")
cmd void glBlendEquationiOES(DrawBufferIndex buf, GLenum mode) {
requiresExtension(GL_OES_draw_buffers_indexed)
BlendEquationi(buf, mode)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_draw_buffers_indexed.txt","GL_OES_draw_buffers_indexed")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_draw_buffers_indexed.txt", "GL_OES_draw_buffers_indexed")
cmd void glBlendFuncSeparateiOES(DrawBufferIndex buf,
GLenum srcRGB,
GLenum dstRGB,
@@ -108,19 +108,19 @@
BlendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_draw_buffers_indexed.txt","GL_OES_draw_buffers_indexed")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_draw_buffers_indexed.txt", "GL_OES_draw_buffers_indexed")
cmd void glBlendFunciOES(DrawBufferIndex buf, GLenum src, GLenum dst) {
requiresExtension(GL_OES_draw_buffers_indexed)
BlendFunci(buf, src, dst)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/blend_equation_advanced.txt","GL_NV_blend_equation_advanced")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/blend_equation_advanced.txt", "GL_NV_blend_equation_advanced")
cmd void glBlendParameteriNV(GLenum pname, GLint value) {
requiresExtension(GL_NV_blend_equation_advanced)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/ANGLE/ANGLE_framebuffer_blit.txt","GL_ANGLE_framebuffer_blit")
+@Doc("https://www.khronos.org/registry/gles/extensions/ANGLE/ANGLE_framebuffer_blit.txt", "GL_ANGLE_framebuffer_blit")
cmd void glBlitFramebufferANGLE(GLint srcX0,
GLint srcY0,
GLint srcX1,
@@ -135,7 +135,7 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_framebuffer_blit.txt","GL_NV_framebuffer_blit")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_framebuffer_blit.txt", "GL_NV_framebuffer_blit")
cmd void glBlitFramebufferNV(GLint srcX0,
GLint srcY0,
GLint srcX1,
@@ -150,26 +150,26 @@
BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_buffer_storage.txt","GL_EXT_buffer_storage")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_buffer_storage.txt", "GL_EXT_buffer_storage")
cmd void glBufferStorageEXT(GLenum target, GLsizeiptr size, const void* data, GLbitfield flag) {
requiresExtension(GL_EXT_buffer_storage)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/APPLE/APPLE_sync.txt","GL_APPLE_sync")
+@Doc("https://www.khronos.org/registry/gles/extensions/APPLE/APPLE_sync.txt", "GL_APPLE_sync")
cmd GLenum glClientWaitSyncAPPLE(GLsync sync, GLbitfield flag, GLuint64 timeout) {
requiresExtension(GL_APPLE_sync)
ClientWaitSync(sync, flag, timeout)
return ?
}
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_draw_buffers_indexed.txt","GL_OES_draw_buffers_indexed")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_draw_buffers_indexed.txt", "GL_OES_draw_buffers_indexed")
cmd void glColorMaskiOES(DrawBufferIndex index, GLboolean r, GLboolean g, GLboolean b, GLboolean a) {
requiresExtension(GL_OES_draw_buffers_indexed)
ColorMaski(index, r, g, b, a)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_3D.txt","GL_OES_texture_3D")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_3D.txt", "GL_OES_texture_3D")
cmd void glCompressedTexImage3DOES(GLenum target,
GLint level,
GLenum internalformat,
@@ -183,7 +183,7 @@
CompressedTexImage3D(target, level, internalformat, width, height, depth, border, image_size, data)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_3D.txt","GL_OES_texture_3D")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_3D.txt", "GL_OES_texture_3D")
cmd void glCompressedTexSubImage3DOES(GLenum target,
GLint level,
GLint xoffset,
@@ -199,7 +199,7 @@
CompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, image_size, data)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_copy_buffer.txt","GL_NV_copy_buffer")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_copy_buffer.txt", "GL_NV_copy_buffer")
cmd void glCopyBufferSubDataNV(GLenum readTarget,
GLenum writeTarget,
GLintptr readOffset,
@@ -209,7 +209,7 @@
CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_copy_image.txt","GL_OES_copy_image")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_copy_image.txt", "GL_OES_copy_image")
cmd void glCopyImageSubDataOES(GLuint srcName,
GLenum srcTarget,
GLint srcLevel,
@@ -229,13 +229,13 @@
CopyImageSubData(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glCopyPathNV(GLuint resultPath, GLuint srcPath) {
requiresExtension(GL_NV_path_rendering)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_3D.txt","GL_OES_texture_3D")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_3D.txt", "GL_OES_texture_3D")
cmd void glCopyTexSubImage3DOES(GLenum target,
GLint level,
GLint xoffset,
@@ -249,7 +249,7 @@
CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/APPLE/APPLE_copy_texture_levels.txt","GL_APPLE_copy_texture_levels")
+@Doc("https://www.khronos.org/registry/gles/extensions/APPLE/APPLE_copy_texture_levels.txt", "GL_APPLE_copy_texture_levels")
cmd void glCopyTextureLevelsAPPLE(GLuint destinationTexture,
GLuint sourceTexture,
GLint sourceBaseLevel,
@@ -258,7 +258,7 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glCoverFillPathInstancedNV(GLsizei numPaths,
GLenum pathNameType,
const void* paths,
@@ -270,13 +270,13 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glCoverFillPathNV(GLuint path, GLenum coverMode) {
requiresExtension(GL_NV_path_rendering)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glCoverStrokePathInstancedNV(GLsizei numPaths,
GLenum pathNameType,
const void* paths,
@@ -288,81 +288,81 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glCoverStrokePathNV(GLuint path, GLenum coverMode) {
requiresExtension(GL_NV_path_rendering)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/EGL_NV_coverage_sample.txt","GL_NV_coverage_sample")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/EGL_NV_coverage_sample.txt", "GL_NV_coverage_sample")
cmd void glCoverageMaskNV(GLboolean mask) {
requiresExtension(GL_NV_coverage_sample)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/framebuffer_mixed_samples.txt","GL_NV_framebuffer_mixed_samples")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/framebuffer_mixed_samples.txt", "GL_NV_framebuffer_mixed_samples")
cmd void glCoverageModulationNV(GLenum components) {
requiresExtension(GL_NV_framebuffer_mixed_samples)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/framebuffer_mixed_samples.txt","GL_NV_framebuffer_mixed_samples")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/framebuffer_mixed_samples.txt", "GL_NV_framebuffer_mixed_samples")
cmd void glCoverageModulationTableNV(GLsizei n, const GLfloat* v) {
requiresExtension(GL_NV_framebuffer_mixed_samples)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/EGL_NV_coverage_sample.txt","GL_NV_coverage_sample")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/EGL_NV_coverage_sample.txt", "GL_NV_coverage_sample")
cmd void glCoverageOperationNV(GLenum operation) {
requiresExtension(GL_NV_coverage_sample)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/INTEL/performance_query.txt","GL_INTEL_performance_query")
+@Doc("https://www.khronos.org/registry/gles/extensions/INTEL/performance_query.txt", "GL_INTEL_performance_query")
cmd void glCreatePerfQueryINTEL(GLuint queryId, GLuint* queryHandle) {
requiresExtension(GL_INTEL_performance_query)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd GLuint glCreateShaderProgramvEXT(GLenum type, GLsizei count, const GLchar** strings) {
requiresExtension(GL_EXT_separate_shader_objects)
// TODO
return ?
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/fence.txt","GL_NV_fence")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/fence.txt", "GL_NV_fence")
cmd void glDeleteFencesNV(GLsizei n, const GLuint* fences) {
requiresExtension(GL_NV_fence)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glDeletePathsNV(GLuint path, GLsizei range) {
requiresExtension(GL_NV_path_rendering)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/AMD/performance_monitor.txt","GL_AMD_performance_monitor")
+@Doc("https://www.khronos.org/registry/gles/extensions/AMD/performance_monitor.txt", "GL_AMD_performance_monitor")
cmd void glDeletePerfMonitorsAMD(GLsizei n, GLuint* monitors) {
requiresExtension(GL_AMD_performance_monitor)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/INTEL/performance_query.txt","GL_INTEL_performance_query")
+@Doc("https://www.khronos.org/registry/gles/extensions/INTEL/performance_query.txt", "GL_INTEL_performance_query")
cmd void glDeletePerfQueryINTEL(GLuint queryHandle) {
requiresExtension(GL_INTEL_performance_query)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glDeleteProgramPipelinesEXT(GLsizei n, const PipelineId* pipelines) {
requiresExtension(GL_EXT_separate_shader_objects)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_disjoint_timer_query.txt","GL_EXT_disjoint_timer_query")
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_occlusion_query_boolean.txt","GL_EXT_occlusion_query_boolean")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_disjoint_timer_query.txt", "GL_EXT_disjoint_timer_query")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_occlusion_query_boolean.txt", "GL_EXT_occlusion_query_boolean")
cmd void glDeleteQueriesEXT(GLsizei count, const QueryId* queries) {
requiresExtension2(GL_EXT_disjoint_timer_query, GL_EXT_occlusion_query_boolean)
@@ -376,49 +376,50 @@
}
}
-@Doc("https://www.khronos.org/registry/gles/extensions/APPLE/APPLE_sync.txt","GL_APPLE_sync")
+@Doc("https://www.khronos.org/registry/gles/extensions/APPLE/APPLE_sync.txt", "GL_APPLE_sync")
cmd void glDeleteSyncAPPLE(GLsync sync) {
requiresExtension(GL_APPLE_sync)
DeleteSync(sync)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_vertex_array_object.txt","GL_OES_vertex_array_object")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_vertex_array_object.txt", "GL_OES_vertex_array_object")
cmd void glDeleteVertexArraysOES(GLsizei count, const VertexArrayId* arrays) {
requiresExtension(GL_OES_vertex_array_object)
DeleteVertexArrays(count, arrays)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_viewport_array.txt","GL_NV_viewport_array")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_viewport_array.txt", "GL_NV_viewport_array")
cmd void glDepthRangeArrayfvNV(GLuint first, GLsizei count, const GLfloat* v) {
requiresExtension(GL_NV_viewport_array)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_viewport_array.txt","GL_NV_viewport_array")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_viewport_array.txt", "GL_NV_viewport_array")
cmd void glDepthRangeIndexedfNV(GLuint index, GLfloat n, GLfloat f) {
requiresExtension(GL_NV_viewport_array)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_driver_control.txt","GL_QCOM_driver_control")
+@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_driver_control.txt", "GL_QCOM_driver_control")
cmd void glDisableDriverControlQCOM(GLuint driverControl) {
requiresExtension(GL_QCOM_driver_control)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_viewport_array.txt","GL_NV_viewport_array")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_viewport_array.txt", "GL_NV_viewport_array")
cmd void glDisableiNV(GLenum target, GLuint index) {
requiresExtension(GL_NV_viewport_array)
Disablei(target, index)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_draw_buffers_indexed.txt","GL_OES_draw_buffers_indexed")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_draw_buffers_indexed.txt", "GL_OES_draw_buffers_indexed")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_viewport_array.txt", "GL_OES_viewport_array")
cmd void glDisableiOES(GLenum target, GLuint index) {
- requiresExtension(GL_OES_draw_buffers_indexed)
+ requiresExtension2(GL_OES_draw_buffers_indexed, GL_OES_viewport_array)
Disablei(target, index)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_discard_framebuffer.txt","GL_EXT_discard_framebuffer")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_discard_framebuffer.txt", "GL_EXT_discard_framebuffer")
cmd void glDiscardFramebufferEXT(GLenum target,
GLsizei numAttachments,
const GLenum* attachments) {
@@ -427,14 +428,14 @@
}
@DrawCall
-@Doc("https://www.khronos.org/registry/gles/extensions/ANGLE/ANGLE_instanced_arrays.txt","GL_ANGLE_instanced_arrays")
+@Doc("https://www.khronos.org/registry/gles/extensions/ANGLE/ANGLE_instanced_arrays.txt", "GL_ANGLE_instanced_arrays")
cmd void glDrawArraysInstancedANGLE(GLenum mode, GLint first, GLsizei count, GLsizei primcount) {
requiresExtension(GL_ANGLE_instanced_arrays)
DrawArraysInstanced(mode, first, count, primcount)
}
@DrawCall
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_base_instance.txt","GL_EXT_base_instance")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_base_instance.txt", "GL_EXT_base_instance")
cmd void glDrawArraysInstancedBaseInstanceEXT(GLenum mode,
GLint first,
GLsizei count,
@@ -445,40 +446,40 @@
}
@DrawCall
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/draw_instanced.txt","GL_EXT_draw_instanced")
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_instanced_arrays.txt","GL_EXT_instanced_arrays")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/draw_instanced.txt", "GL_EXT_draw_instanced")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_instanced_arrays.txt", "GL_EXT_instanced_arrays")
cmd void glDrawArraysInstancedEXT(GLenum mode, GLint start, GLsizei count, GLsizei primcount) {
requiresExtension2(GL_EXT_draw_instanced, GL_EXT_instanced_arrays)
DrawArraysInstanced(mode, start, count, primcount)
}
@DrawCall
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_draw_instanced.txt","GL_NV_draw_instanced")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_draw_instanced.txt", "GL_NV_draw_instanced")
cmd void glDrawArraysInstancedNV(GLenum mode, GLint first, GLsizei count, GLsizei primcount) {
requiresExtension(GL_NV_draw_instanced)
DrawArraysInstanced(mode, first, count, primcount)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_draw_buffers.txt","GL_EXT_draw_buffers")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_draw_buffers.txt", "GL_EXT_draw_buffers")
cmd void glDrawBuffersEXT(GLsizei n, const GLenum* bufs) {
requiresExtension(GL_EXT_draw_buffers)
DrawBuffers(n, bufs)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_multiview_draw_buffers.txt","GL_EXT_multiview_draw_buffers")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_multiview_draw_buffers.txt", "GL_EXT_multiview_draw_buffers")
cmd void glDrawBuffersIndexedEXT(GLint n, const GLenum* location, const GLint* indices) {
requiresExtension(GL_EXT_multiview_draw_buffers)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_draw_buffers.txt","GL_NV_draw_buffers")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_draw_buffers.txt", "GL_NV_draw_buffers")
cmd void glDrawBuffersNV(GLsizei n, const GLenum* bufs) {
requiresExtension(GL_NV_draw_buffers)
DrawBuffers(n, bufs)
}
@DrawCall
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_draw_elements_base_vertex.txt","GL_EXT_draw_elements_base_vertex")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_draw_elements_base_vertex.txt", "GL_EXT_draw_elements_base_vertex")
cmd void glDrawElementsBaseVertexEXT(GLenum mode,
GLsizei count,
GLenum type,
@@ -489,7 +490,7 @@
}
@DrawCall
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_draw_elements_base_vertex.txt","GL_OES_draw_elements_base_vertex")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_draw_elements_base_vertex.txt", "GL_OES_draw_elements_base_vertex")
cmd void glDrawElementsBaseVertexOES(GLenum mode,
GLsizei count,
GLenum type,
@@ -500,7 +501,7 @@
}
@DrawCall
-@Doc("https://www.khronos.org/registry/gles/extensions/ANGLE/ANGLE_instanced_arrays.txt","GL_ANGLE_instanced_arrays")
+@Doc("https://www.khronos.org/registry/gles/extensions/ANGLE/ANGLE_instanced_arrays.txt", "GL_ANGLE_instanced_arrays")
cmd void glDrawElementsInstancedANGLE(GLenum mode,
GLsizei count,
GLenum type,
@@ -511,7 +512,7 @@
}
@DrawCall
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_base_instance.txt","GL_EXT_base_instance")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_base_instance.txt", "GL_EXT_base_instance")
cmd void glDrawElementsInstancedBaseInstanceEXT(GLenum mode,
GLsizei count,
GLenum type,
@@ -523,7 +524,7 @@
}
@DrawCall
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_base_instance.txt","GL_EXT_base_instance")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_base_instance.txt", "GL_EXT_base_instance")
cmd void glDrawElementsInstancedBaseVertexBaseInstanceEXT(GLenum mode,
GLsizei count,
GLenum type,
@@ -536,7 +537,7 @@
}
@DrawCall
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_draw_elements_base_vertex.txt","GL_EXT_draw_elements_base_vertex")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_draw_elements_base_vertex.txt", "GL_EXT_draw_elements_base_vertex")
cmd void glDrawElementsInstancedBaseVertexEXT(GLenum mode,
GLsizei count,
GLenum type,
@@ -548,7 +549,7 @@
}
@DrawCall
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_draw_elements_base_vertex.txt","GL_OES_draw_elements_base_vertex")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_draw_elements_base_vertex.txt", "GL_OES_draw_elements_base_vertex")
cmd void glDrawElementsInstancedBaseVertexOES(GLenum mode,
GLsizei count,
GLenum type,
@@ -560,8 +561,8 @@
}
@DrawCall
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/draw_instanced.txt","GL_EXT_draw_instanced")
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_instanced_arrays.txt","GL_EXT_instanced_arrays")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/draw_instanced.txt", "GL_EXT_draw_instanced")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_instanced_arrays.txt", "GL_EXT_instanced_arrays")
cmd void glDrawElementsInstancedEXT(GLenum mode,
GLsizei count,
GLenum type,
@@ -572,7 +573,7 @@
}
@DrawCall
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_draw_instanced.txt","GL_NV_draw_instanced")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_draw_instanced.txt", "GL_NV_draw_instanced")
cmd void glDrawElementsInstancedNV(GLenum mode,
GLsizei count,
GLenum type,
@@ -583,7 +584,7 @@
}
@DrawCall
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_draw_elements_base_vertex.txt","GL_EXT_draw_elements_base_vertex")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_draw_elements_base_vertex.txt", "GL_EXT_draw_elements_base_vertex")
cmd void glDrawRangeElementsBaseVertexEXT(GLenum mode,
GLuint start,
GLuint end,
@@ -596,7 +597,7 @@
}
@DrawCall
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_draw_elements_base_vertex.txt","GL_OES_draw_elements_base_vertex")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_draw_elements_base_vertex.txt", "GL_OES_draw_elements_base_vertex")
cmd void glDrawRangeElementsBaseVertexOES(GLenum mode,
GLuint start,
GLuint end,
@@ -608,80 +609,98 @@
DrawRangeElementsBaseVertex(mode, start, end, count, type, indices, basevertex)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_EGL_image.txt","GL_OES_EGL_image")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_EGL_image.txt", "GL_OES_EGL_image")
cmd void glEGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image) {
requiresExtension(GL_OES_EGL_image)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_EGL_image.txt","GL_OES_EGL_image")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_EGL_image.txt", "GL_OES_EGL_image")
cmd void glEGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image) {
requiresExtension(GL_OES_EGL_image)
-
+ if (target != GL_TEXTURE_2D) glErrorInvalidEnum(target)
+ if as!EGLImageKHR(image) in EGLImages {
+ info := EGLImages[as!EGLImageKHR(image)]
+ t := GetBoundTextureOrErrorInvalidEnum(target)
+ // TODO: Convert the format from EGLImage
+ fmt := GL_RGB
+ ty := GL_UNSIGNED_BYTE
+ t.TexelFormat = fmt
+ t.TexelType = ty
+ t.Texture2D[0] = Image(
+ Width: as!GLsizei(info.Width),
+ Height: as!GLsizei(info.Height),
+ Size: imageSize(as!u32(info.Width), as!u32(info.Height), fmt, ty),
+ TexelFormat: fmt,
+ TexelType: ty,
+ )
+ t.EGLImage = image
+ }
}
-@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_driver_control.txt","GL_QCOM_driver_control")
+@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_driver_control.txt", "GL_QCOM_driver_control")
cmd void glEnableDriverControlQCOM(GLuint driverControl) {
requiresExtension(GL_QCOM_driver_control)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_viewport_array.txt","GL_NV_viewport_array")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_viewport_array.txt", "GL_NV_viewport_array")
cmd void glEnableiNV(GLenum target, GLuint index) {
requiresExtension(GL_NV_viewport_array)
Enablei(target, index)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_draw_buffers_indexed.txt","GL_OES_draw_buffers_indexed")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_draw_buffers_indexed.txt", "GL_OES_draw_buffers_indexed")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_viewport_array.txt", "GL_OES_viewport_array")
cmd void glEnableiOES(GLenum target, GLuint index) {
- requiresExtension(GL_OES_draw_buffers_indexed)
+ requiresExtension2(GL_OES_draw_buffers_indexed, GL_OES_viewport_array)
Enablei(target, index)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/conditional_render.txt","GL_NV_conditional_render")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/conditional_render.txt", "GL_NV_conditional_render")
cmd void glEndConditionalRenderNV() {
requiresExtension(GL_NV_conditional_render)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/AMD/performance_monitor.txt","GL_AMD_performance_monitor")
+@Doc("https://www.khronos.org/registry/gles/extensions/AMD/performance_monitor.txt", "GL_AMD_performance_monitor")
cmd void glEndPerfMonitorAMD(GLuint monitor) {
requiresExtension(GL_AMD_performance_monitor)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/INTEL/performance_query.txt","GL_INTEL_performance_query")
+@Doc("https://www.khronos.org/registry/gles/extensions/INTEL/performance_query.txt", "GL_INTEL_performance_query")
cmd void glEndPerfQueryINTEL(GLuint queryHandle) {
requiresExtension(GL_INTEL_performance_query)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_disjoint_timer_query.txt","GL_EXT_disjoint_timer_query")
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_occlusion_query_boolean.txt","GL_EXT_occlusion_query_boolean")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_disjoint_timer_query.txt", "GL_EXT_disjoint_timer_query")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_occlusion_query_boolean.txt", "GL_EXT_occlusion_query_boolean")
cmd void glEndQueryEXT(GLenum target) {
requiresExtension2(GL_EXT_disjoint_timer_query, GL_EXT_occlusion_query_boolean)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_tiled_rendering.txt","GL_QCOM_tiled_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_tiled_rendering.txt", "GL_QCOM_tiled_rendering")
cmd void glEndTilingQCOM(GLbitfield preserve_mask) {
requiresExtension(GL_QCOM_tiled_rendering)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_extended_get.txt","GL_QCOM_extended_get")
+@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_extended_get.txt", "GL_QCOM_extended_get")
cmd void glExtGetBufferPointervQCOM(GLenum target, void** params) {
requiresExtension(GL_QCOM_extended_get)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_extended_get.txt","GL_QCOM_extended_get")
+@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_extended_get.txt", "GL_QCOM_extended_get")
cmd void glExtGetBuffersQCOM(BufferId* buffers, GLint maxBuffers, GLint* numBuffers) {
requiresExtension(GL_QCOM_extended_get)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_extended_get.txt","GL_QCOM_extended_get")
+@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_extended_get.txt", "GL_QCOM_extended_get")
cmd void glExtGetFramebuffersQCOM(FramebufferId* framebuffers,
GLint maxFramebuffers,
GLint* numFramebuffers) {
@@ -689,7 +708,7 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_extended_get2.txt","GL_QCOM_extended_get2")
+@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_extended_get2.txt", "GL_QCOM_extended_get2")
cmd void glExtGetProgramBinarySourceQCOM(ProgramId program,
GLenum shadertype,
GLchar* source,
@@ -698,13 +717,13 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_extended_get2.txt","GL_QCOM_extended_get2")
+@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_extended_get2.txt", "GL_QCOM_extended_get2")
cmd void glExtGetProgramsQCOM(ProgramId* programs, GLint maxPrograms, GLint* numPrograms) {
requiresExtension(GL_QCOM_extended_get2)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_extended_get.txt","GL_QCOM_extended_get")
+@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_extended_get.txt", "GL_QCOM_extended_get")
cmd void glExtGetRenderbuffersQCOM(RenderbufferId* renderbuffers,
GLint maxRenderbuffers,
GLint* numRenderbuffers) {
@@ -712,13 +731,13 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_extended_get2.txt","GL_QCOM_extended_get2")
+@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_extended_get2.txt", "GL_QCOM_extended_get2")
cmd void glExtGetShadersQCOM(ShaderId* shaders, GLint maxShaders, GLint* numShaders) {
requiresExtension(GL_QCOM_extended_get2)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_extended_get.txt","GL_QCOM_extended_get")
+@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_extended_get.txt", "GL_QCOM_extended_get")
cmd void glExtGetTexLevelParameterivQCOM(TextureId texture,
GLenum face,
GLint level,
@@ -728,7 +747,7 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_extended_get.txt","GL_QCOM_extended_get")
+@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_extended_get.txt", "GL_QCOM_extended_get")
cmd void glExtGetTexSubImageQCOM(GLenum target,
GLint level,
GLint xoffset,
@@ -744,26 +763,26 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_extended_get.txt","GL_QCOM_extended_get")
+@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_extended_get.txt", "GL_QCOM_extended_get")
cmd void glExtGetTexturesQCOM(TextureId* textures, GLint maxTextures, GLint* numTextures) {
requiresExtension(GL_QCOM_extended_get)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_extended_get2.txt","GL_QCOM_extended_get2")
+@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_extended_get2.txt", "GL_QCOM_extended_get2")
cmd GLboolean glExtIsProgramBinaryQCOM(ProgramId program) {
requiresExtension(GL_QCOM_extended_get2)
// TODO
return ?
}
-@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_extended_get.txt","GL_QCOM_extended_get")
+@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_extended_get.txt", "GL_QCOM_extended_get")
cmd void glExtTexObjectStateOverrideiQCOM(GLenum target, GLenum pname, GLint param) {
requiresExtension(GL_QCOM_extended_get)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/APPLE/APPLE_sync.txt","GL_APPLE_sync")
+@Doc("https://www.khronos.org/registry/gles/extensions/APPLE/APPLE_sync.txt", "GL_APPLE_sync")
cmd GLsync glFenceSyncAPPLE(GLenum condition, GLbitfield flag) {
requiresExtension(GL_APPLE_sync)
sync := ?
@@ -771,25 +790,25 @@
return sync
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/fence.txt","GL_NV_fence")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/fence.txt", "GL_NV_fence")
cmd void glFinishFenceNV(GLuint fence) {
requiresExtension(GL_NV_fence)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_map_buffer_range.txt","GL_EXT_map_buffer_range")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_map_buffer_range.txt", "GL_EXT_map_buffer_range")
cmd void glFlushMappedBufferRangeEXT(GLenum target, GLintptr offset, GLsizeiptr length) {
requiresExtension(GL_EXT_map_buffer_range)
FlushMappedBufferRange(target, offset, length)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/fragment_coverage_to_color.txt","GL_NV_fragment_coverage_to_color")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/fragment_coverage_to_color.txt", "GL_NV_fragment_coverage_to_color")
cmd void glFragmentCoverageColorNV(GLuint color) {
requiresExtension(GL_NV_fragment_coverage_to_color)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/sample_locations.txt","GL_NV_sample_locations")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/sample_locations.txt", "GL_NV_sample_locations")
cmd void glFramebufferSampleLocationsfvNV(GLenum target,
GLuint start,
GLsizei count,
@@ -798,7 +817,7 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_multisampled_render_to_texture.txt","GL_EXT_multisampled_render_to_texture")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_multisampled_render_to_texture.txt", "GL_EXT_multisampled_render_to_texture")
cmd void glFramebufferTexture2DMultisampleEXT(GLenum target,
GLenum attachment,
GLenum textarget,
@@ -806,10 +825,11 @@
GLint level,
GLsizei samples) {
requiresExtension(GL_EXT_multisampled_render_to_texture)
- // TODO
+ // TODO: Handle the multi-sampling instead of ignoring it.
+ FramebufferTexture2D(target, attachment, textarget, texture, level)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/IMG/IMG_multisampled_render_to_texture.txt","GL_IMG_multisampled_render_to_texture")
+@Doc("https://www.khronos.org/registry/gles/extensions/IMG/IMG_multisampled_render_to_texture.txt", "GL_IMG_multisampled_render_to_texture")
cmd void glFramebufferTexture2DMultisampleIMG(GLenum target,
GLenum attachment,
GLenum textarget,
@@ -820,7 +840,7 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_3D.txt","GL_OES_texture_3D")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_3D.txt", "GL_OES_texture_3D")
cmd void glFramebufferTexture3DOES(GLenum target,
GLenum attachment,
GLenum textarget,
@@ -831,7 +851,7 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/OVR/multiview.txt","GL_OVR_multiview")
+@Doc("https://www.khronos.org/registry/gles/extensions/OVR/multiview.txt", "GL_OVR_multiview")
cmd void glFramebufferTextureMultiviewOVR(GLenum target,
GLenum attachment,
TextureId texture,
@@ -842,39 +862,39 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_geometry_shader.txt","GL_OES_geometry_shader")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_geometry_shader.txt", "GL_OES_geometry_shader")
cmd void glFramebufferTextureOES(GLenum target, GLenum attachment, TextureId texture, GLint level) {
requiresExtension(GL_OES_geometry_shader)
FramebufferTexture(target, attachment, texture, level)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/fence.txt","GL_NV_fence")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/fence.txt", "GL_NV_fence")
cmd void glGenFencesNV(GLsizei n, GLuint* fences) {
requiresExtension(GL_NV_fence)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd GLuint glGenPathsNV(GLsizei range) {
requiresExtension(GL_NV_path_rendering)
// TODO
return ?
}
-@Doc("https://www.khronos.org/registry/gles/extensions/AMD/performance_monitor.txt","GL_AMD_performance_monitor")
+@Doc("https://www.khronos.org/registry/gles/extensions/AMD/performance_monitor.txt", "GL_AMD_performance_monitor")
cmd void glGenPerfMonitorsAMD(GLsizei n, GLuint* monitors) {
requiresExtension(GL_AMD_performance_monitor)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glGenProgramPipelinesEXT(GLsizei n, PipelineId* pipelines) {
requiresExtension(GL_EXT_separate_shader_objects)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_disjoint_timer_query.txt","GL_EXT_disjoint_timer_query")
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_occlusion_query_boolean.txt","GL_EXT_occlusion_query_boolean")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_disjoint_timer_query.txt", "GL_EXT_disjoint_timer_query")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_occlusion_query_boolean.txt", "GL_EXT_occlusion_query_boolean")
cmd void glGenQueriesEXT(GLsizei count, QueryId* queries) {
requiresExtension2(GL_EXT_disjoint_timer_query, GL_EXT_occlusion_query_boolean)
@@ -887,25 +907,25 @@
}
}
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_vertex_array_object.txt","GL_OES_vertex_array_object")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_vertex_array_object.txt", "GL_OES_vertex_array_object")
cmd void glGenVertexArraysOES(GLsizei count, VertexArrayId* arrays) {
requiresExtension(GL_OES_vertex_array_object)
GenVertexArrays(count, arrays)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_mapbuffer.txt","GL_OES_mapbuffer")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_mapbuffer.txt", "GL_OES_mapbuffer")
cmd void glGetBufferPointervOES(GLenum target, GLenum pname, void** params) {
requiresExtension(GL_OES_mapbuffer)
GetBufferPointerv(target, pname, params)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/framebuffer_mixed_samples.txt","GL_NV_framebuffer_mixed_samples")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/framebuffer_mixed_samples.txt", "GL_NV_framebuffer_mixed_samples")
cmd void glGetCoverageModulationTableNV(GLsizei bufsize, GLfloat* v) {
requiresExtension(GL_NV_framebuffer_mixed_samples)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_driver_control.txt","GL_QCOM_driver_control")
+@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_driver_control.txt", "GL_QCOM_driver_control")
cmd void glGetDriverControlStringQCOM(GLuint driverControl,
GLsizei bufSize,
GLsizei* length,
@@ -914,51 +934,51 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_driver_control.txt","GL_QCOM_driver_control")
+@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_driver_control.txt", "GL_QCOM_driver_control")
cmd void glGetDriverControlsQCOM(GLint* num, GLsizei size, GLuint* driverControls) {
requiresExtension(GL_QCOM_driver_control)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/fence.txt","GL_NV_fence")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/fence.txt", "GL_NV_fence")
cmd void glGetFenceivNV(GLuint fence, GLenum pname, GLint* params) {
requiresExtension(GL_NV_fence)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/INTEL/performance_query.txt","GL_INTEL_performance_query")
+@Doc("https://www.khronos.org/registry/gles/extensions/INTEL/performance_query.txt", "GL_INTEL_performance_query")
cmd void glGetFirstPerfQueryIdINTEL(GLuint* queryId) {
requiresExtension(GL_INTEL_performance_query)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_viewport_array.txt","GL_NV_viewport_array")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_viewport_array.txt", "GL_NV_viewport_array")
cmd void glGetFloati_vNV(GLenum target, GLuint index, GLfloat* data) {
requiresExtension(GL_NV_viewport_array)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_blend_func_extended.txt","GL_EXT_blend_func_extended")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_blend_func_extended.txt", "GL_EXT_blend_func_extended")
cmd GLint glGetFragDataIndexEXT(ProgramId program, string name) {
requiresExtension(GL_EXT_blend_func_extended)
return ?
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_robustness.txt","GL_EXT_robustness")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_robustness.txt", "GL_EXT_robustness")
cmd GLenum glGetGraphicsResetStatusEXT() {
requiresExtension(GL_EXT_robustness)
return ?
}
-@Doc("https://www.khronos.org/registry/gles/extensions/KHR/robustness.txt","GL_KHR_robustness")
+@Doc("https://www.khronos.org/registry/gles/extensions/KHR/robustness.txt", "GL_KHR_robustness")
cmd GLenum glGetGraphicsResetStatusKHR() {
requiresExtension(GL_KHR_robustness)
GetGraphicsResetStatus()
return ?
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/bindless_texture.txt","GL_NV_bindless_texture")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/bindless_texture.txt", "GL_NV_bindless_texture")
cmd GLuint64 glGetImageHandleNV(TextureId texture,
GLint level,
GLboolean layered,
@@ -969,19 +989,19 @@
return ?
}
-@Doc("https://www.khronos.org/registry/gles/extensions/APPLE/APPLE_sync.txt","GL_APPLE_sync")
+@Doc("https://www.khronos.org/registry/gles/extensions/APPLE/APPLE_sync.txt", "GL_APPLE_sync")
cmd void glGetInteger64vAPPLE(GLenum pname, GLint64* params) {
requiresExtension(GL_APPLE_sync)
GetInteger64v(pname, params)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_multiview_draw_buffers.txt","GL_EXT_multiview_draw_buffers")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_multiview_draw_buffers.txt", "GL_EXT_multiview_draw_buffers")
cmd void glGetIntegeri_vEXT(GLenum target, GLuint index, GLint* data) {
requiresExtension(GL_EXT_multiview_draw_buffers)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/internalformat_sample_query.txt","GL_NV_internalformat_sample_query")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/internalformat_sample_query.txt", "GL_NV_internalformat_sample_query")
cmd void glGetInternalformatSampleivNV(GLenum target,
GLenum internalformat,
GLsizei samples,
@@ -992,13 +1012,13 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/INTEL/performance_query.txt","GL_INTEL_performance_query")
+@Doc("https://www.khronos.org/registry/gles/extensions/INTEL/performance_query.txt", "GL_INTEL_performance_query")
cmd void glGetNextPerfQueryIdINTEL(GLuint queryId, GLuint* nextQueryId) {
requiresExtension(GL_INTEL_performance_query)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_debug_label.txt","GL_EXT_debug_label")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_debug_label.txt", "GL_EXT_debug_label")
cmd void glGetObjectLabelEXT(GLenum type,
GLuint object,
GLsizei bufSize,
@@ -1022,32 +1042,32 @@
writeString(bufSize, length, label)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glGetPathCommandsNV(GLuint path, GLubyte* commands) {
requiresExtension(GL_NV_path_rendering)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glGetPathCoordsNV(GLuint path, GLfloat* coords) {
requiresExtension(GL_NV_path_rendering)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glGetPathDashArrayNV(GLuint path, GLfloat* dashArray) {
requiresExtension(GL_NV_path_rendering)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd GLfloat glGetPathLengthNV(GLuint path, GLsizei startSegment, GLsizei numSegments) {
requiresExtension(GL_NV_path_rendering)
// TODO
return ?
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glGetPathMetricRangeNV(GLbitfield metricQueryMask,
GLuint firstPathName,
GLsizei numPaths,
@@ -1057,7 +1077,7 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glGetPathMetricsNV(GLbitfield metricQueryMask,
GLsizei numPaths,
GLenum pathNameType,
@@ -1069,19 +1089,19 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glGetPathParameterfvNV(GLuint path, GLenum pname, GLfloat* value) {
requiresExtension(GL_NV_path_rendering)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glGetPathParameterivNV(GLuint path, GLenum pname, GLint* value) {
requiresExtension(GL_NV_path_rendering)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glGetPathSpacingNV(GLenum pathListMode,
GLsizei numPaths,
GLenum pathNameType,
@@ -1095,7 +1115,7 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/INTEL/performance_query.txt","GL_INTEL_performance_query")
+@Doc("https://www.khronos.org/registry/gles/extensions/INTEL/performance_query.txt", "GL_INTEL_performance_query")
cmd void glGetPerfCounterInfoINTEL(GLuint queryId,
GLuint counterId,
GLuint counterNameLength,
@@ -1111,7 +1131,7 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/AMD/performance_monitor.txt","GL_AMD_performance_monitor")
+@Doc("https://www.khronos.org/registry/gles/extensions/AMD/performance_monitor.txt", "GL_AMD_performance_monitor")
cmd void glGetPerfMonitorCounterDataAMD(GLuint monitor,
GLenum pname,
GLsizei dataSize,
@@ -1121,13 +1141,13 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/AMD/performance_monitor.txt","GL_AMD_performance_monitor")
+@Doc("https://www.khronos.org/registry/gles/extensions/AMD/performance_monitor.txt", "GL_AMD_performance_monitor")
cmd void glGetPerfMonitorCounterInfoAMD(GLuint group, GLuint counter, GLenum pname, void* data) {
requiresExtension(GL_AMD_performance_monitor)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/AMD/performance_monitor.txt","GL_AMD_performance_monitor")
+@Doc("https://www.khronos.org/registry/gles/extensions/AMD/performance_monitor.txt", "GL_AMD_performance_monitor")
cmd void glGetPerfMonitorCounterStringAMD(GLuint group,
GLuint counter,
GLsizei bufSize,
@@ -1137,7 +1157,7 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/AMD/performance_monitor.txt","GL_AMD_performance_monitor")
+@Doc("https://www.khronos.org/registry/gles/extensions/AMD/performance_monitor.txt", "GL_AMD_performance_monitor")
cmd void glGetPerfMonitorCountersAMD(GLuint group,
GLint* numCounters,
GLint* maxActiveCounters,
@@ -1147,7 +1167,7 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/AMD/performance_monitor.txt","GL_AMD_performance_monitor")
+@Doc("https://www.khronos.org/registry/gles/extensions/AMD/performance_monitor.txt", "GL_AMD_performance_monitor")
cmd void glGetPerfMonitorGroupStringAMD(GLuint group,
GLsizei bufSize,
GLsizei* length,
@@ -1156,13 +1176,13 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/AMD/performance_monitor.txt","GL_AMD_performance_monitor")
+@Doc("https://www.khronos.org/registry/gles/extensions/AMD/performance_monitor.txt", "GL_AMD_performance_monitor")
cmd void glGetPerfMonitorGroupsAMD(GLint* numGroups, GLsizei groupsSize, GLuint* groups) {
requiresExtension(GL_AMD_performance_monitor)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/INTEL/performance_query.txt","GL_INTEL_performance_query")
+@Doc("https://www.khronos.org/registry/gles/extensions/INTEL/performance_query.txt", "GL_INTEL_performance_query")
cmd void glGetPerfQueryDataINTEL(GLuint queryHandle,
GLuint flag,
GLsizei dataSize,
@@ -1172,13 +1192,13 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/INTEL/performance_query.txt","GL_INTEL_performance_query")
+@Doc("https://www.khronos.org/registry/gles/extensions/INTEL/performance_query.txt", "GL_INTEL_performance_query")
cmd void glGetPerfQueryIdByNameINTEL(GLchar* queryName, GLuint* queryId) {
requiresExtension(GL_INTEL_performance_query)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/INTEL/performance_query.txt","GL_INTEL_performance_query")
+@Doc("https://www.khronos.org/registry/gles/extensions/INTEL/performance_query.txt", "GL_INTEL_performance_query")
cmd void glGetPerfQueryInfoINTEL(GLuint queryId,
GLuint queryNameLength,
GLchar* queryName,
@@ -1190,7 +1210,7 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_get_program_binary.txt","GL_OES_get_program_binary")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_get_program_binary.txt", "GL_OES_get_program_binary")
cmd void glGetProgramBinaryOES(ProgramId program,
GLsizei buffer_size,
GLsizei* bytes_written,
@@ -1200,7 +1220,7 @@
GetProgramBinary(program, buffer_size, bytes_written, binary_format, binary)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glGetProgramPipelineInfoLogEXT(PipelineId pipeline,
GLsizei bufSize,
GLsizei* length,
@@ -1209,13 +1229,13 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glGetProgramPipelineivEXT(PipelineId pipeline, GLenum pname, GLint* params) {
requiresExtension(GL_EXT_separate_shader_objects)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_blend_func_extended.txt","GL_EXT_blend_func_extended")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_blend_func_extended.txt", "GL_EXT_blend_func_extended")
cmd GLint glGetProgramResourceLocationIndexEXT(ProgramId program,
GLenum programInterface,
string name) {
@@ -1223,7 +1243,7 @@
return ?
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glGetProgramResourcefvNV(ProgramId program,
GLenum programInterface,
GLuint index,
@@ -1236,56 +1256,56 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_disjoint_timer_query.txt","GL_EXT_disjoint_timer_query")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_disjoint_timer_query.txt", "GL_EXT_disjoint_timer_query")
cmd void glGetQueryObjecti64vEXT(QueryId query, GLenum parameter, GLint64* value) {
requiresExtension(GL_EXT_disjoint_timer_query)
value[0] = ?
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_disjoint_timer_query.txt","GL_EXT_disjoint_timer_query")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_disjoint_timer_query.txt", "GL_EXT_disjoint_timer_query")
cmd void glGetQueryObjectivEXT(QueryId query, GLenum parameter, GLint* value) {
requiresExtension(GL_EXT_disjoint_timer_query)
value[0] = ?
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_disjoint_timer_query.txt","GL_EXT_disjoint_timer_query")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_disjoint_timer_query.txt", "GL_EXT_disjoint_timer_query")
cmd void glGetQueryObjectui64vEXT(QueryId query, GLenum parameter, GLuint64* value) {
requiresExtension(GL_EXT_disjoint_timer_query)
value[0] = ?
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_disjoint_timer_query.txt","GL_EXT_disjoint_timer_query")
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_occlusion_query_boolean.txt","GL_EXT_occlusion_query_boolean")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_disjoint_timer_query.txt", "GL_EXT_disjoint_timer_query")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_occlusion_query_boolean.txt", "GL_EXT_occlusion_query_boolean")
cmd void glGetQueryObjectuivEXT(QueryId query, GLenum parameter, GLuint* value) {
requiresExtension2(GL_EXT_disjoint_timer_query, GL_EXT_occlusion_query_boolean)
value[0] = ?
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_disjoint_timer_query.txt","GL_EXT_disjoint_timer_query")
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_occlusion_query_boolean.txt","GL_EXT_occlusion_query_boolean")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_disjoint_timer_query.txt", "GL_EXT_disjoint_timer_query")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_occlusion_query_boolean.txt", "GL_EXT_occlusion_query_boolean")
cmd void glGetQueryivEXT(GLenum target, GLenum parameter, GLint* value) {
requiresExtension2(GL_EXT_disjoint_timer_query, GL_EXT_occlusion_query_boolean)
value[0] = ?
}
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_border_clamp.txt","GL_OES_texture_border_clamp")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_border_clamp.txt", "GL_OES_texture_border_clamp")
cmd void glGetSamplerParameterIivOES(SamplerId sampler, GLenum pname, GLint* params) {
requiresExtension(GL_OES_texture_border_clamp)
GetSamplerParameterIiv(sampler, pname, params)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_border_clamp.txt","GL_OES_texture_border_clamp")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_border_clamp.txt", "GL_OES_texture_border_clamp")
cmd void glGetSamplerParameterIuivOES(SamplerId sampler, GLenum pname, GLuint* params) {
requiresExtension(GL_OES_texture_border_clamp)
GetSamplerParameterIuiv(sampler, pname, params)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/APPLE/APPLE_sync.txt","GL_APPLE_sync")
+@Doc("https://www.khronos.org/registry/gles/extensions/APPLE/APPLE_sync.txt", "GL_APPLE_sync")
cmd void glGetSyncivAPPLE(GLsync sync,
GLenum pname,
GLsizei bufSize,
@@ -1295,33 +1315,33 @@
GetSynciv(sync, pname, bufSize, length, values)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_border_clamp.txt","GL_OES_texture_border_clamp")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_border_clamp.txt", "GL_OES_texture_border_clamp")
cmd void glGetTexParameterIivOES(GLenum target, GLenum pname, GLint* params) {
requiresExtension(GL_OES_texture_border_clamp)
GetTexParameterIiv(target, pname, params)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_border_clamp.txt","GL_OES_texture_border_clamp")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_border_clamp.txt", "GL_OES_texture_border_clamp")
cmd void glGetTexParameterIuivOES(GLenum target, GLenum pname, GLuint* params) {
requiresExtension(GL_OES_texture_border_clamp)
GetTexParameterIuiv(target, pname, params)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/bindless_texture.txt","GL_NV_bindless_texture")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/bindless_texture.txt", "GL_NV_bindless_texture")
cmd GLuint64 glGetTextureHandleNV(TextureId texture) {
requiresExtension(GL_NV_bindless_texture)
// TODO
return ?
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/bindless_texture.txt","GL_NV_bindless_texture")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/bindless_texture.txt", "GL_NV_bindless_texture")
cmd GLuint64 glGetTextureSamplerHandleNV(TextureId texture, SamplerId sampler) {
requiresExtension(GL_NV_bindless_texture)
// TODO
return ?
}
-@Doc("https://www.khronos.org/registry/gles/extensions/ANGLE/ANGLE_translated_shader_source.txt","GL_ANGLE_translated_shader_source")
+@Doc("https://www.khronos.org/registry/gles/extensions/ANGLE/ANGLE_translated_shader_source.txt", "GL_ANGLE_translated_shader_source")
cmd void glGetTranslatedShaderSourceANGLE(ShaderId shader,
GLsizei bufsize,
GLsizei* length,
@@ -1330,7 +1350,7 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_robustness.txt","GL_EXT_robustness")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_robustness.txt", "GL_EXT_robustness")
cmd void glGetnUniformfvEXT(ProgramId program,
UniformLocation location,
GLsizei bufSize,
@@ -1339,7 +1359,7 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/KHR/robustness.txt","GL_KHR_robustness")
+@Doc("https://www.khronos.org/registry/gles/extensions/KHR/robustness.txt", "GL_KHR_robustness")
cmd void glGetnUniformfvKHR(ProgramId program,
UniformLocation location,
GLsizei bufSize,
@@ -1348,7 +1368,7 @@
GetnUniformfv!GLfloat*(program, location, bufSize, params)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_robustness.txt","GL_EXT_robustness")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_robustness.txt", "GL_EXT_robustness")
cmd void glGetnUniformivEXT(ProgramId program,
UniformLocation location,
GLsizei bufSize,
@@ -1357,7 +1377,7 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/KHR/robustness.txt","GL_KHR_robustness")
+@Doc("https://www.khronos.org/registry/gles/extensions/KHR/robustness.txt", "GL_KHR_robustness")
cmd void glGetnUniformivKHR(ProgramId program,
UniformLocation location,
GLsizei bufSize,
@@ -1366,7 +1386,7 @@
GetnUniformiv(program, location, bufSize, params)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/KHR/robustness.txt","GL_KHR_robustness")
+@Doc("https://www.khronos.org/registry/gles/extensions/KHR/robustness.txt", "GL_KHR_robustness")
cmd void glGetnUniformuivKHR(ProgramId program,
UniformLocation location,
GLsizei bufSize,
@@ -1376,7 +1396,7 @@
}
@UserMarker
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_debug_marker.txt","GL_EXT_debug_marker")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_debug_marker.txt", "GL_EXT_debug_marker")
cmd void glInsertEventMarkerEXT(GLsizei length, const GLchar* marker) {
requiresExtension(GL_EXT_debug_marker)
@@ -1388,68 +1408,69 @@
}
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glInterpolatePathsNV(GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight) {
requiresExtension(GL_NV_path_rendering)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_viewport_array.txt","GL_NV_viewport_array")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_viewport_array.txt", "GL_NV_viewport_array")
cmd GLboolean glIsEnablediNV(GLenum target, GLuint index) {
requiresExtension(GL_NV_viewport_array)
return IsEnabledi(target, index)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_draw_buffers_indexed.txt","GL_OES_draw_buffers_indexed")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_draw_buffers_indexed.txt", "GL_OES_draw_buffers_indexed")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_viewport_array.txt", "GL_OES_viewport_array")
cmd GLboolean glIsEnablediOES(GLenum target, GLuint index) {
- requiresExtension(GL_OES_draw_buffers_indexed)
+ requiresExtension2(GL_OES_draw_buffers_indexed, GL_OES_viewport_array)
return IsEnabledi(target, index)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/fence.txt","GL_NV_fence")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/fence.txt", "GL_NV_fence")
cmd GLboolean glIsFenceNV(GLuint fence) {
requiresExtension(GL_NV_fence)
// TODO
return ?
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/bindless_texture.txt","GL_NV_bindless_texture")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/bindless_texture.txt", "GL_NV_bindless_texture")
cmd GLboolean glIsImageHandleResidentNV(GLuint64 handle) {
requiresExtension(GL_NV_bindless_texture)
// TODO
return ?
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd GLboolean glIsPathNV(GLuint path) {
requiresExtension(GL_NV_path_rendering)
// TODO
return ?
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd GLboolean glIsPointInFillPathNV(GLuint path, GLuint mask, GLfloat x, GLfloat y) {
requiresExtension(GL_NV_path_rendering)
// TODO
return ?
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd GLboolean glIsPointInStrokePathNV(GLuint path, GLfloat x, GLfloat y) {
requiresExtension(GL_NV_path_rendering)
// TODO
return ?
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd GLboolean glIsProgramPipelineEXT(PipelineId pipeline) {
requiresExtension(GL_EXT_separate_shader_objects)
// TODO
return ?
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_disjoint_timer_query.txt","GL_EXT_disjoint_timer_query")
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_occlusion_query_boolean.txt","GL_EXT_occlusion_query_boolean")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_disjoint_timer_query.txt", "GL_EXT_disjoint_timer_query")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_occlusion_query_boolean.txt", "GL_EXT_occlusion_query_boolean")
cmd GLboolean glIsQueryEXT(QueryId query) {
requiresExtension2(GL_EXT_disjoint_timer_query, GL_EXT_occlusion_query_boolean)
@@ -1457,26 +1478,26 @@
return as!GLboolean(query in ctx.Instances.Queries)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/APPLE/APPLE_sync.txt","GL_APPLE_sync")
+@Doc("https://www.khronos.org/registry/gles/extensions/APPLE/APPLE_sync.txt", "GL_APPLE_sync")
cmd GLboolean glIsSyncAPPLE(GLsync sync) {
requiresExtension(GL_APPLE_sync)
return IsSync(sync)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/bindless_texture.txt","GL_NV_bindless_texture")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/bindless_texture.txt", "GL_NV_bindless_texture")
cmd GLboolean glIsTextureHandleResidentNV(GLuint64 handle) {
requiresExtension(GL_NV_bindless_texture)
// TODO
return ?
}
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_vertex_array_object.txt","GL_OES_vertex_array_object")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_vertex_array_object.txt", "GL_OES_vertex_array_object")
cmd GLboolean glIsVertexArrayOES(VertexArrayId array) {
requiresExtension(GL_OES_vertex_array_object)
return IsVertexArray(array)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_debug_label.txt","GL_EXT_debug_label")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_debug_label.txt", "GL_EXT_debug_label")
cmd void glLabelObjectEXT(GLenum type, GLuint object, GLsizei length, const GLchar* label) {
requiresExtension(GL_EXT_debug_label)
@@ -1546,31 +1567,31 @@
}
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/bindless_texture.txt","GL_NV_bindless_texture")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/bindless_texture.txt", "GL_NV_bindless_texture")
cmd void glMakeImageHandleNonResidentNV(GLuint64 handle) {
requiresExtension(GL_NV_bindless_texture)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/bindless_texture.txt","GL_NV_bindless_texture")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/bindless_texture.txt", "GL_NV_bindless_texture")
cmd void glMakeImageHandleResidentNV(GLuint64 handle, GLenum access) {
requiresExtension(GL_NV_bindless_texture)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/bindless_texture.txt","GL_NV_bindless_texture")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/bindless_texture.txt", "GL_NV_bindless_texture")
cmd void glMakeTextureHandleNonResidentNV(GLuint64 handle) {
requiresExtension(GL_NV_bindless_texture)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/bindless_texture.txt","GL_NV_bindless_texture")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/bindless_texture.txt", "GL_NV_bindless_texture")
cmd void glMakeTextureHandleResidentNV(GLuint64 handle) {
requiresExtension(GL_NV_bindless_texture)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_mapbuffer.txt","GL_OES_mapbuffer")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_mapbuffer.txt", "GL_OES_mapbuffer")
cmd void* glMapBufferOES(GLenum target, GLenum access) {
requiresExtension(GL_OES_mapbuffer)
ptr := ?
@@ -1578,7 +1599,7 @@
return ptr
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_map_buffer_range.txt","GL_EXT_map_buffer_range")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_map_buffer_range.txt", "GL_EXT_map_buffer_range")
cmd void* glMapBufferRangeEXT(GLenum target,
GLintptr offset,
GLsizeiptr length,
@@ -1589,43 +1610,43 @@
return ptr
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glMatrixLoad3x2fNV(GLenum matrixMode, const GLfloat* m) {
requiresExtension(GL_NV_path_rendering)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glMatrixLoad3x3fNV(GLenum matrixMode, const GLfloat* m) {
requiresExtension(GL_NV_path_rendering)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glMatrixLoadTranspose3x3fNV(GLenum matrixMode, const GLfloat* m) {
requiresExtension(GL_NV_path_rendering)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glMatrixMult3x2fNV(GLenum matrixMode, const GLfloat* m) {
requiresExtension(GL_NV_path_rendering)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glMatrixMult3x3fNV(GLenum matrixMode, const GLfloat* m) {
requiresExtension(GL_NV_path_rendering)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glMatrixMultTranspose3x3fNV(GLenum matrixMode, const GLfloat* m) {
requiresExtension(GL_NV_path_rendering)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/multi_draw_arrays.txt","GL_EXT_multi_draw_arrays")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/multi_draw_arrays.txt", "GL_EXT_multi_draw_arrays")
cmd void glMultiDrawArraysEXT(GLenum mode,
const GLint* first,
const GLsizei* count,
@@ -1634,7 +1655,7 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_multi_draw_indirect.txt","GL_EXT_multi_draw_indirect")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_multi_draw_indirect.txt", "GL_EXT_multi_draw_indirect")
cmd void glMultiDrawArraysIndirectEXT(GLenum mode,
const void* indirect,
GLsizei drawcount,
@@ -1643,7 +1664,7 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_draw_elements_base_vertex.txt","GL_EXT_draw_elements_base_vertex")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_draw_elements_base_vertex.txt", "GL_EXT_draw_elements_base_vertex")
cmd void glMultiDrawElementsBaseVertexEXT(GLenum mode,
const GLsizei* count,
GLenum type,
@@ -1654,7 +1675,7 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_draw_elements_base_vertex.txt","GL_OES_draw_elements_base_vertex")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_draw_elements_base_vertex.txt", "GL_OES_draw_elements_base_vertex")
cmd void glMultiDrawElementsBaseVertexOES(GLenum mode,
const GLsizei* count,
GLenum type,
@@ -1665,7 +1686,7 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/multi_draw_arrays.txt","GL_EXT_multi_draw_arrays")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/multi_draw_arrays.txt", "GL_EXT_multi_draw_arrays")
cmd void glMultiDrawElementsEXT(GLenum mode,
const GLsizei* count,
GLenum type,
@@ -1675,7 +1696,7 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_multi_draw_indirect.txt","GL_EXT_multi_draw_indirect")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_multi_draw_indirect.txt", "GL_EXT_multi_draw_indirect")
cmd void glMultiDrawElementsIndirectEXT(GLenum mode,
GLenum type,
const void* indirect,
@@ -1685,7 +1706,7 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/sample_locations.txt","GL_NV_sample_locations")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/sample_locations.txt", "GL_NV_sample_locations")
cmd void glNamedFramebufferSampleLocationsfvNV(FramebufferId framebuffer,
GLuint start,
GLsizei count,
@@ -1694,13 +1715,13 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_tessellation_shader.txt","GL_OES_tessellation_shader")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_tessellation_shader.txt", "GL_OES_tessellation_shader")
cmd void glPatchParameteriOES(GLenum pname, GLint value) {
requiresExtension(GL_OES_tessellation_shader)
PatchParameteri(pname, value)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glPathCommandsNV(GLuint path,
GLsizei numCommands,
const GLubyte* commands,
@@ -1711,25 +1732,25 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glPathCoordsNV(GLuint path, GLsizei numCoords, GLenum coordType, const void* coords) {
requiresExtension(GL_NV_path_rendering)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glPathCoverDepthFuncNV(GLenum func) {
requiresExtension(GL_NV_path_rendering)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glPathDashArrayNV(GLuint path, GLsizei dashCount, const GLfloat* dashArray) {
requiresExtension(GL_NV_path_rendering)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd GLenum glPathGlyphIndexArrayNV(GLuint firstPathName,
GLenum fontTarget,
const void* fontName,
@@ -1743,7 +1764,7 @@
return ?
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd GLenum glPathGlyphIndexRangeNV(GLenum fontTarget,
const void* fontName,
GLbitfield fontStyle,
@@ -1755,7 +1776,7 @@
return ?
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glPathGlyphRangeNV(GLuint firstPathName,
GLenum fontTarget,
const void* fontName,
@@ -1769,7 +1790,7 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glPathGlyphsNV(GLuint firstPathName,
GLenum fontTarget,
const void* fontName,
@@ -1784,7 +1805,7 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd GLenum glPathMemoryGlyphIndexArrayNV(GLuint firstPathName,
GLenum fontTarget,
GLsizeiptr fontSize,
@@ -1799,49 +1820,49 @@
return ?
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glPathParameterfNV(GLuint path, GLenum pname, GLfloat value) {
requiresExtension(GL_NV_path_rendering)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glPathParameterfvNV(GLuint path, GLenum pname, const GLfloat* value) {
requiresExtension(GL_NV_path_rendering)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glPathParameteriNV(GLuint path, GLenum pname, GLint value) {
requiresExtension(GL_NV_path_rendering)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glPathParameterivNV(GLuint path, GLenum pname, const GLint* value) {
requiresExtension(GL_NV_path_rendering)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glPathStencilDepthOffsetNV(GLfloat factor, GLfloat units) {
requiresExtension(GL_NV_path_rendering)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glPathStencilFuncNV(GLenum func, GLint ref, GLuint mask) {
requiresExtension(GL_NV_path_rendering)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glPathStringNV(GLuint path, GLenum format, GLsizei length, const void* pathString) {
requiresExtension(GL_NV_path_rendering)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glPathSubCommandsNV(GLuint path,
GLsizei commandStart,
GLsizei commandsToDelete,
@@ -1854,7 +1875,7 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glPathSubCoordsNV(GLuint path,
GLsizei coordStart,
GLsizei numCoords,
@@ -1864,7 +1885,7 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd GLboolean glPointAlongPathNV(GLuint path,
GLsizei startSegment,
GLsizei numSegments,
@@ -1878,19 +1899,19 @@
return ?
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_polygon_mode.txt","GL_NV_polygon_mode")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_polygon_mode.txt", "GL_NV_polygon_mode")
cmd void glPolygonModeNV(GLenum face, GLenum mode) {
requiresExtension(GL_NV_polygon_mode)
// TODO
}
@PopUserMarker
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_debug_marker.txt","GL_EXT_debug_marker")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_debug_marker.txt", "GL_EXT_debug_marker")
cmd void glPopGroupMarkerEXT() {
requiresExtension(GL_EXT_debug_marker)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_primitive_bounding_box.txt","GL_OES_primitive_bounding_box")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_primitive_bounding_box.txt", "GL_OES_primitive_bounding_box")
cmd void glPrimitiveBoundingBoxOES(GLfloat minX,
GLfloat minY,
GLfloat minZ,
@@ -1904,7 +1925,7 @@
}
@custom
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_get_program_binary.txt","GL_OES_get_program_binary")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_get_program_binary.txt", "GL_OES_get_program_binary")
cmd void glProgramBinaryOES(ProgramId program,
GLenum binary_format,
const void* binary,
@@ -1914,13 +1935,13 @@
ProgramBinary(program, binary_format, binary, as!GLsizei(binary_size))
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glProgramParameteriEXT(ProgramId program, GLenum pname, GLint value) {
requiresExtension(GL_EXT_separate_shader_objects)
ProgramParameteri(program, pname, value)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glProgramPathFragmentInputGenNV(ProgramId program,
GLint location,
GLenum genMode,
@@ -1930,13 +1951,13 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glProgramUniform1fEXT(ProgramId program, UniformLocation location, GLfloat v0) {
requiresExtension(GL_EXT_separate_shader_objects)
ProgramUniform1f(program, location, v0)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glProgramUniform1fvEXT(ProgramId program,
UniformLocation location,
GLsizei count,
@@ -1945,13 +1966,13 @@
ProgramUniform1fv(program, location, count, value)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glProgramUniform1iEXT(ProgramId program, UniformLocation location, GLint v0) {
requiresExtension(GL_EXT_separate_shader_objects)
ProgramUniform1i(program, location, v0)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glProgramUniform1ivEXT(ProgramId program,
UniformLocation location,
GLsizei count,
@@ -1960,13 +1981,13 @@
ProgramUniform1iv(program, location, count, value)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glProgramUniform1uiEXT(ProgramId program, UniformLocation location, GLuint v0) {
requiresExtension(GL_EXT_separate_shader_objects)
ProgramUniform1ui(program, location, v0)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glProgramUniform1uivEXT(ProgramId program,
UniformLocation location,
GLsizei count,
@@ -1975,7 +1996,7 @@
ProgramUniform1uiv(program, location, count, value)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glProgramUniform2fEXT(ProgramId program,
UniformLocation location,
GLfloat v0,
@@ -1984,7 +2005,7 @@
ProgramUniform2f(program, location, v0, v1)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glProgramUniform2fvEXT(ProgramId program,
UniformLocation location,
GLsizei count,
@@ -1993,13 +2014,13 @@
ProgramUniform2fv(program, location, count, value)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glProgramUniform2iEXT(ProgramId program, UniformLocation location, GLint v0, GLint v1) {
requiresExtension(GL_EXT_separate_shader_objects)
ProgramUniform2i(program, location, v0, v1)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glProgramUniform2ivEXT(ProgramId program,
UniformLocation location,
GLsizei count,
@@ -2008,13 +2029,13 @@
ProgramUniform2iv(program, location, count, value)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glProgramUniform2uiEXT(ProgramId program, UniformLocation location, GLuint v0, GLuint v1) {
requiresExtension(GL_EXT_separate_shader_objects)
ProgramUniform2ui(program, location, v0, v1)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glProgramUniform2uivEXT(ProgramId program,
UniformLocation location,
GLsizei count,
@@ -2023,7 +2044,7 @@
ProgramUniform2uiv(program, location, count, value)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glProgramUniform3fEXT(ProgramId program,
UniformLocation location,
GLfloat v0,
@@ -2033,7 +2054,7 @@
ProgramUniform3f(program, location, v0, v1, v2)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glProgramUniform3fvEXT(ProgramId program,
UniformLocation location,
GLsizei count,
@@ -2042,7 +2063,7 @@
ProgramUniform3fv(program, location, count, value)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glProgramUniform3iEXT(ProgramId program,
UniformLocation location,
GLint v0,
@@ -2052,7 +2073,7 @@
ProgramUniform3i(program, location, v0, v1, v2)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glProgramUniform3ivEXT(ProgramId program,
UniformLocation location,
GLsizei count,
@@ -2061,7 +2082,7 @@
ProgramUniform3iv(program, location, count, value)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glProgramUniform3uiEXT(ProgramId program,
UniformLocation location,
GLuint v0,
@@ -2071,7 +2092,7 @@
ProgramUniform3ui(program, location, v0, v1, v2)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glProgramUniform3uivEXT(ProgramId program,
UniformLocation location,
GLsizei count,
@@ -2080,7 +2101,7 @@
ProgramUniform3uiv(program, location, count, value)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glProgramUniform4fEXT(ProgramId program,
UniformLocation location,
GLfloat v0,
@@ -2091,7 +2112,7 @@
ProgramUniform4f(program, location, v0, v1, v2, v3)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glProgramUniform4fvEXT(ProgramId program,
UniformLocation location,
GLsizei count,
@@ -2100,7 +2121,7 @@
ProgramUniform4fv(program, location, count, value)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glProgramUniform4iEXT(ProgramId program,
UniformLocation location,
GLint v0,
@@ -2111,7 +2132,7 @@
ProgramUniform4i(program, location, v0, v1, v2, v3)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glProgramUniform4ivEXT(ProgramId program,
UniformLocation location,
GLsizei count,
@@ -2120,7 +2141,7 @@
ProgramUniform4iv(program, location, count, value)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glProgramUniform4uiEXT(ProgramId program,
UniformLocation location,
GLuint v0,
@@ -2131,7 +2152,7 @@
ProgramUniform4ui(program, location, v0, v1, v2, v3)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glProgramUniform4uivEXT(ProgramId program,
UniformLocation location,
GLsizei count,
@@ -2140,13 +2161,13 @@
ProgramUniform4uiv(program, location, count, value)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/bindless_texture.txt","GL_NV_bindless_texture")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/bindless_texture.txt", "GL_NV_bindless_texture")
cmd void glProgramUniformHandleui64NV(ProgramId program, UniformLocation location, GLuint64 value) {
requiresExtension(GL_NV_bindless_texture)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/bindless_texture.txt","GL_NV_bindless_texture")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/bindless_texture.txt", "GL_NV_bindless_texture")
cmd void glProgramUniformHandleui64vNV(ProgramId program,
UniformLocation location,
GLsizei count,
@@ -2155,7 +2176,7 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glProgramUniformMatrix2fvEXT(ProgramId program,
UniformLocation location,
GLsizei count,
@@ -2165,7 +2186,7 @@
ProgramUniformMatrix2fv(program, location, count, transpose, value)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glProgramUniformMatrix2x3fvEXT(ProgramId program,
UniformLocation location,
GLsizei count,
@@ -2175,7 +2196,7 @@
ProgramUniformMatrix2x3fv(program, location, count, transpose, value)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glProgramUniformMatrix2x4fvEXT(ProgramId program,
UniformLocation location,
GLsizei count,
@@ -2185,7 +2206,7 @@
ProgramUniformMatrix2x4fv(program, location, count, transpose, value)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glProgramUniformMatrix3fvEXT(ProgramId program,
UniformLocation location,
GLsizei count,
@@ -2195,7 +2216,7 @@
ProgramUniformMatrix3fv(program, location, count, transpose, value)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glProgramUniformMatrix3x2fvEXT(ProgramId program,
UniformLocation location,
GLsizei count,
@@ -2205,7 +2226,7 @@
ProgramUniformMatrix3x2fv(program, location, count, transpose, value)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glProgramUniformMatrix3x4fvEXT(ProgramId program,
UniformLocation location,
GLsizei count,
@@ -2215,7 +2236,7 @@
ProgramUniformMatrix3x4fv(program, location, count, transpose, value)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glProgramUniformMatrix4fvEXT(ProgramId program,
UniformLocation location,
GLsizei count,
@@ -2225,7 +2246,7 @@
ProgramUniformMatrix4fv(program, location, count, transpose, value)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glProgramUniformMatrix4x2fvEXT(ProgramId program,
UniformLocation location,
GLsizei count,
@@ -2235,7 +2256,7 @@
ProgramUniformMatrix4x2fv(program, location, count, transpose, value)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glProgramUniformMatrix4x3fvEXT(ProgramId program,
UniformLocation location,
GLsizei count,
@@ -2246,7 +2267,7 @@
}
@PushUserMarker
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_debug_marker.txt","GL_EXT_debug_marker")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_debug_marker.txt", "GL_EXT_debug_marker")
cmd void glPushGroupMarkerEXT(GLsizei length, const GLchar* marker) {
requiresExtension(GL_EXT_debug_marker)
@@ -2257,33 +2278,33 @@
}
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_disjoint_timer_query.txt","GL_EXT_disjoint_timer_query")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_disjoint_timer_query.txt", "GL_EXT_disjoint_timer_query")
cmd void glQueryCounterEXT(QueryId query, GLenum target) {
requiresExtension(GL_EXT_disjoint_timer_query)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/raster_multisample.txt","GL_EXT_raster_multisample")
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/texture_filter_minmax.txt","GL_EXT_texture_filter_minmax")
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/framebuffer_mixed_samples.txt","GL_NV_framebuffer_mixed_samples")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/raster_multisample.txt", "GL_EXT_raster_multisample")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/texture_filter_minmax.txt", "GL_EXT_texture_filter_minmax")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/framebuffer_mixed_samples.txt", "GL_NV_framebuffer_mixed_samples")
cmd void glRasterSamplesEXT(GLuint samples, GLboolean fixedsamplelocations) {
requiresExtension3(GL_EXT_raster_multisample, GL_EXT_texture_filter_minmax, GL_NV_framebuffer_mixed_samples)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_multiview_draw_buffers.txt","GL_EXT_multiview_draw_buffers")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_multiview_draw_buffers.txt", "GL_EXT_multiview_draw_buffers")
cmd void glReadBufferIndexedEXT(GLenum src, GLint index) {
requiresExtension(GL_EXT_multiview_draw_buffers)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_read_buffer.txt","GL_NV_read_buffer")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_read_buffer.txt", "GL_NV_read_buffer")
cmd void glReadBufferNV(GLenum mode) {
requiresExtension(GL_NV_read_buffer)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_robustness.txt","GL_EXT_robustness")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_robustness.txt", "GL_EXT_robustness")
cmd void glReadnPixelsEXT(GLint x,
GLint y,
GLsizei width,
@@ -2296,7 +2317,7 @@
ReadnPixels(x, y, width, height, format, type, bufSize, data)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/KHR/robustness.txt","GL_KHR_robustness")
+@Doc("https://www.khronos.org/registry/gles/extensions/KHR/robustness.txt", "GL_KHR_robustness")
cmd void glReadnPixelsKHR(GLint x,
GLint y,
GLsizei width,
@@ -2309,7 +2330,7 @@
ReadnPixels(x, y, width, height, format, type, bufSize, data)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/ANGLE/ANGLE_framebuffer_multisample.txt","GL_ANGLE_framebuffer_multisample")
+@Doc("https://www.khronos.org/registry/gles/extensions/ANGLE/ANGLE_framebuffer_multisample.txt", "GL_ANGLE_framebuffer_multisample")
cmd void glRenderbufferStorageMultisampleANGLE(GLenum target,
GLsizei samples,
GLenum internalformat,
@@ -2319,7 +2340,7 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/APPLE/APPLE_framebuffer_multisample.txt","GL_APPLE_framebuffer_multisample")
+@Doc("https://www.khronos.org/registry/gles/extensions/APPLE/APPLE_framebuffer_multisample.txt", "GL_APPLE_framebuffer_multisample")
cmd void glRenderbufferStorageMultisampleAPPLE(GLenum target,
GLsizei samples,
GLenum internalformat,
@@ -2329,7 +2350,7 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_multisampled_render_to_texture.txt","GL_EXT_multisampled_render_to_texture")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_multisampled_render_to_texture.txt", "GL_EXT_multisampled_render_to_texture")
cmd void glRenderbufferStorageMultisampleEXT(GLenum target,
GLsizei samples,
GLenum internalformat,
@@ -2339,7 +2360,7 @@
RenderbufferStorageMultisample(target, samples, internalformat, width, height)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/IMG/IMG_multisampled_render_to_texture.txt","GL_IMG_multisampled_render_to_texture")
+@Doc("https://www.khronos.org/registry/gles/extensions/IMG/IMG_multisampled_render_to_texture.txt", "GL_IMG_multisampled_render_to_texture")
cmd void glRenderbufferStorageMultisampleIMG(GLenum target,
GLsizei samples,
GLenum internalformat,
@@ -2349,7 +2370,7 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_framebuffer_multisample.txt","GL_NV_framebuffer_multisample")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_framebuffer_multisample.txt", "GL_NV_framebuffer_multisample")
cmd void glRenderbufferStorageMultisampleNV(GLenum target,
GLsizei samples,
GLenum internalformat,
@@ -2359,49 +2380,49 @@
RenderbufferStorageMultisample(target, samples, internalformat, width, height)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/sample_locations.txt","GL_NV_sample_locations")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/sample_locations.txt", "GL_NV_sample_locations")
cmd void glResolveDepthValuesNV() {
requiresExtension(GL_NV_sample_locations)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/APPLE/APPLE_framebuffer_multisample.txt","GL_APPLE_framebuffer_multisample")
+@Doc("https://www.khronos.org/registry/gles/extensions/APPLE/APPLE_framebuffer_multisample.txt", "GL_APPLE_framebuffer_multisample")
cmd void glResolveMultisampleFramebufferAPPLE() {
requiresExtension(GL_APPLE_framebuffer_multisample)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_border_clamp.txt","GL_OES_texture_border_clamp")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_border_clamp.txt", "GL_OES_texture_border_clamp")
cmd void glSamplerParameterIivOES(SamplerId sampler, GLenum pname, const GLint* param) {
requiresExtension(GL_OES_texture_border_clamp)
SamplerParameterIiv(sampler, pname, param)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_border_clamp.txt","GL_OES_texture_border_clamp")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_border_clamp.txt", "GL_OES_texture_border_clamp")
cmd void glSamplerParameterIuivOES(SamplerId sampler, GLenum pname, const GLuint* param) {
requiresExtension(GL_OES_texture_border_clamp)
SamplerParameterIuiv(sampler, pname, param)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_viewport_array.txt","GL_NV_viewport_array")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_viewport_array.txt", "GL_NV_viewport_array")
cmd void glScissorArrayvNV(GLuint first, GLsizei count, const GLint* v) {
requiresExtension(GL_NV_viewport_array)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_viewport_array.txt","GL_NV_viewport_array")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_viewport_array.txt", "GL_NV_viewport_array")
cmd void glScissorIndexedNV(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height) {
requiresExtension(GL_NV_viewport_array)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_viewport_array.txt","GL_NV_viewport_array")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_viewport_array.txt", "GL_NV_viewport_array")
cmd void glScissorIndexedvNV(GLuint index, const GLint* v) {
requiresExtension(GL_NV_viewport_array)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/AMD/performance_monitor.txt","GL_AMD_performance_monitor")
+@Doc("https://www.khronos.org/registry/gles/extensions/AMD/performance_monitor.txt", "GL_AMD_performance_monitor")
cmd void glSelectPerfMonitorCountersAMD(GLuint monitor,
GLboolean enable,
GLuint group,
@@ -2411,13 +2432,13 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/fence.txt","GL_NV_fence")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/fence.txt", "GL_NV_fence")
cmd void glSetFenceNV(GLuint fence, GLenum condition) {
requiresExtension(GL_NV_fence)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_tiled_rendering.txt","GL_QCOM_tiled_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_tiled_rendering.txt", "GL_QCOM_tiled_rendering")
cmd void glStartTilingQCOM(GLuint x,
GLuint y,
GLuint width,
@@ -2427,7 +2448,7 @@
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glStencilFillPathInstancedNV(GLsizei numPaths,
GLenum pathNameType,
const void* paths,
@@ -2440,13 +2461,13 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glStencilFillPathNV(GLuint path, GLenum fillMode, GLuint mask) {
requiresExtension(GL_NV_path_rendering)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glStencilStrokePathInstancedNV(GLsizei numPaths,
GLenum pathNameType,
const void* paths,
@@ -2459,13 +2480,13 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glStencilStrokePathNV(GLuint path, GLint reference, GLuint mask) {
requiresExtension(GL_NV_path_rendering)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glStencilThenCoverFillPathInstancedNV(GLsizei numPaths,
GLenum pathNameType,
const void* paths,
@@ -2479,13 +2500,13 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glStencilThenCoverFillPathNV(GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode) {
requiresExtension(GL_NV_path_rendering)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glStencilThenCoverStrokePathInstancedNV(GLsizei numPaths,
GLenum pathNameType,
const void* paths,
@@ -2499,7 +2520,7 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glStencilThenCoverStrokePathNV(GLuint path,
GLint reference,
GLuint mask,
@@ -2508,26 +2529,26 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/conservative_raster.txt","GL_NV_conservative_raster")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/conservative_raster.txt", "GL_NV_conservative_raster")
cmd void glSubpixelPrecisionBiasNV(GLuint xbits, GLuint ybits) {
requiresExtension(GL_NV_conservative_raster)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/fence.txt","GL_NV_fence")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/fence.txt", "GL_NV_fence")
cmd GLboolean glTestFenceNV(GLuint fence) {
requiresExtension(GL_NV_fence)
// TODO
return ?
}
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_buffer.txt","GL_OES_texture_buffer")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_buffer.txt", "GL_OES_texture_buffer")
cmd void glTexBufferOES(GLenum target, GLenum internalformat, BufferId buffer) {
requiresExtension(GL_OES_texture_buffer)
TexBuffer(target, internalformat, buffer)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_buffer.txt","GL_OES_texture_buffer")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_buffer.txt", "GL_OES_texture_buffer")
cmd void glTexBufferRangeOES(GLenum target,
GLenum internalformat,
BufferId buffer,
@@ -2537,7 +2558,7 @@
TexBufferRange(target, internalformat, buffer, offset, size)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_3D.txt","GL_OES_texture_3D")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_3D.txt", "GL_OES_texture_3D")
cmd void glTexImage3DOES(GLenum target,
GLint level,
GLenum internalformat,
@@ -2553,7 +2574,7 @@
TexImage3D(target, level, as!GLint(internalformat), width, height, depth, border, format, type, pixels)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_sparse_texture.txt","GL_EXT_sparse_texture")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_sparse_texture.txt", "GL_EXT_sparse_texture")
cmd void glTexPageCommitmentEXT(GLenum target,
GLint level,
GLint xoffset,
@@ -2567,25 +2588,25 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_border_clamp.txt","GL_OES_texture_border_clamp")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_border_clamp.txt", "GL_OES_texture_border_clamp")
cmd void glTexParameterIivOES(GLenum target, GLenum pname, const GLint* params) {
requiresExtension(GL_OES_texture_border_clamp)
TexParameterIiv(target, pname, params)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_border_clamp.txt","GL_OES_texture_border_clamp")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_border_clamp.txt", "GL_OES_texture_border_clamp")
cmd void glTexParameterIuivOES(GLenum target, GLenum pname, const GLuint* params) {
requiresExtension(GL_OES_texture_border_clamp)
TexParameterIuiv(target, pname, params)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_texture_storage.txt","GL_EXT_texture_storage")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_texture_storage.txt", "GL_EXT_texture_storage")
cmd void glTexStorage1DEXT(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width) {
requiresExtension(GL_EXT_texture_storage)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_texture_storage.txt","GL_EXT_texture_storage")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_texture_storage.txt", "GL_EXT_texture_storage")
cmd void glTexStorage2DEXT(GLenum target,
GLsizei levels,
GLenum internalformat,
@@ -2595,7 +2616,7 @@
TexStorage2D(target, levels, internalformat, width, height)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_texture_storage.txt","GL_EXT_texture_storage")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_texture_storage.txt", "GL_EXT_texture_storage")
cmd void glTexStorage3DEXT(GLenum target,
GLsizei levels,
GLenum internalformat,
@@ -2606,7 +2627,7 @@
TexStorage3D(target, levels, internalformat, width, height, depth)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_3D.txt","GL_OES_texture_3D")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_3D.txt", "GL_OES_texture_3D")
cmd void glTexSubImage3DOES(GLenum target,
GLint level,
GLint xoffset,
@@ -2622,7 +2643,7 @@
TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_texture_storage.txt","GL_EXT_texture_storage")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_texture_storage.txt", "GL_EXT_texture_storage")
cmd void glTextureStorage1DEXT(TextureId texture,
GLenum target,
GLsizei levels,
@@ -2632,7 +2653,7 @@
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_texture_storage.txt","GL_EXT_texture_storage")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_texture_storage.txt", "GL_EXT_texture_storage")
cmd void glTextureStorage2DEXT(TextureId texture,
GLenum target,
GLsizei levels,
@@ -2643,7 +2664,7 @@
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_texture_storage.txt","GL_EXT_texture_storage")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_texture_storage.txt", "GL_EXT_texture_storage")
cmd void glTextureStorage3DEXT(TextureId texture,
GLenum target,
GLsizei levels,
@@ -2655,7 +2676,7 @@
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_texture_view.txt","GL_EXT_texture_view")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_texture_view.txt", "GL_EXT_texture_view")
cmd void glTextureViewEXT(TextureId texture,
GLenum target,
GLuint origtexture,
@@ -2668,7 +2689,7 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_view.txt","GL_OES_texture_view")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_view.txt", "GL_OES_texture_view")
cmd void glTextureViewOES(TextureId texture,
GLenum target,
GLuint origtexture,
@@ -2681,7 +2702,7 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glTransformPathNV(GLuint resultPath,
GLuint srcPath,
GLenum transformType,
@@ -2690,19 +2711,19 @@
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/bindless_texture.txt","GL_NV_bindless_texture")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/bindless_texture.txt", "GL_NV_bindless_texture")
cmd void glUniformHandleui64NV(UniformLocation location, GLuint64 value) {
requiresExtension(GL_NV_bindless_texture)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/bindless_texture.txt","GL_NV_bindless_texture")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/bindless_texture.txt", "GL_NV_bindless_texture")
cmd void glUniformHandleui64vNV(UniformLocation location, GLsizei count, const GLuint64* value) {
requiresExtension(GL_NV_bindless_texture)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_non_square_matrices.txt","GL_NV_non_square_matrices")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_non_square_matrices.txt", "GL_NV_non_square_matrices")
cmd void glUniformMatrix2x3fvNV(UniformLocation location,
GLsizei count,
GLboolean transpose,
@@ -2711,7 +2732,7 @@
UniformMatrix2x3fv(location, count, transpose, value)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_non_square_matrices.txt","GL_NV_non_square_matrices")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_non_square_matrices.txt", "GL_NV_non_square_matrices")
cmd void glUniformMatrix2x4fvNV(UniformLocation location,
GLsizei count,
GLboolean transpose,
@@ -2720,7 +2741,7 @@
UniformMatrix2x4fv(location, count, transpose, value)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_non_square_matrices.txt","GL_NV_non_square_matrices")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_non_square_matrices.txt", "GL_NV_non_square_matrices")
cmd void glUniformMatrix3x2fvNV(UniformLocation location,
GLsizei count,
GLboolean transpose,
@@ -2729,7 +2750,7 @@
UniformMatrix3x2fv(location, count, transpose, value)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_non_square_matrices.txt","GL_NV_non_square_matrices")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_non_square_matrices.txt", "GL_NV_non_square_matrices")
cmd void glUniformMatrix3x4fvNV(UniformLocation location,
GLsizei count,
GLboolean transpose,
@@ -2738,7 +2759,7 @@
UniformMatrix3x4fv(location, count, transpose, value)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_non_square_matrices.txt","GL_NV_non_square_matrices")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_non_square_matrices.txt", "GL_NV_non_square_matrices")
cmd void glUniformMatrix4x2fvNV(UniformLocation location,
GLsizei count,
GLboolean transpose,
@@ -2747,7 +2768,7 @@
UniformMatrix4x2fv(location, count, transpose, value)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_non_square_matrices.txt","GL_NV_non_square_matrices")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_non_square_matrices.txt", "GL_NV_non_square_matrices")
cmd void glUniformMatrix4x3fvNV(UniformLocation location,
GLsizei count,
GLboolean transpose,
@@ -2756,68 +2777,68 @@
UniformMatrix4x3fv(location, count, transpose, value)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_mapbuffer.txt","GL_OES_mapbuffer")
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_mapbuffer.txt", "GL_OES_mapbuffer")
cmd GLboolean glUnmapBufferOES(GLenum target) {
requiresExtension(GL_OES_mapbuffer)
UnmapBuffer(target)
return ?
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glUseProgramStagesEXT(PipelineId pipeline, GLbitfield stages, ProgramId program) {
requiresExtension(GL_EXT_separate_shader_objects)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt", "GL_EXT_separate_shader_objects")
cmd void glValidateProgramPipelineEXT(PipelineId pipeline) {
requiresExtension(GL_EXT_separate_shader_objects)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/ANGLE/ANGLE_instanced_arrays.txt","GL_ANGLE_instanced_arrays")
+@Doc("https://www.khronos.org/registry/gles/extensions/ANGLE/ANGLE_instanced_arrays.txt", "GL_ANGLE_instanced_arrays")
cmd void glVertexAttribDivisorANGLE(AttributeLocation index, GLuint divisor) {
requiresExtension(GL_ANGLE_instanced_arrays)
VertexAttribDivisor(index, divisor)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_instanced_arrays.txt","GL_EXT_instanced_arrays")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_instanced_arrays.txt", "GL_EXT_instanced_arrays")
cmd void glVertexAttribDivisorEXT(AttributeLocation index, GLuint divisor) {
requiresExtension(GL_EXT_instanced_arrays)
VertexAttribDivisor(index, divisor)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_instanced_arrays.txt","GL_NV_instanced_arrays")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_instanced_arrays.txt", "GL_NV_instanced_arrays")
cmd void glVertexAttribDivisorNV(AttributeLocation index, GLuint divisor) {
requiresExtension(GL_NV_instanced_arrays)
VertexAttribDivisor(index, divisor)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_viewport_array.txt","GL_NV_viewport_array")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_viewport_array.txt", "GL_NV_viewport_array")
cmd void glViewportArrayvNV(GLuint first, GLsizei count, const GLfloat* v) {
requiresExtension(GL_NV_viewport_array)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_viewport_array.txt","GL_NV_viewport_array")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_viewport_array.txt", "GL_NV_viewport_array")
cmd void glViewportIndexedfNV(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h) {
requiresExtension(GL_NV_viewport_array)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_viewport_array.txt","GL_NV_viewport_array")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_viewport_array.txt", "GL_NV_viewport_array")
cmd void glViewportIndexedfvNV(GLuint index, const GLfloat* v) {
requiresExtension(GL_NV_viewport_array)
// TODO
}
-@Doc("https://www.khronos.org/registry/gles/extensions/APPLE/APPLE_sync.txt","GL_APPLE_sync")
+@Doc("https://www.khronos.org/registry/gles/extensions/APPLE/APPLE_sync.txt", "GL_APPLE_sync")
cmd void glWaitSyncAPPLE(GLsync sync, GLbitfield flag, GLuint64 timeout) {
requiresExtension(GL_APPLE_sync)
WaitSync(sync, flag, timeout)
}
-@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt", "GL_NV_path_rendering")
cmd void glWeightPathsNV(GLuint resultPath,
GLsizei numPaths,
const GLuint* paths,
@@ -2825,3 +2846,318 @@
requiresExtension(GL_NV_path_rendering)
// TODO
}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_shader_pixel_local_storage2.txt", "GL_EXT_shader_pixel_local_storage2")
+cmd void glClearPixelLocalStorageuiEXT(GLsizei offset, GLsizei n, const GLuint* values) {
+ requiresExtension(GL_EXT_shader_pixel_local_storage2)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_clear_texture.txt", "GL_EXT_clear_texture")
+cmd void glClearTexImageEXT(GLuint texture, GLint level, GLenum format, GLenum type, const void* data) {
+ requiresExtension(GL_EXT_clear_texture)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_clear_texture.txt", "GL_EXT_clear_texture")
+cmd 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) {
+ requiresExtension(GL_EXT_clear_texture)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/conservative_raster_pre_snap_triangles.txt", "GL_NV_conservative_raster_pre_snap_triangles")
+cmd void glConservativeRasterParameteriNV(GLenum pname, GLint param) {
+ requiresExtension(GL_NV_conservative_raster_pre_snap_triangles)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_viewport_array.txt", "GL_OES_viewport_array")
+cmd void glDepthRangeArrayfvOES(GLuint first, GLsizei count, const GLfloat* v) {
+ requiresExtension(GL_OES_viewport_array)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_viewport_array.txt", "GL_OES_viewport_array")
+cmd void glDepthRangeIndexedfOES(GLuint index, GLfloat n, GLfloat f) {
+ requiresExtension(GL_OES_viewport_array)
+}
+
+// TODO: @DrawCall
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_draw_transform_feedback.txt", "GL_EXT_draw_transform_feedback")
+cmd void glDrawTransformFeedbackEXT(GLenum mode, GLuint id) {
+ requiresExtension(GL_EXT_draw_transform_feedback)
+}
+
+// TODO: @DrawCall
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_draw_transform_feedback.txt", "GL_EXT_draw_transform_feedback")
+cmd void glDrawTransformFeedbackInstancedEXT(GLenum mode, GLuint id, GLsizei instancecount) {
+ requiresExtension(GL_EXT_draw_transform_feedback)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_shader_pixel_local_storage2.txt", "GL_EXT_shader_pixel_local_storage2")
+cmd void glFramebufferPixelLocalStorageSizeEXT(GLuint target, GLsizei size) {
+ requiresExtension(GL_EXT_shader_pixel_local_storage2)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/IMG/IMG_framebuffer_downsample.txt", "GL_IMG_framebuffer_downsample")
+cmd void glFramebufferTexture2DDownsampleIMG(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint xscale, GLint yscale) {
+ requiresExtension(GL_IMG_framebuffer_downsample)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/IMG/IMG_framebuffer_downsample.txt", "GL_IMG_framebuffer_downsample")
+cmd void glFramebufferTextureLayerDownsampleIMG(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer, GLint xscale, GLint yscale) {
+ requiresExtension(GL_IMG_framebuffer_downsample)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OVR/multiview_multisampled_render_to_texture.txt", "GL_OVR_multiview_multisampled_render_to_texture")
+cmd void glFramebufferTextureMultisampleMultiviewOVR(GLenum target, GLenum attachment, GLuint texture, GLint level, GLsizei samples, GLint baseViewIndex, GLsizei numViews) {
+ requiresExtension(GL_OVR_multiview_multisampled_render_to_texture)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_viewport_array.txt", "GL_OES_viewport_array")
+cmd void glGetFloati_vOES(GLenum target, GLuint index, GLfloat* data) {
+ requiresExtension(GL_OES_viewport_array)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_shader_pixel_local_storage2.txt", "GL_EXT_shader_pixel_local_storage2")
+cmd GLsizei glGetFramebufferPixelLocalStorageSizeEXT(GLuint target) {
+ requiresExtension(GL_EXT_shader_pixel_local_storage2)
+ return ?
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/IMG/IMG_bindless_texture.txt", "GL_IMG_bindless_texture")
+cmd GLuint64 glGetTextureHandleIMG(GLuint texture) {
+ requiresExtension(GL_IMG_bindless_texture)
+ return ?
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/IMG/IMG_bindless_texture.txt", "GL_IMG_bindless_texture")
+cmd GLuint64 glGetTextureSamplerHandleIMG(GLuint texture, GLuint sampler) {
+ requiresExtension(GL_IMG_bindless_texture)
+ return ?
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/gpu_shader5.txt", "GL_NV_gpu_shader5")
+cmd void glGetUniformi64vNV(GLuint program, GLint location, GLint64EXT* params) {
+ requiresExtension(GL_NV_gpu_shader5)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/polygon_offset_clamp.txt", "GL_EXT_polygon_offset_clamp")
+cmd void glPolygonOffsetClampEXT(GLfloat factor, GLfloat units, GLfloat clamp) {
+ requiresExtension(GL_EXT_polygon_offset_clamp)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/gpu_shader5.txt", "GL_NV_gpu_shader5")
+cmd void glProgramUniform1i64NV(GLuint program, GLint location, GLint64EXT x) {
+ requiresExtension(GL_NV_gpu_shader5)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/gpu_shader5.txt", "GL_NV_gpu_shader5")
+cmd void glProgramUniform1i64vNV(GLuint program, GLint location, GLsizei count, const GLint64EXT* value) {
+ requiresExtension(GL_NV_gpu_shader5)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/gpu_shader5.txt", "GL_NV_gpu_shader5")
+cmd void glProgramUniform1ui64NV(GLuint program, GLint location, GLuint64EXT x) {
+ requiresExtension(GL_NV_gpu_shader5)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/gpu_shader5.txt", "GL_NV_gpu_shader5")
+cmd void glProgramUniform1ui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT* value) {
+ requiresExtension(GL_NV_gpu_shader5)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/gpu_shader5.txt", "GL_NV_gpu_shader5")
+cmd void glProgramUniform2i64NV(GLuint program, GLint location, GLint64EXT x, GLint64EXT y) {
+ requiresExtension(GL_NV_gpu_shader5)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/gpu_shader5.txt", "GL_NV_gpu_shader5")
+cmd void glProgramUniform2i64vNV(GLuint program, GLint location, GLsizei count, const GLint64EXT* value) {
+ requiresExtension(GL_NV_gpu_shader5)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/gpu_shader5.txt", "GL_NV_gpu_shader5")
+cmd void glProgramUniform2ui64NV(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y) {
+ requiresExtension(GL_NV_gpu_shader5)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/gpu_shader5.txt", "GL_NV_gpu_shader5")
+cmd void glProgramUniform2ui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT* value) {
+ requiresExtension(GL_NV_gpu_shader5)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/gpu_shader5.txt", "GL_NV_gpu_shader5")
+cmd void glProgramUniform3i64NV(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z) {
+ requiresExtension(GL_NV_gpu_shader5)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/gpu_shader5.txt", "GL_NV_gpu_shader5")
+cmd void glProgramUniform3i64vNV(GLuint program, GLint location, GLsizei count, const GLint64EXT* value) {
+ requiresExtension(GL_NV_gpu_shader5)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/gpu_shader5.txt", "GL_NV_gpu_shader5")
+cmd void glProgramUniform3ui64NV(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z) {
+ requiresExtension(GL_NV_gpu_shader5)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/gpu_shader5.txt", "GL_NV_gpu_shader5")
+cmd void glProgramUniform3ui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT* value) {
+ requiresExtension(GL_NV_gpu_shader5)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/gpu_shader5.txt", "GL_NV_gpu_shader5")
+cmd void glProgramUniform4i64NV(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w) {
+ requiresExtension(GL_NV_gpu_shader5)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/gpu_shader5.txt", "GL_NV_gpu_shader5")
+cmd void glProgramUniform4i64vNV(GLuint program, GLint location, GLsizei count, const GLint64EXT* value) {
+ requiresExtension(GL_NV_gpu_shader5)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/gpu_shader5.txt", "GL_NV_gpu_shader5")
+cmd void glProgramUniform4ui64NV(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w) {
+ requiresExtension(GL_NV_gpu_shader5)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/gpu_shader5.txt", "GL_NV_gpu_shader5")
+cmd void glProgramUniform4ui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT* value) {
+ requiresExtension(GL_NV_gpu_shader5)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/IMG/IMG_bindless_texture.txt", "GL_IMG_bindless_texture")
+cmd void glProgramUniformHandleui64IMG(GLuint program, GLint location, GLuint64 value) {
+ requiresExtension(GL_IMG_bindless_texture)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/IMG/IMG_bindless_texture.txt", "GL_IMG_bindless_texture")
+cmd void glProgramUniformHandleui64vIMG(GLuint program, GLint location, GLsizei count, const GLuint64* values) {
+ requiresExtension(GL_IMG_bindless_texture)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_viewport_array.txt", "GL_OES_viewport_array")
+cmd void glScissorArrayvOES(GLuint first, GLsizei count, const GLint* v) {
+ requiresExtension(GL_OES_viewport_array)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_viewport_array.txt", "GL_OES_viewport_array")
+cmd void glScissorIndexedOES(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height) {
+ requiresExtension(GL_OES_viewport_array)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_viewport_array.txt", "GL_OES_viewport_array")
+cmd void glScissorIndexedvOES(GLuint index, const GLint* v) {
+ requiresExtension(GL_OES_viewport_array)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/gpu_shader5.txt", "GL_NV_gpu_shader5")
+cmd void glUniform1i64NV(GLint location, GLint64EXT x) {
+ requiresExtension(GL_NV_gpu_shader5)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/gpu_shader5.txt", "GL_NV_gpu_shader5")
+cmd void glUniform1i64vNV(GLint location, GLsizei count, const GLint64EXT* value) {
+ requiresExtension(GL_NV_gpu_shader5)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/gpu_shader5.txt", "GL_NV_gpu_shader5")
+cmd void glUniform1ui64NV(GLint location, GLuint64EXT x) {
+ requiresExtension(GL_NV_gpu_shader5)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/gpu_shader5.txt", "GL_NV_gpu_shader5")
+cmd void glUniform1ui64vNV(GLint location, GLsizei count, const GLuint64EXT* value) {
+ requiresExtension(GL_NV_gpu_shader5)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/gpu_shader5.txt", "GL_NV_gpu_shader5")
+cmd void glUniform2i64NV(GLint location, GLint64EXT x, GLint64EXT y) {
+ requiresExtension(GL_NV_gpu_shader5)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/gpu_shader5.txt", "GL_NV_gpu_shader5")
+cmd void glUniform2i64vNV(GLint location, GLsizei count, const GLint64EXT* value) {
+ requiresExtension(GL_NV_gpu_shader5)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/gpu_shader5.txt", "GL_NV_gpu_shader5")
+cmd void glUniform2ui64NV(GLint location, GLuint64EXT x, GLuint64EXT y) {
+ requiresExtension(GL_NV_gpu_shader5)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/gpu_shader5.txt", "GL_NV_gpu_shader5")
+cmd void glUniform2ui64vNV(GLint location, GLsizei count, const GLuint64EXT* value) {
+ requiresExtension(GL_NV_gpu_shader5)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/gpu_shader5.txt", "GL_NV_gpu_shader5")
+cmd void glUniform3i64NV(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z) {
+ requiresExtension(GL_NV_gpu_shader5)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/gpu_shader5.txt", "GL_NV_gpu_shader5")
+cmd void glUniform3i64vNV(GLint location, GLsizei count, const GLint64EXT* value) {
+ requiresExtension(GL_NV_gpu_shader5)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/gpu_shader5.txt", "GL_NV_gpu_shader5")
+cmd void glUniform3ui64NV(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z) {
+ requiresExtension(GL_NV_gpu_shader5)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/gpu_shader5.txt", "GL_NV_gpu_shader5")
+cmd void glUniform3ui64vNV(GLint location, GLsizei count, const GLuint64EXT* value) {
+ requiresExtension(GL_NV_gpu_shader5)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/gpu_shader5.txt", "GL_NV_gpu_shader5")
+cmd void glUniform4i64NV(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w) {
+ requiresExtension(GL_NV_gpu_shader5)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/gpu_shader5.txt", "GL_NV_gpu_shader5")
+cmd void glUniform4i64vNV(GLint location, GLsizei count, const GLint64EXT* value) {
+ requiresExtension(GL_NV_gpu_shader5)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/gpu_shader5.txt", "GL_NV_gpu_shader5")
+cmd void glUniform4ui64NV(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w) {
+ requiresExtension(GL_NV_gpu_shader5)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/gpu_shader5.txt", "GL_NV_gpu_shader5")
+cmd void glUniform4ui64vNV(GLint location, GLsizei count, const GLuint64EXT* value) {
+ requiresExtension(GL_NV_gpu_shader5)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/IMG/IMG_bindless_texture.txt", "GL_IMG_bindless_texture")
+cmd void glUniformHandleui64IMG(GLint location, GLuint64 value) {
+ requiresExtension(GL_IMG_bindless_texture)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/IMG/IMG_bindless_texture.txt", "GL_IMG_bindless_texture")
+cmd void glUniformHandleui64vIMG(GLint location, GLsizei count, const GLuint64* value) {
+ requiresExtension(GL_IMG_bindless_texture)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_viewport_array.txt", "GL_OES_viewport_array")
+cmd void glViewportArrayvOES(GLuint first, GLsizei count, const GLfloat* v) {
+ requiresExtension(GL_OES_viewport_array)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_viewport_array.txt", "GL_OES_viewport_array")
+cmd void glViewportIndexedfOES(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h) {
+ requiresExtension(GL_OES_viewport_array)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_viewport_array.txt", "GL_OES_viewport_array")
+cmd void glViewportIndexedfvOES(GLuint index, const GLfloat* v) {
+ requiresExtension(GL_OES_viewport_array)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/viewport_swizzle.txt", "GL_NV_viewport_swizzle")
+cmd void glViewportSwizzleNV(GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew) {
+ requiresExtension(GL_NV_viewport_swizzle)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/window_rectangles.txt", "GL_EXT_window_rectangles")
+cmd void glWindowRectanglesEXT(GLenum mode, GLsizei count, const GLint* box) {
+ requiresExtension(GL_EXT_window_rectangles)
+}
diff --git a/gapid/gfxapi/gles/api/framebuffer.api b/gapid/gfxapi/gles/api/framebuffer.api
index 18288d2..b500afc 100644
--- a/gapid/gfxapi/gles/api/framebuffer.api
+++ b/gapid/gfxapi/gles/api/framebuffer.api
@@ -1059,6 +1059,22 @@
@Doc("https://www.khronos.org/opengles/sdk/docs/man32/html/glRenderbufferStorage.xhtml","OpenGL ES 3.2")
cmd void glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) {
minRequiredVersion(2, 0)
+ RenderbufferStorageMultisample(target, 0 /* samples */, internalformat, width, height)
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glRenderbufferStorageMultisample.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glRenderbufferStorageMultisample.xhtml","OpenGL ES 3.1")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man32/html/glRenderbufferStorageMultisample.xhtml","OpenGL ES 3.2")
+cmd void glRenderbufferStorageMultisample(GLenum target,
+ GLsizei samples,
+ GLenum internalformat,
+ GLsizei width,
+ GLsizei height) {
+ minRequiredVersion(3, 0)
+ RenderbufferStorageMultisample(target, samples, internalformat, width, height)
+}
+
+sub void RenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) {
switch (target) {
case GL_RENDERBUFFER: {
// version 2.0
@@ -1100,50 +1116,8 @@
rb.InternalFormat = internalformat
rb.Width = width
rb.Height = height
-}
-
-@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glRenderbufferStorageMultisample.xhtml","OpenGL ES 3.0")
-@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glRenderbufferStorageMultisample.xhtml","OpenGL ES 3.1")
-@Doc("https://www.khronos.org/opengles/sdk/docs/man32/html/glRenderbufferStorageMultisample.xhtml","OpenGL ES 3.2")
-cmd void glRenderbufferStorageMultisample(GLenum target,
- GLsizei samples,
- GLenum internalformat,
- GLsizei width,
- GLsizei height) {
- minRequiredVersion(3, 0)
- RenderbufferStorageMultisample(target, samples, internalformat, width, height)
-}
-
-sub void RenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) {
- switch (target) {
- case GL_RENDERBUFFER: {
- // version 3.0
- }
- default: {
- glErrorInvalidEnum(target)
- }
- }
- switch (internalformat) {
- case GL_DEPTH24_STENCIL8, GL_DEPTH32F_STENCIL8, GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT24,
- GL_DEPTH_COMPONENT32F, GL_R16I, GL_R16UI, GL_R32I, GL_R32UI, GL_R8, GL_R8I, GL_R8UI,
- GL_RG16I, GL_RG16UI, GL_RG32I, GL_RG32UI, GL_RG8, GL_RG8I, GL_RG8UI, GL_RGB10_A2,
- GL_RGB10_A2UI, GL_RGB565, GL_RGB5_A1, GL_RGB8, GL_RGBA16I, GL_RGBA16UI, GL_RGBA32I,
- GL_RGBA32UI, GL_RGBA4, GL_RGBA8, GL_RGBA8I, GL_RGBA8UI, GL_SRGB8_ALPHA8, GL_STENCIL_INDEX8:
- {
- // version 3.0
- }
- case GL_R16, GL_RG16, GL_RGBA16: {
- minRequiredVersion(3, 1)
- requiresExtension(GL_EXT_texture_norm16)
- }
- default: {
- glErrorInvalidEnum(internalformat)
- }
- }
_ = samples // TODO
- _ = width // TODO
- _ = height // TODO
}
@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glStencilMask.xml","OpenGL ES 2.0")
diff --git a/gapid/gfxapi/gles/api/glbitfield.api b/gapid/gfxapi/gles/api/glbitfield.api
index be495ee..cf690b1 100644
--- a/gapid/gfxapi/gles/api/glbitfield.api
+++ b/gapid/gfxapi/gles/api/glbitfield.api
@@ -220,5 +220,6 @@
GL_MULTISAMPLE_BUFFER_BIT7_QCOM = 0x80000000,
GL_TEXTURE_DEFORMATION_BIT_SGIX = 0x00000001,
GL_GEOMETRY_DEFORMATION_BIT_SGIX = 0x00000002,
+ GL_CONTEXT_FLAG_PROTECTED_CONTENT_BIT_EXT = 0x00000010,
}
diff --git a/gapid/gfxapi/gles/api/glenum.api b/gapid/gfxapi/gles/api/glenum.api
index aee8f56..02cb397 100644
--- a/gapid/gfxapi/gles/api/glenum.api
+++ b/gapid/gfxapi/gles/api/glenum.api
@@ -5401,5 +5401,69 @@
GL_VERTEX_CONSISTENT_HINT_PGI = 0x0001A22B,
GL_MATERIAL_SIDE_HINT_PGI = 0x0001A22C,
GL_MAX_VERTEX_HINT_PGI = 0x0001A22D,
+ GL_NUM_WINDOW_RECTANGLES_EXT = 0x00008F15,
+ GL_FLOAT16_MAT4_AMD = 0x000091C7,
+ GL_VIEWPORT_INDEX_PROVOKING_VERTEX_OES = 0x0000825F,
+ GL_VIEWPORT_POSITION_W_SCALE_NV = 0x0000937C,
+ GL_MAX_VIEWPORTS_OES = 0x0000825B,
+ GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_AND_DOWNSAMPLE_IMG = 0x0000913C,
+ GL_VIEWPORT_SWIZZLE_POSITIVE_W_NV = 0x00009356,
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SCALE_IMG = 0x0000913F,
+ GL_VIEWPORT_POSITION_W_SCALE_X_COEFF_NV = 0x0000937D,
+ GL_VIEWPORT_SWIZZLE_Y_NV = 0x00009359,
+ GL_CUBIC_MIPMAP_NEAREST_IMG = 0x0000913A,
+ GL_FLOAT16_MAT2_AMD = 0x000091C5,
+ GL_CUBIC_IMG = 0x00009139,
+ GL_DOWNSAMPLE_SCALES_IMG = 0x0000913E,
+ GL_NUM_DOWNSAMPLE_SCALES_IMG = 0x0000913D,
+ GL_PIXELS_PER_SAMPLE_PATTERN_X_AMD = 0x000091AE,
+ GL_FLOAT16_MAT4x3_AMD = 0x000091CD,
+ GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES_EXT = 0x000082FA,
+ GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_FAST_SIZE_EXT = 0x00009650,
+ GL_FLOAT16_MAT2x3_AMD = 0x000091C8,
+ GL_CONSERVATIVE_RASTERIZATION_INTEL = 0x000083FE,
+ GL_VIEWPORT_SWIZZLE_POSITIVE_Z_NV = 0x00009354,
+ GL_VIEWPORT_SWIZZLE_W_NV = 0x0000935B,
+ GL_MAX_WINDOW_RECTANGLES_EXT = 0x00008F14,
+ GL_EXCLUSIVE_EXT = 0x00008F11,
+ GL_WINDOW_RECTANGLE_EXT = 0x00008F12,
+ GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR = 0x00009633,
+ GL_CLIP_DISTANCE1_EXT = 0x00003001,
+ GL_FLOAT16_MAT4x2_AMD = 0x000091CC,
+ GL_CONSERVATIVE_RASTER_MODE_NV = 0x0000954D,
+ GL_CLIP_DISTANCE7_EXT = 0x00003007,
+ GL_VIEWPORT_SWIZZLE_Z_NV = 0x0000935A,
+ GL_VIEWPORT_SWIZZLE_NEGATIVE_Y_NV = 0x00009353,
+ GL_PURGED_CONTEXT_RESET_NV = 0x000092BB,
+ GL_CONSERVATIVE_RASTER_MODE_POST_SNAP_NV = 0x0000954E,
+ GL_FLOAT16_MAT2x4_AMD = 0x000091C9,
+ GL_CUBIC_MIPMAP_LINEAR_IMG = 0x0000913B,
+ GL_ALL_PIXELS_AMD = 0xFFFFFFFF,
+ GL_CLIP_DISTANCE5_EXT = 0x00003005,
+ GL_VIEWPORT_SWIZZLE_POSITIVE_Y_NV = 0x00009352,
+ GL_CLIP_DISTANCE4_EXT = 0x00003004,
+ GL_PIXELS_PER_SAMPLE_PATTERN_Y_AMD = 0x000091AF,
+ GL_VIEWPORT_SUBPIXEL_BITS_OES = 0x0000825C,
+ GL_VIEWPORT_SWIZZLE_NEGATIVE_Z_NV = 0x00009355,
+ GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV = 0x0000954F,
+ GL_FLOAT16_MAT3_AMD = 0x000091C6,
+ GL_VIEWPORT_SWIZZLE_NEGATIVE_W_NV = 0x00009357,
+ GL_CLIP_DISTANCE3_EXT = 0x00003003,
+ GL_FLOAT16_MAT3x4_AMD = 0x000091CB,
+ GL_VIEWPORT_BOUNDS_RANGE_OES = 0x0000825D,
+ GL_MAX_CULL_DISTANCES_EXT = 0x000082F9,
+ GL_VIEWPORT_SWIZZLE_X_NV = 0x00009358,
+ GL_MAX_CLIP_DISTANCES_EXT = 0x00000D32,
+ GL_CLIP_DISTANCE2_EXT = 0x00003002,
+ GL_VIEWPORT_SWIZZLE_NEGATIVE_X_NV = 0x00009351,
+ GL_FLOAT16_MAT3x2_AMD = 0x000091CA,
+ GL_FRAMEBUFFER_INCOMPLETE_INSUFFICIENT_SHADER_COMBINED_LOCAL_STORAGE_EXT = 0x00009652,
+ GL_VIEWPORT_POSITION_W_SCALE_Y_COEFF_NV = 0x0000937E,
+ GL_WINDOW_RECTANGLE_MODE_EXT = 0x00008F13,
+ GL_INCLUSIVE_EXT = 0x00008F10,
+ GL_VIEWPORT_SWIZZLE_POSITIVE_X_NV = 0x00009350,
+ GL_TEXTURE_PROTECTED_EXT = 0x00008BFA,
+ GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_SIZE_EXT = 0x00009651,
+ GL_CLIP_DISTANCE6_EXT = 0x00003006,
+ GL_CLIP_DISTANCE0_EXT = 0x00003000,
}
-
diff --git a/gapid/gfxapi/gles/api/other.api b/gapid/gfxapi/gles/api/other.api
index 1f0b8dd..0302ac3 100644
--- a/gapid/gfxapi/gles/api/other.api
+++ b/gapid/gfxapi/gles/api/other.api
@@ -282,6 +282,7 @@
}
+@EndOfFrame // For daydream. TODO: Use gvr-specific api call instead?
@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glFlush.xml","OpenGL ES 2.0")
@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glFlush.xhtml","OpenGL ES 3.0")
@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glFlush.xhtml","OpenGL ES 3.1")
diff --git a/gapid/gfxapi/gles/api/textures_and_samplers.api b/gapid/gfxapi/gles/api/textures_and_samplers.api
index 9ab65a1..a15ef9e 100644
--- a/gapid/gfxapi/gles/api/textures_and_samplers.api
+++ b/gapid/gfxapi/gles/api/textures_and_samplers.api
@@ -61,6 +61,11 @@
// EXT/texture_filter_anisotropic
GLfloat MaxAnisotropy = 1.0
+
+ // GL_OES_EGL_image
+ // EGL image which is used as storage for this texture.
+ // TODO: Standard glTex* methods which define new storage should clear this.
+ GLeglImageOES EGLImage
}
@internal
@@ -92,6 +97,9 @@
GLenum CompareMode = GL_NONE
GLenum CompareFunc = GL_LEQUAL
@unused string Label
+
+ // EXT/texture_filter_anisotropic
+ GLfloat MaxAnisotropy = 1.0
}
@internal
@@ -1017,6 +1025,10 @@
p[2] = as!T(s.BorderColor[2])
p[3] = as!T(s.BorderColor[3])
}
+ case GL_TEXTURE_MAX_ANISOTROPY_EXT: {
+ requiresExtension(GL_EXT_texture_filter_anisotropic)
+ params[0] = as!T(s.MaxAnisotropy)
+ }
default: {
glErrorInvalidEnum(pname)
}
@@ -1390,6 +1402,13 @@
minRequiredVersion(3, 2)
// TODO: Handle - has different behaviour based on the I suffix.
}
+ case GL_TEXTURE_MAX_ANISOTROPY_EXT: {
+ requiresExtension(GL_EXT_texture_filter_anisotropic)
+ // This use case is not explicitly mentioned in the extension (presumably
+ // because it is written for GLES2, but samplers were introduced in GLES3).
+ // However, it is used and supported in practice (which is reasonable).
+ s.MaxAnisotropy = as!GLfloat(params[0])
+ }
default: {
glErrorInvalidEnum(pname)
}
diff --git a/gapid/gfxapi/gles/compat.go b/gapid/gfxapi/gles/compat.go
index ed2b01a..e62c2b2 100644
--- a/gapid/gfxapi/gles/compat.go
+++ b/gapid/gfxapi/gles/compat.go
@@ -179,6 +179,30 @@
textureCompatSwizzle: map[*Texture]map[GLenum]GLenum{},
}
+ // Temporary buffer for each EGLImage which stores copy of its content
+ eglImageData := map[GLeglImageOES]memory.Pointer{}
+
+ // Upload last know EGL image content of bound texture (possibly from different context)
+ // TODO: Share the data properly between contexts in replay.
+ loadEglImageData := func(ctx log.Context, i atom.ID, a atom.Atom, c *Context, out atom.Writer) {
+ if boundTexture, err := subGetBoundTextureOrErrorInvalidEnum(ctx, a, nil, s, GetState(s), d, nil, GLenum_GL_TEXTURE_2D); err != nil {
+ ctx.Warning().T("atom", a).Log("Can not get bound texture")
+
+ } else {
+ if boundTexture.EGLImage != GLeglImageOES(memory.Nullptr) {
+ img := boundTexture.Texture2D[0]
+ data := eglImageData[boundTexture.EGLImage]
+ out.Write(ctx, i, NewGlPixelStorei(GLenum_GL_UNPACK_ALIGNMENT, 1))
+ out.Write(ctx, i, replay.Custom(func(ctx log.Context, s *gfxapi.State, d database.Database, b *builder.Builder) error {
+ NewGlTexImage2D(GLenum_GL_TEXTURE_2D, 0, GLint(img.TexelFormat), img.Width, img.Height, 0, img.TexelFormat, img.TexelType, data).Call(ctx, s, d, b)
+ return nil
+ }))
+ out.Write(ctx, i, NewGlPixelStorei(GLenum_GL_UNPACK_ALIGNMENT, c.PixelStorage.UnpackAlignment))
+ }
+ }
+ return
+ }
+
var t atom.Transformer
t = atom.Transform("compat", func(ctx log.Context, i atom.ID, a atom.Atom, out atom.Writer) {
switch a := a.(type) {
@@ -257,6 +281,12 @@
return
}
+ if !version.IsES {
+ mutateAndWrite(ctx, i, a, s, d, out)
+ loadEglImageData(ctx, i, a, c, out)
+ return
+ }
+
case *GlBindVertexArray:
if a.Array == VertexArrayId(0) {
if target.vertexArrayObjects == required &&
@@ -854,6 +884,62 @@
}
}
+ case *GlEGLImageTargetTexture2DOES:
+ if !version.IsES {
+ a.Mutate(ctx, s, d, nil /* no builder, just mutate */)
+ loadEglImageData(ctx, i, a, c, out)
+ return
+ }
+
+ case *GlFlush:
+ // If EGLImage is bound to any framebuffer, make a copy of its data.
+ // TODO: Share the data properly between contexts in replay.
+ for fbIdx, fb := range c.Instances.Framebuffers {
+ for attIdx, att := range fb.Attachments {
+ if att.ObjectType == GLenum_GL_TEXTURE {
+ if tex, ok := c.Instances.Textures[TextureId(att.ObjectName)]; ok {
+ if tex.EGLImage != GLeglImageOES(memory.Nullptr) {
+ origFramebuffer := c.BoundFramebuffers[GLenum_GL_READ_FRAMEBUFFER]
+ origReadBuffer := fb.ReadBuffer
+ out.Write(ctx, i, NewGlBindFramebuffer(GLenum_GL_READ_FRAMEBUFFER, fbIdx))
+ out.Write(ctx, i, NewGlReadBuffer(attIdx))
+ out.Write(ctx, i, NewGlPixelStorei(GLenum_GL_PACK_ALIGNMENT, 1))
+ img := tex.Texture2D[0]
+ data, ok := eglImageData[tex.EGLImage]
+ if !ok {
+ data = atom.Must(atom.Alloc(ctx, s, uint64(img.Size))).Ptr()
+ eglImageData[tex.EGLImage] = data
+ }
+ out.Write(ctx, i, NewGlReadPixels(0, 0, img.Width, img.Height, img.TexelFormat, img.TexelType, data))
+ out.Write(ctx, i, NewGlGetError(0))
+ out.Write(ctx, i, NewGlPixelStorei(GLenum_GL_PACK_ALIGNMENT, c.PixelStorage.PackAlignment))
+ out.Write(ctx, i, NewGlReadBuffer(origReadBuffer))
+ out.Write(ctx, i, NewGlBindFramebuffer(GLenum_GL_READ_FRAMEBUFFER, origFramebuffer))
+ }
+ }
+ }
+ }
+ }
+ break
+
+ // EXT_multisampled_render_to_texture
+ case *GlRenderbufferStorageMultisampleEXT:
+ {
+ // TODO: Support multi-sample rendering.
+ a := NewGlRenderbufferStorage(a.Target, a.Internalformat, a.Width, a.Height)
+ mutateAndWrite(ctx, i, a, s, d, out)
+ return
+ }
+
+ // EXT_multisampled_render_to_texture
+ case *GlFramebufferTexture2DMultisampleEXT:
+ {
+ // TODO: Support multi-sample rendering.
+ a := NewGlFramebufferTexture2D(a.Target, a.Attachment, a.Textarget, a.Texture, a.Level)
+ mutateAndWrite(ctx, i, a, s, d, out)
+ return
+ }
+
default:
if a.AtomFlags().IsDrawCall() && clientVAsBound(c) {
ctx.Warning().T("atom", a).Log("Draw call with client-pointers not handled by the compatability layer")
diff --git a/gapid/gfxapi/gles/enum.go b/gapid/gfxapi/gles/enum.go
index 892021e..bac95c7 100644
--- a/gapid/gfxapi/gles/enum.go
+++ b/gapid/gfxapi/gles/enum.go
@@ -13,6 +13,106 @@
var ConstantValues schema.Constants
////////////////////////////////////////////////////////////////////////////////
+// enum AndroidGraphicsBufferFormat
+////////////////////////////////////////////////////////////////////////////////
+type AndroidGraphicsBufferFormat uint32
+
+const (
+ AndroidGraphicsBufferFormat_HAL_PIXEL_FORMAT_RGBA_8888 = AndroidGraphicsBufferFormat(1)
+ AndroidGraphicsBufferFormat_HAL_PIXEL_FORMAT_RGBX_8888 = AndroidGraphicsBufferFormat(2)
+ AndroidGraphicsBufferFormat_HAL_PIXEL_FORMAT_RGB_888 = AndroidGraphicsBufferFormat(3)
+ AndroidGraphicsBufferFormat_HAL_PIXEL_FORMAT_RGB_565 = AndroidGraphicsBufferFormat(4)
+ AndroidGraphicsBufferFormat_HAL_PIXEL_FORMAT_BGRA_8888 = AndroidGraphicsBufferFormat(5)
+ AndroidGraphicsBufferFormat_HAL_PIXEL_FORMAT_RGBA_5551 = AndroidGraphicsBufferFormat(6)
+ AndroidGraphicsBufferFormat_HAL_PIXEL_FORMAT_RGBA_4444 = AndroidGraphicsBufferFormat(7)
+ AndroidGraphicsBufferFormat_HAL_PIXEL_FORMAT_YCrCb_420_SP = AndroidGraphicsBufferFormat(17)
+)
+
+var _AndroidGraphicsBufferFormat_map = map[AndroidGraphicsBufferFormat]string{}
+
+func init() {
+ _AndroidGraphicsBufferFormat_cs := schema.ConstantSet{
+ Type: &schema.Primitive{Name: "AndroidGraphicsBufferFormat", Method: schema.Uint32},
+ Entries: []schema.Constant{
+ {Name: "HAL_PIXEL_FORMAT_RGBA_8888", Value: uint32(1)},
+ {Name: "HAL_PIXEL_FORMAT_RGBX_8888", Value: uint32(2)},
+ {Name: "HAL_PIXEL_FORMAT_RGB_888", Value: uint32(3)},
+ {Name: "HAL_PIXEL_FORMAT_RGB_565", Value: uint32(4)},
+ {Name: "HAL_PIXEL_FORMAT_BGRA_8888", Value: uint32(5)},
+ {Name: "HAL_PIXEL_FORMAT_RGBA_5551", Value: uint32(6)},
+ {Name: "HAL_PIXEL_FORMAT_RGBA_4444", Value: uint32(7)},
+ {Name: "HAL_PIXEL_FORMAT_YCrCb_420_SP", Value: uint32(17)},
+ },
+ }
+ ConstantValues = append(ConstantValues, _AndroidGraphicsBufferFormat_cs)
+ for _, cv := range _AndroidGraphicsBufferFormat_cs.Entries {
+ _AndroidGraphicsBufferFormat_map[AndroidGraphicsBufferFormat(cv.Value.(uint32))] = cv.Name
+ }
+}
+func (e AndroidGraphicsBufferFormat) String() string {
+ name, found := _AndroidGraphicsBufferFormat_map[e]
+ if found {
+ return name
+ }
+ return fmt.Sprintf("AndroidGraphicsBufferFormat(%v)", uint32(e))
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// enum AndroidGraphicsBufferUsage
+////////////////////////////////////////////////////////////////////////////////
+type AndroidGraphicsBufferUsage uint32
+
+const (
+ AndroidGraphicsBufferUsage_USAGE_SW_READ_NEVER = AndroidGraphicsBufferUsage(0)
+ AndroidGraphicsBufferUsage_USAGE_SW_READ_RARELY = AndroidGraphicsBufferUsage(2)
+ AndroidGraphicsBufferUsage_USAGE_SW_READ_OFTEN = AndroidGraphicsBufferUsage(3)
+ AndroidGraphicsBufferUsage_USAGE_SW_READ_MASK = AndroidGraphicsBufferUsage(15)
+ AndroidGraphicsBufferUsage_USAGE_SW_WRITE_NEVER = AndroidGraphicsBufferUsage(0)
+ AndroidGraphicsBufferUsage_USAGE_SW_WRITE_RARELY = AndroidGraphicsBufferUsage(32)
+ AndroidGraphicsBufferUsage_USAGE_SW_WRITE_OFTEN = AndroidGraphicsBufferUsage(48)
+ AndroidGraphicsBufferUsage_USAGE_SW_WRITE_MASK = AndroidGraphicsBufferUsage(240)
+ AndroidGraphicsBufferUsage_USAGE_HW_TEXTURE = AndroidGraphicsBufferUsage(256)
+ AndroidGraphicsBufferUsage_USAGE_HW_RENDER = AndroidGraphicsBufferUsage(512)
+ AndroidGraphicsBufferUsage_USAGE_HW_2D = AndroidGraphicsBufferUsage(1024)
+ AndroidGraphicsBufferUsage_USAGE_HW_FB = AndroidGraphicsBufferUsage(4096)
+ AndroidGraphicsBufferUsage_USAGE_HW_MASK = AndroidGraphicsBufferUsage(7936)
+)
+
+var _AndroidGraphicsBufferUsage_map = map[AndroidGraphicsBufferUsage]string{}
+
+func init() {
+ _AndroidGraphicsBufferUsage_cs := schema.ConstantSet{
+ Type: &schema.Primitive{Name: "AndroidGraphicsBufferUsage", Method: schema.Uint32},
+ Entries: []schema.Constant{
+ {Name: "USAGE_SW_READ_NEVER", Value: uint32(0)},
+ {Name: "USAGE_SW_READ_RARELY", Value: uint32(2)},
+ {Name: "USAGE_SW_READ_OFTEN", Value: uint32(3)},
+ {Name: "USAGE_SW_READ_MASK", Value: uint32(15)},
+ {Name: "USAGE_SW_WRITE_NEVER", Value: uint32(0)},
+ {Name: "USAGE_SW_WRITE_RARELY", Value: uint32(32)},
+ {Name: "USAGE_SW_WRITE_OFTEN", Value: uint32(48)},
+ {Name: "USAGE_SW_WRITE_MASK", Value: uint32(240)},
+ {Name: "USAGE_HW_TEXTURE", Value: uint32(256)},
+ {Name: "USAGE_HW_RENDER", Value: uint32(512)},
+ {Name: "USAGE_HW_2D", Value: uint32(1024)},
+ {Name: "USAGE_HW_FB", Value: uint32(4096)},
+ {Name: "USAGE_HW_MASK", Value: uint32(7936)},
+ },
+ }
+ ConstantValues = append(ConstantValues, _AndroidGraphicsBufferUsage_cs)
+ for _, cv := range _AndroidGraphicsBufferUsage_cs.Entries {
+ _AndroidGraphicsBufferUsage_map[AndroidGraphicsBufferUsage(cv.Value.(uint32))] = cv.Name
+ }
+}
+func (e AndroidGraphicsBufferUsage) String() string {
+ name, found := _AndroidGraphicsBufferUsage_map[e]
+ if found {
+ return name
+ }
+ return fmt.Sprintf("AndroidGraphicsBufferUsage(%v)", uint32(e))
+}
+
+////////////////////////////////////////////////////////////////////////////////
// enum EGLenum
////////////////////////////////////////////////////////////////////////////////
type EGLenum uint32
@@ -580,6 +680,7 @@
GLbitfield_GL_MULTISAMPLE_BUFFER_BIT7_QCOM = GLbitfield(2147483648)
GLbitfield_GL_TEXTURE_DEFORMATION_BIT_SGIX = GLbitfield(1)
GLbitfield_GL_GEOMETRY_DEFORMATION_BIT_SGIX = GLbitfield(2)
+ GLbitfield_GL_CONTEXT_FLAG_PROTECTED_CONTENT_BIT_EXT = GLbitfield(16)
)
var _GLbitfield_map = map[GLbitfield]string{}
@@ -795,6 +896,7 @@
{Name: "GL_MULTISAMPLE_BUFFER_BIT7_QCOM", Value: uint32(2147483648)},
{Name: "GL_TEXTURE_DEFORMATION_BIT_SGIX", Value: uint32(1)},
{Name: "GL_GEOMETRY_DEFORMATION_BIT_SGIX", Value: uint32(2)},
+ {Name: "GL_CONTEXT_FLAG_PROTECTED_CONTENT_BIT_EXT", Value: uint32(16)},
},
}
ConstantValues = append(ConstantValues, _GLbitfield_cs)
@@ -816,5394 +918,5459 @@
type GLenum uint32
const (
- GLenum_GL_TERMINATE_SEQUENCE_COMMAND_NV = GLenum(0)
- GLenum_GL_NOP_COMMAND_NV = GLenum(1)
- GLenum_GL_DRAW_ELEMENTS_COMMAND_NV = GLenum(2)
- GLenum_GL_DRAW_ARRAYS_COMMAND_NV = GLenum(3)
- GLenum_GL_DRAW_ELEMENTS_STRIP_COMMAND_NV = GLenum(4)
- GLenum_GL_DRAW_ARRAYS_STRIP_COMMAND_NV = GLenum(5)
- GLenum_GL_DRAW_ELEMENTS_INSTANCED_COMMAND_NV = GLenum(6)
- GLenum_GL_DRAW_ARRAYS_INSTANCED_COMMAND_NV = GLenum(7)
- GLenum_GL_ELEMENT_ADDRESS_COMMAND_NV = GLenum(8)
- GLenum_GL_ATTRIBUTE_ADDRESS_COMMAND_NV = GLenum(9)
- GLenum_GL_UNIFORM_ADDRESS_COMMAND_NV = GLenum(10)
- GLenum_GL_BLEND_COLOR_COMMAND_NV = GLenum(11)
- GLenum_GL_STENCIL_REF_COMMAND_NV = GLenum(12)
- GLenum_GL_LINE_WIDTH_COMMAND_NV = GLenum(13)
- GLenum_GL_POLYGON_OFFSET_COMMAND_NV = GLenum(14)
- GLenum_GL_ALPHA_REF_COMMAND_NV = GLenum(15)
- GLenum_GL_VIEWPORT_COMMAND_NV = GLenum(16)
- GLenum_GL_SCISSOR_COMMAND_NV = GLenum(17)
- GLenum_GL_FRONT_FACE_COMMAND_NV = GLenum(18)
- GLenum_GL_LAYOUT_DEFAULT_INTEL = GLenum(0)
- GLenum_GL_LAYOUT_LINEAR_INTEL = GLenum(1)
- GLenum_GL_LAYOUT_LINEAR_CPU_CACHED_INTEL = GLenum(2)
- GLenum_GL_CLOSE_PATH_NV = GLenum(0)
- GLenum_GL_MOVE_TO_NV = GLenum(2)
- GLenum_GL_RELATIVE_MOVE_TO_NV = GLenum(3)
- GLenum_GL_LINE_TO_NV = GLenum(4)
- GLenum_GL_RELATIVE_LINE_TO_NV = GLenum(5)
- GLenum_GL_HORIZONTAL_LINE_TO_NV = GLenum(6)
- GLenum_GL_RELATIVE_HORIZONTAL_LINE_TO_NV = GLenum(7)
- GLenum_GL_VERTICAL_LINE_TO_NV = GLenum(8)
- GLenum_GL_RELATIVE_VERTICAL_LINE_TO_NV = GLenum(9)
- GLenum_GL_QUADRATIC_CURVE_TO_NV = GLenum(10)
- GLenum_GL_RELATIVE_QUADRATIC_CURVE_TO_NV = GLenum(11)
- GLenum_GL_CUBIC_CURVE_TO_NV = GLenum(12)
- GLenum_GL_RELATIVE_CUBIC_CURVE_TO_NV = GLenum(13)
- GLenum_GL_SMOOTH_QUADRATIC_CURVE_TO_NV = GLenum(14)
- GLenum_GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV = GLenum(15)
- GLenum_GL_SMOOTH_CUBIC_CURVE_TO_NV = GLenum(16)
- GLenum_GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV = GLenum(17)
- GLenum_GL_SMALL_CCW_ARC_TO_NV = GLenum(18)
- GLenum_GL_RELATIVE_SMALL_CCW_ARC_TO_NV = GLenum(19)
- GLenum_GL_SMALL_CW_ARC_TO_NV = GLenum(20)
- GLenum_GL_RELATIVE_SMALL_CW_ARC_TO_NV = GLenum(21)
- GLenum_GL_LARGE_CCW_ARC_TO_NV = GLenum(22)
- GLenum_GL_RELATIVE_LARGE_CCW_ARC_TO_NV = GLenum(23)
- GLenum_GL_LARGE_CW_ARC_TO_NV = GLenum(24)
- GLenum_GL_RELATIVE_LARGE_CW_ARC_TO_NV = GLenum(25)
- GLenum_GL_CONIC_CURVE_TO_NV = GLenum(26)
- GLenum_GL_RELATIVE_CONIC_CURVE_TO_NV = GLenum(27)
- GLenum_GL_SHARED_EDGE_NV = GLenum(192)
- GLenum_GL_ROUNDED_RECT_NV = GLenum(232)
- GLenum_GL_RELATIVE_ROUNDED_RECT_NV = GLenum(233)
- GLenum_GL_ROUNDED_RECT2_NV = GLenum(234)
- GLenum_GL_RELATIVE_ROUNDED_RECT2_NV = GLenum(235)
- GLenum_GL_ROUNDED_RECT4_NV = GLenum(236)
- GLenum_GL_RELATIVE_ROUNDED_RECT4_NV = GLenum(237)
- GLenum_GL_ROUNDED_RECT8_NV = GLenum(238)
- GLenum_GL_RELATIVE_ROUNDED_RECT8_NV = GLenum(239)
- GLenum_GL_RESTART_PATH_NV = GLenum(240)
- GLenum_GL_DUP_FIRST_CUBIC_CURVE_TO_NV = GLenum(242)
- GLenum_GL_DUP_LAST_CUBIC_CURVE_TO_NV = GLenum(244)
- GLenum_GL_RECT_NV = GLenum(246)
- GLenum_GL_RELATIVE_RECT_NV = GLenum(247)
- GLenum_GL_CIRCULAR_CCW_ARC_TO_NV = GLenum(248)
- GLenum_GL_CIRCULAR_CW_ARC_TO_NV = GLenum(250)
- GLenum_GL_CIRCULAR_TANGENT_ARC_TO_NV = GLenum(252)
- GLenum_GL_ARC_TO_NV = GLenum(254)
- GLenum_GL_RELATIVE_ARC_TO_NV = GLenum(255)
- GLenum_GL_NEXT_BUFFER_NV = GLenum(4294967294)
- GLenum_GL_SKIP_COMPONENTS4_NV = GLenum(4294967293)
- GLenum_GL_SKIP_COMPONENTS3_NV = GLenum(4294967292)
- GLenum_GL_SKIP_COMPONENTS2_NV = GLenum(4294967291)
- GLenum_GL_SKIP_COMPONENTS1_NV = GLenum(4294967290)
- GLenum_GL_RESTART_SUN = GLenum(1)
- GLenum_GL_REPLACE_MIDDLE_SUN = GLenum(2)
- GLenum_GL_REPLACE_OLDEST_SUN = GLenum(3)
- GLenum_GL_NO_ERROR = GLenum(0)
- GLenum_GL_ZERO = GLenum(0)
- GLenum_GL_NONE = GLenum(0)
- GLenum_GL_NONE_OES = GLenum(0)
- GLenum_GL_ONE = GLenum(1)
- GLenum_GL_INVALID_INDEX = GLenum(4294967295)
- GLenum_GL_VERSION_ES_CL_1_0 = GLenum(1)
- GLenum_GL_VERSION_ES_CM_1_1 = GLenum(1)
- GLenum_GL_VERSION_ES_CL_1_1 = GLenum(1)
- GLenum_GL_POINTS = GLenum(0)
- GLenum_GL_LINES = GLenum(1)
- GLenum_GL_LINE_LOOP = GLenum(2)
- GLenum_GL_LINE_STRIP = GLenum(3)
- GLenum_GL_TRIANGLES = GLenum(4)
- GLenum_GL_TRIANGLE_STRIP = GLenum(5)
- GLenum_GL_TRIANGLE_FAN = GLenum(6)
- GLenum_GL_QUADS = GLenum(7)
- GLenum_GL_QUADS_EXT = GLenum(7)
- GLenum_GL_QUADS_OES = GLenum(7)
- GLenum_GL_QUAD_STRIP = GLenum(8)
- GLenum_GL_POLYGON = GLenum(9)
- GLenum_GL_LINES_ADJACENCY = GLenum(10)
- GLenum_GL_LINES_ADJACENCY_ARB = GLenum(10)
- GLenum_GL_LINES_ADJACENCY_EXT = GLenum(10)
- GLenum_GL_LINES_ADJACENCY_OES = GLenum(10)
- GLenum_GL_LINE_STRIP_ADJACENCY = GLenum(11)
- GLenum_GL_LINE_STRIP_ADJACENCY_ARB = GLenum(11)
- GLenum_GL_LINE_STRIP_ADJACENCY_EXT = GLenum(11)
- GLenum_GL_LINE_STRIP_ADJACENCY_OES = GLenum(11)
- GLenum_GL_TRIANGLES_ADJACENCY = GLenum(12)
- GLenum_GL_TRIANGLES_ADJACENCY_ARB = GLenum(12)
- GLenum_GL_TRIANGLES_ADJACENCY_EXT = GLenum(12)
- GLenum_GL_TRIANGLES_ADJACENCY_OES = GLenum(12)
- GLenum_GL_TRIANGLE_STRIP_ADJACENCY = GLenum(13)
- GLenum_GL_TRIANGLE_STRIP_ADJACENCY_ARB = GLenum(13)
- GLenum_GL_TRIANGLE_STRIP_ADJACENCY_EXT = GLenum(13)
- GLenum_GL_TRIANGLE_STRIP_ADJACENCY_OES = GLenum(13)
- GLenum_GL_PATCHES = GLenum(14)
- GLenum_GL_PATCHES_EXT = GLenum(14)
- GLenum_GL_PATCHES_OES = GLenum(14)
- GLenum_GL_ACCUM = GLenum(256)
- GLenum_GL_LOAD = GLenum(257)
- GLenum_GL_RETURN = GLenum(258)
- GLenum_GL_MULT = GLenum(259)
- GLenum_GL_ADD = GLenum(260)
- GLenum_GL_NEVER = GLenum(512)
- GLenum_GL_LESS = GLenum(513)
- GLenum_GL_EQUAL = GLenum(514)
- GLenum_GL_LEQUAL = GLenum(515)
- GLenum_GL_GREATER = GLenum(516)
- GLenum_GL_NOTEQUAL = GLenum(517)
- GLenum_GL_GEQUAL = GLenum(518)
- GLenum_GL_ALWAYS = GLenum(519)
- GLenum_GL_SRC_COLOR = GLenum(768)
- GLenum_GL_ONE_MINUS_SRC_COLOR = GLenum(769)
- GLenum_GL_SRC_ALPHA = GLenum(770)
- GLenum_GL_ONE_MINUS_SRC_ALPHA = GLenum(771)
- GLenum_GL_DST_ALPHA = GLenum(772)
- GLenum_GL_ONE_MINUS_DST_ALPHA = GLenum(773)
- GLenum_GL_DST_COLOR = GLenum(774)
- GLenum_GL_ONE_MINUS_DST_COLOR = GLenum(775)
- GLenum_GL_SRC_ALPHA_SATURATE = GLenum(776)
- GLenum_GL_SRC_ALPHA_SATURATE_EXT = GLenum(776)
- GLenum_GL_FRONT_LEFT = GLenum(1024)
- GLenum_GL_FRONT_RIGHT = GLenum(1025)
- GLenum_GL_BACK_LEFT = GLenum(1026)
- GLenum_GL_BACK_RIGHT = GLenum(1027)
- GLenum_GL_FRONT = GLenum(1028)
- GLenum_GL_BACK = GLenum(1029)
- GLenum_GL_LEFT = GLenum(1030)
- GLenum_GL_RIGHT = GLenum(1031)
- GLenum_GL_FRONT_AND_BACK = GLenum(1032)
- GLenum_GL_AUX0 = GLenum(1033)
- GLenum_GL_AUX1 = GLenum(1034)
- GLenum_GL_AUX2 = GLenum(1035)
- GLenum_GL_AUX3 = GLenum(1036)
- GLenum_GL_INVALID_ENUM = GLenum(1280)
- GLenum_GL_INVALID_VALUE = GLenum(1281)
- GLenum_GL_INVALID_OPERATION = GLenum(1282)
- GLenum_GL_STACK_OVERFLOW = GLenum(1283)
- GLenum_GL_STACK_OVERFLOW_KHR = GLenum(1283)
- GLenum_GL_STACK_UNDERFLOW = GLenum(1284)
- GLenum_GL_STACK_UNDERFLOW_KHR = GLenum(1284)
- GLenum_GL_OUT_OF_MEMORY = GLenum(1285)
- GLenum_GL_INVALID_FRAMEBUFFER_OPERATION = GLenum(1286)
- GLenum_GL_INVALID_FRAMEBUFFER_OPERATION_EXT = GLenum(1286)
- GLenum_GL_INVALID_FRAMEBUFFER_OPERATION_OES = GLenum(1286)
- GLenum_GL_CONTEXT_LOST = GLenum(1287)
- GLenum_GL_CONTEXT_LOST_KHR = GLenum(1287)
- GLenum_GL_2D = GLenum(1536)
- GLenum_GL_3D = GLenum(1537)
- GLenum_GL_3D_COLOR = GLenum(1538)
- GLenum_GL_3D_COLOR_TEXTURE = GLenum(1539)
- GLenum_GL_4D_COLOR_TEXTURE = GLenum(1540)
- GLenum_GL_PASS_THROUGH_TOKEN = GLenum(1792)
- GLenum_GL_POINT_TOKEN = GLenum(1793)
- GLenum_GL_LINE_TOKEN = GLenum(1794)
- GLenum_GL_POLYGON_TOKEN = GLenum(1795)
- GLenum_GL_BITMAP_TOKEN = GLenum(1796)
- GLenum_GL_DRAW_PIXEL_TOKEN = GLenum(1797)
- GLenum_GL_COPY_PIXEL_TOKEN = GLenum(1798)
- GLenum_GL_LINE_RESET_TOKEN = GLenum(1799)
- GLenum_GL_EXP = GLenum(2048)
- GLenum_GL_EXP2 = GLenum(2049)
- GLenum_GL_CW = GLenum(2304)
- GLenum_GL_CCW = GLenum(2305)
- GLenum_GL_COEFF = GLenum(2560)
- GLenum_GL_ORDER = GLenum(2561)
- GLenum_GL_DOMAIN = GLenum(2562)
- GLenum_GL_CURRENT_COLOR = GLenum(2816)
- GLenum_GL_CURRENT_INDEX = GLenum(2817)
- GLenum_GL_CURRENT_NORMAL = GLenum(2818)
- GLenum_GL_CURRENT_TEXTURE_COORDS = GLenum(2819)
- GLenum_GL_CURRENT_RASTER_COLOR = GLenum(2820)
- GLenum_GL_CURRENT_RASTER_INDEX = GLenum(2821)
- GLenum_GL_CURRENT_RASTER_TEXTURE_COORDS = GLenum(2822)
- GLenum_GL_CURRENT_RASTER_POSITION = GLenum(2823)
- GLenum_GL_CURRENT_RASTER_POSITION_VALID = GLenum(2824)
- GLenum_GL_CURRENT_RASTER_DISTANCE = GLenum(2825)
- GLenum_GL_POINT_SMOOTH = GLenum(2832)
- GLenum_GL_POINT_SIZE = GLenum(2833)
- GLenum_GL_POINT_SIZE_RANGE = GLenum(2834)
- GLenum_GL_SMOOTH_POINT_SIZE_RANGE = GLenum(2834)
- GLenum_GL_POINT_SIZE_GRANULARITY = GLenum(2835)
- GLenum_GL_SMOOTH_POINT_SIZE_GRANULARITY = GLenum(2835)
- GLenum_GL_LINE_SMOOTH = GLenum(2848)
- GLenum_GL_LINE_WIDTH = GLenum(2849)
- GLenum_GL_LINE_WIDTH_RANGE = GLenum(2850)
- GLenum_GL_SMOOTH_LINE_WIDTH_RANGE = GLenum(2850)
- GLenum_GL_LINE_WIDTH_GRANULARITY = GLenum(2851)
- GLenum_GL_SMOOTH_LINE_WIDTH_GRANULARITY = GLenum(2851)
- GLenum_GL_LINE_STIPPLE = GLenum(2852)
- GLenum_GL_LINE_STIPPLE_PATTERN = GLenum(2853)
- GLenum_GL_LINE_STIPPLE_REPEAT = GLenum(2854)
- GLenum_GL_LIST_MODE = GLenum(2864)
- GLenum_GL_MAX_LIST_NESTING = GLenum(2865)
- GLenum_GL_LIST_BASE = GLenum(2866)
- GLenum_GL_LIST_INDEX = GLenum(2867)
- GLenum_GL_POLYGON_MODE = GLenum(2880)
- GLenum_GL_POLYGON_MODE_NV = GLenum(2880)
- GLenum_GL_POLYGON_SMOOTH = GLenum(2881)
- GLenum_GL_POLYGON_STIPPLE = GLenum(2882)
- GLenum_GL_EDGE_FLAG = GLenum(2883)
- GLenum_GL_CULL_FACE = GLenum(2884)
- GLenum_GL_CULL_FACE_MODE = GLenum(2885)
- GLenum_GL_FRONT_FACE = GLenum(2886)
- GLenum_GL_LIGHTING = GLenum(2896)
- GLenum_GL_LIGHT_MODEL_LOCAL_VIEWER = GLenum(2897)
- GLenum_GL_LIGHT_MODEL_TWO_SIDE = GLenum(2898)
- GLenum_GL_LIGHT_MODEL_AMBIENT = GLenum(2899)
- GLenum_GL_SHADE_MODEL = GLenum(2900)
- GLenum_GL_COLOR_MATERIAL_FACE = GLenum(2901)
- GLenum_GL_COLOR_MATERIAL_PARAMETER = GLenum(2902)
- GLenum_GL_COLOR_MATERIAL = GLenum(2903)
- GLenum_GL_FOG = GLenum(2912)
- GLenum_GL_FOG_INDEX = GLenum(2913)
- GLenum_GL_FOG_DENSITY = GLenum(2914)
- GLenum_GL_FOG_START = GLenum(2915)
- GLenum_GL_FOG_END = GLenum(2916)
- GLenum_GL_FOG_MODE = GLenum(2917)
- GLenum_GL_FOG_COLOR = GLenum(2918)
- GLenum_GL_DEPTH_RANGE = GLenum(2928)
- GLenum_GL_DEPTH_TEST = GLenum(2929)
- GLenum_GL_DEPTH_WRITEMASK = GLenum(2930)
- GLenum_GL_DEPTH_CLEAR_VALUE = GLenum(2931)
- GLenum_GL_DEPTH_FUNC = GLenum(2932)
- GLenum_GL_ACCUM_CLEAR_VALUE = GLenum(2944)
- GLenum_GL_STENCIL_TEST = GLenum(2960)
- GLenum_GL_STENCIL_CLEAR_VALUE = GLenum(2961)
- GLenum_GL_STENCIL_FUNC = GLenum(2962)
- GLenum_GL_STENCIL_VALUE_MASK = GLenum(2963)
- GLenum_GL_STENCIL_FAIL = GLenum(2964)
- GLenum_GL_STENCIL_PASS_DEPTH_FAIL = GLenum(2965)
- GLenum_GL_STENCIL_PASS_DEPTH_PASS = GLenum(2966)
- GLenum_GL_STENCIL_REF = GLenum(2967)
- GLenum_GL_STENCIL_WRITEMASK = GLenum(2968)
- GLenum_GL_MATRIX_MODE = GLenum(2976)
- GLenum_GL_NORMALIZE = GLenum(2977)
- GLenum_GL_VIEWPORT = GLenum(2978)
- GLenum_GL_MODELVIEW_STACK_DEPTH = GLenum(2979)
- GLenum_GL_MODELVIEW0_STACK_DEPTH_EXT = GLenum(2979)
- GLenum_GL_PATH_MODELVIEW_STACK_DEPTH_NV = GLenum(2979)
- GLenum_GL_PROJECTION_STACK_DEPTH = GLenum(2980)
- GLenum_GL_PATH_PROJECTION_STACK_DEPTH_NV = GLenum(2980)
- GLenum_GL_TEXTURE_STACK_DEPTH = GLenum(2981)
- GLenum_GL_MODELVIEW_MATRIX = GLenum(2982)
- GLenum_GL_MODELVIEW0_MATRIX_EXT = GLenum(2982)
- GLenum_GL_PATH_MODELVIEW_MATRIX_NV = GLenum(2982)
- GLenum_GL_PROJECTION_MATRIX = GLenum(2983)
- GLenum_GL_PATH_PROJECTION_MATRIX_NV = GLenum(2983)
- GLenum_GL_TEXTURE_MATRIX = GLenum(2984)
- GLenum_GL_ATTRIB_STACK_DEPTH = GLenum(2992)
- GLenum_GL_CLIENT_ATTRIB_STACK_DEPTH = GLenum(2993)
- GLenum_GL_ALPHA_TEST = GLenum(3008)
- GLenum_GL_ALPHA_TEST_QCOM = GLenum(3008)
- GLenum_GL_ALPHA_TEST_FUNC = GLenum(3009)
- GLenum_GL_ALPHA_TEST_FUNC_QCOM = GLenum(3009)
- GLenum_GL_ALPHA_TEST_REF = GLenum(3010)
- GLenum_GL_ALPHA_TEST_REF_QCOM = GLenum(3010)
- GLenum_GL_DITHER = GLenum(3024)
- GLenum_GL_BLEND_DST = GLenum(3040)
- GLenum_GL_BLEND_SRC = GLenum(3041)
- GLenum_GL_BLEND = GLenum(3042)
- GLenum_GL_LOGIC_OP_MODE = GLenum(3056)
- GLenum_GL_INDEX_LOGIC_OP = GLenum(3057)
- GLenum_GL_LOGIC_OP = GLenum(3057)
- GLenum_GL_COLOR_LOGIC_OP = GLenum(3058)
- GLenum_GL_AUX_BUFFERS = GLenum(3072)
- GLenum_GL_DRAW_BUFFER = GLenum(3073)
- GLenum_GL_DRAW_BUFFER_EXT = GLenum(3073)
- GLenum_GL_READ_BUFFER = GLenum(3074)
- GLenum_GL_READ_BUFFER_EXT = GLenum(3074)
- GLenum_GL_READ_BUFFER_NV = GLenum(3074)
- GLenum_GL_SCISSOR_BOX = GLenum(3088)
- GLenum_GL_SCISSOR_TEST = GLenum(3089)
- GLenum_GL_INDEX_CLEAR_VALUE = GLenum(3104)
- GLenum_GL_INDEX_WRITEMASK = GLenum(3105)
- GLenum_GL_COLOR_CLEAR_VALUE = GLenum(3106)
- GLenum_GL_COLOR_WRITEMASK = GLenum(3107)
- GLenum_GL_INDEX_MODE = GLenum(3120)
- GLenum_GL_RGBA_MODE = GLenum(3121)
- GLenum_GL_DOUBLEBUFFER = GLenum(3122)
- GLenum_GL_STEREO = GLenum(3123)
- GLenum_GL_RENDER_MODE = GLenum(3136)
- GLenum_GL_PERSPECTIVE_CORRECTION_HINT = GLenum(3152)
- GLenum_GL_POINT_SMOOTH_HINT = GLenum(3153)
- GLenum_GL_LINE_SMOOTH_HINT = GLenum(3154)
- GLenum_GL_POLYGON_SMOOTH_HINT = GLenum(3155)
- GLenum_GL_FOG_HINT = GLenum(3156)
- GLenum_GL_TEXTURE_GEN_S = GLenum(3168)
- GLenum_GL_TEXTURE_GEN_T = GLenum(3169)
- GLenum_GL_TEXTURE_GEN_R = GLenum(3170)
- GLenum_GL_TEXTURE_GEN_Q = GLenum(3171)
- GLenum_GL_PIXEL_MAP_I_TO_I = GLenum(3184)
- GLenum_GL_PIXEL_MAP_S_TO_S = GLenum(3185)
- GLenum_GL_PIXEL_MAP_I_TO_R = GLenum(3186)
- GLenum_GL_PIXEL_MAP_I_TO_G = GLenum(3187)
- GLenum_GL_PIXEL_MAP_I_TO_B = GLenum(3188)
- GLenum_GL_PIXEL_MAP_I_TO_A = GLenum(3189)
- GLenum_GL_PIXEL_MAP_R_TO_R = GLenum(3190)
- GLenum_GL_PIXEL_MAP_G_TO_G = GLenum(3191)
- GLenum_GL_PIXEL_MAP_B_TO_B = GLenum(3192)
- GLenum_GL_PIXEL_MAP_A_TO_A = GLenum(3193)
- GLenum_GL_PIXEL_MAP_I_TO_I_SIZE = GLenum(3248)
- GLenum_GL_PIXEL_MAP_S_TO_S_SIZE = GLenum(3249)
- GLenum_GL_PIXEL_MAP_I_TO_R_SIZE = GLenum(3250)
- GLenum_GL_PIXEL_MAP_I_TO_G_SIZE = GLenum(3251)
- GLenum_GL_PIXEL_MAP_I_TO_B_SIZE = GLenum(3252)
- GLenum_GL_PIXEL_MAP_I_TO_A_SIZE = GLenum(3253)
- GLenum_GL_PIXEL_MAP_R_TO_R_SIZE = GLenum(3254)
- GLenum_GL_PIXEL_MAP_G_TO_G_SIZE = GLenum(3255)
- GLenum_GL_PIXEL_MAP_B_TO_B_SIZE = GLenum(3256)
- GLenum_GL_PIXEL_MAP_A_TO_A_SIZE = GLenum(3257)
- GLenum_GL_UNPACK_SWAP_BYTES = GLenum(3312)
- GLenum_GL_UNPACK_LSB_FIRST = GLenum(3313)
- GLenum_GL_UNPACK_ROW_LENGTH = GLenum(3314)
- GLenum_GL_UNPACK_ROW_LENGTH_EXT = GLenum(3314)
- GLenum_GL_UNPACK_SKIP_ROWS = GLenum(3315)
- GLenum_GL_UNPACK_SKIP_ROWS_EXT = GLenum(3315)
- GLenum_GL_UNPACK_SKIP_PIXELS = GLenum(3316)
- GLenum_GL_UNPACK_SKIP_PIXELS_EXT = GLenum(3316)
- GLenum_GL_UNPACK_ALIGNMENT = GLenum(3317)
- GLenum_GL_PACK_SWAP_BYTES = GLenum(3328)
- GLenum_GL_PACK_LSB_FIRST = GLenum(3329)
- GLenum_GL_PACK_ROW_LENGTH = GLenum(3330)
- GLenum_GL_PACK_SKIP_ROWS = GLenum(3331)
- GLenum_GL_PACK_SKIP_PIXELS = GLenum(3332)
- GLenum_GL_PACK_ALIGNMENT = GLenum(3333)
- GLenum_GL_MAP_COLOR = GLenum(3344)
- GLenum_GL_MAP_STENCIL = GLenum(3345)
- GLenum_GL_INDEX_SHIFT = GLenum(3346)
- GLenum_GL_INDEX_OFFSET = GLenum(3347)
- GLenum_GL_RED_SCALE = GLenum(3348)
- GLenum_GL_RED_BIAS = GLenum(3349)
- GLenum_GL_ZOOM_X = GLenum(3350)
- GLenum_GL_ZOOM_Y = GLenum(3351)
- GLenum_GL_GREEN_SCALE = GLenum(3352)
- GLenum_GL_GREEN_BIAS = GLenum(3353)
- GLenum_GL_BLUE_SCALE = GLenum(3354)
- GLenum_GL_BLUE_BIAS = GLenum(3355)
- GLenum_GL_ALPHA_SCALE = GLenum(3356)
- GLenum_GL_ALPHA_BIAS = GLenum(3357)
- GLenum_GL_DEPTH_SCALE = GLenum(3358)
- GLenum_GL_DEPTH_BIAS = GLenum(3359)
- GLenum_GL_MAX_EVAL_ORDER = GLenum(3376)
- GLenum_GL_MAX_LIGHTS = GLenum(3377)
- GLenum_GL_MAX_CLIP_PLANES = GLenum(3378)
- GLenum_GL_MAX_CLIP_PLANES_IMG = GLenum(3378)
- GLenum_GL_MAX_CLIP_DISTANCES = GLenum(3378)
- GLenum_GL_MAX_CLIP_DISTANCES_APPLE = GLenum(3378)
- GLenum_GL_MAX_TEXTURE_SIZE = GLenum(3379)
- GLenum_GL_MAX_PIXEL_MAP_TABLE = GLenum(3380)
- GLenum_GL_MAX_ATTRIB_STACK_DEPTH = GLenum(3381)
- GLenum_GL_MAX_MODELVIEW_STACK_DEPTH = GLenum(3382)
- GLenum_GL_PATH_MAX_MODELVIEW_STACK_DEPTH_NV = GLenum(3382)
- GLenum_GL_MAX_NAME_STACK_DEPTH = GLenum(3383)
- GLenum_GL_MAX_PROJECTION_STACK_DEPTH = GLenum(3384)
- GLenum_GL_PATH_MAX_PROJECTION_STACK_DEPTH_NV = GLenum(3384)
- GLenum_GL_MAX_TEXTURE_STACK_DEPTH = GLenum(3385)
- GLenum_GL_MAX_VIEWPORT_DIMS = GLenum(3386)
- GLenum_GL_MAX_CLIENT_ATTRIB_STACK_DEPTH = GLenum(3387)
- GLenum_GL_SUBPIXEL_BITS = GLenum(3408)
- GLenum_GL_INDEX_BITS = GLenum(3409)
- GLenum_GL_RED_BITS = GLenum(3410)
- GLenum_GL_GREEN_BITS = GLenum(3411)
- GLenum_GL_BLUE_BITS = GLenum(3412)
- GLenum_GL_ALPHA_BITS = GLenum(3413)
- GLenum_GL_DEPTH_BITS = GLenum(3414)
- GLenum_GL_STENCIL_BITS = GLenum(3415)
- GLenum_GL_ACCUM_RED_BITS = GLenum(3416)
- GLenum_GL_ACCUM_GREEN_BITS = GLenum(3417)
- GLenum_GL_ACCUM_BLUE_BITS = GLenum(3418)
- GLenum_GL_ACCUM_ALPHA_BITS = GLenum(3419)
- GLenum_GL_NAME_STACK_DEPTH = GLenum(3440)
- GLenum_GL_AUTO_NORMAL = GLenum(3456)
- GLenum_GL_MAP1_COLOR_4 = GLenum(3472)
- GLenum_GL_MAP1_INDEX = GLenum(3473)
- GLenum_GL_MAP1_NORMAL = GLenum(3474)
- GLenum_GL_MAP1_TEXTURE_COORD_1 = GLenum(3475)
- GLenum_GL_MAP1_TEXTURE_COORD_2 = GLenum(3476)
- GLenum_GL_MAP1_TEXTURE_COORD_3 = GLenum(3477)
- GLenum_GL_MAP1_TEXTURE_COORD_4 = GLenum(3478)
- GLenum_GL_MAP1_VERTEX_3 = GLenum(3479)
- GLenum_GL_MAP1_VERTEX_4 = GLenum(3480)
- GLenum_GL_MAP2_COLOR_4 = GLenum(3504)
- GLenum_GL_MAP2_INDEX = GLenum(3505)
- GLenum_GL_MAP2_NORMAL = GLenum(3506)
- GLenum_GL_MAP2_TEXTURE_COORD_1 = GLenum(3507)
- GLenum_GL_MAP2_TEXTURE_COORD_2 = GLenum(3508)
- GLenum_GL_MAP2_TEXTURE_COORD_3 = GLenum(3509)
- GLenum_GL_MAP2_TEXTURE_COORD_4 = GLenum(3510)
- GLenum_GL_MAP2_VERTEX_3 = GLenum(3511)
- GLenum_GL_MAP2_VERTEX_4 = GLenum(3512)
- GLenum_GL_MAP1_GRID_DOMAIN = GLenum(3536)
- GLenum_GL_MAP1_GRID_SEGMENTS = GLenum(3537)
- GLenum_GL_MAP2_GRID_DOMAIN = GLenum(3538)
- GLenum_GL_MAP2_GRID_SEGMENTS = GLenum(3539)
- GLenum_GL_TEXTURE_1D = GLenum(3552)
- GLenum_GL_TEXTURE_2D = GLenum(3553)
- GLenum_GL_FEEDBACK_BUFFER_POINTER = GLenum(3568)
- GLenum_GL_FEEDBACK_BUFFER_SIZE = GLenum(3569)
- GLenum_GL_FEEDBACK_BUFFER_TYPE = GLenum(3570)
- GLenum_GL_SELECTION_BUFFER_POINTER = GLenum(3571)
- GLenum_GL_SELECTION_BUFFER_SIZE = GLenum(3572)
- GLenum_GL_TEXTURE_WIDTH = GLenum(4096)
- GLenum_GL_TEXTURE_HEIGHT = GLenum(4097)
- GLenum_GL_TEXTURE_INTERNAL_FORMAT = GLenum(4099)
- GLenum_GL_TEXTURE_COMPONENTS = GLenum(4099)
- GLenum_GL_TEXTURE_BORDER_COLOR = GLenum(4100)
- GLenum_GL_TEXTURE_BORDER_COLOR_EXT = GLenum(4100)
- GLenum_GL_TEXTURE_BORDER_COLOR_NV = GLenum(4100)
- GLenum_GL_TEXTURE_BORDER_COLOR_OES = GLenum(4100)
- GLenum_GL_TEXTURE_BORDER = GLenum(4101)
- GLenum_GL_TEXTURE_TARGET = GLenum(4102)
- GLenum_GL_DONT_CARE = GLenum(4352)
- GLenum_GL_FASTEST = GLenum(4353)
- GLenum_GL_NICEST = GLenum(4354)
- GLenum_GL_AMBIENT = GLenum(4608)
- GLenum_GL_DIFFUSE = GLenum(4609)
- GLenum_GL_SPECULAR = GLenum(4610)
- GLenum_GL_POSITION = GLenum(4611)
- GLenum_GL_SPOT_DIRECTION = GLenum(4612)
- GLenum_GL_SPOT_EXPONENT = GLenum(4613)
- GLenum_GL_SPOT_CUTOFF = GLenum(4614)
- GLenum_GL_CONSTANT_ATTENUATION = GLenum(4615)
- GLenum_GL_LINEAR_ATTENUATION = GLenum(4616)
- GLenum_GL_QUADRATIC_ATTENUATION = GLenum(4617)
- GLenum_GL_COMPILE = GLenum(4864)
- GLenum_GL_COMPILE_AND_EXECUTE = GLenum(4865)
- GLenum_GL_BYTE = GLenum(5120)
- GLenum_GL_UNSIGNED_BYTE = GLenum(5121)
- GLenum_GL_SHORT = GLenum(5122)
- GLenum_GL_UNSIGNED_SHORT = GLenum(5123)
- GLenum_GL_INT = GLenum(5124)
- GLenum_GL_UNSIGNED_INT = GLenum(5125)
- GLenum_GL_FLOAT = GLenum(5126)
- GLenum_GL_2_BYTES = GLenum(5127)
- GLenum_GL_2_BYTES_NV = GLenum(5127)
- GLenum_GL_3_BYTES = GLenum(5128)
- GLenum_GL_3_BYTES_NV = GLenum(5128)
- GLenum_GL_4_BYTES = GLenum(5129)
- GLenum_GL_4_BYTES_NV = GLenum(5129)
- GLenum_GL_DOUBLE = GLenum(5130)
- GLenum_GL_DOUBLE_EXT = GLenum(5130)
- GLenum_GL_HALF_FLOAT = GLenum(5131)
- GLenum_GL_HALF_FLOAT_ARB = GLenum(5131)
- GLenum_GL_HALF_FLOAT_NV = GLenum(5131)
- GLenum_GL_HALF_APPLE = GLenum(5131)
- GLenum_GL_FIXED = GLenum(5132)
- GLenum_GL_FIXED_OES = GLenum(5132)
- GLenum_GL_INT64_ARB = GLenum(5134)
- GLenum_GL_INT64_NV = GLenum(5134)
- GLenum_GL_UNSIGNED_INT64_ARB = GLenum(5135)
- GLenum_GL_UNSIGNED_INT64_NV = GLenum(5135)
- GLenum_GL_CLEAR = GLenum(5376)
- GLenum_GL_AND = GLenum(5377)
- GLenum_GL_AND_REVERSE = GLenum(5378)
- GLenum_GL_COPY = GLenum(5379)
- GLenum_GL_AND_INVERTED = GLenum(5380)
- GLenum_GL_NOOP = GLenum(5381)
- GLenum_GL_XOR = GLenum(5382)
- GLenum_GL_XOR_NV = GLenum(5382)
- GLenum_GL_OR = GLenum(5383)
- GLenum_GL_NOR = GLenum(5384)
- GLenum_GL_EQUIV = GLenum(5385)
- GLenum_GL_INVERT = GLenum(5386)
- GLenum_GL_OR_REVERSE = GLenum(5387)
- GLenum_GL_COPY_INVERTED = GLenum(5388)
- GLenum_GL_OR_INVERTED = GLenum(5389)
- GLenum_GL_NAND = GLenum(5390)
- GLenum_GL_SET = GLenum(5391)
- GLenum_GL_EMISSION = GLenum(5632)
- GLenum_GL_SHININESS = GLenum(5633)
- GLenum_GL_AMBIENT_AND_DIFFUSE = GLenum(5634)
- GLenum_GL_COLOR_INDEXES = GLenum(5635)
- GLenum_GL_MODELVIEW = GLenum(5888)
- GLenum_GL_MODELVIEW0_ARB = GLenum(5888)
- GLenum_GL_MODELVIEW0_EXT = GLenum(5888)
- GLenum_GL_PATH_MODELVIEW_NV = GLenum(5888)
- GLenum_GL_PROJECTION = GLenum(5889)
- GLenum_GL_PATH_PROJECTION_NV = GLenum(5889)
- GLenum_GL_TEXTURE = GLenum(5890)
- GLenum_GL_COLOR = GLenum(6144)
- GLenum_GL_COLOR_EXT = GLenum(6144)
- GLenum_GL_DEPTH = GLenum(6145)
- GLenum_GL_DEPTH_EXT = GLenum(6145)
- GLenum_GL_STENCIL = GLenum(6146)
- GLenum_GL_STENCIL_EXT = GLenum(6146)
- GLenum_GL_COLOR_INDEX = GLenum(6400)
- GLenum_GL_STENCIL_INDEX = GLenum(6401)
- GLenum_GL_STENCIL_INDEX_OES = GLenum(6401)
- GLenum_GL_DEPTH_COMPONENT = GLenum(6402)
- GLenum_GL_RED = GLenum(6403)
- GLenum_GL_RED_EXT = GLenum(6403)
- GLenum_GL_RED_NV = GLenum(6403)
- GLenum_GL_GREEN = GLenum(6404)
- GLenum_GL_GREEN_NV = GLenum(6404)
- GLenum_GL_BLUE = GLenum(6405)
- GLenum_GL_BLUE_NV = GLenum(6405)
- GLenum_GL_ALPHA = GLenum(6406)
- GLenum_GL_RGB = GLenum(6407)
- GLenum_GL_RGBA = GLenum(6408)
- GLenum_GL_LUMINANCE = GLenum(6409)
- GLenum_GL_LUMINANCE_ALPHA = GLenum(6410)
- GLenum_GL_BITMAP = GLenum(6656)
- GLenum_GL_POINT = GLenum(6912)
- GLenum_GL_POINT_NV = GLenum(6912)
- GLenum_GL_LINE = GLenum(6913)
- GLenum_GL_LINE_NV = GLenum(6913)
- GLenum_GL_FILL = GLenum(6914)
- GLenum_GL_FILL_NV = GLenum(6914)
- GLenum_GL_RENDER = GLenum(7168)
- GLenum_GL_FEEDBACK = GLenum(7169)
- GLenum_GL_SELECT = GLenum(7170)
- GLenum_GL_FLAT = GLenum(7424)
- GLenum_GL_SMOOTH = GLenum(7425)
- GLenum_GL_KEEP = GLenum(7680)
- GLenum_GL_REPLACE = GLenum(7681)
- GLenum_GL_INCR = GLenum(7682)
- GLenum_GL_DECR = GLenum(7683)
- GLenum_GL_VENDOR = GLenum(7936)
- GLenum_GL_RENDERER = GLenum(7937)
- GLenum_GL_VERSION = GLenum(7938)
- GLenum_GL_EXTENSIONS = GLenum(7939)
- GLenum_GL_S = GLenum(8192)
- GLenum_GL_T = GLenum(8193)
- GLenum_GL_R = GLenum(8194)
- GLenum_GL_Q = GLenum(8195)
- GLenum_GL_MODULATE = GLenum(8448)
- GLenum_GL_DECAL = GLenum(8449)
- GLenum_GL_TEXTURE_ENV_MODE = GLenum(8704)
- GLenum_GL_TEXTURE_ENV_COLOR = GLenum(8705)
- GLenum_GL_TEXTURE_ENV = GLenum(8960)
- GLenum_GL_EYE_LINEAR = GLenum(9216)
- GLenum_GL_EYE_LINEAR_NV = GLenum(9216)
- GLenum_GL_OBJECT_LINEAR = GLenum(9217)
- GLenum_GL_OBJECT_LINEAR_NV = GLenum(9217)
- GLenum_GL_SPHERE_MAP = GLenum(9218)
- GLenum_GL_TEXTURE_GEN_MODE = GLenum(9472)
- GLenum_GL_TEXTURE_GEN_MODE_OES = GLenum(9472)
- GLenum_GL_OBJECT_PLANE = GLenum(9473)
- GLenum_GL_EYE_PLANE = GLenum(9474)
- GLenum_GL_NEAREST = GLenum(9728)
- GLenum_GL_LINEAR = GLenum(9729)
- GLenum_GL_NEAREST_MIPMAP_NEAREST = GLenum(9984)
- GLenum_GL_LINEAR_MIPMAP_NEAREST = GLenum(9985)
- GLenum_GL_NEAREST_MIPMAP_LINEAR = GLenum(9986)
- GLenum_GL_LINEAR_MIPMAP_LINEAR = GLenum(9987)
- GLenum_GL_TEXTURE_MAG_FILTER = GLenum(10240)
- GLenum_GL_TEXTURE_MIN_FILTER = GLenum(10241)
- GLenum_GL_TEXTURE_WRAP_S = GLenum(10242)
- GLenum_GL_TEXTURE_WRAP_T = GLenum(10243)
- GLenum_GL_CLAMP = GLenum(10496)
- GLenum_GL_REPEAT = GLenum(10497)
- GLenum_GL_POLYGON_OFFSET_UNITS = GLenum(10752)
- GLenum_GL_POLYGON_OFFSET_POINT = GLenum(10753)
- GLenum_GL_POLYGON_OFFSET_POINT_NV = GLenum(10753)
- GLenum_GL_POLYGON_OFFSET_LINE = GLenum(10754)
- GLenum_GL_POLYGON_OFFSET_LINE_NV = GLenum(10754)
- GLenum_GL_R3_G3_B2 = GLenum(10768)
- GLenum_GL_V2F = GLenum(10784)
- GLenum_GL_V3F = GLenum(10785)
- GLenum_GL_C4UB_V2F = GLenum(10786)
- GLenum_GL_C4UB_V3F = GLenum(10787)
- GLenum_GL_C3F_V3F = GLenum(10788)
- GLenum_GL_N3F_V3F = GLenum(10789)
- GLenum_GL_C4F_N3F_V3F = GLenum(10790)
- GLenum_GL_T2F_V3F = GLenum(10791)
- GLenum_GL_T4F_V4F = GLenum(10792)
- GLenum_GL_T2F_C4UB_V3F = GLenum(10793)
- GLenum_GL_T2F_C3F_V3F = GLenum(10794)
- GLenum_GL_T2F_N3F_V3F = GLenum(10795)
- GLenum_GL_T2F_C4F_N3F_V3F = GLenum(10796)
- GLenum_GL_T4F_C4F_N3F_V4F = GLenum(10797)
- GLenum_GL_CLIP_PLANE0 = GLenum(12288)
- GLenum_GL_CLIP_PLANE0_IMG = GLenum(12288)
- GLenum_GL_CLIP_DISTANCE0 = GLenum(12288)
- GLenum_GL_CLIP_DISTANCE0_APPLE = GLenum(12288)
- GLenum_GL_CLIP_PLANE1 = GLenum(12289)
- GLenum_GL_CLIP_PLANE1_IMG = GLenum(12289)
- GLenum_GL_CLIP_DISTANCE1 = GLenum(12289)
- GLenum_GL_CLIP_DISTANCE1_APPLE = GLenum(12289)
- GLenum_GL_CLIP_PLANE2 = GLenum(12290)
- GLenum_GL_CLIP_PLANE2_IMG = GLenum(12290)
- GLenum_GL_CLIP_DISTANCE2 = GLenum(12290)
- GLenum_GL_CLIP_DISTANCE2_APPLE = GLenum(12290)
- GLenum_GL_CLIP_PLANE3 = GLenum(12291)
- GLenum_GL_CLIP_PLANE3_IMG = GLenum(12291)
- GLenum_GL_CLIP_DISTANCE3 = GLenum(12291)
- GLenum_GL_CLIP_DISTANCE3_APPLE = GLenum(12291)
- GLenum_GL_CLIP_PLANE4 = GLenum(12292)
- GLenum_GL_CLIP_PLANE4_IMG = GLenum(12292)
- GLenum_GL_CLIP_DISTANCE4 = GLenum(12292)
- GLenum_GL_CLIP_DISTANCE4_APPLE = GLenum(12292)
- GLenum_GL_CLIP_PLANE5 = GLenum(12293)
- GLenum_GL_CLIP_PLANE5_IMG = GLenum(12293)
- GLenum_GL_CLIP_DISTANCE5 = GLenum(12293)
- GLenum_GL_CLIP_DISTANCE5_APPLE = GLenum(12293)
- GLenum_GL_CLIP_DISTANCE6 = GLenum(12294)
- GLenum_GL_CLIP_DISTANCE6_APPLE = GLenum(12294)
- GLenum_GL_CLIP_DISTANCE7 = GLenum(12295)
- GLenum_GL_CLIP_DISTANCE7_APPLE = GLenum(12295)
- GLenum_GL_LIGHT0 = GLenum(16384)
- GLenum_GL_LIGHT1 = GLenum(16385)
- GLenum_GL_LIGHT2 = GLenum(16386)
- GLenum_GL_LIGHT3 = GLenum(16387)
- GLenum_GL_LIGHT4 = GLenum(16388)
- GLenum_GL_LIGHT5 = GLenum(16389)
- GLenum_GL_LIGHT6 = GLenum(16390)
- GLenum_GL_LIGHT7 = GLenum(16391)
- GLenum_GL_ABGR_EXT = GLenum(32768)
- GLenum_GL_CONSTANT_COLOR = GLenum(32769)
- GLenum_GL_CONSTANT_COLOR_EXT = GLenum(32769)
- GLenum_GL_ONE_MINUS_CONSTANT_COLOR = GLenum(32770)
- GLenum_GL_ONE_MINUS_CONSTANT_COLOR_EXT = GLenum(32770)
- GLenum_GL_CONSTANT_ALPHA = GLenum(32771)
- GLenum_GL_CONSTANT_ALPHA_EXT = GLenum(32771)
- GLenum_GL_ONE_MINUS_CONSTANT_ALPHA = GLenum(32772)
- GLenum_GL_ONE_MINUS_CONSTANT_ALPHA_EXT = GLenum(32772)
- GLenum_GL_BLEND_COLOR = GLenum(32773)
- GLenum_GL_BLEND_COLOR_EXT = GLenum(32773)
- GLenum_GL_FUNC_ADD = GLenum(32774)
- GLenum_GL_FUNC_ADD_EXT = GLenum(32774)
- GLenum_GL_FUNC_ADD_OES = GLenum(32774)
- GLenum_GL_MIN = GLenum(32775)
- GLenum_GL_MIN_EXT = GLenum(32775)
- GLenum_GL_MAX = GLenum(32776)
- GLenum_GL_MAX_EXT = GLenum(32776)
- GLenum_GL_BLEND_EQUATION = GLenum(32777)
- GLenum_GL_BLEND_EQUATION_EXT = GLenum(32777)
- GLenum_GL_BLEND_EQUATION_OES = GLenum(32777)
- GLenum_GL_BLEND_EQUATION_RGB = GLenum(32777)
- GLenum_GL_BLEND_EQUATION_RGB_EXT = GLenum(32777)
- GLenum_GL_BLEND_EQUATION_RGB_OES = GLenum(32777)
- GLenum_GL_FUNC_SUBTRACT = GLenum(32778)
- GLenum_GL_FUNC_SUBTRACT_EXT = GLenum(32778)
- GLenum_GL_FUNC_SUBTRACT_OES = GLenum(32778)
- GLenum_GL_FUNC_REVERSE_SUBTRACT = GLenum(32779)
- GLenum_GL_FUNC_REVERSE_SUBTRACT_EXT = GLenum(32779)
- GLenum_GL_FUNC_REVERSE_SUBTRACT_OES = GLenum(32779)
- GLenum_GL_CMYK_EXT = GLenum(32780)
- GLenum_GL_CMYKA_EXT = GLenum(32781)
- GLenum_GL_PACK_CMYK_HINT_EXT = GLenum(32782)
- GLenum_GL_UNPACK_CMYK_HINT_EXT = GLenum(32783)
- GLenum_GL_CONVOLUTION_1D = GLenum(32784)
- GLenum_GL_CONVOLUTION_1D_EXT = GLenum(32784)
- GLenum_GL_CONVOLUTION_2D = GLenum(32785)
- GLenum_GL_CONVOLUTION_2D_EXT = GLenum(32785)
- GLenum_GL_SEPARABLE_2D = GLenum(32786)
- GLenum_GL_SEPARABLE_2D_EXT = GLenum(32786)
- GLenum_GL_CONVOLUTION_BORDER_MODE = GLenum(32787)
- GLenum_GL_CONVOLUTION_BORDER_MODE_EXT = GLenum(32787)
- GLenum_GL_CONVOLUTION_FILTER_SCALE = GLenum(32788)
- GLenum_GL_CONVOLUTION_FILTER_SCALE_EXT = GLenum(32788)
- GLenum_GL_CONVOLUTION_FILTER_BIAS = GLenum(32789)
- GLenum_GL_CONVOLUTION_FILTER_BIAS_EXT = GLenum(32789)
- GLenum_GL_REDUCE = GLenum(32790)
- GLenum_GL_REDUCE_EXT = GLenum(32790)
- GLenum_GL_CONVOLUTION_FORMAT = GLenum(32791)
- GLenum_GL_CONVOLUTION_FORMAT_EXT = GLenum(32791)
- GLenum_GL_CONVOLUTION_WIDTH = GLenum(32792)
- GLenum_GL_CONVOLUTION_WIDTH_EXT = GLenum(32792)
- GLenum_GL_CONVOLUTION_HEIGHT = GLenum(32793)
- GLenum_GL_CONVOLUTION_HEIGHT_EXT = GLenum(32793)
- GLenum_GL_MAX_CONVOLUTION_WIDTH = GLenum(32794)
- GLenum_GL_MAX_CONVOLUTION_WIDTH_EXT = GLenum(32794)
- GLenum_GL_MAX_CONVOLUTION_HEIGHT = GLenum(32795)
- GLenum_GL_MAX_CONVOLUTION_HEIGHT_EXT = GLenum(32795)
- GLenum_GL_POST_CONVOLUTION_RED_SCALE = GLenum(32796)
- GLenum_GL_POST_CONVOLUTION_RED_SCALE_EXT = GLenum(32796)
- GLenum_GL_POST_CONVOLUTION_GREEN_SCALE = GLenum(32797)
- GLenum_GL_POST_CONVOLUTION_GREEN_SCALE_EXT = GLenum(32797)
- GLenum_GL_POST_CONVOLUTION_BLUE_SCALE = GLenum(32798)
- GLenum_GL_POST_CONVOLUTION_BLUE_SCALE_EXT = GLenum(32798)
- GLenum_GL_POST_CONVOLUTION_ALPHA_SCALE = GLenum(32799)
- GLenum_GL_POST_CONVOLUTION_ALPHA_SCALE_EXT = GLenum(32799)
- GLenum_GL_POST_CONVOLUTION_RED_BIAS = GLenum(32800)
- GLenum_GL_POST_CONVOLUTION_RED_BIAS_EXT = GLenum(32800)
- GLenum_GL_POST_CONVOLUTION_GREEN_BIAS = GLenum(32801)
- GLenum_GL_POST_CONVOLUTION_GREEN_BIAS_EXT = GLenum(32801)
- GLenum_GL_POST_CONVOLUTION_BLUE_BIAS = GLenum(32802)
- GLenum_GL_POST_CONVOLUTION_BLUE_BIAS_EXT = GLenum(32802)
- GLenum_GL_POST_CONVOLUTION_ALPHA_BIAS = GLenum(32803)
- GLenum_GL_POST_CONVOLUTION_ALPHA_BIAS_EXT = GLenum(32803)
- GLenum_GL_HISTOGRAM = GLenum(32804)
- GLenum_GL_HISTOGRAM_EXT = GLenum(32804)
- GLenum_GL_PROXY_HISTOGRAM = GLenum(32805)
- GLenum_GL_PROXY_HISTOGRAM_EXT = GLenum(32805)
- GLenum_GL_HISTOGRAM_WIDTH = GLenum(32806)
- GLenum_GL_HISTOGRAM_WIDTH_EXT = GLenum(32806)
- GLenum_GL_HISTOGRAM_FORMAT = GLenum(32807)
- GLenum_GL_HISTOGRAM_FORMAT_EXT = GLenum(32807)
- GLenum_GL_HISTOGRAM_RED_SIZE = GLenum(32808)
- GLenum_GL_HISTOGRAM_RED_SIZE_EXT = GLenum(32808)
- GLenum_GL_HISTOGRAM_GREEN_SIZE = GLenum(32809)
- GLenum_GL_HISTOGRAM_GREEN_SIZE_EXT = GLenum(32809)
- GLenum_GL_HISTOGRAM_BLUE_SIZE = GLenum(32810)
- GLenum_GL_HISTOGRAM_BLUE_SIZE_EXT = GLenum(32810)
- GLenum_GL_HISTOGRAM_ALPHA_SIZE = GLenum(32811)
- GLenum_GL_HISTOGRAM_ALPHA_SIZE_EXT = GLenum(32811)
- GLenum_GL_HISTOGRAM_LUMINANCE_SIZE = GLenum(32812)
- GLenum_GL_HISTOGRAM_LUMINANCE_SIZE_EXT = GLenum(32812)
- GLenum_GL_HISTOGRAM_SINK = GLenum(32813)
- GLenum_GL_HISTOGRAM_SINK_EXT = GLenum(32813)
- GLenum_GL_MINMAX = GLenum(32814)
- GLenum_GL_MINMAX_EXT = GLenum(32814)
- GLenum_GL_MINMAX_FORMAT = GLenum(32815)
- GLenum_GL_MINMAX_FORMAT_EXT = GLenum(32815)
- GLenum_GL_MINMAX_SINK = GLenum(32816)
- GLenum_GL_MINMAX_SINK_EXT = GLenum(32816)
- GLenum_GL_TABLE_TOO_LARGE_EXT = GLenum(32817)
- GLenum_GL_TABLE_TOO_LARGE = GLenum(32817)
- GLenum_GL_UNSIGNED_BYTE_3_3_2 = GLenum(32818)
- GLenum_GL_UNSIGNED_BYTE_3_3_2_EXT = GLenum(32818)
- GLenum_GL_UNSIGNED_SHORT_4_4_4_4 = GLenum(32819)
- GLenum_GL_UNSIGNED_SHORT_4_4_4_4_EXT = GLenum(32819)
- GLenum_GL_UNSIGNED_SHORT_5_5_5_1 = GLenum(32820)
- GLenum_GL_UNSIGNED_SHORT_5_5_5_1_EXT = GLenum(32820)
- GLenum_GL_UNSIGNED_INT_8_8_8_8 = GLenum(32821)
- GLenum_GL_UNSIGNED_INT_8_8_8_8_EXT = GLenum(32821)
- GLenum_GL_UNSIGNED_INT_10_10_10_2 = GLenum(32822)
- GLenum_GL_UNSIGNED_INT_10_10_10_2_EXT = GLenum(32822)
- GLenum_GL_POLYGON_OFFSET_EXT = GLenum(32823)
- GLenum_GL_POLYGON_OFFSET_FILL = GLenum(32823)
- GLenum_GL_POLYGON_OFFSET_FACTOR = GLenum(32824)
- GLenum_GL_POLYGON_OFFSET_FACTOR_EXT = GLenum(32824)
- GLenum_GL_POLYGON_OFFSET_BIAS_EXT = GLenum(32825)
- GLenum_GL_RESCALE_NORMAL = GLenum(32826)
- GLenum_GL_RESCALE_NORMAL_EXT = GLenum(32826)
- GLenum_GL_ALPHA4 = GLenum(32827)
- GLenum_GL_ALPHA4_EXT = GLenum(32827)
- GLenum_GL_ALPHA8 = GLenum(32828)
- GLenum_GL_ALPHA8_EXT = GLenum(32828)
- GLenum_GL_ALPHA8_OES = GLenum(32828)
- GLenum_GL_ALPHA12 = GLenum(32829)
- GLenum_GL_ALPHA12_EXT = GLenum(32829)
- GLenum_GL_ALPHA16 = GLenum(32830)
- GLenum_GL_ALPHA16_EXT = GLenum(32830)
- GLenum_GL_LUMINANCE4 = GLenum(32831)
- GLenum_GL_LUMINANCE4_EXT = GLenum(32831)
- GLenum_GL_LUMINANCE8 = GLenum(32832)
- GLenum_GL_LUMINANCE8_EXT = GLenum(32832)
- GLenum_GL_LUMINANCE8_OES = GLenum(32832)
- GLenum_GL_LUMINANCE12 = GLenum(32833)
- GLenum_GL_LUMINANCE12_EXT = GLenum(32833)
- GLenum_GL_LUMINANCE16 = GLenum(32834)
- GLenum_GL_LUMINANCE16_EXT = GLenum(32834)
- GLenum_GL_LUMINANCE4_ALPHA4 = GLenum(32835)
- GLenum_GL_LUMINANCE4_ALPHA4_EXT = GLenum(32835)
- GLenum_GL_LUMINANCE4_ALPHA4_OES = GLenum(32835)
- GLenum_GL_LUMINANCE6_ALPHA2 = GLenum(32836)
- GLenum_GL_LUMINANCE6_ALPHA2_EXT = GLenum(32836)
- GLenum_GL_LUMINANCE8_ALPHA8 = GLenum(32837)
- GLenum_GL_LUMINANCE8_ALPHA8_EXT = GLenum(32837)
- GLenum_GL_LUMINANCE8_ALPHA8_OES = GLenum(32837)
- GLenum_GL_LUMINANCE12_ALPHA4 = GLenum(32838)
- GLenum_GL_LUMINANCE12_ALPHA4_EXT = GLenum(32838)
- GLenum_GL_LUMINANCE12_ALPHA12 = GLenum(32839)
- GLenum_GL_LUMINANCE12_ALPHA12_EXT = GLenum(32839)
- GLenum_GL_LUMINANCE16_ALPHA16 = GLenum(32840)
- GLenum_GL_LUMINANCE16_ALPHA16_EXT = GLenum(32840)
- GLenum_GL_INTENSITY = GLenum(32841)
- GLenum_GL_INTENSITY_EXT = GLenum(32841)
- GLenum_GL_INTENSITY4 = GLenum(32842)
- GLenum_GL_INTENSITY4_EXT = GLenum(32842)
- GLenum_GL_INTENSITY8 = GLenum(32843)
- GLenum_GL_INTENSITY8_EXT = GLenum(32843)
- GLenum_GL_INTENSITY12 = GLenum(32844)
- GLenum_GL_INTENSITY12_EXT = GLenum(32844)
- GLenum_GL_INTENSITY16 = GLenum(32845)
- GLenum_GL_INTENSITY16_EXT = GLenum(32845)
- GLenum_GL_RGB2_EXT = GLenum(32846)
- GLenum_GL_RGB4 = GLenum(32847)
- GLenum_GL_RGB4_EXT = GLenum(32847)
- GLenum_GL_RGB5 = GLenum(32848)
- GLenum_GL_RGB5_EXT = GLenum(32848)
- GLenum_GL_RGB8 = GLenum(32849)
- GLenum_GL_RGB8_EXT = GLenum(32849)
- GLenum_GL_RGB8_OES = GLenum(32849)
- GLenum_GL_RGB10 = GLenum(32850)
- GLenum_GL_RGB10_EXT = GLenum(32850)
- GLenum_GL_RGB12 = GLenum(32851)
- GLenum_GL_RGB12_EXT = GLenum(32851)
- GLenum_GL_RGB16 = GLenum(32852)
- GLenum_GL_RGB16_EXT = GLenum(32852)
- GLenum_GL_RGBA2 = GLenum(32853)
- GLenum_GL_RGBA2_EXT = GLenum(32853)
- GLenum_GL_RGBA4 = GLenum(32854)
- GLenum_GL_RGBA4_EXT = GLenum(32854)
- GLenum_GL_RGBA4_OES = GLenum(32854)
- GLenum_GL_RGB5_A1 = GLenum(32855)
- GLenum_GL_RGB5_A1_EXT = GLenum(32855)
- GLenum_GL_RGB5_A1_OES = GLenum(32855)
- GLenum_GL_RGBA8 = GLenum(32856)
- GLenum_GL_RGBA8_EXT = GLenum(32856)
- GLenum_GL_RGBA8_OES = GLenum(32856)
- GLenum_GL_RGB10_A2 = GLenum(32857)
- GLenum_GL_RGB10_A2_EXT = GLenum(32857)
- GLenum_GL_RGBA12 = GLenum(32858)
- GLenum_GL_RGBA12_EXT = GLenum(32858)
- GLenum_GL_RGBA16 = GLenum(32859)
- GLenum_GL_RGBA16_EXT = GLenum(32859)
- GLenum_GL_TEXTURE_RED_SIZE = GLenum(32860)
- GLenum_GL_TEXTURE_RED_SIZE_EXT = GLenum(32860)
- GLenum_GL_TEXTURE_GREEN_SIZE = GLenum(32861)
- GLenum_GL_TEXTURE_GREEN_SIZE_EXT = GLenum(32861)
- GLenum_GL_TEXTURE_BLUE_SIZE = GLenum(32862)
- GLenum_GL_TEXTURE_BLUE_SIZE_EXT = GLenum(32862)
- GLenum_GL_TEXTURE_ALPHA_SIZE = GLenum(32863)
- GLenum_GL_TEXTURE_ALPHA_SIZE_EXT = GLenum(32863)
- GLenum_GL_TEXTURE_LUMINANCE_SIZE = GLenum(32864)
- GLenum_GL_TEXTURE_LUMINANCE_SIZE_EXT = GLenum(32864)
- GLenum_GL_TEXTURE_INTENSITY_SIZE = GLenum(32865)
- GLenum_GL_TEXTURE_INTENSITY_SIZE_EXT = GLenum(32865)
- GLenum_GL_REPLACE_EXT = GLenum(32866)
- GLenum_GL_PROXY_TEXTURE_1D = GLenum(32867)
- GLenum_GL_PROXY_TEXTURE_1D_EXT = GLenum(32867)
- GLenum_GL_PROXY_TEXTURE_2D = GLenum(32868)
- GLenum_GL_PROXY_TEXTURE_2D_EXT = GLenum(32868)
- GLenum_GL_TEXTURE_TOO_LARGE_EXT = GLenum(32869)
- GLenum_GL_TEXTURE_PRIORITY = GLenum(32870)
- GLenum_GL_TEXTURE_PRIORITY_EXT = GLenum(32870)
- GLenum_GL_TEXTURE_RESIDENT = GLenum(32871)
- GLenum_GL_TEXTURE_RESIDENT_EXT = GLenum(32871)
- GLenum_GL_TEXTURE_1D_BINDING_EXT = GLenum(32872)
- GLenum_GL_TEXTURE_BINDING_1D = GLenum(32872)
- GLenum_GL_TEXTURE_2D_BINDING_EXT = GLenum(32873)
- GLenum_GL_TEXTURE_BINDING_2D = GLenum(32873)
- GLenum_GL_TEXTURE_3D_BINDING_EXT = GLenum(32874)
- GLenum_GL_TEXTURE_3D_BINDING_OES = GLenum(32874)
- GLenum_GL_TEXTURE_BINDING_3D = GLenum(32874)
- GLenum_GL_TEXTURE_BINDING_3D_OES = GLenum(32874)
- GLenum_GL_PACK_SKIP_IMAGES = GLenum(32875)
- GLenum_GL_PACK_SKIP_IMAGES_EXT = GLenum(32875)
- GLenum_GL_PACK_IMAGE_HEIGHT = GLenum(32876)
- GLenum_GL_PACK_IMAGE_HEIGHT_EXT = GLenum(32876)
- GLenum_GL_UNPACK_SKIP_IMAGES = GLenum(32877)
- GLenum_GL_UNPACK_SKIP_IMAGES_EXT = GLenum(32877)
- GLenum_GL_UNPACK_IMAGE_HEIGHT = GLenum(32878)
- GLenum_GL_UNPACK_IMAGE_HEIGHT_EXT = GLenum(32878)
- GLenum_GL_TEXTURE_3D = GLenum(32879)
- GLenum_GL_TEXTURE_3D_EXT = GLenum(32879)
- GLenum_GL_TEXTURE_3D_OES = GLenum(32879)
- GLenum_GL_PROXY_TEXTURE_3D = GLenum(32880)
- GLenum_GL_PROXY_TEXTURE_3D_EXT = GLenum(32880)
- GLenum_GL_TEXTURE_DEPTH = GLenum(32881)
- GLenum_GL_TEXTURE_DEPTH_EXT = GLenum(32881)
- GLenum_GL_TEXTURE_WRAP_R = GLenum(32882)
- GLenum_GL_TEXTURE_WRAP_R_EXT = GLenum(32882)
- GLenum_GL_TEXTURE_WRAP_R_OES = GLenum(32882)
- GLenum_GL_MAX_3D_TEXTURE_SIZE = GLenum(32883)
- GLenum_GL_MAX_3D_TEXTURE_SIZE_EXT = GLenum(32883)
- GLenum_GL_MAX_3D_TEXTURE_SIZE_OES = GLenum(32883)
- GLenum_GL_VERTEX_ARRAY = GLenum(32884)
- GLenum_GL_VERTEX_ARRAY_EXT = GLenum(32884)
- GLenum_GL_VERTEX_ARRAY_KHR = GLenum(32884)
- GLenum_GL_NORMAL_ARRAY = GLenum(32885)
- GLenum_GL_NORMAL_ARRAY_EXT = GLenum(32885)
- GLenum_GL_COLOR_ARRAY = GLenum(32886)
- GLenum_GL_COLOR_ARRAY_EXT = GLenum(32886)
- GLenum_GL_INDEX_ARRAY = GLenum(32887)
- GLenum_GL_INDEX_ARRAY_EXT = GLenum(32887)
- GLenum_GL_TEXTURE_COORD_ARRAY = GLenum(32888)
- GLenum_GL_TEXTURE_COORD_ARRAY_EXT = GLenum(32888)
- GLenum_GL_EDGE_FLAG_ARRAY = GLenum(32889)
- GLenum_GL_EDGE_FLAG_ARRAY_EXT = GLenum(32889)
- GLenum_GL_VERTEX_ARRAY_SIZE = GLenum(32890)
- GLenum_GL_VERTEX_ARRAY_SIZE_EXT = GLenum(32890)
- GLenum_GL_VERTEX_ARRAY_TYPE = GLenum(32891)
- GLenum_GL_VERTEX_ARRAY_TYPE_EXT = GLenum(32891)
- GLenum_GL_VERTEX_ARRAY_STRIDE = GLenum(32892)
- GLenum_GL_VERTEX_ARRAY_STRIDE_EXT = GLenum(32892)
- GLenum_GL_VERTEX_ARRAY_COUNT_EXT = GLenum(32893)
- GLenum_GL_NORMAL_ARRAY_TYPE = GLenum(32894)
- GLenum_GL_NORMAL_ARRAY_TYPE_EXT = GLenum(32894)
- GLenum_GL_NORMAL_ARRAY_STRIDE = GLenum(32895)
- GLenum_GL_NORMAL_ARRAY_STRIDE_EXT = GLenum(32895)
- GLenum_GL_NORMAL_ARRAY_COUNT_EXT = GLenum(32896)
- GLenum_GL_COLOR_ARRAY_SIZE = GLenum(32897)
- GLenum_GL_COLOR_ARRAY_SIZE_EXT = GLenum(32897)
- GLenum_GL_COLOR_ARRAY_TYPE = GLenum(32898)
- GLenum_GL_COLOR_ARRAY_TYPE_EXT = GLenum(32898)
- GLenum_GL_COLOR_ARRAY_STRIDE = GLenum(32899)
- GLenum_GL_COLOR_ARRAY_STRIDE_EXT = GLenum(32899)
- GLenum_GL_COLOR_ARRAY_COUNT_EXT = GLenum(32900)
- GLenum_GL_INDEX_ARRAY_TYPE = GLenum(32901)
- GLenum_GL_INDEX_ARRAY_TYPE_EXT = GLenum(32901)
- GLenum_GL_INDEX_ARRAY_STRIDE = GLenum(32902)
- GLenum_GL_INDEX_ARRAY_STRIDE_EXT = GLenum(32902)
- GLenum_GL_INDEX_ARRAY_COUNT_EXT = GLenum(32903)
- GLenum_GL_TEXTURE_COORD_ARRAY_SIZE = GLenum(32904)
- GLenum_GL_TEXTURE_COORD_ARRAY_SIZE_EXT = GLenum(32904)
- GLenum_GL_TEXTURE_COORD_ARRAY_TYPE = GLenum(32905)
- GLenum_GL_TEXTURE_COORD_ARRAY_TYPE_EXT = GLenum(32905)
- GLenum_GL_TEXTURE_COORD_ARRAY_STRIDE = GLenum(32906)
- GLenum_GL_TEXTURE_COORD_ARRAY_STRIDE_EXT = GLenum(32906)
- GLenum_GL_TEXTURE_COORD_ARRAY_COUNT_EXT = GLenum(32907)
- GLenum_GL_EDGE_FLAG_ARRAY_STRIDE = GLenum(32908)
- GLenum_GL_EDGE_FLAG_ARRAY_STRIDE_EXT = GLenum(32908)
- GLenum_GL_EDGE_FLAG_ARRAY_COUNT_EXT = GLenum(32909)
- GLenum_GL_VERTEX_ARRAY_POINTER = GLenum(32910)
- GLenum_GL_VERTEX_ARRAY_POINTER_EXT = GLenum(32910)
- GLenum_GL_NORMAL_ARRAY_POINTER = GLenum(32911)
- GLenum_GL_NORMAL_ARRAY_POINTER_EXT = GLenum(32911)
- GLenum_GL_COLOR_ARRAY_POINTER = GLenum(32912)
- GLenum_GL_COLOR_ARRAY_POINTER_EXT = GLenum(32912)
- GLenum_GL_INDEX_ARRAY_POINTER = GLenum(32913)
- GLenum_GL_INDEX_ARRAY_POINTER_EXT = GLenum(32913)
- GLenum_GL_TEXTURE_COORD_ARRAY_POINTER = GLenum(32914)
- GLenum_GL_TEXTURE_COORD_ARRAY_POINTER_EXT = GLenum(32914)
- GLenum_GL_EDGE_FLAG_ARRAY_POINTER = GLenum(32915)
- GLenum_GL_EDGE_FLAG_ARRAY_POINTER_EXT = GLenum(32915)
- GLenum_GL_INTERLACE_SGIX = GLenum(32916)
- GLenum_GL_DETAIL_TEXTURE_2D_SGIS = GLenum(32917)
- GLenum_GL_DETAIL_TEXTURE_2D_BINDING_SGIS = GLenum(32918)
- GLenum_GL_LINEAR_DETAIL_SGIS = GLenum(32919)
- GLenum_GL_LINEAR_DETAIL_ALPHA_SGIS = GLenum(32920)
- GLenum_GL_LINEAR_DETAIL_COLOR_SGIS = GLenum(32921)
- GLenum_GL_DETAIL_TEXTURE_LEVEL_SGIS = GLenum(32922)
- GLenum_GL_DETAIL_TEXTURE_MODE_SGIS = GLenum(32923)
- GLenum_GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS = GLenum(32924)
- GLenum_GL_MULTISAMPLE = GLenum(32925)
- GLenum_GL_MULTISAMPLE_ARB = GLenum(32925)
- GLenum_GL_MULTISAMPLE_EXT = GLenum(32925)
- GLenum_GL_MULTISAMPLE_SGIS = GLenum(32925)
- GLenum_GL_SAMPLE_ALPHA_TO_COVERAGE = GLenum(32926)
- GLenum_GL_SAMPLE_ALPHA_TO_COVERAGE_ARB = GLenum(32926)
- GLenum_GL_SAMPLE_ALPHA_TO_MASK_EXT = GLenum(32926)
- GLenum_GL_SAMPLE_ALPHA_TO_MASK_SGIS = GLenum(32926)
- GLenum_GL_SAMPLE_ALPHA_TO_ONE = GLenum(32927)
- GLenum_GL_SAMPLE_ALPHA_TO_ONE_ARB = GLenum(32927)
- GLenum_GL_SAMPLE_ALPHA_TO_ONE_EXT = GLenum(32927)
- GLenum_GL_SAMPLE_ALPHA_TO_ONE_SGIS = GLenum(32927)
- GLenum_GL_SAMPLE_COVERAGE = GLenum(32928)
- GLenum_GL_SAMPLE_COVERAGE_ARB = GLenum(32928)
- GLenum_GL_SAMPLE_MASK_EXT = GLenum(32928)
- GLenum_GL_SAMPLE_MASK_SGIS = GLenum(32928)
- GLenum_GL_1PASS_EXT = GLenum(32929)
- GLenum_GL_1PASS_SGIS = GLenum(32929)
- GLenum_GL_2PASS_0_EXT = GLenum(32930)
- GLenum_GL_2PASS_0_SGIS = GLenum(32930)
- GLenum_GL_2PASS_1_EXT = GLenum(32931)
- GLenum_GL_2PASS_1_SGIS = GLenum(32931)
- GLenum_GL_4PASS_0_EXT = GLenum(32932)
- GLenum_GL_4PASS_0_SGIS = GLenum(32932)
- GLenum_GL_4PASS_1_EXT = GLenum(32933)
- GLenum_GL_4PASS_1_SGIS = GLenum(32933)
- GLenum_GL_4PASS_2_EXT = GLenum(32934)
- GLenum_GL_4PASS_2_SGIS = GLenum(32934)
- GLenum_GL_4PASS_3_EXT = GLenum(32935)
- GLenum_GL_4PASS_3_SGIS = GLenum(32935)
- GLenum_GL_SAMPLE_BUFFERS = GLenum(32936)
- GLenum_GL_SAMPLE_BUFFERS_ARB = GLenum(32936)
- GLenum_GL_SAMPLE_BUFFERS_EXT = GLenum(32936)
- GLenum_GL_SAMPLE_BUFFERS_SGIS = GLenum(32936)
- GLenum_GL_SAMPLES = GLenum(32937)
- GLenum_GL_SAMPLES_ARB = GLenum(32937)
- GLenum_GL_SAMPLES_EXT = GLenum(32937)
- GLenum_GL_SAMPLES_SGIS = GLenum(32937)
- GLenum_GL_SAMPLE_COVERAGE_VALUE = GLenum(32938)
- GLenum_GL_SAMPLE_COVERAGE_VALUE_ARB = GLenum(32938)
- GLenum_GL_SAMPLE_MASK_VALUE_EXT = GLenum(32938)
- GLenum_GL_SAMPLE_MASK_VALUE_SGIS = GLenum(32938)
- GLenum_GL_SAMPLE_COVERAGE_INVERT = GLenum(32939)
- GLenum_GL_SAMPLE_COVERAGE_INVERT_ARB = GLenum(32939)
- GLenum_GL_SAMPLE_MASK_INVERT_EXT = GLenum(32939)
- GLenum_GL_SAMPLE_MASK_INVERT_SGIS = GLenum(32939)
- GLenum_GL_SAMPLE_PATTERN_EXT = GLenum(32940)
- GLenum_GL_SAMPLE_PATTERN_SGIS = GLenum(32940)
- GLenum_GL_LINEAR_SHARPEN_SGIS = GLenum(32941)
- GLenum_GL_LINEAR_SHARPEN_ALPHA_SGIS = GLenum(32942)
- GLenum_GL_LINEAR_SHARPEN_COLOR_SGIS = GLenum(32943)
- GLenum_GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS = GLenum(32944)
- GLenum_GL_COLOR_MATRIX = GLenum(32945)
- GLenum_GL_COLOR_MATRIX_SGI = GLenum(32945)
- GLenum_GL_COLOR_MATRIX_STACK_DEPTH = GLenum(32946)
- GLenum_GL_COLOR_MATRIX_STACK_DEPTH_SGI = GLenum(32946)
- GLenum_GL_MAX_COLOR_MATRIX_STACK_DEPTH = GLenum(32947)
- GLenum_GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI = GLenum(32947)
- GLenum_GL_POST_COLOR_MATRIX_RED_SCALE = GLenum(32948)
- GLenum_GL_POST_COLOR_MATRIX_RED_SCALE_SGI = GLenum(32948)
- GLenum_GL_POST_COLOR_MATRIX_GREEN_SCALE = GLenum(32949)
- GLenum_GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI = GLenum(32949)
- GLenum_GL_POST_COLOR_MATRIX_BLUE_SCALE = GLenum(32950)
- GLenum_GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI = GLenum(32950)
- GLenum_GL_POST_COLOR_MATRIX_ALPHA_SCALE = GLenum(32951)
- GLenum_GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI = GLenum(32951)
- GLenum_GL_POST_COLOR_MATRIX_RED_BIAS = GLenum(32952)
- GLenum_GL_POST_COLOR_MATRIX_RED_BIAS_SGI = GLenum(32952)
- GLenum_GL_POST_COLOR_MATRIX_GREEN_BIAS = GLenum(32953)
- GLenum_GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI = GLenum(32953)
- GLenum_GL_POST_COLOR_MATRIX_BLUE_BIAS = GLenum(32954)
- GLenum_GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI = GLenum(32954)
- GLenum_GL_POST_COLOR_MATRIX_ALPHA_BIAS = GLenum(32955)
- GLenum_GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI = GLenum(32955)
- GLenum_GL_TEXTURE_COLOR_TABLE_SGI = GLenum(32956)
- GLenum_GL_PROXY_TEXTURE_COLOR_TABLE_SGI = GLenum(32957)
- GLenum_GL_TEXTURE_ENV_BIAS_SGIX = GLenum(32958)
- GLenum_GL_SHADOW_AMBIENT_SGIX = GLenum(32959)
- GLenum_GL_TEXTURE_COMPARE_FAIL_VALUE_ARB = GLenum(32959)
- GLenum_GL_BLEND_DST_RGB = GLenum(32968)
- GLenum_GL_BLEND_DST_RGB_EXT = GLenum(32968)
- GLenum_GL_BLEND_DST_RGB_OES = GLenum(32968)
- GLenum_GL_BLEND_SRC_RGB = GLenum(32969)
- GLenum_GL_BLEND_SRC_RGB_EXT = GLenum(32969)
- GLenum_GL_BLEND_SRC_RGB_OES = GLenum(32969)
- GLenum_GL_BLEND_DST_ALPHA = GLenum(32970)
- GLenum_GL_BLEND_DST_ALPHA_EXT = GLenum(32970)
- GLenum_GL_BLEND_DST_ALPHA_OES = GLenum(32970)
- GLenum_GL_BLEND_SRC_ALPHA = GLenum(32971)
- GLenum_GL_BLEND_SRC_ALPHA_EXT = GLenum(32971)
- GLenum_GL_BLEND_SRC_ALPHA_OES = GLenum(32971)
- GLenum_GL_422_EXT = GLenum(32972)
- GLenum_GL_422_REV_EXT = GLenum(32973)
- GLenum_GL_422_AVERAGE_EXT = GLenum(32974)
- GLenum_GL_422_REV_AVERAGE_EXT = GLenum(32975)
- GLenum_GL_COLOR_TABLE = GLenum(32976)
- GLenum_GL_COLOR_TABLE_SGI = GLenum(32976)
- GLenum_GL_POST_CONVOLUTION_COLOR_TABLE = GLenum(32977)
- GLenum_GL_POST_CONVOLUTION_COLOR_TABLE_SGI = GLenum(32977)
- GLenum_GL_POST_COLOR_MATRIX_COLOR_TABLE = GLenum(32978)
- GLenum_GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI = GLenum(32978)
- GLenum_GL_PROXY_COLOR_TABLE = GLenum(32979)
- GLenum_GL_PROXY_COLOR_TABLE_SGI = GLenum(32979)
- GLenum_GL_PROXY_POST_CONVOLUTION_COLOR_TABLE = GLenum(32980)
- GLenum_GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI = GLenum(32980)
- GLenum_GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE = GLenum(32981)
- GLenum_GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI = GLenum(32981)
- GLenum_GL_COLOR_TABLE_SCALE = GLenum(32982)
- GLenum_GL_COLOR_TABLE_SCALE_SGI = GLenum(32982)
- GLenum_GL_COLOR_TABLE_BIAS = GLenum(32983)
- GLenum_GL_COLOR_TABLE_BIAS_SGI = GLenum(32983)
- GLenum_GL_COLOR_TABLE_FORMAT = GLenum(32984)
- GLenum_GL_COLOR_TABLE_FORMAT_SGI = GLenum(32984)
- GLenum_GL_COLOR_TABLE_WIDTH = GLenum(32985)
- GLenum_GL_COLOR_TABLE_WIDTH_SGI = GLenum(32985)
- GLenum_GL_COLOR_TABLE_RED_SIZE = GLenum(32986)
- GLenum_GL_COLOR_TABLE_RED_SIZE_SGI = GLenum(32986)
- GLenum_GL_COLOR_TABLE_GREEN_SIZE = GLenum(32987)
- GLenum_GL_COLOR_TABLE_GREEN_SIZE_SGI = GLenum(32987)
- GLenum_GL_COLOR_TABLE_BLUE_SIZE = GLenum(32988)
- GLenum_GL_COLOR_TABLE_BLUE_SIZE_SGI = GLenum(32988)
- GLenum_GL_COLOR_TABLE_ALPHA_SIZE = GLenum(32989)
- GLenum_GL_COLOR_TABLE_ALPHA_SIZE_SGI = GLenum(32989)
- GLenum_GL_COLOR_TABLE_LUMINANCE_SIZE = GLenum(32990)
- GLenum_GL_COLOR_TABLE_LUMINANCE_SIZE_SGI = GLenum(32990)
- GLenum_GL_COLOR_TABLE_INTENSITY_SIZE = GLenum(32991)
- GLenum_GL_COLOR_TABLE_INTENSITY_SIZE_SGI = GLenum(32991)
- GLenum_GL_BGR = GLenum(32992)
- GLenum_GL_BGR_EXT = GLenum(32992)
- GLenum_GL_BGRA = GLenum(32993)
- GLenum_GL_BGRA_EXT = GLenum(32993)
- GLenum_GL_BGRA_IMG = GLenum(32993)
- GLenum_GL_COLOR_INDEX1_EXT = GLenum(32994)
- GLenum_GL_COLOR_INDEX2_EXT = GLenum(32995)
- GLenum_GL_COLOR_INDEX4_EXT = GLenum(32996)
- GLenum_GL_COLOR_INDEX8_EXT = GLenum(32997)
- GLenum_GL_COLOR_INDEX12_EXT = GLenum(32998)
- GLenum_GL_COLOR_INDEX16_EXT = GLenum(32999)
- GLenum_GL_MAX_ELEMENTS_VERTICES = GLenum(33000)
- GLenum_GL_MAX_ELEMENTS_VERTICES_EXT = GLenum(33000)
- GLenum_GL_MAX_ELEMENTS_INDICES = GLenum(33001)
- GLenum_GL_MAX_ELEMENTS_INDICES_EXT = GLenum(33001)
- GLenum_GL_PHONG_WIN = GLenum(33002)
- GLenum_GL_PHONG_HINT_WIN = GLenum(33003)
- GLenum_GL_FOG_SPECULAR_TEXTURE_WIN = GLenum(33004)
- GLenum_GL_TEXTURE_INDEX_SIZE_EXT = GLenum(33005)
- GLenum_GL_PARAMETER_BUFFER_ARB = GLenum(33006)
- GLenum_GL_PARAMETER_BUFFER_BINDING_ARB = GLenum(33007)
- GLenum_GL_CLIP_VOLUME_CLIPPING_HINT_EXT = GLenum(33008)
- GLenum_GL_DUAL_ALPHA4_SGIS = GLenum(33040)
- GLenum_GL_DUAL_ALPHA8_SGIS = GLenum(33041)
- GLenum_GL_DUAL_ALPHA12_SGIS = GLenum(33042)
- GLenum_GL_DUAL_ALPHA16_SGIS = GLenum(33043)
- GLenum_GL_DUAL_LUMINANCE4_SGIS = GLenum(33044)
- GLenum_GL_DUAL_LUMINANCE8_SGIS = GLenum(33045)
- GLenum_GL_DUAL_LUMINANCE12_SGIS = GLenum(33046)
- GLenum_GL_DUAL_LUMINANCE16_SGIS = GLenum(33047)
- GLenum_GL_DUAL_INTENSITY4_SGIS = GLenum(33048)
- GLenum_GL_DUAL_INTENSITY8_SGIS = GLenum(33049)
- GLenum_GL_DUAL_INTENSITY12_SGIS = GLenum(33050)
- GLenum_GL_DUAL_INTENSITY16_SGIS = GLenum(33051)
- GLenum_GL_DUAL_LUMINANCE_ALPHA4_SGIS = GLenum(33052)
- GLenum_GL_DUAL_LUMINANCE_ALPHA8_SGIS = GLenum(33053)
- GLenum_GL_QUAD_ALPHA4_SGIS = GLenum(33054)
- GLenum_GL_QUAD_ALPHA8_SGIS = GLenum(33055)
- GLenum_GL_QUAD_LUMINANCE4_SGIS = GLenum(33056)
- GLenum_GL_QUAD_LUMINANCE8_SGIS = GLenum(33057)
- GLenum_GL_QUAD_INTENSITY4_SGIS = GLenum(33058)
- GLenum_GL_QUAD_INTENSITY8_SGIS = GLenum(33059)
- GLenum_GL_DUAL_TEXTURE_SELECT_SGIS = GLenum(33060)
- GLenum_GL_QUAD_TEXTURE_SELECT_SGIS = GLenum(33061)
- GLenum_GL_POINT_SIZE_MIN = GLenum(33062)
- GLenum_GL_POINT_SIZE_MIN_ARB = GLenum(33062)
- GLenum_GL_POINT_SIZE_MIN_EXT = GLenum(33062)
- GLenum_GL_POINT_SIZE_MIN_SGIS = GLenum(33062)
- GLenum_GL_POINT_SIZE_MAX = GLenum(33063)
- GLenum_GL_POINT_SIZE_MAX_ARB = GLenum(33063)
- GLenum_GL_POINT_SIZE_MAX_EXT = GLenum(33063)
- GLenum_GL_POINT_SIZE_MAX_SGIS = GLenum(33063)
- GLenum_GL_POINT_FADE_THRESHOLD_SIZE = GLenum(33064)
- GLenum_GL_POINT_FADE_THRESHOLD_SIZE_ARB = GLenum(33064)
- GLenum_GL_POINT_FADE_THRESHOLD_SIZE_EXT = GLenum(33064)
- GLenum_GL_POINT_FADE_THRESHOLD_SIZE_SGIS = GLenum(33064)
- GLenum_GL_DISTANCE_ATTENUATION_EXT = GLenum(33065)
- GLenum_GL_DISTANCE_ATTENUATION_SGIS = GLenum(33065)
- GLenum_GL_POINT_DISTANCE_ATTENUATION = GLenum(33065)
- GLenum_GL_POINT_DISTANCE_ATTENUATION_ARB = GLenum(33065)
- GLenum_GL_FOG_FUNC_SGIS = GLenum(33066)
- GLenum_GL_FOG_FUNC_POINTS_SGIS = GLenum(33067)
- GLenum_GL_MAX_FOG_FUNC_POINTS_SGIS = GLenum(33068)
- GLenum_GL_CLAMP_TO_BORDER = GLenum(33069)
- GLenum_GL_CLAMP_TO_BORDER_ARB = GLenum(33069)
- GLenum_GL_CLAMP_TO_BORDER_EXT = GLenum(33069)
- GLenum_GL_CLAMP_TO_BORDER_NV = GLenum(33069)
- GLenum_GL_CLAMP_TO_BORDER_SGIS = GLenum(33069)
- GLenum_GL_CLAMP_TO_BORDER_OES = GLenum(33069)
- GLenum_GL_TEXTURE_MULTI_BUFFER_HINT_SGIX = GLenum(33070)
- GLenum_GL_CLAMP_TO_EDGE = GLenum(33071)
- GLenum_GL_CLAMP_TO_EDGE_SGIS = GLenum(33071)
- GLenum_GL_PACK_SKIP_VOLUMES_SGIS = GLenum(33072)
- GLenum_GL_PACK_IMAGE_DEPTH_SGIS = GLenum(33073)
- GLenum_GL_UNPACK_SKIP_VOLUMES_SGIS = GLenum(33074)
- GLenum_GL_UNPACK_IMAGE_DEPTH_SGIS = GLenum(33075)
- GLenum_GL_TEXTURE_4D_SGIS = GLenum(33076)
- GLenum_GL_PROXY_TEXTURE_4D_SGIS = GLenum(33077)
- GLenum_GL_TEXTURE_4DSIZE_SGIS = GLenum(33078)
- GLenum_GL_TEXTURE_WRAP_Q_SGIS = GLenum(33079)
- GLenum_GL_MAX_4D_TEXTURE_SIZE_SGIS = GLenum(33080)
- GLenum_GL_PIXEL_TEX_GEN_SGIX = GLenum(33081)
- GLenum_GL_TEXTURE_MIN_LOD = GLenum(33082)
- GLenum_GL_TEXTURE_MIN_LOD_SGIS = GLenum(33082)
- GLenum_GL_TEXTURE_MAX_LOD = GLenum(33083)
- GLenum_GL_TEXTURE_MAX_LOD_SGIS = GLenum(33083)
- GLenum_GL_TEXTURE_BASE_LEVEL = GLenum(33084)
- GLenum_GL_TEXTURE_BASE_LEVEL_SGIS = GLenum(33084)
- GLenum_GL_TEXTURE_MAX_LEVEL = GLenum(33085)
- GLenum_GL_TEXTURE_MAX_LEVEL_APPLE = GLenum(33085)
- GLenum_GL_TEXTURE_MAX_LEVEL_SGIS = GLenum(33085)
- GLenum_GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX = GLenum(33086)
- GLenum_GL_PIXEL_TILE_CACHE_INCREMENT_SGIX = GLenum(33087)
- GLenum_GL_PIXEL_TILE_WIDTH_SGIX = GLenum(33088)
- GLenum_GL_PIXEL_TILE_HEIGHT_SGIX = GLenum(33089)
- GLenum_GL_PIXEL_TILE_GRID_WIDTH_SGIX = GLenum(33090)
- GLenum_GL_PIXEL_TILE_GRID_HEIGHT_SGIX = GLenum(33091)
- GLenum_GL_PIXEL_TILE_GRID_DEPTH_SGIX = GLenum(33092)
- GLenum_GL_PIXEL_TILE_CACHE_SIZE_SGIX = GLenum(33093)
- GLenum_GL_FILTER4_SGIS = GLenum(33094)
- GLenum_GL_TEXTURE_FILTER4_SIZE_SGIS = GLenum(33095)
- GLenum_GL_SPRITE_SGIX = GLenum(33096)
- GLenum_GL_SPRITE_MODE_SGIX = GLenum(33097)
- GLenum_GL_SPRITE_AXIS_SGIX = GLenum(33098)
- GLenum_GL_SPRITE_TRANSLATION_SGIX = GLenum(33099)
- GLenum_GL_SPRITE_AXIAL_SGIX = GLenum(33100)
- GLenum_GL_SPRITE_OBJECT_ALIGNED_SGIX = GLenum(33101)
- GLenum_GL_SPRITE_EYE_ALIGNED_SGIX = GLenum(33102)
- GLenum_GL_TEXTURE_4D_BINDING_SGIS = GLenum(33103)
- GLenum_GL_IGNORE_BORDER_HP = GLenum(33104)
- GLenum_GL_CONSTANT_BORDER = GLenum(33105)
- GLenum_GL_CONSTANT_BORDER_HP = GLenum(33105)
- GLenum_GL_REPLICATE_BORDER = GLenum(33107)
- GLenum_GL_REPLICATE_BORDER_HP = GLenum(33107)
- GLenum_GL_CONVOLUTION_BORDER_COLOR = GLenum(33108)
- GLenum_GL_CONVOLUTION_BORDER_COLOR_HP = GLenum(33108)
- GLenum_GL_IMAGE_SCALE_X_HP = GLenum(33109)
- GLenum_GL_IMAGE_SCALE_Y_HP = GLenum(33110)
- GLenum_GL_IMAGE_TRANSLATE_X_HP = GLenum(33111)
- GLenum_GL_IMAGE_TRANSLATE_Y_HP = GLenum(33112)
- GLenum_GL_IMAGE_ROTATE_ANGLE_HP = GLenum(33113)
- GLenum_GL_IMAGE_ROTATE_ORIGIN_X_HP = GLenum(33114)
- GLenum_GL_IMAGE_ROTATE_ORIGIN_Y_HP = GLenum(33115)
- GLenum_GL_IMAGE_MAG_FILTER_HP = GLenum(33116)
- GLenum_GL_IMAGE_MIN_FILTER_HP = GLenum(33117)
- GLenum_GL_IMAGE_CUBIC_WEIGHT_HP = GLenum(33118)
- GLenum_GL_CUBIC_HP = GLenum(33119)
- GLenum_GL_AVERAGE_HP = GLenum(33120)
- GLenum_GL_IMAGE_TRANSFORM_2D_HP = GLenum(33121)
- GLenum_GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP = GLenum(33122)
- GLenum_GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP = GLenum(33123)
- GLenum_GL_OCCLUSION_TEST_HP = GLenum(33125)
- GLenum_GL_OCCLUSION_TEST_RESULT_HP = GLenum(33126)
- GLenum_GL_TEXTURE_LIGHTING_MODE_HP = GLenum(33127)
- GLenum_GL_TEXTURE_POST_SPECULAR_HP = GLenum(33128)
- GLenum_GL_TEXTURE_PRE_SPECULAR_HP = GLenum(33129)
- GLenum_GL_LINEAR_CLIPMAP_LINEAR_SGIX = GLenum(33136)
- GLenum_GL_TEXTURE_CLIPMAP_CENTER_SGIX = GLenum(33137)
- GLenum_GL_TEXTURE_CLIPMAP_FRAME_SGIX = GLenum(33138)
- GLenum_GL_TEXTURE_CLIPMAP_OFFSET_SGIX = GLenum(33139)
- GLenum_GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX = GLenum(33140)
- GLenum_GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX = GLenum(33141)
- GLenum_GL_TEXTURE_CLIPMAP_DEPTH_SGIX = GLenum(33142)
- GLenum_GL_MAX_CLIPMAP_DEPTH_SGIX = GLenum(33143)
- GLenum_GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX = GLenum(33144)
- GLenum_GL_POST_TEXTURE_FILTER_BIAS_SGIX = GLenum(33145)
- GLenum_GL_POST_TEXTURE_FILTER_SCALE_SGIX = GLenum(33146)
- GLenum_GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX = GLenum(33147)
- GLenum_GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX = GLenum(33148)
- GLenum_GL_REFERENCE_PLANE_SGIX = GLenum(33149)
- GLenum_GL_REFERENCE_PLANE_EQUATION_SGIX = GLenum(33150)
- GLenum_GL_IR_INSTRUMENT1_SGIX = GLenum(33151)
- GLenum_GL_INSTRUMENT_BUFFER_POINTER_SGIX = GLenum(33152)
- GLenum_GL_INSTRUMENT_MEASUREMENTS_SGIX = GLenum(33153)
- GLenum_GL_LIST_PRIORITY_SGIX = GLenum(33154)
- GLenum_GL_CALLIGRAPHIC_FRAGMENT_SGIX = GLenum(33155)
- GLenum_GL_PIXEL_TEX_GEN_Q_CEILING_SGIX = GLenum(33156)
- GLenum_GL_PIXEL_TEX_GEN_Q_ROUND_SGIX = GLenum(33157)
- GLenum_GL_PIXEL_TEX_GEN_Q_FLOOR_SGIX = GLenum(33158)
- GLenum_GL_PIXEL_TEX_GEN_ALPHA_REPLACE_SGIX = GLenum(33159)
- GLenum_GL_PIXEL_TEX_GEN_ALPHA_NO_REPLACE_SGIX = GLenum(33160)
- GLenum_GL_PIXEL_TEX_GEN_ALPHA_LS_SGIX = GLenum(33161)
- GLenum_GL_PIXEL_TEX_GEN_ALPHA_MS_SGIX = GLenum(33162)
- GLenum_GL_FRAMEZOOM_SGIX = GLenum(33163)
- GLenum_GL_FRAMEZOOM_FACTOR_SGIX = GLenum(33164)
- GLenum_GL_MAX_FRAMEZOOM_FACTOR_SGIX = GLenum(33165)
- GLenum_GL_TEXTURE_LOD_BIAS_S_SGIX = GLenum(33166)
- GLenum_GL_TEXTURE_LOD_BIAS_T_SGIX = GLenum(33167)
- GLenum_GL_TEXTURE_LOD_BIAS_R_SGIX = GLenum(33168)
- GLenum_GL_GENERATE_MIPMAP = GLenum(33169)
- GLenum_GL_GENERATE_MIPMAP_SGIS = GLenum(33169)
- GLenum_GL_GENERATE_MIPMAP_HINT = GLenum(33170)
- GLenum_GL_GENERATE_MIPMAP_HINT_SGIS = GLenum(33170)
- GLenum_GL_GEOMETRY_DEFORMATION_SGIX = GLenum(33172)
- GLenum_GL_TEXTURE_DEFORMATION_SGIX = GLenum(33173)
- GLenum_GL_DEFORMATIONS_MASK_SGIX = GLenum(33174)
- GLenum_GL_MAX_DEFORMATION_ORDER_SGIX = GLenum(33175)
- GLenum_GL_FOG_OFFSET_SGIX = GLenum(33176)
- GLenum_GL_FOG_OFFSET_VALUE_SGIX = GLenum(33177)
- GLenum_GL_TEXTURE_COMPARE_SGIX = GLenum(33178)
- GLenum_GL_TEXTURE_COMPARE_OPERATOR_SGIX = GLenum(33179)
- GLenum_GL_TEXTURE_LEQUAL_R_SGIX = GLenum(33180)
- GLenum_GL_TEXTURE_GEQUAL_R_SGIX = GLenum(33181)
- GLenum_GL_DEPTH_COMPONENT16 = GLenum(33189)
- GLenum_GL_DEPTH_COMPONENT16_ARB = GLenum(33189)
- GLenum_GL_DEPTH_COMPONENT16_OES = GLenum(33189)
- GLenum_GL_DEPTH_COMPONENT16_SGIX = GLenum(33189)
- GLenum_GL_DEPTH_COMPONENT24 = GLenum(33190)
- GLenum_GL_DEPTH_COMPONENT24_ARB = GLenum(33190)
- GLenum_GL_DEPTH_COMPONENT24_OES = GLenum(33190)
- GLenum_GL_DEPTH_COMPONENT24_SGIX = GLenum(33190)
- GLenum_GL_DEPTH_COMPONENT32 = GLenum(33191)
- GLenum_GL_DEPTH_COMPONENT32_ARB = GLenum(33191)
- GLenum_GL_DEPTH_COMPONENT32_OES = GLenum(33191)
- GLenum_GL_DEPTH_COMPONENT32_SGIX = GLenum(33191)
- GLenum_GL_ARRAY_ELEMENT_LOCK_FIRST_EXT = GLenum(33192)
- GLenum_GL_ARRAY_ELEMENT_LOCK_COUNT_EXT = GLenum(33193)
- GLenum_GL_CULL_VERTEX_EXT = GLenum(33194)
- GLenum_GL_CULL_VERTEX_EYE_POSITION_EXT = GLenum(33195)
- GLenum_GL_CULL_VERTEX_OBJECT_POSITION_EXT = GLenum(33196)
- GLenum_GL_IUI_V2F_EXT = GLenum(33197)
- GLenum_GL_IUI_V3F_EXT = GLenum(33198)
- GLenum_GL_IUI_N3F_V2F_EXT = GLenum(33199)
- GLenum_GL_IUI_N3F_V3F_EXT = GLenum(33200)
- GLenum_GL_T2F_IUI_V2F_EXT = GLenum(33201)
- GLenum_GL_T2F_IUI_V3F_EXT = GLenum(33202)
- GLenum_GL_T2F_IUI_N3F_V2F_EXT = GLenum(33203)
- GLenum_GL_T2F_IUI_N3F_V3F_EXT = GLenum(33204)
- GLenum_GL_INDEX_TEST_EXT = GLenum(33205)
- GLenum_GL_INDEX_TEST_FUNC_EXT = GLenum(33206)
- GLenum_GL_INDEX_TEST_REF_EXT = GLenum(33207)
- GLenum_GL_INDEX_MATERIAL_EXT = GLenum(33208)
- GLenum_GL_INDEX_MATERIAL_PARAMETER_EXT = GLenum(33209)
- GLenum_GL_INDEX_MATERIAL_FACE_EXT = GLenum(33210)
- GLenum_GL_YCRCB_422_SGIX = GLenum(33211)
- GLenum_GL_YCRCB_444_SGIX = GLenum(33212)
- GLenum_GL_WRAP_BORDER_SUN = GLenum(33236)
- GLenum_GL_UNPACK_CONSTANT_DATA_SUNX = GLenum(33237)
- GLenum_GL_TEXTURE_CONSTANT_DATA_SUNX = GLenum(33238)
- GLenum_GL_TRIANGLE_LIST_SUN = GLenum(33239)
- GLenum_GL_REPLACEMENT_CODE_SUN = GLenum(33240)
- GLenum_GL_GLOBAL_ALPHA_SUN = GLenum(33241)
- GLenum_GL_GLOBAL_ALPHA_FACTOR_SUN = GLenum(33242)
- GLenum_GL_TEXTURE_COLOR_WRITEMASK_SGIS = GLenum(33263)
- GLenum_GL_EYE_DISTANCE_TO_POINT_SGIS = GLenum(33264)
- GLenum_GL_OBJECT_DISTANCE_TO_POINT_SGIS = GLenum(33265)
- GLenum_GL_EYE_DISTANCE_TO_LINE_SGIS = GLenum(33266)
- GLenum_GL_OBJECT_DISTANCE_TO_LINE_SGIS = GLenum(33267)
- GLenum_GL_EYE_POINT_SGIS = GLenum(33268)
- GLenum_GL_OBJECT_POINT_SGIS = GLenum(33269)
- GLenum_GL_EYE_LINE_SGIS = GLenum(33270)
- GLenum_GL_OBJECT_LINE_SGIS = GLenum(33271)
- GLenum_GL_LIGHT_MODEL_COLOR_CONTROL = GLenum(33272)
- GLenum_GL_LIGHT_MODEL_COLOR_CONTROL_EXT = GLenum(33272)
- GLenum_GL_SINGLE_COLOR = GLenum(33273)
- GLenum_GL_SINGLE_COLOR_EXT = GLenum(33273)
- GLenum_GL_SEPARATE_SPECULAR_COLOR = GLenum(33274)
- GLenum_GL_SEPARATE_SPECULAR_COLOR_EXT = GLenum(33274)
- GLenum_GL_SHARED_TEXTURE_PALETTE_EXT = GLenum(33275)
- GLenum_GL_TEXT_FRAGMENT_SHADER_ATI = GLenum(33280)
- GLenum_GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING = GLenum(33296)
- GLenum_GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT = GLenum(33296)
- GLenum_GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE = GLenum(33297)
- GLenum_GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT = GLenum(33297)
- GLenum_GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE = GLenum(33298)
- GLenum_GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE = GLenum(33299)
- GLenum_GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE = GLenum(33300)
- GLenum_GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE = GLenum(33301)
- GLenum_GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = GLenum(33302)
- GLenum_GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = GLenum(33303)
- GLenum_GL_FRAMEBUFFER_DEFAULT = GLenum(33304)
- GLenum_GL_FRAMEBUFFER_UNDEFINED = GLenum(33305)
- GLenum_GL_FRAMEBUFFER_UNDEFINED_OES = GLenum(33305)
- GLenum_GL_DEPTH_STENCIL_ATTACHMENT = GLenum(33306)
- GLenum_GL_MAJOR_VERSION = GLenum(33307)
- GLenum_GL_MINOR_VERSION = GLenum(33308)
- GLenum_GL_NUM_EXTENSIONS = GLenum(33309)
- GLenum_GL_CONTEXT_FLAGS = GLenum(33310)
- GLenum_GL_BUFFER_IMMUTABLE_STORAGE = GLenum(33311)
- GLenum_GL_BUFFER_IMMUTABLE_STORAGE_EXT = GLenum(33311)
- GLenum_GL_BUFFER_STORAGE_FLAGS = GLenum(33312)
- GLenum_GL_BUFFER_STORAGE_FLAGS_EXT = GLenum(33312)
- GLenum_GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED = GLenum(33313)
- GLenum_GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED_OES = GLenum(33313)
- GLenum_GL_INDEX = GLenum(33314)
- GLenum_GL_COMPRESSED_RED = GLenum(33317)
- GLenum_GL_COMPRESSED_RG = GLenum(33318)
- GLenum_GL_RG = GLenum(33319)
- GLenum_GL_RG_EXT = GLenum(33319)
- GLenum_GL_RG_INTEGER = GLenum(33320)
- GLenum_GL_R8 = GLenum(33321)
- GLenum_GL_R8_EXT = GLenum(33321)
- GLenum_GL_R16 = GLenum(33322)
- GLenum_GL_R16_EXT = GLenum(33322)
- GLenum_GL_RG8 = GLenum(33323)
- GLenum_GL_RG8_EXT = GLenum(33323)
- GLenum_GL_RG16 = GLenum(33324)
- GLenum_GL_RG16_EXT = GLenum(33324)
- GLenum_GL_R16F = GLenum(33325)
- GLenum_GL_R16F_EXT = GLenum(33325)
- GLenum_GL_R32F = GLenum(33326)
- GLenum_GL_R32F_EXT = GLenum(33326)
- GLenum_GL_RG16F = GLenum(33327)
- GLenum_GL_RG16F_EXT = GLenum(33327)
- GLenum_GL_RG32F = GLenum(33328)
- GLenum_GL_RG32F_EXT = GLenum(33328)
- GLenum_GL_R8I = GLenum(33329)
- GLenum_GL_R8UI = GLenum(33330)
- GLenum_GL_R16I = GLenum(33331)
- GLenum_GL_R16UI = GLenum(33332)
- GLenum_GL_R32I = GLenum(33333)
- GLenum_GL_R32UI = GLenum(33334)
- GLenum_GL_RG8I = GLenum(33335)
- GLenum_GL_RG8UI = GLenum(33336)
- GLenum_GL_RG16I = GLenum(33337)
- GLenum_GL_RG16UI = GLenum(33338)
- GLenum_GL_RG32I = GLenum(33339)
- GLenum_GL_RG32UI = GLenum(33340)
- GLenum_GL_SYNC_CL_EVENT_ARB = GLenum(33344)
- GLenum_GL_SYNC_CL_EVENT_COMPLETE_ARB = GLenum(33345)
- GLenum_GL_DEBUG_OUTPUT_SYNCHRONOUS = GLenum(33346)
- GLenum_GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB = GLenum(33346)
- GLenum_GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR = GLenum(33346)
- GLenum_GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH = GLenum(33347)
- GLenum_GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB = GLenum(33347)
- GLenum_GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR = GLenum(33347)
- GLenum_GL_DEBUG_CALLBACK_FUNCTION = GLenum(33348)
- GLenum_GL_DEBUG_CALLBACK_FUNCTION_ARB = GLenum(33348)
- GLenum_GL_DEBUG_CALLBACK_FUNCTION_KHR = GLenum(33348)
- GLenum_GL_DEBUG_CALLBACK_USER_PARAM = GLenum(33349)
- GLenum_GL_DEBUG_CALLBACK_USER_PARAM_ARB = GLenum(33349)
- GLenum_GL_DEBUG_CALLBACK_USER_PARAM_KHR = GLenum(33349)
- GLenum_GL_DEBUG_SOURCE_API = GLenum(33350)
- GLenum_GL_DEBUG_SOURCE_API_ARB = GLenum(33350)
- GLenum_GL_DEBUG_SOURCE_API_KHR = GLenum(33350)
- GLenum_GL_DEBUG_SOURCE_WINDOW_SYSTEM = GLenum(33351)
- GLenum_GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB = GLenum(33351)
- GLenum_GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR = GLenum(33351)
- GLenum_GL_DEBUG_SOURCE_SHADER_COMPILER = GLenum(33352)
- GLenum_GL_DEBUG_SOURCE_SHADER_COMPILER_ARB = GLenum(33352)
- GLenum_GL_DEBUG_SOURCE_SHADER_COMPILER_KHR = GLenum(33352)
- GLenum_GL_DEBUG_SOURCE_THIRD_PARTY = GLenum(33353)
- GLenum_GL_DEBUG_SOURCE_THIRD_PARTY_ARB = GLenum(33353)
- GLenum_GL_DEBUG_SOURCE_THIRD_PARTY_KHR = GLenum(33353)
- GLenum_GL_DEBUG_SOURCE_APPLICATION = GLenum(33354)
- GLenum_GL_DEBUG_SOURCE_APPLICATION_ARB = GLenum(33354)
- GLenum_GL_DEBUG_SOURCE_APPLICATION_KHR = GLenum(33354)
- GLenum_GL_DEBUG_SOURCE_OTHER = GLenum(33355)
- GLenum_GL_DEBUG_SOURCE_OTHER_ARB = GLenum(33355)
- GLenum_GL_DEBUG_SOURCE_OTHER_KHR = GLenum(33355)
- GLenum_GL_DEBUG_TYPE_ERROR = GLenum(33356)
- GLenum_GL_DEBUG_TYPE_ERROR_ARB = GLenum(33356)
- GLenum_GL_DEBUG_TYPE_ERROR_KHR = GLenum(33356)
- GLenum_GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR = GLenum(33357)
- GLenum_GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB = GLenum(33357)
- GLenum_GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR = GLenum(33357)
- GLenum_GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR = GLenum(33358)
- GLenum_GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB = GLenum(33358)
- GLenum_GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR = GLenum(33358)
- GLenum_GL_DEBUG_TYPE_PORTABILITY = GLenum(33359)
- GLenum_GL_DEBUG_TYPE_PORTABILITY_ARB = GLenum(33359)
- GLenum_GL_DEBUG_TYPE_PORTABILITY_KHR = GLenum(33359)
- GLenum_GL_DEBUG_TYPE_PERFORMANCE = GLenum(33360)
- GLenum_GL_DEBUG_TYPE_PERFORMANCE_ARB = GLenum(33360)
- GLenum_GL_DEBUG_TYPE_PERFORMANCE_KHR = GLenum(33360)
- GLenum_GL_DEBUG_TYPE_OTHER = GLenum(33361)
- GLenum_GL_DEBUG_TYPE_OTHER_ARB = GLenum(33361)
- GLenum_GL_DEBUG_TYPE_OTHER_KHR = GLenum(33361)
- GLenum_GL_LOSE_CONTEXT_ON_RESET = GLenum(33362)
- GLenum_GL_LOSE_CONTEXT_ON_RESET_ARB = GLenum(33362)
- GLenum_GL_LOSE_CONTEXT_ON_RESET_EXT = GLenum(33362)
- GLenum_GL_LOSE_CONTEXT_ON_RESET_KHR = GLenum(33362)
- GLenum_GL_GUILTY_CONTEXT_RESET = GLenum(33363)
- GLenum_GL_GUILTY_CONTEXT_RESET_ARB = GLenum(33363)
- GLenum_GL_GUILTY_CONTEXT_RESET_EXT = GLenum(33363)
- GLenum_GL_GUILTY_CONTEXT_RESET_KHR = GLenum(33363)
- GLenum_GL_INNOCENT_CONTEXT_RESET = GLenum(33364)
- GLenum_GL_INNOCENT_CONTEXT_RESET_ARB = GLenum(33364)
- GLenum_GL_INNOCENT_CONTEXT_RESET_EXT = GLenum(33364)
- GLenum_GL_INNOCENT_CONTEXT_RESET_KHR = GLenum(33364)
- GLenum_GL_UNKNOWN_CONTEXT_RESET = GLenum(33365)
- GLenum_GL_UNKNOWN_CONTEXT_RESET_ARB = GLenum(33365)
- GLenum_GL_UNKNOWN_CONTEXT_RESET_EXT = GLenum(33365)
- GLenum_GL_UNKNOWN_CONTEXT_RESET_KHR = GLenum(33365)
- GLenum_GL_RESET_NOTIFICATION_STRATEGY = GLenum(33366)
- GLenum_GL_RESET_NOTIFICATION_STRATEGY_ARB = GLenum(33366)
- GLenum_GL_RESET_NOTIFICATION_STRATEGY_EXT = GLenum(33366)
- GLenum_GL_RESET_NOTIFICATION_STRATEGY_KHR = GLenum(33366)
- GLenum_GL_PROGRAM_BINARY_RETRIEVABLE_HINT = GLenum(33367)
- GLenum_GL_PROGRAM_SEPARABLE = GLenum(33368)
- GLenum_GL_PROGRAM_SEPARABLE_EXT = GLenum(33368)
- GLenum_GL_ACTIVE_PROGRAM = GLenum(33369)
- GLenum_GL_ACTIVE_PROGRAM_EXT = GLenum(33369)
- GLenum_GL_PROGRAM_PIPELINE_BINDING = GLenum(33370)
- GLenum_GL_PROGRAM_PIPELINE_BINDING_EXT = GLenum(33370)
- GLenum_GL_MAX_VIEWPORTS = GLenum(33371)
- GLenum_GL_MAX_VIEWPORTS_NV = GLenum(33371)
- GLenum_GL_VIEWPORT_SUBPIXEL_BITS = GLenum(33372)
- GLenum_GL_VIEWPORT_SUBPIXEL_BITS_EXT = GLenum(33372)
- GLenum_GL_VIEWPORT_SUBPIXEL_BITS_NV = GLenum(33372)
- GLenum_GL_VIEWPORT_BOUNDS_RANGE = GLenum(33373)
- GLenum_GL_VIEWPORT_BOUNDS_RANGE_EXT = GLenum(33373)
- GLenum_GL_VIEWPORT_BOUNDS_RANGE_NV = GLenum(33373)
- GLenum_GL_LAYER_PROVOKING_VERTEX = GLenum(33374)
- GLenum_GL_LAYER_PROVOKING_VERTEX_EXT = GLenum(33374)
- GLenum_GL_LAYER_PROVOKING_VERTEX_OES = GLenum(33374)
- GLenum_GL_VIEWPORT_INDEX_PROVOKING_VERTEX = GLenum(33375)
- GLenum_GL_VIEWPORT_INDEX_PROVOKING_VERTEX_EXT = GLenum(33375)
- GLenum_GL_VIEWPORT_INDEX_PROVOKING_VERTEX_NV = GLenum(33375)
- GLenum_GL_UNDEFINED_VERTEX = GLenum(33376)
- GLenum_GL_UNDEFINED_VERTEX_EXT = GLenum(33376)
- GLenum_GL_UNDEFINED_VERTEX_OES = GLenum(33376)
- GLenum_GL_NO_RESET_NOTIFICATION = GLenum(33377)
- GLenum_GL_NO_RESET_NOTIFICATION_ARB = GLenum(33377)
- GLenum_GL_NO_RESET_NOTIFICATION_EXT = GLenum(33377)
- GLenum_GL_NO_RESET_NOTIFICATION_KHR = GLenum(33377)
- GLenum_GL_MAX_COMPUTE_SHARED_MEMORY_SIZE = GLenum(33378)
- GLenum_GL_MAX_COMPUTE_UNIFORM_COMPONENTS = GLenum(33379)
- GLenum_GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS = GLenum(33380)
- GLenum_GL_MAX_COMPUTE_ATOMIC_COUNTERS = GLenum(33381)
- GLenum_GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS = GLenum(33382)
- GLenum_GL_COMPUTE_WORK_GROUP_SIZE = GLenum(33383)
- GLenum_GL_DEBUG_TYPE_MARKER = GLenum(33384)
- GLenum_GL_DEBUG_TYPE_MARKER_KHR = GLenum(33384)
- GLenum_GL_DEBUG_TYPE_PUSH_GROUP = GLenum(33385)
- GLenum_GL_DEBUG_TYPE_PUSH_GROUP_KHR = GLenum(33385)
- GLenum_GL_DEBUG_TYPE_POP_GROUP = GLenum(33386)
- GLenum_GL_DEBUG_TYPE_POP_GROUP_KHR = GLenum(33386)
- GLenum_GL_DEBUG_SEVERITY_NOTIFICATION = GLenum(33387)
- GLenum_GL_DEBUG_SEVERITY_NOTIFICATION_KHR = GLenum(33387)
- GLenum_GL_MAX_DEBUG_GROUP_STACK_DEPTH = GLenum(33388)
- GLenum_GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR = GLenum(33388)
- GLenum_GL_DEBUG_GROUP_STACK_DEPTH = GLenum(33389)
- GLenum_GL_DEBUG_GROUP_STACK_DEPTH_KHR = GLenum(33389)
- GLenum_GL_MAX_UNIFORM_LOCATIONS = GLenum(33390)
- GLenum_GL_INTERNALFORMAT_SUPPORTED = GLenum(33391)
- GLenum_GL_INTERNALFORMAT_PREFERRED = GLenum(33392)
- GLenum_GL_INTERNALFORMAT_RED_SIZE = GLenum(33393)
- GLenum_GL_INTERNALFORMAT_GREEN_SIZE = GLenum(33394)
- GLenum_GL_INTERNALFORMAT_BLUE_SIZE = GLenum(33395)
- GLenum_GL_INTERNALFORMAT_ALPHA_SIZE = GLenum(33396)
- GLenum_GL_INTERNALFORMAT_DEPTH_SIZE = GLenum(33397)
- GLenum_GL_INTERNALFORMAT_STENCIL_SIZE = GLenum(33398)
- GLenum_GL_INTERNALFORMAT_SHARED_SIZE = GLenum(33399)
- GLenum_GL_INTERNALFORMAT_RED_TYPE = GLenum(33400)
- GLenum_GL_INTERNALFORMAT_GREEN_TYPE = GLenum(33401)
- GLenum_GL_INTERNALFORMAT_BLUE_TYPE = GLenum(33402)
- GLenum_GL_INTERNALFORMAT_ALPHA_TYPE = GLenum(33403)
- GLenum_GL_INTERNALFORMAT_DEPTH_TYPE = GLenum(33404)
- GLenum_GL_INTERNALFORMAT_STENCIL_TYPE = GLenum(33405)
- GLenum_GL_MAX_WIDTH = GLenum(33406)
- GLenum_GL_MAX_HEIGHT = GLenum(33407)
- GLenum_GL_MAX_DEPTH = GLenum(33408)
- GLenum_GL_MAX_LAYERS = GLenum(33409)
- GLenum_GL_MAX_COMBINED_DIMENSIONS = GLenum(33410)
- GLenum_GL_COLOR_COMPONENTS = GLenum(33411)
- GLenum_GL_DEPTH_COMPONENTS = GLenum(33412)
- GLenum_GL_STENCIL_COMPONENTS = GLenum(33413)
- GLenum_GL_COLOR_RENDERABLE = GLenum(33414)
- GLenum_GL_DEPTH_RENDERABLE = GLenum(33415)
- GLenum_GL_STENCIL_RENDERABLE = GLenum(33416)
- GLenum_GL_FRAMEBUFFER_RENDERABLE = GLenum(33417)
- GLenum_GL_FRAMEBUFFER_RENDERABLE_LAYERED = GLenum(33418)
- GLenum_GL_FRAMEBUFFER_BLEND = GLenum(33419)
- GLenum_GL_READ_PIXELS = GLenum(33420)
- GLenum_GL_READ_PIXELS_FORMAT = GLenum(33421)
- GLenum_GL_READ_PIXELS_TYPE = GLenum(33422)
- GLenum_GL_TEXTURE_IMAGE_FORMAT = GLenum(33423)
- GLenum_GL_TEXTURE_IMAGE_TYPE = GLenum(33424)
- GLenum_GL_GET_TEXTURE_IMAGE_FORMAT = GLenum(33425)
- GLenum_GL_GET_TEXTURE_IMAGE_TYPE = GLenum(33426)
- GLenum_GL_MIPMAP = GLenum(33427)
- GLenum_GL_MANUAL_GENERATE_MIPMAP = GLenum(33428)
- GLenum_GL_AUTO_GENERATE_MIPMAP = GLenum(33429)
- GLenum_GL_COLOR_ENCODING = GLenum(33430)
- GLenum_GL_SRGB_READ = GLenum(33431)
- GLenum_GL_SRGB_WRITE = GLenum(33432)
- GLenum_GL_SRGB_DECODE_ARB = GLenum(33433)
- GLenum_GL_FILTER = GLenum(33434)
- GLenum_GL_VERTEX_TEXTURE = GLenum(33435)
- GLenum_GL_TESS_CONTROL_TEXTURE = GLenum(33436)
- GLenum_GL_TESS_EVALUATION_TEXTURE = GLenum(33437)
- GLenum_GL_GEOMETRY_TEXTURE = GLenum(33438)
- GLenum_GL_FRAGMENT_TEXTURE = GLenum(33439)
- GLenum_GL_COMPUTE_TEXTURE = GLenum(33440)
- GLenum_GL_TEXTURE_SHADOW = GLenum(33441)
- GLenum_GL_TEXTURE_GATHER = GLenum(33442)
- GLenum_GL_TEXTURE_GATHER_SHADOW = GLenum(33443)
- GLenum_GL_SHADER_IMAGE_LOAD = GLenum(33444)
- GLenum_GL_SHADER_IMAGE_STORE = GLenum(33445)
- GLenum_GL_SHADER_IMAGE_ATOMIC = GLenum(33446)
- GLenum_GL_IMAGE_TEXEL_SIZE = GLenum(33447)
- GLenum_GL_IMAGE_COMPATIBILITY_CLASS = GLenum(33448)
- GLenum_GL_IMAGE_PIXEL_FORMAT = GLenum(33449)
- GLenum_GL_IMAGE_PIXEL_TYPE = GLenum(33450)
- GLenum_GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST = GLenum(33452)
- GLenum_GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST = GLenum(33453)
- GLenum_GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE = GLenum(33454)
- GLenum_GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE = GLenum(33455)
- GLenum_GL_TEXTURE_COMPRESSED_BLOCK_WIDTH = GLenum(33457)
- GLenum_GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT = GLenum(33458)
- GLenum_GL_TEXTURE_COMPRESSED_BLOCK_SIZE = GLenum(33459)
- GLenum_GL_CLEAR_BUFFER = GLenum(33460)
- GLenum_GL_TEXTURE_VIEW = GLenum(33461)
- GLenum_GL_VIEW_COMPATIBILITY_CLASS = GLenum(33462)
- GLenum_GL_FULL_SUPPORT = GLenum(33463)
- GLenum_GL_CAVEAT_SUPPORT = GLenum(33464)
- GLenum_GL_IMAGE_CLASS_4_X_32 = GLenum(33465)
- GLenum_GL_IMAGE_CLASS_2_X_32 = GLenum(33466)
- GLenum_GL_IMAGE_CLASS_1_X_32 = GLenum(33467)
- GLenum_GL_IMAGE_CLASS_4_X_16 = GLenum(33468)
- GLenum_GL_IMAGE_CLASS_2_X_16 = GLenum(33469)
- GLenum_GL_IMAGE_CLASS_1_X_16 = GLenum(33470)
- GLenum_GL_IMAGE_CLASS_4_X_8 = GLenum(33471)
- GLenum_GL_IMAGE_CLASS_2_X_8 = GLenum(33472)
- GLenum_GL_IMAGE_CLASS_1_X_8 = GLenum(33473)
- GLenum_GL_IMAGE_CLASS_11_11_10 = GLenum(33474)
- GLenum_GL_IMAGE_CLASS_10_10_10_2 = GLenum(33475)
- GLenum_GL_VIEW_CLASS_128_BITS = GLenum(33476)
- GLenum_GL_VIEW_CLASS_96_BITS = GLenum(33477)
- GLenum_GL_VIEW_CLASS_64_BITS = GLenum(33478)
- GLenum_GL_VIEW_CLASS_48_BITS = GLenum(33479)
- GLenum_GL_VIEW_CLASS_32_BITS = GLenum(33480)
- GLenum_GL_VIEW_CLASS_24_BITS = GLenum(33481)
- GLenum_GL_VIEW_CLASS_16_BITS = GLenum(33482)
- GLenum_GL_VIEW_CLASS_8_BITS = GLenum(33483)
- GLenum_GL_VIEW_CLASS_S3TC_DXT1_RGB = GLenum(33484)
- GLenum_GL_VIEW_CLASS_S3TC_DXT1_RGBA = GLenum(33485)
- GLenum_GL_VIEW_CLASS_S3TC_DXT3_RGBA = GLenum(33486)
- GLenum_GL_VIEW_CLASS_S3TC_DXT5_RGBA = GLenum(33487)
- GLenum_GL_VIEW_CLASS_RGTC1_RED = GLenum(33488)
- GLenum_GL_VIEW_CLASS_RGTC2_RG = GLenum(33489)
- GLenum_GL_VIEW_CLASS_BPTC_UNORM = GLenum(33490)
- GLenum_GL_VIEW_CLASS_BPTC_FLOAT = GLenum(33491)
- GLenum_GL_VERTEX_ATTRIB_BINDING = GLenum(33492)
- GLenum_GL_VERTEX_ATTRIB_RELATIVE_OFFSET = GLenum(33493)
- GLenum_GL_VERTEX_BINDING_DIVISOR = GLenum(33494)
- GLenum_GL_VERTEX_BINDING_OFFSET = GLenum(33495)
- GLenum_GL_VERTEX_BINDING_STRIDE = GLenum(33496)
- GLenum_GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET = GLenum(33497)
- GLenum_GL_MAX_VERTEX_ATTRIB_BINDINGS = GLenum(33498)
- GLenum_GL_TEXTURE_VIEW_MIN_LEVEL = GLenum(33499)
- GLenum_GL_TEXTURE_VIEW_MIN_LEVEL_EXT = GLenum(33499)
- GLenum_GL_TEXTURE_VIEW_MIN_LEVEL_OES = GLenum(33499)
- GLenum_GL_TEXTURE_VIEW_NUM_LEVELS = GLenum(33500)
- GLenum_GL_TEXTURE_VIEW_NUM_LEVELS_EXT = GLenum(33500)
- GLenum_GL_TEXTURE_VIEW_NUM_LEVELS_OES = GLenum(33500)
- GLenum_GL_TEXTURE_VIEW_MIN_LAYER = GLenum(33501)
- GLenum_GL_TEXTURE_VIEW_MIN_LAYER_EXT = GLenum(33501)
- GLenum_GL_TEXTURE_VIEW_MIN_LAYER_OES = GLenum(33501)
- GLenum_GL_TEXTURE_VIEW_NUM_LAYERS = GLenum(33502)
- GLenum_GL_TEXTURE_VIEW_NUM_LAYERS_EXT = GLenum(33502)
- GLenum_GL_TEXTURE_VIEW_NUM_LAYERS_OES = GLenum(33502)
- GLenum_GL_TEXTURE_IMMUTABLE_LEVELS = GLenum(33503)
- GLenum_GL_BUFFER = GLenum(33504)
- GLenum_GL_BUFFER_KHR = GLenum(33504)
- GLenum_GL_SHADER = GLenum(33505)
- GLenum_GL_SHADER_KHR = GLenum(33505)
- GLenum_GL_PROGRAM = GLenum(33506)
- GLenum_GL_PROGRAM_KHR = GLenum(33506)
- GLenum_GL_QUERY = GLenum(33507)
- GLenum_GL_QUERY_KHR = GLenum(33507)
- GLenum_GL_PROGRAM_PIPELINE = GLenum(33508)
- GLenum_GL_PROGRAM_PIPELINE_KHR = GLenum(33508)
- GLenum_GL_MAX_VERTEX_ATTRIB_STRIDE = GLenum(33509)
- GLenum_GL_SAMPLER = GLenum(33510)
- GLenum_GL_SAMPLER_KHR = GLenum(33510)
- GLenum_GL_DISPLAY_LIST = GLenum(33511)
- GLenum_GL_MAX_LABEL_LENGTH = GLenum(33512)
- GLenum_GL_MAX_LABEL_LENGTH_KHR = GLenum(33512)
- GLenum_GL_NUM_SHADING_LANGUAGE_VERSIONS = GLenum(33513)
- GLenum_GL_QUERY_TARGET = GLenum(33514)
- GLenum_GL_TRANSFORM_FEEDBACK_OVERFLOW_ARB = GLenum(33516)
- GLenum_GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB = GLenum(33517)
- GLenum_GL_VERTICES_SUBMITTED_ARB = GLenum(33518)
- GLenum_GL_PRIMITIVES_SUBMITTED_ARB = GLenum(33519)
- GLenum_GL_VERTEX_SHADER_INVOCATIONS_ARB = GLenum(33520)
- GLenum_GL_TESS_CONTROL_SHADER_PATCHES_ARB = GLenum(33521)
- GLenum_GL_TESS_EVALUATION_SHADER_INVOCATIONS_ARB = GLenum(33522)
- GLenum_GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB = GLenum(33523)
- GLenum_GL_FRAGMENT_SHADER_INVOCATIONS_ARB = GLenum(33524)
- GLenum_GL_COMPUTE_SHADER_INVOCATIONS_ARB = GLenum(33525)
- GLenum_GL_CLIPPING_INPUT_PRIMITIVES_ARB = GLenum(33526)
- GLenum_GL_CLIPPING_OUTPUT_PRIMITIVES_ARB = GLenum(33527)
- GLenum_GL_SPARSE_BUFFER_PAGE_SIZE_ARB = GLenum(33528)
- GLenum_GL_MAX_CULL_DISTANCES = GLenum(33529)
- GLenum_GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES = GLenum(33530)
- GLenum_GL_CONTEXT_RELEASE_BEHAVIOR = GLenum(33531)
- GLenum_GL_CONTEXT_RELEASE_BEHAVIOR_KHR = GLenum(33531)
- GLenum_GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH = GLenum(33532)
- GLenum_GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR = GLenum(33532)
- GLenum_GL_DEPTH_PASS_INSTRUMENT_SGIX = GLenum(33552)
- GLenum_GL_DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX = GLenum(33553)
- GLenum_GL_DEPTH_PASS_INSTRUMENT_MAX_SGIX = GLenum(33554)
- GLenum_GL_FRAGMENTS_INSTRUMENT_SGIX = GLenum(33555)
- GLenum_GL_FRAGMENTS_INSTRUMENT_COUNTERS_SGIX = GLenum(33556)
- GLenum_GL_FRAGMENTS_INSTRUMENT_MAX_SGIX = GLenum(33557)
- GLenum_GL_CONVOLUTION_HINT_SGIX = GLenum(33558)
- GLenum_GL_YCRCB_SGIX = GLenum(33560)
- GLenum_GL_YCRCBA_SGIX = GLenum(33561)
- GLenum_GL_UNPACK_COMPRESSED_SIZE_SGIX = GLenum(33562)
- GLenum_GL_PACK_MAX_COMPRESSED_SIZE_SGIX = GLenum(33563)
- GLenum_GL_PACK_COMPRESSED_SIZE_SGIX = GLenum(33564)
- GLenum_GL_SLIM8U_SGIX = GLenum(33565)
- GLenum_GL_SLIM10U_SGIX = GLenum(33566)
- GLenum_GL_SLIM12S_SGIX = GLenum(33567)
- GLenum_GL_ALPHA_MIN_SGIX = GLenum(33568)
- GLenum_GL_ALPHA_MAX_SGIX = GLenum(33569)
- GLenum_GL_SCALEBIAS_HINT_SGIX = GLenum(33570)
- GLenum_GL_ASYNC_MARKER_SGIX = GLenum(33577)
- GLenum_GL_PIXEL_TEX_GEN_MODE_SGIX = GLenum(33579)
- GLenum_GL_ASYNC_HISTOGRAM_SGIX = GLenum(33580)
- GLenum_GL_MAX_ASYNC_HISTOGRAM_SGIX = GLenum(33581)
- GLenum_GL_PIXEL_TRANSFORM_2D_EXT = GLenum(33584)
- GLenum_GL_PIXEL_MAG_FILTER_EXT = GLenum(33585)
- GLenum_GL_PIXEL_MIN_FILTER_EXT = GLenum(33586)
- GLenum_GL_PIXEL_CUBIC_WEIGHT_EXT = GLenum(33587)
- GLenum_GL_CUBIC_EXT = GLenum(33588)
- GLenum_GL_AVERAGE_EXT = GLenum(33589)
- GLenum_GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT = GLenum(33590)
- GLenum_GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT = GLenum(33591)
- GLenum_GL_PIXEL_TRANSFORM_2D_MATRIX_EXT = GLenum(33592)
- GLenum_GL_FRAGMENT_MATERIAL_EXT = GLenum(33609)
- GLenum_GL_FRAGMENT_NORMAL_EXT = GLenum(33610)
- GLenum_GL_FRAGMENT_COLOR_EXT = GLenum(33612)
- GLenum_GL_ATTENUATION_EXT = GLenum(33613)
- GLenum_GL_SHADOW_ATTENUATION_EXT = GLenum(33614)
- GLenum_GL_TEXTURE_APPLICATION_MODE_EXT = GLenum(33615)
- GLenum_GL_TEXTURE_LIGHT_EXT = GLenum(33616)
- GLenum_GL_TEXTURE_MATERIAL_FACE_EXT = GLenum(33617)
- GLenum_GL_TEXTURE_MATERIAL_PARAMETER_EXT = GLenum(33618)
- GLenum_GL_PIXEL_TEXTURE_SGIS = GLenum(33619)
- GLenum_GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS = GLenum(33620)
- GLenum_GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS = GLenum(33621)
- GLenum_GL_PIXEL_GROUP_COLOR_SGIS = GLenum(33622)
- GLenum_GL_LINE_QUALITY_HINT_SGIX = GLenum(33627)
- GLenum_GL_ASYNC_TEX_IMAGE_SGIX = GLenum(33628)
- GLenum_GL_ASYNC_DRAW_PIXELS_SGIX = GLenum(33629)
- GLenum_GL_ASYNC_READ_PIXELS_SGIX = GLenum(33630)
- GLenum_GL_MAX_ASYNC_TEX_IMAGE_SGIX = GLenum(33631)
- GLenum_GL_MAX_ASYNC_DRAW_PIXELS_SGIX = GLenum(33632)
- GLenum_GL_MAX_ASYNC_READ_PIXELS_SGIX = GLenum(33633)
- GLenum_GL_UNSIGNED_BYTE_2_3_3_REV = GLenum(33634)
- GLenum_GL_UNSIGNED_BYTE_2_3_3_REV_EXT = GLenum(33634)
- GLenum_GL_UNSIGNED_SHORT_5_6_5 = GLenum(33635)
- GLenum_GL_UNSIGNED_SHORT_5_6_5_EXT = GLenum(33635)
- GLenum_GL_UNSIGNED_SHORT_5_6_5_REV = GLenum(33636)
- GLenum_GL_UNSIGNED_SHORT_5_6_5_REV_EXT = GLenum(33636)
- GLenum_GL_UNSIGNED_SHORT_4_4_4_4_REV = GLenum(33637)
- GLenum_GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT = GLenum(33637)
- GLenum_GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG = GLenum(33637)
- GLenum_GL_UNSIGNED_SHORT_1_5_5_5_REV = GLenum(33638)
- GLenum_GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT = GLenum(33638)
- GLenum_GL_UNSIGNED_INT_8_8_8_8_REV = GLenum(33639)
- GLenum_GL_UNSIGNED_INT_8_8_8_8_REV_EXT = GLenum(33639)
- GLenum_GL_UNSIGNED_INT_2_10_10_10_REV = GLenum(33640)
- GLenum_GL_UNSIGNED_INT_2_10_10_10_REV_EXT = GLenum(33640)
- GLenum_GL_TEXTURE_MAX_CLAMP_S_SGIX = GLenum(33641)
- GLenum_GL_TEXTURE_MAX_CLAMP_T_SGIX = GLenum(33642)
- GLenum_GL_TEXTURE_MAX_CLAMP_R_SGIX = GLenum(33643)
- GLenum_GL_MIRRORED_REPEAT = GLenum(33648)
- GLenum_GL_MIRRORED_REPEAT_ARB = GLenum(33648)
- GLenum_GL_MIRRORED_REPEAT_IBM = GLenum(33648)
- GLenum_GL_MIRRORED_REPEAT_OES = GLenum(33648)
- GLenum_GL_RGB_S3TC = GLenum(33696)
- GLenum_GL_RGB4_S3TC = GLenum(33697)
- GLenum_GL_RGBA_S3TC = GLenum(33698)
- GLenum_GL_RGBA4_S3TC = GLenum(33699)
- GLenum_GL_RGBA_DXT5_S3TC = GLenum(33700)
- GLenum_GL_RGBA4_DXT5_S3TC = GLenum(33701)
- GLenum_GL_VERTEX_PRECLIP_SGIX = GLenum(33774)
- GLenum_GL_VERTEX_PRECLIP_HINT_SGIX = GLenum(33775)
- GLenum_GL_COMPRESSED_RGB_S3TC_DXT1_EXT = GLenum(33776)
- GLenum_GL_COMPRESSED_RGBA_S3TC_DXT1_EXT = GLenum(33777)
- GLenum_GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE = GLenum(33778)
- GLenum_GL_COMPRESSED_RGBA_S3TC_DXT3_EXT = GLenum(33778)
- GLenum_GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE = GLenum(33779)
- GLenum_GL_COMPRESSED_RGBA_S3TC_DXT5_EXT = GLenum(33779)
- GLenum_GL_PARALLEL_ARRAYS_INTEL = GLenum(33780)
- GLenum_GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL = GLenum(33781)
- GLenum_GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL = GLenum(33782)
- GLenum_GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL = GLenum(33783)
- GLenum_GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL = GLenum(33784)
- GLenum_GL_PERFQUERY_DONOT_FLUSH_INTEL = GLenum(33785)
- GLenum_GL_PERFQUERY_FLUSH_INTEL = GLenum(33786)
- GLenum_GL_PERFQUERY_WAIT_INTEL = GLenum(33787)
- GLenum_GL_TEXTURE_MEMORY_LAYOUT_INTEL = GLenum(33791)
- GLenum_GL_FRAGMENT_LIGHTING_SGIX = GLenum(33792)
- GLenum_GL_FRAGMENT_COLOR_MATERIAL_SGIX = GLenum(33793)
- GLenum_GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX = GLenum(33794)
- GLenum_GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX = GLenum(33795)
- GLenum_GL_MAX_FRAGMENT_LIGHTS_SGIX = GLenum(33796)
- GLenum_GL_MAX_ACTIVE_LIGHTS_SGIX = GLenum(33797)
- GLenum_GL_CURRENT_RASTER_NORMAL_SGIX = GLenum(33798)
- GLenum_GL_LIGHT_ENV_MODE_SGIX = GLenum(33799)
- GLenum_GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX = GLenum(33800)
- GLenum_GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX = GLenum(33801)
- GLenum_GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX = GLenum(33802)
- GLenum_GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX = GLenum(33803)
- GLenum_GL_FRAGMENT_LIGHT0_SGIX = GLenum(33804)
- GLenum_GL_FRAGMENT_LIGHT1_SGIX = GLenum(33805)
- GLenum_GL_FRAGMENT_LIGHT2_SGIX = GLenum(33806)
- GLenum_GL_FRAGMENT_LIGHT3_SGIX = GLenum(33807)
- GLenum_GL_FRAGMENT_LIGHT4_SGIX = GLenum(33808)
- GLenum_GL_FRAGMENT_LIGHT5_SGIX = GLenum(33809)
- GLenum_GL_FRAGMENT_LIGHT6_SGIX = GLenum(33810)
- GLenum_GL_FRAGMENT_LIGHT7_SGIX = GLenum(33811)
- GLenum_GL_PACK_RESAMPLE_SGIX = GLenum(33838)
- GLenum_GL_UNPACK_RESAMPLE_SGIX = GLenum(33839)
- GLenum_GL_RESAMPLE_DECIMATE_SGIX = GLenum(33840)
- GLenum_GL_RESAMPLE_REPLICATE_SGIX = GLenum(33843)
- GLenum_GL_RESAMPLE_ZERO_FILL_SGIX = GLenum(33844)
- GLenum_GL_TANGENT_ARRAY_EXT = GLenum(33849)
- GLenum_GL_BINORMAL_ARRAY_EXT = GLenum(33850)
- GLenum_GL_CURRENT_TANGENT_EXT = GLenum(33851)
- GLenum_GL_CURRENT_BINORMAL_EXT = GLenum(33852)
- GLenum_GL_TANGENT_ARRAY_TYPE_EXT = GLenum(33854)
- GLenum_GL_TANGENT_ARRAY_STRIDE_EXT = GLenum(33855)
- GLenum_GL_BINORMAL_ARRAY_TYPE_EXT = GLenum(33856)
- GLenum_GL_BINORMAL_ARRAY_STRIDE_EXT = GLenum(33857)
- GLenum_GL_TANGENT_ARRAY_POINTER_EXT = GLenum(33858)
- GLenum_GL_BINORMAL_ARRAY_POINTER_EXT = GLenum(33859)
- GLenum_GL_MAP1_TANGENT_EXT = GLenum(33860)
- GLenum_GL_MAP2_TANGENT_EXT = GLenum(33861)
- GLenum_GL_MAP1_BINORMAL_EXT = GLenum(33862)
- GLenum_GL_MAP2_BINORMAL_EXT = GLenum(33863)
- GLenum_GL_NEAREST_CLIPMAP_NEAREST_SGIX = GLenum(33869)
- GLenum_GL_NEAREST_CLIPMAP_LINEAR_SGIX = GLenum(33870)
- GLenum_GL_LINEAR_CLIPMAP_NEAREST_SGIX = GLenum(33871)
- GLenum_GL_FOG_COORDINATE_SOURCE = GLenum(33872)
- GLenum_GL_FOG_COORDINATE_SOURCE_EXT = GLenum(33872)
- GLenum_GL_FOG_COORD_SRC = GLenum(33872)
- GLenum_GL_FOG_COORDINATE = GLenum(33873)
- GLenum_GL_FOG_COORD = GLenum(33873)
- GLenum_GL_FOG_COORDINATE_EXT = GLenum(33873)
- GLenum_GL_FRAGMENT_DEPTH = GLenum(33874)
- GLenum_GL_FRAGMENT_DEPTH_EXT = GLenum(33874)
- GLenum_GL_CURRENT_FOG_COORDINATE = GLenum(33875)
- GLenum_GL_CURRENT_FOG_COORD = GLenum(33875)
- GLenum_GL_CURRENT_FOG_COORDINATE_EXT = GLenum(33875)
- GLenum_GL_FOG_COORDINATE_ARRAY_TYPE = GLenum(33876)
- GLenum_GL_FOG_COORDINATE_ARRAY_TYPE_EXT = GLenum(33876)
- GLenum_GL_FOG_COORD_ARRAY_TYPE = GLenum(33876)
- GLenum_GL_FOG_COORDINATE_ARRAY_STRIDE = GLenum(33877)
- GLenum_GL_FOG_COORDINATE_ARRAY_STRIDE_EXT = GLenum(33877)
- GLenum_GL_FOG_COORD_ARRAY_STRIDE = GLenum(33877)
- GLenum_GL_FOG_COORDINATE_ARRAY_POINTER = GLenum(33878)
- GLenum_GL_FOG_COORDINATE_ARRAY_POINTER_EXT = GLenum(33878)
- GLenum_GL_FOG_COORD_ARRAY_POINTER = GLenum(33878)
- GLenum_GL_FOG_COORDINATE_ARRAY = GLenum(33879)
- GLenum_GL_FOG_COORDINATE_ARRAY_EXT = GLenum(33879)
- GLenum_GL_FOG_COORD_ARRAY = GLenum(33879)
- GLenum_GL_COLOR_SUM = GLenum(33880)
- GLenum_GL_COLOR_SUM_ARB = GLenum(33880)
- GLenum_GL_COLOR_SUM_EXT = GLenum(33880)
- GLenum_GL_CURRENT_SECONDARY_COLOR = GLenum(33881)
- GLenum_GL_CURRENT_SECONDARY_COLOR_EXT = GLenum(33881)
- GLenum_GL_SECONDARY_COLOR_ARRAY_SIZE = GLenum(33882)
- GLenum_GL_SECONDARY_COLOR_ARRAY_SIZE_EXT = GLenum(33882)
- GLenum_GL_SECONDARY_COLOR_ARRAY_TYPE = GLenum(33883)
- GLenum_GL_SECONDARY_COLOR_ARRAY_TYPE_EXT = GLenum(33883)
- GLenum_GL_SECONDARY_COLOR_ARRAY_STRIDE = GLenum(33884)
- GLenum_GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT = GLenum(33884)
- GLenum_GL_SECONDARY_COLOR_ARRAY_POINTER = GLenum(33885)
- GLenum_GL_SECONDARY_COLOR_ARRAY_POINTER_EXT = GLenum(33885)
- GLenum_GL_SECONDARY_COLOR_ARRAY = GLenum(33886)
- GLenum_GL_SECONDARY_COLOR_ARRAY_EXT = GLenum(33886)
- GLenum_GL_CURRENT_RASTER_SECONDARY_COLOR = GLenum(33887)
- GLenum_GL_ALIASED_POINT_SIZE_RANGE = GLenum(33901)
- GLenum_GL_ALIASED_LINE_WIDTH_RANGE = GLenum(33902)
- GLenum_GL_SCREEN_COORDINATES_REND = GLenum(33936)
- GLenum_GL_INVERTED_SCREEN_W_REND = GLenum(33937)
- GLenum_GL_TEXTURE0 = GLenum(33984)
- GLenum_GL_TEXTURE0_ARB = GLenum(33984)
- GLenum_GL_TEXTURE1 = GLenum(33985)
- GLenum_GL_TEXTURE1_ARB = GLenum(33985)
- GLenum_GL_TEXTURE2 = GLenum(33986)
- GLenum_GL_TEXTURE2_ARB = GLenum(33986)
- GLenum_GL_TEXTURE3 = GLenum(33987)
- GLenum_GL_TEXTURE3_ARB = GLenum(33987)
- GLenum_GL_TEXTURE4 = GLenum(33988)
- GLenum_GL_TEXTURE4_ARB = GLenum(33988)
- GLenum_GL_TEXTURE5 = GLenum(33989)
- GLenum_GL_TEXTURE5_ARB = GLenum(33989)
- GLenum_GL_TEXTURE6 = GLenum(33990)
- GLenum_GL_TEXTURE6_ARB = GLenum(33990)
- GLenum_GL_TEXTURE7 = GLenum(33991)
- GLenum_GL_TEXTURE7_ARB = GLenum(33991)
- GLenum_GL_TEXTURE8 = GLenum(33992)
- GLenum_GL_TEXTURE8_ARB = GLenum(33992)
- GLenum_GL_TEXTURE9 = GLenum(33993)
- GLenum_GL_TEXTURE9_ARB = GLenum(33993)
- GLenum_GL_TEXTURE10 = GLenum(33994)
- GLenum_GL_TEXTURE10_ARB = GLenum(33994)
- GLenum_GL_TEXTURE11 = GLenum(33995)
- GLenum_GL_TEXTURE11_ARB = GLenum(33995)
- GLenum_GL_TEXTURE12 = GLenum(33996)
- GLenum_GL_TEXTURE12_ARB = GLenum(33996)
- GLenum_GL_TEXTURE13 = GLenum(33997)
- GLenum_GL_TEXTURE13_ARB = GLenum(33997)
- GLenum_GL_TEXTURE14 = GLenum(33998)
- GLenum_GL_TEXTURE14_ARB = GLenum(33998)
- GLenum_GL_TEXTURE15 = GLenum(33999)
- GLenum_GL_TEXTURE15_ARB = GLenum(33999)
- GLenum_GL_TEXTURE16 = GLenum(34000)
- GLenum_GL_TEXTURE16_ARB = GLenum(34000)
- GLenum_GL_TEXTURE17 = GLenum(34001)
- GLenum_GL_TEXTURE17_ARB = GLenum(34001)
- GLenum_GL_TEXTURE18 = GLenum(34002)
- GLenum_GL_TEXTURE18_ARB = GLenum(34002)
- GLenum_GL_TEXTURE19 = GLenum(34003)
- GLenum_GL_TEXTURE19_ARB = GLenum(34003)
- GLenum_GL_TEXTURE20 = GLenum(34004)
- GLenum_GL_TEXTURE20_ARB = GLenum(34004)
- GLenum_GL_TEXTURE21 = GLenum(34005)
- GLenum_GL_TEXTURE21_ARB = GLenum(34005)
- GLenum_GL_TEXTURE22 = GLenum(34006)
- GLenum_GL_TEXTURE22_ARB = GLenum(34006)
- GLenum_GL_TEXTURE23 = GLenum(34007)
- GLenum_GL_TEXTURE23_ARB = GLenum(34007)
- GLenum_GL_TEXTURE24 = GLenum(34008)
- GLenum_GL_TEXTURE24_ARB = GLenum(34008)
- GLenum_GL_TEXTURE25 = GLenum(34009)
- GLenum_GL_TEXTURE25_ARB = GLenum(34009)
- GLenum_GL_TEXTURE26 = GLenum(34010)
- GLenum_GL_TEXTURE26_ARB = GLenum(34010)
- GLenum_GL_TEXTURE27 = GLenum(34011)
- GLenum_GL_TEXTURE27_ARB = GLenum(34011)
- GLenum_GL_TEXTURE28 = GLenum(34012)
- GLenum_GL_TEXTURE28_ARB = GLenum(34012)
- GLenum_GL_TEXTURE29 = GLenum(34013)
- GLenum_GL_TEXTURE29_ARB = GLenum(34013)
- GLenum_GL_TEXTURE30 = GLenum(34014)
- GLenum_GL_TEXTURE30_ARB = GLenum(34014)
- GLenum_GL_TEXTURE31 = GLenum(34015)
- GLenum_GL_TEXTURE31_ARB = GLenum(34015)
- GLenum_GL_ACTIVE_TEXTURE = GLenum(34016)
- GLenum_GL_ACTIVE_TEXTURE_ARB = GLenum(34016)
- GLenum_GL_CLIENT_ACTIVE_TEXTURE = GLenum(34017)
- GLenum_GL_CLIENT_ACTIVE_TEXTURE_ARB = GLenum(34017)
- GLenum_GL_MAX_TEXTURE_UNITS = GLenum(34018)
- GLenum_GL_MAX_TEXTURE_UNITS_ARB = GLenum(34018)
- GLenum_GL_TRANSPOSE_MODELVIEW_MATRIX = GLenum(34019)
- GLenum_GL_TRANSPOSE_MODELVIEW_MATRIX_ARB = GLenum(34019)
- GLenum_GL_PATH_TRANSPOSE_MODELVIEW_MATRIX_NV = GLenum(34019)
- GLenum_GL_TRANSPOSE_PROJECTION_MATRIX = GLenum(34020)
- GLenum_GL_TRANSPOSE_PROJECTION_MATRIX_ARB = GLenum(34020)
- GLenum_GL_PATH_TRANSPOSE_PROJECTION_MATRIX_NV = GLenum(34020)
- GLenum_GL_TRANSPOSE_TEXTURE_MATRIX = GLenum(34021)
- GLenum_GL_TRANSPOSE_TEXTURE_MATRIX_ARB = GLenum(34021)
- GLenum_GL_TRANSPOSE_COLOR_MATRIX = GLenum(34022)
- GLenum_GL_TRANSPOSE_COLOR_MATRIX_ARB = GLenum(34022)
- GLenum_GL_SUBTRACT = GLenum(34023)
- GLenum_GL_SUBTRACT_ARB = GLenum(34023)
- GLenum_GL_MAX_RENDERBUFFER_SIZE = GLenum(34024)
- GLenum_GL_MAX_RENDERBUFFER_SIZE_EXT = GLenum(34024)
- GLenum_GL_MAX_RENDERBUFFER_SIZE_OES = GLenum(34024)
- GLenum_GL_COMPRESSED_ALPHA = GLenum(34025)
- GLenum_GL_COMPRESSED_ALPHA_ARB = GLenum(34025)
- GLenum_GL_COMPRESSED_LUMINANCE = GLenum(34026)
- GLenum_GL_COMPRESSED_LUMINANCE_ARB = GLenum(34026)
- GLenum_GL_COMPRESSED_LUMINANCE_ALPHA = GLenum(34027)
- GLenum_GL_COMPRESSED_LUMINANCE_ALPHA_ARB = GLenum(34027)
- GLenum_GL_COMPRESSED_INTENSITY = GLenum(34028)
- GLenum_GL_COMPRESSED_INTENSITY_ARB = GLenum(34028)
- GLenum_GL_COMPRESSED_RGB = GLenum(34029)
- GLenum_GL_COMPRESSED_RGB_ARB = GLenum(34029)
- GLenum_GL_COMPRESSED_RGBA = GLenum(34030)
- GLenum_GL_COMPRESSED_RGBA_ARB = GLenum(34030)
- GLenum_GL_TEXTURE_COMPRESSION_HINT = GLenum(34031)
- GLenum_GL_TEXTURE_COMPRESSION_HINT_ARB = GLenum(34031)
- GLenum_GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER = GLenum(34032)
- GLenum_GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER = GLenum(34033)
- GLenum_GL_ALL_COMPLETED_NV = GLenum(34034)
- GLenum_GL_FENCE_STATUS_NV = GLenum(34035)
- GLenum_GL_FENCE_CONDITION_NV = GLenum(34036)
- GLenum_GL_TEXTURE_RECTANGLE = GLenum(34037)
- GLenum_GL_TEXTURE_RECTANGLE_ARB = GLenum(34037)
- GLenum_GL_TEXTURE_RECTANGLE_NV = GLenum(34037)
- GLenum_GL_TEXTURE_BINDING_RECTANGLE = GLenum(34038)
- GLenum_GL_TEXTURE_BINDING_RECTANGLE_ARB = GLenum(34038)
- GLenum_GL_TEXTURE_BINDING_RECTANGLE_NV = GLenum(34038)
- GLenum_GL_PROXY_TEXTURE_RECTANGLE = GLenum(34039)
- GLenum_GL_PROXY_TEXTURE_RECTANGLE_ARB = GLenum(34039)
- GLenum_GL_PROXY_TEXTURE_RECTANGLE_NV = GLenum(34039)
- GLenum_GL_MAX_RECTANGLE_TEXTURE_SIZE = GLenum(34040)
- GLenum_GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB = GLenum(34040)
- GLenum_GL_MAX_RECTANGLE_TEXTURE_SIZE_NV = GLenum(34040)
- GLenum_GL_DEPTH_STENCIL = GLenum(34041)
- GLenum_GL_DEPTH_STENCIL_EXT = GLenum(34041)
- GLenum_GL_DEPTH_STENCIL_NV = GLenum(34041)
- GLenum_GL_DEPTH_STENCIL_OES = GLenum(34041)
- GLenum_GL_UNSIGNED_INT_24_8 = GLenum(34042)
- GLenum_GL_UNSIGNED_INT_24_8_EXT = GLenum(34042)
- GLenum_GL_UNSIGNED_INT_24_8_NV = GLenum(34042)
- GLenum_GL_UNSIGNED_INT_24_8_OES = GLenum(34042)
- GLenum_GL_MAX_TEXTURE_LOD_BIAS = GLenum(34045)
- GLenum_GL_MAX_TEXTURE_LOD_BIAS_EXT = GLenum(34045)
- GLenum_GL_TEXTURE_MAX_ANISOTROPY_EXT = GLenum(34046)
- GLenum_GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT = GLenum(34047)
- GLenum_GL_TEXTURE_FILTER_CONTROL = GLenum(34048)
- GLenum_GL_TEXTURE_FILTER_CONTROL_EXT = GLenum(34048)
- GLenum_GL_TEXTURE_LOD_BIAS = GLenum(34049)
- GLenum_GL_TEXTURE_LOD_BIAS_EXT = GLenum(34049)
- GLenum_GL_MODELVIEW1_STACK_DEPTH_EXT = GLenum(34050)
- GLenum_GL_COMBINE4_NV = GLenum(34051)
- GLenum_GL_MAX_SHININESS_NV = GLenum(34052)
- GLenum_GL_MAX_SPOT_EXPONENT_NV = GLenum(34053)
- GLenum_GL_MODELVIEW1_MATRIX_EXT = GLenum(34054)
- GLenum_GL_INCR_WRAP = GLenum(34055)
- GLenum_GL_INCR_WRAP_EXT = GLenum(34055)
- GLenum_GL_INCR_WRAP_OES = GLenum(34055)
- GLenum_GL_DECR_WRAP = GLenum(34056)
- GLenum_GL_DECR_WRAP_EXT = GLenum(34056)
- GLenum_GL_DECR_WRAP_OES = GLenum(34056)
- GLenum_GL_VERTEX_WEIGHTING_EXT = GLenum(34057)
- GLenum_GL_MODELVIEW1_ARB = GLenum(34058)
- GLenum_GL_MODELVIEW1_EXT = GLenum(34058)
- GLenum_GL_CURRENT_VERTEX_WEIGHT_EXT = GLenum(34059)
- GLenum_GL_VERTEX_WEIGHT_ARRAY_EXT = GLenum(34060)
- GLenum_GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT = GLenum(34061)
- GLenum_GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT = GLenum(34062)
- GLenum_GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT = GLenum(34063)
- GLenum_GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT = GLenum(34064)
- GLenum_GL_NORMAL_MAP = GLenum(34065)
- GLenum_GL_NORMAL_MAP_ARB = GLenum(34065)
- GLenum_GL_NORMAL_MAP_EXT = GLenum(34065)
- GLenum_GL_NORMAL_MAP_NV = GLenum(34065)
- GLenum_GL_NORMAL_MAP_OES = GLenum(34065)
- GLenum_GL_REFLECTION_MAP = GLenum(34066)
- GLenum_GL_REFLECTION_MAP_ARB = GLenum(34066)
- GLenum_GL_REFLECTION_MAP_EXT = GLenum(34066)
- GLenum_GL_REFLECTION_MAP_NV = GLenum(34066)
- GLenum_GL_REFLECTION_MAP_OES = GLenum(34066)
- GLenum_GL_TEXTURE_CUBE_MAP = GLenum(34067)
- GLenum_GL_TEXTURE_CUBE_MAP_ARB = GLenum(34067)
- GLenum_GL_TEXTURE_CUBE_MAP_EXT = GLenum(34067)
- GLenum_GL_TEXTURE_CUBE_MAP_OES = GLenum(34067)
- GLenum_GL_TEXTURE_BINDING_CUBE_MAP = GLenum(34068)
- GLenum_GL_TEXTURE_BINDING_CUBE_MAP_ARB = GLenum(34068)
- GLenum_GL_TEXTURE_BINDING_CUBE_MAP_EXT = GLenum(34068)
- GLenum_GL_TEXTURE_BINDING_CUBE_MAP_OES = GLenum(34068)
- GLenum_GL_TEXTURE_CUBE_MAP_POSITIVE_X = GLenum(34069)
- GLenum_GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB = GLenum(34069)
- GLenum_GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT = GLenum(34069)
- GLenum_GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES = GLenum(34069)
- GLenum_GL_TEXTURE_CUBE_MAP_NEGATIVE_X = GLenum(34070)
- GLenum_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB = GLenum(34070)
- GLenum_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT = GLenum(34070)
- GLenum_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES = GLenum(34070)
- GLenum_GL_TEXTURE_CUBE_MAP_POSITIVE_Y = GLenum(34071)
- GLenum_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB = GLenum(34071)
- GLenum_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT = GLenum(34071)
- GLenum_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES = GLenum(34071)
- GLenum_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y = GLenum(34072)
- GLenum_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB = GLenum(34072)
- GLenum_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT = GLenum(34072)
- GLenum_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES = GLenum(34072)
- GLenum_GL_TEXTURE_CUBE_MAP_POSITIVE_Z = GLenum(34073)
- GLenum_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB = GLenum(34073)
- GLenum_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT = GLenum(34073)
- GLenum_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES = GLenum(34073)
- GLenum_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z = GLenum(34074)
- GLenum_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB = GLenum(34074)
- GLenum_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT = GLenum(34074)
- GLenum_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES = GLenum(34074)
- GLenum_GL_PROXY_TEXTURE_CUBE_MAP = GLenum(34075)
- GLenum_GL_PROXY_TEXTURE_CUBE_MAP_ARB = GLenum(34075)
- GLenum_GL_PROXY_TEXTURE_CUBE_MAP_EXT = GLenum(34075)
- GLenum_GL_MAX_CUBE_MAP_TEXTURE_SIZE = GLenum(34076)
- GLenum_GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB = GLenum(34076)
- GLenum_GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT = GLenum(34076)
- GLenum_GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES = GLenum(34076)
- GLenum_GL_VERTEX_ARRAY_RANGE_APPLE = GLenum(34077)
- GLenum_GL_VERTEX_ARRAY_RANGE_NV = GLenum(34077)
- GLenum_GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE = GLenum(34078)
- GLenum_GL_VERTEX_ARRAY_RANGE_LENGTH_NV = GLenum(34078)
- GLenum_GL_VERTEX_ARRAY_RANGE_VALID_NV = GLenum(34079)
- GLenum_GL_VERTEX_ARRAY_STORAGE_HINT_APPLE = GLenum(34079)
- GLenum_GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV = GLenum(34080)
- GLenum_GL_VERTEX_ARRAY_RANGE_POINTER_APPLE = GLenum(34081)
- GLenum_GL_VERTEX_ARRAY_RANGE_POINTER_NV = GLenum(34081)
- GLenum_GL_REGISTER_COMBINERS_NV = GLenum(34082)
- GLenum_GL_VARIABLE_A_NV = GLenum(34083)
- GLenum_GL_VARIABLE_B_NV = GLenum(34084)
- GLenum_GL_VARIABLE_C_NV = GLenum(34085)
- GLenum_GL_VARIABLE_D_NV = GLenum(34086)
- GLenum_GL_VARIABLE_E_NV = GLenum(34087)
- GLenum_GL_VARIABLE_F_NV = GLenum(34088)
- GLenum_GL_VARIABLE_G_NV = GLenum(34089)
- GLenum_GL_CONSTANT_COLOR0_NV = GLenum(34090)
- GLenum_GL_CONSTANT_COLOR1_NV = GLenum(34091)
- GLenum_GL_PRIMARY_COLOR_NV = GLenum(34092)
- GLenum_GL_SECONDARY_COLOR_NV = GLenum(34093)
- GLenum_GL_SPARE0_NV = GLenum(34094)
- GLenum_GL_SPARE1_NV = GLenum(34095)
- GLenum_GL_DISCARD_NV = GLenum(34096)
- GLenum_GL_E_TIMES_F_NV = GLenum(34097)
- GLenum_GL_SPARE0_PLUS_SECONDARY_COLOR_NV = GLenum(34098)
- GLenum_GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV = GLenum(34099)
- GLenum_GL_MULTISAMPLE_FILTER_HINT_NV = GLenum(34100)
- GLenum_GL_PER_STAGE_CONSTANTS_NV = GLenum(34101)
- GLenum_GL_UNSIGNED_IDENTITY_NV = GLenum(34102)
- GLenum_GL_UNSIGNED_INVERT_NV = GLenum(34103)
- GLenum_GL_EXPAND_NORMAL_NV = GLenum(34104)
- GLenum_GL_EXPAND_NEGATE_NV = GLenum(34105)
- GLenum_GL_HALF_BIAS_NORMAL_NV = GLenum(34106)
- GLenum_GL_HALF_BIAS_NEGATE_NV = GLenum(34107)
- GLenum_GL_SIGNED_IDENTITY_NV = GLenum(34108)
- GLenum_GL_SIGNED_NEGATE_NV = GLenum(34109)
- GLenum_GL_SCALE_BY_TWO_NV = GLenum(34110)
- GLenum_GL_SCALE_BY_FOUR_NV = GLenum(34111)
- GLenum_GL_SCALE_BY_ONE_HALF_NV = GLenum(34112)
- GLenum_GL_BIAS_BY_NEGATIVE_ONE_HALF_NV = GLenum(34113)
- GLenum_GL_COMBINER_INPUT_NV = GLenum(34114)
- GLenum_GL_COMBINER_MAPPING_NV = GLenum(34115)
- GLenum_GL_COMBINER_COMPONENT_USAGE_NV = GLenum(34116)
- GLenum_GL_COMBINER_AB_DOT_PRODUCT_NV = GLenum(34117)
- GLenum_GL_COMBINER_CD_DOT_PRODUCT_NV = GLenum(34118)
- GLenum_GL_COMBINER_MUX_SUM_NV = GLenum(34119)
- GLenum_GL_COMBINER_SCALE_NV = GLenum(34120)
- GLenum_GL_COMBINER_BIAS_NV = GLenum(34121)
- GLenum_GL_COMBINER_AB_OUTPUT_NV = GLenum(34122)
- GLenum_GL_COMBINER_CD_OUTPUT_NV = GLenum(34123)
- GLenum_GL_COMBINER_SUM_OUTPUT_NV = GLenum(34124)
- GLenum_GL_MAX_GENERAL_COMBINERS_NV = GLenum(34125)
- GLenum_GL_NUM_GENERAL_COMBINERS_NV = GLenum(34126)
- GLenum_GL_COLOR_SUM_CLAMP_NV = GLenum(34127)
- GLenum_GL_COMBINER0_NV = GLenum(34128)
- GLenum_GL_COMBINER1_NV = GLenum(34129)
- GLenum_GL_COMBINER2_NV = GLenum(34130)
- GLenum_GL_COMBINER3_NV = GLenum(34131)
- GLenum_GL_COMBINER4_NV = GLenum(34132)
- GLenum_GL_COMBINER5_NV = GLenum(34133)
- GLenum_GL_COMBINER6_NV = GLenum(34134)
- GLenum_GL_COMBINER7_NV = GLenum(34135)
- GLenum_GL_PRIMITIVE_RESTART_NV = GLenum(34136)
- GLenum_GL_PRIMITIVE_RESTART_INDEX_NV = GLenum(34137)
- GLenum_GL_FOG_DISTANCE_MODE_NV = GLenum(34138)
- GLenum_GL_EYE_RADIAL_NV = GLenum(34139)
- GLenum_GL_EYE_PLANE_ABSOLUTE_NV = GLenum(34140)
- GLenum_GL_EMBOSS_LIGHT_NV = GLenum(34141)
- GLenum_GL_EMBOSS_CONSTANT_NV = GLenum(34142)
- GLenum_GL_EMBOSS_MAP_NV = GLenum(34143)
- GLenum_GL_RED_MIN_CLAMP_INGR = GLenum(34144)
- GLenum_GL_GREEN_MIN_CLAMP_INGR = GLenum(34145)
- GLenum_GL_BLUE_MIN_CLAMP_INGR = GLenum(34146)
- GLenum_GL_ALPHA_MIN_CLAMP_INGR = GLenum(34147)
- GLenum_GL_RED_MAX_CLAMP_INGR = GLenum(34148)
- GLenum_GL_GREEN_MAX_CLAMP_INGR = GLenum(34149)
- GLenum_GL_BLUE_MAX_CLAMP_INGR = GLenum(34150)
- GLenum_GL_ALPHA_MAX_CLAMP_INGR = GLenum(34151)
- GLenum_GL_INTERLACE_READ_INGR = GLenum(34152)
- GLenum_GL_COMBINE = GLenum(34160)
- GLenum_GL_COMBINE_ARB = GLenum(34160)
- GLenum_GL_COMBINE_EXT = GLenum(34160)
- GLenum_GL_COMBINE_RGB = GLenum(34161)
- GLenum_GL_COMBINE_RGB_ARB = GLenum(34161)
- GLenum_GL_COMBINE_RGB_EXT = GLenum(34161)
- GLenum_GL_COMBINE_ALPHA = GLenum(34162)
- GLenum_GL_COMBINE_ALPHA_ARB = GLenum(34162)
- GLenum_GL_COMBINE_ALPHA_EXT = GLenum(34162)
- GLenum_GL_RGB_SCALE = GLenum(34163)
- GLenum_GL_RGB_SCALE_ARB = GLenum(34163)
- GLenum_GL_RGB_SCALE_EXT = GLenum(34163)
- GLenum_GL_ADD_SIGNED = GLenum(34164)
- GLenum_GL_ADD_SIGNED_ARB = GLenum(34164)
- GLenum_GL_ADD_SIGNED_EXT = GLenum(34164)
- GLenum_GL_INTERPOLATE = GLenum(34165)
- GLenum_GL_INTERPOLATE_ARB = GLenum(34165)
- GLenum_GL_INTERPOLATE_EXT = GLenum(34165)
- GLenum_GL_CONSTANT = GLenum(34166)
- GLenum_GL_CONSTANT_ARB = GLenum(34166)
- GLenum_GL_CONSTANT_EXT = GLenum(34166)
- GLenum_GL_CONSTANT_NV = GLenum(34166)
- GLenum_GL_PRIMARY_COLOR = GLenum(34167)
- GLenum_GL_PRIMARY_COLOR_ARB = GLenum(34167)
- GLenum_GL_PRIMARY_COLOR_EXT = GLenum(34167)
- GLenum_GL_PREVIOUS = GLenum(34168)
- GLenum_GL_PREVIOUS_ARB = GLenum(34168)
- GLenum_GL_PREVIOUS_EXT = GLenum(34168)
- GLenum_GL_SOURCE0_RGB = GLenum(34176)
- GLenum_GL_SOURCE0_RGB_ARB = GLenum(34176)
- GLenum_GL_SOURCE0_RGB_EXT = GLenum(34176)
- GLenum_GL_SRC0_RGB = GLenum(34176)
- GLenum_GL_SOURCE1_RGB = GLenum(34177)
- GLenum_GL_SOURCE1_RGB_ARB = GLenum(34177)
- GLenum_GL_SOURCE1_RGB_EXT = GLenum(34177)
- GLenum_GL_SRC1_RGB = GLenum(34177)
- GLenum_GL_SOURCE2_RGB = GLenum(34178)
- GLenum_GL_SOURCE2_RGB_ARB = GLenum(34178)
- GLenum_GL_SOURCE2_RGB_EXT = GLenum(34178)
- GLenum_GL_SRC2_RGB = GLenum(34178)
- GLenum_GL_SOURCE3_RGB_NV = GLenum(34179)
- GLenum_GL_SOURCE0_ALPHA = GLenum(34184)
- GLenum_GL_SOURCE0_ALPHA_ARB = GLenum(34184)
- GLenum_GL_SOURCE0_ALPHA_EXT = GLenum(34184)
- GLenum_GL_SRC0_ALPHA = GLenum(34184)
- GLenum_GL_SOURCE1_ALPHA = GLenum(34185)
- GLenum_GL_SOURCE1_ALPHA_ARB = GLenum(34185)
- GLenum_GL_SOURCE1_ALPHA_EXT = GLenum(34185)
- GLenum_GL_SRC1_ALPHA = GLenum(34185)
- GLenum_GL_SRC1_ALPHA_EXT = GLenum(34185)
- GLenum_GL_SOURCE2_ALPHA = GLenum(34186)
- GLenum_GL_SOURCE2_ALPHA_ARB = GLenum(34186)
- GLenum_GL_SOURCE2_ALPHA_EXT = GLenum(34186)
- GLenum_GL_SRC2_ALPHA = GLenum(34186)
- GLenum_GL_SOURCE3_ALPHA_NV = GLenum(34187)
- GLenum_GL_OPERAND0_RGB = GLenum(34192)
- GLenum_GL_OPERAND0_RGB_ARB = GLenum(34192)
- GLenum_GL_OPERAND0_RGB_EXT = GLenum(34192)
- GLenum_GL_OPERAND1_RGB = GLenum(34193)
- GLenum_GL_OPERAND1_RGB_ARB = GLenum(34193)
- GLenum_GL_OPERAND1_RGB_EXT = GLenum(34193)
- GLenum_GL_OPERAND2_RGB = GLenum(34194)
- GLenum_GL_OPERAND2_RGB_ARB = GLenum(34194)
- GLenum_GL_OPERAND2_RGB_EXT = GLenum(34194)
- GLenum_GL_OPERAND3_RGB_NV = GLenum(34195)
- GLenum_GL_OPERAND0_ALPHA = GLenum(34200)
- GLenum_GL_OPERAND0_ALPHA_ARB = GLenum(34200)
- GLenum_GL_OPERAND0_ALPHA_EXT = GLenum(34200)
- GLenum_GL_OPERAND1_ALPHA = GLenum(34201)
- GLenum_GL_OPERAND1_ALPHA_ARB = GLenum(34201)
- GLenum_GL_OPERAND1_ALPHA_EXT = GLenum(34201)
- GLenum_GL_OPERAND2_ALPHA = GLenum(34202)
- GLenum_GL_OPERAND2_ALPHA_ARB = GLenum(34202)
- GLenum_GL_OPERAND2_ALPHA_EXT = GLenum(34202)
- GLenum_GL_OPERAND3_ALPHA_NV = GLenum(34203)
- GLenum_GL_PACK_SUBSAMPLE_RATE_SGIX = GLenum(34208)
- GLenum_GL_UNPACK_SUBSAMPLE_RATE_SGIX = GLenum(34209)
- GLenum_GL_PIXEL_SUBSAMPLE_4444_SGIX = GLenum(34210)
- GLenum_GL_PIXEL_SUBSAMPLE_2424_SGIX = GLenum(34211)
- GLenum_GL_PIXEL_SUBSAMPLE_4242_SGIX = GLenum(34212)
- GLenum_GL_PERTURB_EXT = GLenum(34222)
- GLenum_GL_TEXTURE_NORMAL_EXT = GLenum(34223)
- GLenum_GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE = GLenum(34224)
- GLenum_GL_TRANSFORM_HINT_APPLE = GLenum(34225)
- GLenum_GL_UNPACK_CLIENT_STORAGE_APPLE = GLenum(34226)
- GLenum_GL_BUFFER_OBJECT_APPLE = GLenum(34227)
- GLenum_GL_STORAGE_CLIENT_APPLE = GLenum(34228)
- GLenum_GL_VERTEX_ARRAY_BINDING = GLenum(34229)
- GLenum_GL_VERTEX_ARRAY_BINDING_APPLE = GLenum(34229)
- GLenum_GL_VERTEX_ARRAY_BINDING_OES = GLenum(34229)
- GLenum_GL_TEXTURE_RANGE_LENGTH_APPLE = GLenum(34231)
- GLenum_GL_TEXTURE_RANGE_POINTER_APPLE = GLenum(34232)
- GLenum_GL_YCBCR_422_APPLE = GLenum(34233)
- GLenum_GL_UNSIGNED_SHORT_8_8_APPLE = GLenum(34234)
- GLenum_GL_UNSIGNED_SHORT_8_8_MESA = GLenum(34234)
- GLenum_GL_UNSIGNED_SHORT_8_8_REV_APPLE = GLenum(34235)
- GLenum_GL_UNSIGNED_SHORT_8_8_REV_MESA = GLenum(34235)
- GLenum_GL_TEXTURE_STORAGE_HINT_APPLE = GLenum(34236)
- GLenum_GL_STORAGE_PRIVATE_APPLE = GLenum(34237)
- GLenum_GL_STORAGE_CACHED_APPLE = GLenum(34238)
- GLenum_GL_STORAGE_SHARED_APPLE = GLenum(34239)
- GLenum_GL_REPLACEMENT_CODE_ARRAY_SUN = GLenum(34240)
- GLenum_GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN = GLenum(34241)
- GLenum_GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN = GLenum(34242)
- GLenum_GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN = GLenum(34243)
- GLenum_GL_R1UI_V3F_SUN = GLenum(34244)
- GLenum_GL_R1UI_C4UB_V3F_SUN = GLenum(34245)
- GLenum_GL_R1UI_C3F_V3F_SUN = GLenum(34246)
- GLenum_GL_R1UI_N3F_V3F_SUN = GLenum(34247)
- GLenum_GL_R1UI_C4F_N3F_V3F_SUN = GLenum(34248)
- GLenum_GL_R1UI_T2F_V3F_SUN = GLenum(34249)
- GLenum_GL_R1UI_T2F_N3F_V3F_SUN = GLenum(34250)
- GLenum_GL_R1UI_T2F_C4F_N3F_V3F_SUN = GLenum(34251)
- GLenum_GL_SLICE_ACCUM_SUN = GLenum(34252)
- GLenum_GL_QUAD_MESH_SUN = GLenum(34324)
- GLenum_GL_TRIANGLE_MESH_SUN = GLenum(34325)
- GLenum_GL_VERTEX_PROGRAM_ARB = GLenum(34336)
- GLenum_GL_VERTEX_PROGRAM_NV = GLenum(34336)
- GLenum_GL_VERTEX_STATE_PROGRAM_NV = GLenum(34337)
- GLenum_GL_VERTEX_ATTRIB_ARRAY_ENABLED = GLenum(34338)
- GLenum_GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB = GLenum(34338)
- GLenum_GL_ATTRIB_ARRAY_SIZE_NV = GLenum(34339)
- GLenum_GL_VERTEX_ATTRIB_ARRAY_SIZE = GLenum(34339)
- GLenum_GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB = GLenum(34339)
- GLenum_GL_ATTRIB_ARRAY_STRIDE_NV = GLenum(34340)
- GLenum_GL_VERTEX_ATTRIB_ARRAY_STRIDE = GLenum(34340)
- GLenum_GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB = GLenum(34340)
- GLenum_GL_ATTRIB_ARRAY_TYPE_NV = GLenum(34341)
- GLenum_GL_VERTEX_ATTRIB_ARRAY_TYPE = GLenum(34341)
- GLenum_GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB = GLenum(34341)
- GLenum_GL_CURRENT_ATTRIB_NV = GLenum(34342)
- GLenum_GL_CURRENT_VERTEX_ATTRIB = GLenum(34342)
- GLenum_GL_CURRENT_VERTEX_ATTRIB_ARB = GLenum(34342)
- GLenum_GL_PROGRAM_LENGTH_ARB = GLenum(34343)
- GLenum_GL_PROGRAM_LENGTH_NV = GLenum(34343)
- GLenum_GL_PROGRAM_STRING_ARB = GLenum(34344)
- GLenum_GL_PROGRAM_STRING_NV = GLenum(34344)
- GLenum_GL_MODELVIEW_PROJECTION_NV = GLenum(34345)
- GLenum_GL_IDENTITY_NV = GLenum(34346)
- GLenum_GL_INVERSE_NV = GLenum(34347)
- GLenum_GL_TRANSPOSE_NV = GLenum(34348)
- GLenum_GL_INVERSE_TRANSPOSE_NV = GLenum(34349)
- GLenum_GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB = GLenum(34350)
- GLenum_GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV = GLenum(34350)
- GLenum_GL_MAX_PROGRAM_MATRICES_ARB = GLenum(34351)
- GLenum_GL_MAX_TRACK_MATRICES_NV = GLenum(34351)
- GLenum_GL_MATRIX0_NV = GLenum(34352)
- GLenum_GL_MATRIX1_NV = GLenum(34353)
- GLenum_GL_MATRIX2_NV = GLenum(34354)
- GLenum_GL_MATRIX3_NV = GLenum(34355)
- GLenum_GL_MATRIX4_NV = GLenum(34356)
- GLenum_GL_MATRIX5_NV = GLenum(34357)
- GLenum_GL_MATRIX6_NV = GLenum(34358)
- GLenum_GL_MATRIX7_NV = GLenum(34359)
- GLenum_GL_CURRENT_MATRIX_STACK_DEPTH_ARB = GLenum(34368)
- GLenum_GL_CURRENT_MATRIX_STACK_DEPTH_NV = GLenum(34368)
- GLenum_GL_CURRENT_MATRIX_ARB = GLenum(34369)
- GLenum_GL_CURRENT_MATRIX_NV = GLenum(34369)
- GLenum_GL_VERTEX_PROGRAM_POINT_SIZE = GLenum(34370)
- GLenum_GL_VERTEX_PROGRAM_POINT_SIZE_ARB = GLenum(34370)
- GLenum_GL_VERTEX_PROGRAM_POINT_SIZE_NV = GLenum(34370)
- GLenum_GL_PROGRAM_POINT_SIZE = GLenum(34370)
- GLenum_GL_PROGRAM_POINT_SIZE_ARB = GLenum(34370)
- GLenum_GL_PROGRAM_POINT_SIZE_EXT = GLenum(34370)
- GLenum_GL_VERTEX_PROGRAM_TWO_SIDE = GLenum(34371)
- GLenum_GL_VERTEX_PROGRAM_TWO_SIDE_ARB = GLenum(34371)
- GLenum_GL_VERTEX_PROGRAM_TWO_SIDE_NV = GLenum(34371)
- GLenum_GL_PROGRAM_PARAMETER_NV = GLenum(34372)
- GLenum_GL_ATTRIB_ARRAY_POINTER_NV = GLenum(34373)
- GLenum_GL_VERTEX_ATTRIB_ARRAY_POINTER = GLenum(34373)
- GLenum_GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB = GLenum(34373)
- GLenum_GL_PROGRAM_TARGET_NV = GLenum(34374)
- GLenum_GL_PROGRAM_RESIDENT_NV = GLenum(34375)
- GLenum_GL_TRACK_MATRIX_NV = GLenum(34376)
- GLenum_GL_TRACK_MATRIX_TRANSFORM_NV = GLenum(34377)
- GLenum_GL_VERTEX_PROGRAM_BINDING_NV = GLenum(34378)
- GLenum_GL_PROGRAM_ERROR_POSITION_ARB = GLenum(34379)
- GLenum_GL_PROGRAM_ERROR_POSITION_NV = GLenum(34379)
- GLenum_GL_OFFSET_TEXTURE_RECTANGLE_NV = GLenum(34380)
- GLenum_GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV = GLenum(34381)
- GLenum_GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV = GLenum(34382)
- GLenum_GL_DEPTH_CLAMP = GLenum(34383)
- GLenum_GL_DEPTH_CLAMP_NV = GLenum(34383)
- GLenum_GL_VERTEX_ATTRIB_ARRAY0_NV = GLenum(34384)
- GLenum_GL_VERTEX_ATTRIB_ARRAY1_NV = GLenum(34385)
- GLenum_GL_VERTEX_ATTRIB_ARRAY2_NV = GLenum(34386)
- GLenum_GL_VERTEX_ATTRIB_ARRAY3_NV = GLenum(34387)
- GLenum_GL_VERTEX_ATTRIB_ARRAY4_NV = GLenum(34388)
- GLenum_GL_VERTEX_ATTRIB_ARRAY5_NV = GLenum(34389)
- GLenum_GL_VERTEX_ATTRIB_ARRAY6_NV = GLenum(34390)
- GLenum_GL_VERTEX_ATTRIB_ARRAY7_NV = GLenum(34391)
- GLenum_GL_VERTEX_ATTRIB_ARRAY8_NV = GLenum(34392)
- GLenum_GL_VERTEX_ATTRIB_ARRAY9_NV = GLenum(34393)
- GLenum_GL_VERTEX_ATTRIB_ARRAY10_NV = GLenum(34394)
- GLenum_GL_VERTEX_ATTRIB_ARRAY11_NV = GLenum(34395)
- GLenum_GL_VERTEX_ATTRIB_ARRAY12_NV = GLenum(34396)
- GLenum_GL_VERTEX_ATTRIB_ARRAY13_NV = GLenum(34397)
- GLenum_GL_VERTEX_ATTRIB_ARRAY14_NV = GLenum(34398)
- GLenum_GL_VERTEX_ATTRIB_ARRAY15_NV = GLenum(34399)
- GLenum_GL_MAP1_VERTEX_ATTRIB0_4_NV = GLenum(34400)
- GLenum_GL_MAP1_VERTEX_ATTRIB1_4_NV = GLenum(34401)
- GLenum_GL_MAP1_VERTEX_ATTRIB2_4_NV = GLenum(34402)
- GLenum_GL_MAP1_VERTEX_ATTRIB3_4_NV = GLenum(34403)
- GLenum_GL_MAP1_VERTEX_ATTRIB4_4_NV = GLenum(34404)
- GLenum_GL_MAP1_VERTEX_ATTRIB5_4_NV = GLenum(34405)
- GLenum_GL_MAP1_VERTEX_ATTRIB6_4_NV = GLenum(34406)
- GLenum_GL_MAP1_VERTEX_ATTRIB7_4_NV = GLenum(34407)
- GLenum_GL_MAP1_VERTEX_ATTRIB8_4_NV = GLenum(34408)
- GLenum_GL_MAP1_VERTEX_ATTRIB9_4_NV = GLenum(34409)
- GLenum_GL_MAP1_VERTEX_ATTRIB10_4_NV = GLenum(34410)
- GLenum_GL_MAP1_VERTEX_ATTRIB11_4_NV = GLenum(34411)
- GLenum_GL_MAP1_VERTEX_ATTRIB12_4_NV = GLenum(34412)
- GLenum_GL_MAP1_VERTEX_ATTRIB13_4_NV = GLenum(34413)
- GLenum_GL_MAP1_VERTEX_ATTRIB14_4_NV = GLenum(34414)
- GLenum_GL_MAP1_VERTEX_ATTRIB15_4_NV = GLenum(34415)
- GLenum_GL_MAP2_VERTEX_ATTRIB0_4_NV = GLenum(34416)
- GLenum_GL_MAP2_VERTEX_ATTRIB1_4_NV = GLenum(34417)
- GLenum_GL_MAP2_VERTEX_ATTRIB2_4_NV = GLenum(34418)
- GLenum_GL_MAP2_VERTEX_ATTRIB3_4_NV = GLenum(34419)
- GLenum_GL_MAP2_VERTEX_ATTRIB4_4_NV = GLenum(34420)
- GLenum_GL_MAP2_VERTEX_ATTRIB5_4_NV = GLenum(34421)
- GLenum_GL_MAP2_VERTEX_ATTRIB6_4_NV = GLenum(34422)
- GLenum_GL_MAP2_VERTEX_ATTRIB7_4_NV = GLenum(34423)
- GLenum_GL_PROGRAM_BINDING_ARB = GLenum(34423)
- GLenum_GL_MAP2_VERTEX_ATTRIB8_4_NV = GLenum(34424)
- GLenum_GL_MAP2_VERTEX_ATTRIB9_4_NV = GLenum(34425)
- GLenum_GL_MAP2_VERTEX_ATTRIB10_4_NV = GLenum(34426)
- GLenum_GL_MAP2_VERTEX_ATTRIB11_4_NV = GLenum(34427)
- GLenum_GL_MAP2_VERTEX_ATTRIB12_4_NV = GLenum(34428)
- GLenum_GL_MAP2_VERTEX_ATTRIB13_4_NV = GLenum(34429)
- GLenum_GL_MAP2_VERTEX_ATTRIB14_4_NV = GLenum(34430)
- GLenum_GL_MAP2_VERTEX_ATTRIB15_4_NV = GLenum(34431)
- GLenum_GL_TEXTURE_COMPRESSED_IMAGE_SIZE = GLenum(34464)
- GLenum_GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB = GLenum(34464)
- GLenum_GL_TEXTURE_COMPRESSED = GLenum(34465)
- GLenum_GL_TEXTURE_COMPRESSED_ARB = GLenum(34465)
- GLenum_GL_NUM_COMPRESSED_TEXTURE_FORMATS = GLenum(34466)
- GLenum_GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB = GLenum(34466)
- GLenum_GL_COMPRESSED_TEXTURE_FORMATS = GLenum(34467)
- GLenum_GL_COMPRESSED_TEXTURE_FORMATS_ARB = GLenum(34467)
- GLenum_GL_MAX_VERTEX_UNITS_ARB = GLenum(34468)
- GLenum_GL_MAX_VERTEX_UNITS_OES = GLenum(34468)
- GLenum_GL_ACTIVE_VERTEX_UNITS_ARB = GLenum(34469)
- GLenum_GL_WEIGHT_SUM_UNITY_ARB = GLenum(34470)
- GLenum_GL_VERTEX_BLEND_ARB = GLenum(34471)
- GLenum_GL_CURRENT_WEIGHT_ARB = GLenum(34472)
- GLenum_GL_WEIGHT_ARRAY_TYPE_ARB = GLenum(34473)
- GLenum_GL_WEIGHT_ARRAY_TYPE_OES = GLenum(34473)
- GLenum_GL_WEIGHT_ARRAY_STRIDE_ARB = GLenum(34474)
- GLenum_GL_WEIGHT_ARRAY_STRIDE_OES = GLenum(34474)
- GLenum_GL_WEIGHT_ARRAY_SIZE_ARB = GLenum(34475)
- GLenum_GL_WEIGHT_ARRAY_SIZE_OES = GLenum(34475)
- GLenum_GL_WEIGHT_ARRAY_POINTER_ARB = GLenum(34476)
- GLenum_GL_WEIGHT_ARRAY_POINTER_OES = GLenum(34476)
- GLenum_GL_WEIGHT_ARRAY_ARB = GLenum(34477)
- GLenum_GL_WEIGHT_ARRAY_OES = GLenum(34477)
- GLenum_GL_DOT3_RGB = GLenum(34478)
- GLenum_GL_DOT3_RGB_ARB = GLenum(34478)
- GLenum_GL_DOT3_RGBA = GLenum(34479)
- GLenum_GL_DOT3_RGBA_ARB = GLenum(34479)
- GLenum_GL_DOT3_RGBA_IMG = GLenum(34479)
- GLenum_GL_COMPRESSED_RGB_FXT1_3DFX = GLenum(34480)
- GLenum_GL_COMPRESSED_RGBA_FXT1_3DFX = GLenum(34481)
- GLenum_GL_MULTISAMPLE_3DFX = GLenum(34482)
- GLenum_GL_SAMPLE_BUFFERS_3DFX = GLenum(34483)
- GLenum_GL_SAMPLES_3DFX = GLenum(34484)
- GLenum_GL_EVAL_2D_NV = GLenum(34496)
- GLenum_GL_EVAL_TRIANGULAR_2D_NV = GLenum(34497)
- GLenum_GL_MAP_TESSELLATION_NV = GLenum(34498)
- GLenum_GL_MAP_ATTRIB_U_ORDER_NV = GLenum(34499)
- GLenum_GL_MAP_ATTRIB_V_ORDER_NV = GLenum(34500)
- GLenum_GL_EVAL_FRACTIONAL_TESSELLATION_NV = GLenum(34501)
- GLenum_GL_EVAL_VERTEX_ATTRIB0_NV = GLenum(34502)
- GLenum_GL_EVAL_VERTEX_ATTRIB1_NV = GLenum(34503)
- GLenum_GL_EVAL_VERTEX_ATTRIB2_NV = GLenum(34504)
- GLenum_GL_EVAL_VERTEX_ATTRIB3_NV = GLenum(34505)
- GLenum_GL_EVAL_VERTEX_ATTRIB4_NV = GLenum(34506)
- GLenum_GL_EVAL_VERTEX_ATTRIB5_NV = GLenum(34507)
- GLenum_GL_EVAL_VERTEX_ATTRIB6_NV = GLenum(34508)
- GLenum_GL_EVAL_VERTEX_ATTRIB7_NV = GLenum(34509)
- GLenum_GL_EVAL_VERTEX_ATTRIB8_NV = GLenum(34510)
- GLenum_GL_EVAL_VERTEX_ATTRIB9_NV = GLenum(34511)
- GLenum_GL_EVAL_VERTEX_ATTRIB10_NV = GLenum(34512)
- GLenum_GL_EVAL_VERTEX_ATTRIB11_NV = GLenum(34513)
- GLenum_GL_EVAL_VERTEX_ATTRIB12_NV = GLenum(34514)
- GLenum_GL_EVAL_VERTEX_ATTRIB13_NV = GLenum(34515)
- GLenum_GL_EVAL_VERTEX_ATTRIB14_NV = GLenum(34516)
- GLenum_GL_EVAL_VERTEX_ATTRIB15_NV = GLenum(34517)
- GLenum_GL_MAX_MAP_TESSELLATION_NV = GLenum(34518)
- GLenum_GL_MAX_RATIONAL_EVAL_ORDER_NV = GLenum(34519)
- GLenum_GL_MAX_PROGRAM_PATCH_ATTRIBS_NV = GLenum(34520)
- GLenum_GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV = GLenum(34521)
- GLenum_GL_UNSIGNED_INT_S8_S8_8_8_NV = GLenum(34522)
- GLenum_GL_UNSIGNED_INT_8_8_S8_S8_REV_NV = GLenum(34523)
- GLenum_GL_DSDT_MAG_INTENSITY_NV = GLenum(34524)
- GLenum_GL_SHADER_CONSISTENT_NV = GLenum(34525)
- GLenum_GL_TEXTURE_SHADER_NV = GLenum(34526)
- GLenum_GL_SHADER_OPERATION_NV = GLenum(34527)
- GLenum_GL_CULL_MODES_NV = GLenum(34528)
- GLenum_GL_OFFSET_TEXTURE_MATRIX_NV = GLenum(34529)
- GLenum_GL_OFFSET_TEXTURE_2D_MATRIX_NV = GLenum(34529)
- GLenum_GL_OFFSET_TEXTURE_SCALE_NV = GLenum(34530)
- GLenum_GL_OFFSET_TEXTURE_2D_SCALE_NV = GLenum(34530)
- GLenum_GL_OFFSET_TEXTURE_BIAS_NV = GLenum(34531)
- GLenum_GL_OFFSET_TEXTURE_2D_BIAS_NV = GLenum(34531)
- GLenum_GL_PREVIOUS_TEXTURE_INPUT_NV = GLenum(34532)
- GLenum_GL_CONST_EYE_NV = GLenum(34533)
- GLenum_GL_PASS_THROUGH_NV = GLenum(34534)
- GLenum_GL_CULL_FRAGMENT_NV = GLenum(34535)
- GLenum_GL_OFFSET_TEXTURE_2D_NV = GLenum(34536)
- GLenum_GL_DEPENDENT_AR_TEXTURE_2D_NV = GLenum(34537)
- GLenum_GL_DEPENDENT_GB_TEXTURE_2D_NV = GLenum(34538)
- GLenum_GL_SURFACE_STATE_NV = GLenum(34539)
- GLenum_GL_DOT_PRODUCT_NV = GLenum(34540)
- GLenum_GL_DOT_PRODUCT_DEPTH_REPLACE_NV = GLenum(34541)
- GLenum_GL_DOT_PRODUCT_TEXTURE_2D_NV = GLenum(34542)
- GLenum_GL_DOT_PRODUCT_TEXTURE_3D_NV = GLenum(34543)
- GLenum_GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV = GLenum(34544)
- GLenum_GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV = GLenum(34545)
- GLenum_GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV = GLenum(34546)
- GLenum_GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV = GLenum(34547)
- GLenum_GL_HILO_NV = GLenum(34548)
- GLenum_GL_DSDT_NV = GLenum(34549)
- GLenum_GL_DSDT_MAG_NV = GLenum(34550)
- GLenum_GL_DSDT_MAG_VIB_NV = GLenum(34551)
- GLenum_GL_HILO16_NV = GLenum(34552)
- GLenum_GL_SIGNED_HILO_NV = GLenum(34553)
- GLenum_GL_SIGNED_HILO16_NV = GLenum(34554)
- GLenum_GL_SIGNED_RGBA_NV = GLenum(34555)
- GLenum_GL_SIGNED_RGBA8_NV = GLenum(34556)
- GLenum_GL_SURFACE_REGISTERED_NV = GLenum(34557)
- GLenum_GL_SIGNED_RGB_NV = GLenum(34558)
- GLenum_GL_SIGNED_RGB8_NV = GLenum(34559)
- GLenum_GL_SURFACE_MAPPED_NV = GLenum(34560)
- GLenum_GL_SIGNED_LUMINANCE_NV = GLenum(34561)
- GLenum_GL_SIGNED_LUMINANCE8_NV = GLenum(34562)
- GLenum_GL_SIGNED_LUMINANCE_ALPHA_NV = GLenum(34563)
- GLenum_GL_SIGNED_LUMINANCE8_ALPHA8_NV = GLenum(34564)
- GLenum_GL_SIGNED_ALPHA_NV = GLenum(34565)
- GLenum_GL_SIGNED_ALPHA8_NV = GLenum(34566)
- GLenum_GL_SIGNED_INTENSITY_NV = GLenum(34567)
- GLenum_GL_SIGNED_INTENSITY8_NV = GLenum(34568)
- GLenum_GL_DSDT8_NV = GLenum(34569)
- GLenum_GL_DSDT8_MAG8_NV = GLenum(34570)
- GLenum_GL_DSDT8_MAG8_INTENSITY8_NV = GLenum(34571)
- GLenum_GL_SIGNED_RGB_UNSIGNED_ALPHA_NV = GLenum(34572)
- GLenum_GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV = GLenum(34573)
- GLenum_GL_HI_SCALE_NV = GLenum(34574)
- GLenum_GL_LO_SCALE_NV = GLenum(34575)
- GLenum_GL_DS_SCALE_NV = GLenum(34576)
- GLenum_GL_DT_SCALE_NV = GLenum(34577)
- GLenum_GL_MAGNITUDE_SCALE_NV = GLenum(34578)
- GLenum_GL_VIBRANCE_SCALE_NV = GLenum(34579)
- GLenum_GL_HI_BIAS_NV = GLenum(34580)
- GLenum_GL_LO_BIAS_NV = GLenum(34581)
- GLenum_GL_DS_BIAS_NV = GLenum(34582)
- GLenum_GL_DT_BIAS_NV = GLenum(34583)
- GLenum_GL_MAGNITUDE_BIAS_NV = GLenum(34584)
- GLenum_GL_VIBRANCE_BIAS_NV = GLenum(34585)
- GLenum_GL_TEXTURE_BORDER_VALUES_NV = GLenum(34586)
- GLenum_GL_TEXTURE_HI_SIZE_NV = GLenum(34587)
- GLenum_GL_TEXTURE_LO_SIZE_NV = GLenum(34588)
- GLenum_GL_TEXTURE_DS_SIZE_NV = GLenum(34589)
- GLenum_GL_TEXTURE_DT_SIZE_NV = GLenum(34590)
- GLenum_GL_TEXTURE_MAG_SIZE_NV = GLenum(34591)
- GLenum_GL_MODELVIEW2_ARB = GLenum(34594)
- GLenum_GL_MODELVIEW3_ARB = GLenum(34595)
- GLenum_GL_MODELVIEW4_ARB = GLenum(34596)
- GLenum_GL_MODELVIEW5_ARB = GLenum(34597)
- GLenum_GL_MODELVIEW6_ARB = GLenum(34598)
- GLenum_GL_MODELVIEW7_ARB = GLenum(34599)
- GLenum_GL_MODELVIEW8_ARB = GLenum(34600)
- GLenum_GL_MODELVIEW9_ARB = GLenum(34601)
- GLenum_GL_MODELVIEW10_ARB = GLenum(34602)
- GLenum_GL_MODELVIEW11_ARB = GLenum(34603)
- GLenum_GL_MODELVIEW12_ARB = GLenum(34604)
- GLenum_GL_MODELVIEW13_ARB = GLenum(34605)
- GLenum_GL_MODELVIEW14_ARB = GLenum(34606)
- GLenum_GL_MODELVIEW15_ARB = GLenum(34607)
- GLenum_GL_MODELVIEW16_ARB = GLenum(34608)
- GLenum_GL_MODELVIEW17_ARB = GLenum(34609)
- GLenum_GL_MODELVIEW18_ARB = GLenum(34610)
- GLenum_GL_MODELVIEW19_ARB = GLenum(34611)
- GLenum_GL_MODELVIEW20_ARB = GLenum(34612)
- GLenum_GL_MODELVIEW21_ARB = GLenum(34613)
- GLenum_GL_MODELVIEW22_ARB = GLenum(34614)
- GLenum_GL_MODELVIEW23_ARB = GLenum(34615)
- GLenum_GL_MODELVIEW24_ARB = GLenum(34616)
- GLenum_GL_MODELVIEW25_ARB = GLenum(34617)
- GLenum_GL_MODELVIEW26_ARB = GLenum(34618)
- GLenum_GL_MODELVIEW27_ARB = GLenum(34619)
- GLenum_GL_MODELVIEW28_ARB = GLenum(34620)
- GLenum_GL_MODELVIEW29_ARB = GLenum(34621)
- GLenum_GL_MODELVIEW30_ARB = GLenum(34622)
- GLenum_GL_MODELVIEW31_ARB = GLenum(34623)
- GLenum_GL_DOT3_RGB_EXT = GLenum(34624)
- GLenum_GL_Z400_BINARY_AMD = GLenum(34624)
- GLenum_GL_DOT3_RGBA_EXT = GLenum(34625)
- GLenum_GL_PROGRAM_BINARY_LENGTH_OES = GLenum(34625)
- GLenum_GL_PROGRAM_BINARY_LENGTH = GLenum(34625)
- GLenum_GL_MIRROR_CLAMP_ATI = GLenum(34626)
- GLenum_GL_MIRROR_CLAMP_EXT = GLenum(34626)
- GLenum_GL_MIRROR_CLAMP_TO_EDGE = GLenum(34627)
- GLenum_GL_MIRROR_CLAMP_TO_EDGE_ATI = GLenum(34627)
- GLenum_GL_MIRROR_CLAMP_TO_EDGE_EXT = GLenum(34627)
- GLenum_GL_MODULATE_ADD_ATI = GLenum(34628)
- GLenum_GL_MODULATE_SIGNED_ADD_ATI = GLenum(34629)
- GLenum_GL_MODULATE_SUBTRACT_ATI = GLenum(34630)
- GLenum_GL_SET_AMD = GLenum(34634)
- GLenum_GL_REPLACE_VALUE_AMD = GLenum(34635)
- GLenum_GL_STENCIL_OP_VALUE_AMD = GLenum(34636)
- GLenum_GL_STENCIL_BACK_OP_VALUE_AMD = GLenum(34637)
- GLenum_GL_VERTEX_ATTRIB_ARRAY_LONG = GLenum(34638)
- GLenum_GL_OCCLUSION_QUERY_EVENT_MASK_AMD = GLenum(34639)
- GLenum_GL_DEPTH_STENCIL_MESA = GLenum(34640)
- GLenum_GL_UNSIGNED_INT_24_8_MESA = GLenum(34641)
- GLenum_GL_UNSIGNED_INT_8_24_REV_MESA = GLenum(34642)
- GLenum_GL_UNSIGNED_SHORT_15_1_MESA = GLenum(34643)
- GLenum_GL_UNSIGNED_SHORT_1_15_REV_MESA = GLenum(34644)
- GLenum_GL_TRACE_MASK_MESA = GLenum(34645)
- GLenum_GL_TRACE_NAME_MESA = GLenum(34646)
- GLenum_GL_YCBCR_MESA = GLenum(34647)
- GLenum_GL_PACK_INVERT_MESA = GLenum(34648)
- GLenum_GL_DEBUG_OBJECT_MESA = GLenum(34649)
- GLenum_GL_TEXTURE_1D_STACK_MESAX = GLenum(34649)
- GLenum_GL_DEBUG_PRINT_MESA = GLenum(34650)
- GLenum_GL_TEXTURE_2D_STACK_MESAX = GLenum(34650)
- GLenum_GL_DEBUG_ASSERT_MESA = GLenum(34651)
- GLenum_GL_PROXY_TEXTURE_1D_STACK_MESAX = GLenum(34651)
- GLenum_GL_PROXY_TEXTURE_2D_STACK_MESAX = GLenum(34652)
- GLenum_GL_TEXTURE_1D_STACK_BINDING_MESAX = GLenum(34653)
- GLenum_GL_TEXTURE_2D_STACK_BINDING_MESAX = GLenum(34654)
- GLenum_GL_STATIC_ATI = GLenum(34656)
- GLenum_GL_DYNAMIC_ATI = GLenum(34657)
- GLenum_GL_PRESERVE_ATI = GLenum(34658)
- GLenum_GL_DISCARD_ATI = GLenum(34659)
- GLenum_GL_BUFFER_SIZE = GLenum(34660)
- GLenum_GL_BUFFER_SIZE_ARB = GLenum(34660)
- GLenum_GL_OBJECT_BUFFER_SIZE_ATI = GLenum(34660)
- GLenum_GL_BUFFER_USAGE = GLenum(34661)
- GLenum_GL_BUFFER_USAGE_ARB = GLenum(34661)
- GLenum_GL_OBJECT_BUFFER_USAGE_ATI = GLenum(34661)
- GLenum_GL_ARRAY_OBJECT_BUFFER_ATI = GLenum(34662)
- GLenum_GL_ARRAY_OBJECT_OFFSET_ATI = GLenum(34663)
- GLenum_GL_ELEMENT_ARRAY_ATI = GLenum(34664)
- GLenum_GL_ELEMENT_ARRAY_TYPE_ATI = GLenum(34665)
- GLenum_GL_ELEMENT_ARRAY_POINTER_ATI = GLenum(34666)
- GLenum_GL_MAX_VERTEX_STREAMS_ATI = GLenum(34667)
- GLenum_GL_VERTEX_STREAM0_ATI = GLenum(34668)
- GLenum_GL_VERTEX_STREAM1_ATI = GLenum(34669)
- GLenum_GL_VERTEX_STREAM2_ATI = GLenum(34670)
- GLenum_GL_VERTEX_STREAM3_ATI = GLenum(34671)
- GLenum_GL_VERTEX_STREAM4_ATI = GLenum(34672)
- GLenum_GL_VERTEX_STREAM5_ATI = GLenum(34673)
- GLenum_GL_VERTEX_STREAM6_ATI = GLenum(34674)
- GLenum_GL_VERTEX_STREAM7_ATI = GLenum(34675)
- GLenum_GL_VERTEX_SOURCE_ATI = GLenum(34676)
- GLenum_GL_BUMP_ROT_MATRIX_ATI = GLenum(34677)
- GLenum_GL_BUMP_ROT_MATRIX_SIZE_ATI = GLenum(34678)
- GLenum_GL_BUMP_NUM_TEX_UNITS_ATI = GLenum(34679)
- GLenum_GL_BUMP_TEX_UNITS_ATI = GLenum(34680)
- GLenum_GL_DUDV_ATI = GLenum(34681)
- GLenum_GL_DU8DV8_ATI = GLenum(34682)
- GLenum_GL_BUMP_ENVMAP_ATI = GLenum(34683)
- GLenum_GL_BUMP_TARGET_ATI = GLenum(34684)
- GLenum_GL_VERTEX_SHADER_EXT = GLenum(34688)
- GLenum_GL_VERTEX_SHADER_BINDING_EXT = GLenum(34689)
- GLenum_GL_OP_INDEX_EXT = GLenum(34690)
- GLenum_GL_OP_NEGATE_EXT = GLenum(34691)
- GLenum_GL_OP_DOT3_EXT = GLenum(34692)
- GLenum_GL_OP_DOT4_EXT = GLenum(34693)
- GLenum_GL_OP_MUL_EXT = GLenum(34694)
- GLenum_GL_OP_ADD_EXT = GLenum(34695)
- GLenum_GL_OP_MADD_EXT = GLenum(34696)
- GLenum_GL_OP_FRAC_EXT = GLenum(34697)
- GLenum_GL_OP_MAX_EXT = GLenum(34698)
- GLenum_GL_OP_MIN_EXT = GLenum(34699)
- GLenum_GL_OP_SET_GE_EXT = GLenum(34700)
- GLenum_GL_OP_SET_LT_EXT = GLenum(34701)
- GLenum_GL_OP_CLAMP_EXT = GLenum(34702)
- GLenum_GL_OP_FLOOR_EXT = GLenum(34703)
- GLenum_GL_OP_ROUND_EXT = GLenum(34704)
- GLenum_GL_OP_EXP_BASE_2_EXT = GLenum(34705)
- GLenum_GL_OP_LOG_BASE_2_EXT = GLenum(34706)
- GLenum_GL_OP_POWER_EXT = GLenum(34707)
- GLenum_GL_OP_RECIP_EXT = GLenum(34708)
- GLenum_GL_OP_RECIP_SQRT_EXT = GLenum(34709)
- GLenum_GL_OP_SUB_EXT = GLenum(34710)
- GLenum_GL_OP_CROSS_PRODUCT_EXT = GLenum(34711)
- GLenum_GL_OP_MULTIPLY_MATRIX_EXT = GLenum(34712)
- GLenum_GL_OP_MOV_EXT = GLenum(34713)
- GLenum_GL_OUTPUT_VERTEX_EXT = GLenum(34714)
- GLenum_GL_OUTPUT_COLOR0_EXT = GLenum(34715)
- GLenum_GL_OUTPUT_COLOR1_EXT = GLenum(34716)
- GLenum_GL_OUTPUT_TEXTURE_COORD0_EXT = GLenum(34717)
- GLenum_GL_OUTPUT_TEXTURE_COORD1_EXT = GLenum(34718)
- GLenum_GL_OUTPUT_TEXTURE_COORD2_EXT = GLenum(34719)
- GLenum_GL_OUTPUT_TEXTURE_COORD3_EXT = GLenum(34720)
- GLenum_GL_OUTPUT_TEXTURE_COORD4_EXT = GLenum(34721)
- GLenum_GL_OUTPUT_TEXTURE_COORD5_EXT = GLenum(34722)
- GLenum_GL_OUTPUT_TEXTURE_COORD6_EXT = GLenum(34723)
- GLenum_GL_OUTPUT_TEXTURE_COORD7_EXT = GLenum(34724)
- GLenum_GL_OUTPUT_TEXTURE_COORD8_EXT = GLenum(34725)
- GLenum_GL_OUTPUT_TEXTURE_COORD9_EXT = GLenum(34726)
- GLenum_GL_OUTPUT_TEXTURE_COORD10_EXT = GLenum(34727)
- GLenum_GL_OUTPUT_TEXTURE_COORD11_EXT = GLenum(34728)
- GLenum_GL_OUTPUT_TEXTURE_COORD12_EXT = GLenum(34729)
- GLenum_GL_OUTPUT_TEXTURE_COORD13_EXT = GLenum(34730)
- GLenum_GL_OUTPUT_TEXTURE_COORD14_EXT = GLenum(34731)
- GLenum_GL_OUTPUT_TEXTURE_COORD15_EXT = GLenum(34732)
- GLenum_GL_OUTPUT_TEXTURE_COORD16_EXT = GLenum(34733)
- GLenum_GL_OUTPUT_TEXTURE_COORD17_EXT = GLenum(34734)
- GLenum_GL_OUTPUT_TEXTURE_COORD18_EXT = GLenum(34735)
- GLenum_GL_OUTPUT_TEXTURE_COORD19_EXT = GLenum(34736)
- GLenum_GL_OUTPUT_TEXTURE_COORD20_EXT = GLenum(34737)
- GLenum_GL_OUTPUT_TEXTURE_COORD21_EXT = GLenum(34738)
- GLenum_GL_OUTPUT_TEXTURE_COORD22_EXT = GLenum(34739)
- GLenum_GL_OUTPUT_TEXTURE_COORD23_EXT = GLenum(34740)
- GLenum_GL_OUTPUT_TEXTURE_COORD24_EXT = GLenum(34741)
- GLenum_GL_OUTPUT_TEXTURE_COORD25_EXT = GLenum(34742)
- GLenum_GL_OUTPUT_TEXTURE_COORD26_EXT = GLenum(34743)
- GLenum_GL_OUTPUT_TEXTURE_COORD27_EXT = GLenum(34744)
- GLenum_GL_OUTPUT_TEXTURE_COORD28_EXT = GLenum(34745)
- GLenum_GL_OUTPUT_TEXTURE_COORD29_EXT = GLenum(34746)
- GLenum_GL_OUTPUT_TEXTURE_COORD30_EXT = GLenum(34747)
- GLenum_GL_OUTPUT_TEXTURE_COORD31_EXT = GLenum(34748)
- GLenum_GL_OUTPUT_FOG_EXT = GLenum(34749)
- GLenum_GL_SCALAR_EXT = GLenum(34750)
- GLenum_GL_VECTOR_EXT = GLenum(34751)
- GLenum_GL_MATRIX_EXT = GLenum(34752)
- GLenum_GL_VARIANT_EXT = GLenum(34753)
- GLenum_GL_INVARIANT_EXT = GLenum(34754)
- GLenum_GL_LOCAL_CONSTANT_EXT = GLenum(34755)
- GLenum_GL_LOCAL_EXT = GLenum(34756)
- GLenum_GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT = GLenum(34757)
- GLenum_GL_MAX_VERTEX_SHADER_VARIANTS_EXT = GLenum(34758)
- GLenum_GL_MAX_VERTEX_SHADER_INVARIANTS_EXT = GLenum(34759)
- GLenum_GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT = GLenum(34760)
- GLenum_GL_MAX_VERTEX_SHADER_LOCALS_EXT = GLenum(34761)
- GLenum_GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT = GLenum(34762)
- GLenum_GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT = GLenum(34763)
- GLenum_GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT = GLenum(34764)
- GLenum_GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT = GLenum(34765)
- GLenum_GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT = GLenum(34766)
- GLenum_GL_VERTEX_SHADER_INSTRUCTIONS_EXT = GLenum(34767)
- GLenum_GL_VERTEX_SHADER_VARIANTS_EXT = GLenum(34768)
- GLenum_GL_VERTEX_SHADER_INVARIANTS_EXT = GLenum(34769)
- GLenum_GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT = GLenum(34770)
- GLenum_GL_VERTEX_SHADER_LOCALS_EXT = GLenum(34771)
- GLenum_GL_VERTEX_SHADER_OPTIMIZED_EXT = GLenum(34772)
- GLenum_GL_X_EXT = GLenum(34773)
- GLenum_GL_Y_EXT = GLenum(34774)
- GLenum_GL_Z_EXT = GLenum(34775)
- GLenum_GL_W_EXT = GLenum(34776)
- GLenum_GL_NEGATIVE_X_EXT = GLenum(34777)
- GLenum_GL_NEGATIVE_Y_EXT = GLenum(34778)
- GLenum_GL_NEGATIVE_Z_EXT = GLenum(34779)
- GLenum_GL_NEGATIVE_W_EXT = GLenum(34780)
- GLenum_GL_ZERO_EXT = GLenum(34781)
- GLenum_GL_ONE_EXT = GLenum(34782)
- GLenum_GL_NEGATIVE_ONE_EXT = GLenum(34783)
- GLenum_GL_NORMALIZED_RANGE_EXT = GLenum(34784)
- GLenum_GL_FULL_RANGE_EXT = GLenum(34785)
- GLenum_GL_CURRENT_VERTEX_EXT = GLenum(34786)
- GLenum_GL_MVP_MATRIX_EXT = GLenum(34787)
- GLenum_GL_VARIANT_VALUE_EXT = GLenum(34788)
- GLenum_GL_VARIANT_DATATYPE_EXT = GLenum(34789)
- GLenum_GL_VARIANT_ARRAY_STRIDE_EXT = GLenum(34790)
- GLenum_GL_VARIANT_ARRAY_TYPE_EXT = GLenum(34791)
- GLenum_GL_VARIANT_ARRAY_EXT = GLenum(34792)
- GLenum_GL_VARIANT_ARRAY_POINTER_EXT = GLenum(34793)
- GLenum_GL_INVARIANT_VALUE_EXT = GLenum(34794)
- GLenum_GL_INVARIANT_DATATYPE_EXT = GLenum(34795)
- GLenum_GL_LOCAL_CONSTANT_VALUE_EXT = GLenum(34796)
- GLenum_GL_LOCAL_CONSTANT_DATATYPE_EXT = GLenum(34797)
- GLenum_GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD = GLenum(34798)
- GLenum_GL_PN_TRIANGLES_ATI = GLenum(34800)
- GLenum_GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI = GLenum(34801)
- GLenum_GL_PN_TRIANGLES_POINT_MODE_ATI = GLenum(34802)
- GLenum_GL_PN_TRIANGLES_NORMAL_MODE_ATI = GLenum(34803)
- GLenum_GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI = GLenum(34804)
- GLenum_GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI = GLenum(34805)
- GLenum_GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI = GLenum(34806)
- GLenum_GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI = GLenum(34807)
- GLenum_GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI = GLenum(34808)
- GLenum_GL_3DC_X_AMD = GLenum(34809)
- GLenum_GL_3DC_XY_AMD = GLenum(34810)
- GLenum_GL_VBO_FREE_MEMORY_ATI = GLenum(34811)
- GLenum_GL_TEXTURE_FREE_MEMORY_ATI = GLenum(34812)
- GLenum_GL_RENDERBUFFER_FREE_MEMORY_ATI = GLenum(34813)
- GLenum_GL_NUM_PROGRAM_BINARY_FORMATS = GLenum(34814)
- GLenum_GL_NUM_PROGRAM_BINARY_FORMATS_OES = GLenum(34814)
- GLenum_GL_PROGRAM_BINARY_FORMATS = GLenum(34815)
- GLenum_GL_PROGRAM_BINARY_FORMATS_OES = GLenum(34815)
- GLenum_GL_STENCIL_BACK_FUNC = GLenum(34816)
- GLenum_GL_STENCIL_BACK_FUNC_ATI = GLenum(34816)
- GLenum_GL_STENCIL_BACK_FAIL = GLenum(34817)
- GLenum_GL_STENCIL_BACK_FAIL_ATI = GLenum(34817)
- GLenum_GL_STENCIL_BACK_PASS_DEPTH_FAIL = GLenum(34818)
- GLenum_GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI = GLenum(34818)
- GLenum_GL_STENCIL_BACK_PASS_DEPTH_PASS = GLenum(34819)
- GLenum_GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI = GLenum(34819)
- GLenum_GL_FRAGMENT_PROGRAM_ARB = GLenum(34820)
- GLenum_GL_PROGRAM_ALU_INSTRUCTIONS_ARB = GLenum(34821)
- GLenum_GL_PROGRAM_TEX_INSTRUCTIONS_ARB = GLenum(34822)
- GLenum_GL_PROGRAM_TEX_INDIRECTIONS_ARB = GLenum(34823)
- GLenum_GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB = GLenum(34824)
- GLenum_GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB = GLenum(34825)
- GLenum_GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB = GLenum(34826)
- GLenum_GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB = GLenum(34827)
- GLenum_GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB = GLenum(34828)
- GLenum_GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB = GLenum(34829)
- GLenum_GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB = GLenum(34830)
- GLenum_GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB = GLenum(34831)
- GLenum_GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB = GLenum(34832)
- GLenum_GL_RGBA32F = GLenum(34836)
- GLenum_GL_RGBA32F_ARB = GLenum(34836)
- GLenum_GL_RGBA32F_EXT = GLenum(34836)
- GLenum_GL_RGBA_FLOAT32_APPLE = GLenum(34836)
- GLenum_GL_RGBA_FLOAT32_ATI = GLenum(34836)
- GLenum_GL_RGB32F = GLenum(34837)
- GLenum_GL_RGB32F_ARB = GLenum(34837)
- GLenum_GL_RGB32F_EXT = GLenum(34837)
- GLenum_GL_RGB_FLOAT32_APPLE = GLenum(34837)
- GLenum_GL_RGB_FLOAT32_ATI = GLenum(34837)
- GLenum_GL_ALPHA32F_ARB = GLenum(34838)
- GLenum_GL_ALPHA32F_EXT = GLenum(34838)
- GLenum_GL_ALPHA_FLOAT32_APPLE = GLenum(34838)
- GLenum_GL_ALPHA_FLOAT32_ATI = GLenum(34838)
- GLenum_GL_INTENSITY32F_ARB = GLenum(34839)
- GLenum_GL_INTENSITY_FLOAT32_APPLE = GLenum(34839)
- GLenum_GL_INTENSITY_FLOAT32_ATI = GLenum(34839)
- GLenum_GL_LUMINANCE32F_ARB = GLenum(34840)
- GLenum_GL_LUMINANCE32F_EXT = GLenum(34840)
- GLenum_GL_LUMINANCE_FLOAT32_APPLE = GLenum(34840)
- GLenum_GL_LUMINANCE_FLOAT32_ATI = GLenum(34840)
- GLenum_GL_LUMINANCE_ALPHA32F_ARB = GLenum(34841)
- GLenum_GL_LUMINANCE_ALPHA32F_EXT = GLenum(34841)
- GLenum_GL_LUMINANCE_ALPHA_FLOAT32_APPLE = GLenum(34841)
- GLenum_GL_LUMINANCE_ALPHA_FLOAT32_ATI = GLenum(34841)
- GLenum_GL_RGBA16F = GLenum(34842)
- GLenum_GL_RGBA16F_ARB = GLenum(34842)
- GLenum_GL_RGBA16F_EXT = GLenum(34842)
- GLenum_GL_RGBA_FLOAT16_APPLE = GLenum(34842)
- GLenum_GL_RGBA_FLOAT16_ATI = GLenum(34842)
- GLenum_GL_RGB16F = GLenum(34843)
- GLenum_GL_RGB16F_ARB = GLenum(34843)
- GLenum_GL_RGB16F_EXT = GLenum(34843)
- GLenum_GL_RGB_FLOAT16_APPLE = GLenum(34843)
- GLenum_GL_RGB_FLOAT16_ATI = GLenum(34843)
- GLenum_GL_ALPHA16F_ARB = GLenum(34844)
- GLenum_GL_ALPHA16F_EXT = GLenum(34844)
- GLenum_GL_ALPHA_FLOAT16_APPLE = GLenum(34844)
- GLenum_GL_ALPHA_FLOAT16_ATI = GLenum(34844)
- GLenum_GL_INTENSITY16F_ARB = GLenum(34845)
- GLenum_GL_INTENSITY_FLOAT16_APPLE = GLenum(34845)
- GLenum_GL_INTENSITY_FLOAT16_ATI = GLenum(34845)
- GLenum_GL_LUMINANCE16F_ARB = GLenum(34846)
- GLenum_GL_LUMINANCE16F_EXT = GLenum(34846)
- GLenum_GL_LUMINANCE_FLOAT16_APPLE = GLenum(34846)
- GLenum_GL_LUMINANCE_FLOAT16_ATI = GLenum(34846)
- GLenum_GL_LUMINANCE_ALPHA16F_ARB = GLenum(34847)
- GLenum_GL_LUMINANCE_ALPHA16F_EXT = GLenum(34847)
- GLenum_GL_LUMINANCE_ALPHA_FLOAT16_APPLE = GLenum(34847)
- GLenum_GL_LUMINANCE_ALPHA_FLOAT16_ATI = GLenum(34847)
- GLenum_GL_RGBA_FLOAT_MODE_ARB = GLenum(34848)
- GLenum_GL_RGBA_FLOAT_MODE_ATI = GLenum(34848)
- GLenum_GL_WRITEONLY_RENDERING_QCOM = GLenum(34851)
- GLenum_GL_MAX_DRAW_BUFFERS = GLenum(34852)
- GLenum_GL_MAX_DRAW_BUFFERS_ARB = GLenum(34852)
- GLenum_GL_MAX_DRAW_BUFFERS_ATI = GLenum(34852)
- GLenum_GL_MAX_DRAW_BUFFERS_EXT = GLenum(34852)
- GLenum_GL_MAX_DRAW_BUFFERS_NV = GLenum(34852)
- GLenum_GL_DRAW_BUFFER0 = GLenum(34853)
- GLenum_GL_DRAW_BUFFER0_ARB = GLenum(34853)
- GLenum_GL_DRAW_BUFFER0_ATI = GLenum(34853)
- GLenum_GL_DRAW_BUFFER0_EXT = GLenum(34853)
- GLenum_GL_DRAW_BUFFER0_NV = GLenum(34853)
- GLenum_GL_DRAW_BUFFER1 = GLenum(34854)
- GLenum_GL_DRAW_BUFFER1_ARB = GLenum(34854)
- GLenum_GL_DRAW_BUFFER1_ATI = GLenum(34854)
- GLenum_GL_DRAW_BUFFER1_EXT = GLenum(34854)
- GLenum_GL_DRAW_BUFFER1_NV = GLenum(34854)
- GLenum_GL_DRAW_BUFFER2 = GLenum(34855)
- GLenum_GL_DRAW_BUFFER2_ARB = GLenum(34855)
- GLenum_GL_DRAW_BUFFER2_ATI = GLenum(34855)
- GLenum_GL_DRAW_BUFFER2_EXT = GLenum(34855)
- GLenum_GL_DRAW_BUFFER2_NV = GLenum(34855)
- GLenum_GL_DRAW_BUFFER3 = GLenum(34856)
- GLenum_GL_DRAW_BUFFER3_ARB = GLenum(34856)
- GLenum_GL_DRAW_BUFFER3_ATI = GLenum(34856)
- GLenum_GL_DRAW_BUFFER3_EXT = GLenum(34856)
- GLenum_GL_DRAW_BUFFER3_NV = GLenum(34856)
- GLenum_GL_DRAW_BUFFER4 = GLenum(34857)
- GLenum_GL_DRAW_BUFFER4_ARB = GLenum(34857)
- GLenum_GL_DRAW_BUFFER4_ATI = GLenum(34857)
- GLenum_GL_DRAW_BUFFER4_EXT = GLenum(34857)
- GLenum_GL_DRAW_BUFFER4_NV = GLenum(34857)
- GLenum_GL_DRAW_BUFFER5 = GLenum(34858)
- GLenum_GL_DRAW_BUFFER5_ARB = GLenum(34858)
- GLenum_GL_DRAW_BUFFER5_ATI = GLenum(34858)
- GLenum_GL_DRAW_BUFFER5_EXT = GLenum(34858)
- GLenum_GL_DRAW_BUFFER5_NV = GLenum(34858)
- GLenum_GL_DRAW_BUFFER6 = GLenum(34859)
- GLenum_GL_DRAW_BUFFER6_ARB = GLenum(34859)
- GLenum_GL_DRAW_BUFFER6_ATI = GLenum(34859)
- GLenum_GL_DRAW_BUFFER6_EXT = GLenum(34859)
- GLenum_GL_DRAW_BUFFER6_NV = GLenum(34859)
- GLenum_GL_DRAW_BUFFER7 = GLenum(34860)
- GLenum_GL_DRAW_BUFFER7_ARB = GLenum(34860)
- GLenum_GL_DRAW_BUFFER7_ATI = GLenum(34860)
- GLenum_GL_DRAW_BUFFER7_EXT = GLenum(34860)
- GLenum_GL_DRAW_BUFFER7_NV = GLenum(34860)
- GLenum_GL_DRAW_BUFFER8 = GLenum(34861)
- GLenum_GL_DRAW_BUFFER8_ARB = GLenum(34861)
- GLenum_GL_DRAW_BUFFER8_ATI = GLenum(34861)
- GLenum_GL_DRAW_BUFFER8_EXT = GLenum(34861)
- GLenum_GL_DRAW_BUFFER8_NV = GLenum(34861)
- GLenum_GL_DRAW_BUFFER9 = GLenum(34862)
- GLenum_GL_DRAW_BUFFER9_ARB = GLenum(34862)
- GLenum_GL_DRAW_BUFFER9_ATI = GLenum(34862)
- GLenum_GL_DRAW_BUFFER9_EXT = GLenum(34862)
- GLenum_GL_DRAW_BUFFER9_NV = GLenum(34862)
- GLenum_GL_DRAW_BUFFER10 = GLenum(34863)
- GLenum_GL_DRAW_BUFFER10_ARB = GLenum(34863)
- GLenum_GL_DRAW_BUFFER10_ATI = GLenum(34863)
- GLenum_GL_DRAW_BUFFER10_EXT = GLenum(34863)
- GLenum_GL_DRAW_BUFFER10_NV = GLenum(34863)
- GLenum_GL_DRAW_BUFFER11 = GLenum(34864)
- GLenum_GL_DRAW_BUFFER11_ARB = GLenum(34864)
- GLenum_GL_DRAW_BUFFER11_ATI = GLenum(34864)
- GLenum_GL_DRAW_BUFFER11_EXT = GLenum(34864)
- GLenum_GL_DRAW_BUFFER11_NV = GLenum(34864)
- GLenum_GL_DRAW_BUFFER12 = GLenum(34865)
- GLenum_GL_DRAW_BUFFER12_ARB = GLenum(34865)
- GLenum_GL_DRAW_BUFFER12_ATI = GLenum(34865)
- GLenum_GL_DRAW_BUFFER12_EXT = GLenum(34865)
- GLenum_GL_DRAW_BUFFER12_NV = GLenum(34865)
- GLenum_GL_DRAW_BUFFER13 = GLenum(34866)
- GLenum_GL_DRAW_BUFFER13_ARB = GLenum(34866)
- GLenum_GL_DRAW_BUFFER13_ATI = GLenum(34866)
- GLenum_GL_DRAW_BUFFER13_EXT = GLenum(34866)
- GLenum_GL_DRAW_BUFFER13_NV = GLenum(34866)
- GLenum_GL_DRAW_BUFFER14 = GLenum(34867)
- GLenum_GL_DRAW_BUFFER14_ARB = GLenum(34867)
- GLenum_GL_DRAW_BUFFER14_ATI = GLenum(34867)
- GLenum_GL_DRAW_BUFFER14_EXT = GLenum(34867)
- GLenum_GL_DRAW_BUFFER14_NV = GLenum(34867)
- GLenum_GL_DRAW_BUFFER15 = GLenum(34868)
- GLenum_GL_DRAW_BUFFER15_ARB = GLenum(34868)
- GLenum_GL_DRAW_BUFFER15_ATI = GLenum(34868)
- GLenum_GL_DRAW_BUFFER15_EXT = GLenum(34868)
- GLenum_GL_DRAW_BUFFER15_NV = GLenum(34868)
- GLenum_GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI = GLenum(34869)
- GLenum_GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI = GLenum(34871)
- GLenum_GL_BLEND_EQUATION_ALPHA = GLenum(34877)
- GLenum_GL_BLEND_EQUATION_ALPHA_EXT = GLenum(34877)
- GLenum_GL_BLEND_EQUATION_ALPHA_OES = GLenum(34877)
- GLenum_GL_SUBSAMPLE_DISTANCE_AMD = GLenum(34879)
- GLenum_GL_MATRIX_PALETTE_ARB = GLenum(34880)
- GLenum_GL_MATRIX_PALETTE_OES = GLenum(34880)
- GLenum_GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB = GLenum(34881)
- GLenum_GL_MAX_PALETTE_MATRICES_ARB = GLenum(34882)
- GLenum_GL_MAX_PALETTE_MATRICES_OES = GLenum(34882)
- GLenum_GL_CURRENT_PALETTE_MATRIX_ARB = GLenum(34883)
- GLenum_GL_CURRENT_PALETTE_MATRIX_OES = GLenum(34883)
- GLenum_GL_MATRIX_INDEX_ARRAY_ARB = GLenum(34884)
- GLenum_GL_MATRIX_INDEX_ARRAY_OES = GLenum(34884)
- GLenum_GL_CURRENT_MATRIX_INDEX_ARB = GLenum(34885)
- GLenum_GL_MATRIX_INDEX_ARRAY_SIZE_ARB = GLenum(34886)
- GLenum_GL_MATRIX_INDEX_ARRAY_SIZE_OES = GLenum(34886)
- GLenum_GL_MATRIX_INDEX_ARRAY_TYPE_ARB = GLenum(34887)
- GLenum_GL_MATRIX_INDEX_ARRAY_TYPE_OES = GLenum(34887)
- GLenum_GL_MATRIX_INDEX_ARRAY_STRIDE_ARB = GLenum(34888)
- GLenum_GL_MATRIX_INDEX_ARRAY_STRIDE_OES = GLenum(34888)
- GLenum_GL_MATRIX_INDEX_ARRAY_POINTER_ARB = GLenum(34889)
- GLenum_GL_MATRIX_INDEX_ARRAY_POINTER_OES = GLenum(34889)
- GLenum_GL_TEXTURE_DEPTH_SIZE = GLenum(34890)
- GLenum_GL_TEXTURE_DEPTH_SIZE_ARB = GLenum(34890)
- GLenum_GL_DEPTH_TEXTURE_MODE = GLenum(34891)
- GLenum_GL_DEPTH_TEXTURE_MODE_ARB = GLenum(34891)
- GLenum_GL_TEXTURE_COMPARE_MODE = GLenum(34892)
- GLenum_GL_TEXTURE_COMPARE_MODE_ARB = GLenum(34892)
- GLenum_GL_TEXTURE_COMPARE_MODE_EXT = GLenum(34892)
- GLenum_GL_TEXTURE_COMPARE_FUNC = GLenum(34893)
- GLenum_GL_TEXTURE_COMPARE_FUNC_ARB = GLenum(34893)
- GLenum_GL_TEXTURE_COMPARE_FUNC_EXT = GLenum(34893)
- GLenum_GL_COMPARE_R_TO_TEXTURE = GLenum(34894)
- GLenum_GL_COMPARE_R_TO_TEXTURE_ARB = GLenum(34894)
- GLenum_GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT = GLenum(34894)
- GLenum_GL_COMPARE_REF_TO_TEXTURE = GLenum(34894)
- GLenum_GL_COMPARE_REF_TO_TEXTURE_EXT = GLenum(34894)
- GLenum_GL_TEXTURE_CUBE_MAP_SEAMLESS = GLenum(34895)
- GLenum_GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV = GLenum(34896)
- GLenum_GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV = GLenum(34897)
- GLenum_GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV = GLenum(34898)
- GLenum_GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV = GLenum(34899)
- GLenum_GL_OFFSET_HILO_TEXTURE_2D_NV = GLenum(34900)
- GLenum_GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV = GLenum(34901)
- GLenum_GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV = GLenum(34902)
- GLenum_GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV = GLenum(34903)
- GLenum_GL_DEPENDENT_HILO_TEXTURE_2D_NV = GLenum(34904)
- GLenum_GL_DEPENDENT_RGB_TEXTURE_3D_NV = GLenum(34905)
- GLenum_GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV = GLenum(34906)
- GLenum_GL_DOT_PRODUCT_PASS_THROUGH_NV = GLenum(34907)
- GLenum_GL_DOT_PRODUCT_TEXTURE_1D_NV = GLenum(34908)
- GLenum_GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV = GLenum(34909)
- GLenum_GL_HILO8_NV = GLenum(34910)
- GLenum_GL_SIGNED_HILO8_NV = GLenum(34911)
- GLenum_GL_FORCE_BLUE_TO_ONE_NV = GLenum(34912)
- GLenum_GL_POINT_SPRITE = GLenum(34913)
- GLenum_GL_POINT_SPRITE_ARB = GLenum(34913)
- GLenum_GL_POINT_SPRITE_NV = GLenum(34913)
- GLenum_GL_POINT_SPRITE_OES = GLenum(34913)
- GLenum_GL_COORD_REPLACE = GLenum(34914)
- GLenum_GL_COORD_REPLACE_ARB = GLenum(34914)
- GLenum_GL_COORD_REPLACE_NV = GLenum(34914)
- GLenum_GL_COORD_REPLACE_OES = GLenum(34914)
- GLenum_GL_POINT_SPRITE_R_MODE_NV = GLenum(34915)
- GLenum_GL_PIXEL_COUNTER_BITS_NV = GLenum(34916)
- GLenum_GL_QUERY_COUNTER_BITS = GLenum(34916)
- GLenum_GL_QUERY_COUNTER_BITS_ARB = GLenum(34916)
- GLenum_GL_QUERY_COUNTER_BITS_EXT = GLenum(34916)
- GLenum_GL_CURRENT_OCCLUSION_QUERY_ID_NV = GLenum(34917)
- GLenum_GL_CURRENT_QUERY = GLenum(34917)
- GLenum_GL_CURRENT_QUERY_ARB = GLenum(34917)
- GLenum_GL_CURRENT_QUERY_EXT = GLenum(34917)
- GLenum_GL_PIXEL_COUNT_NV = GLenum(34918)
- GLenum_GL_QUERY_RESULT = GLenum(34918)
- GLenum_GL_QUERY_RESULT_ARB = GLenum(34918)
- GLenum_GL_QUERY_RESULT_EXT = GLenum(34918)
- GLenum_GL_PIXEL_COUNT_AVAILABLE_NV = GLenum(34919)
- GLenum_GL_QUERY_RESULT_AVAILABLE = GLenum(34919)
- GLenum_GL_QUERY_RESULT_AVAILABLE_ARB = GLenum(34919)
- GLenum_GL_QUERY_RESULT_AVAILABLE_EXT = GLenum(34919)
- GLenum_GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV = GLenum(34920)
- GLenum_GL_MAX_VERTEX_ATTRIBS = GLenum(34921)
- GLenum_GL_MAX_VERTEX_ATTRIBS_ARB = GLenum(34921)
- GLenum_GL_VERTEX_ATTRIB_ARRAY_NORMALIZED = GLenum(34922)
- GLenum_GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB = GLenum(34922)
- GLenum_GL_MAX_TESS_CONTROL_INPUT_COMPONENTS = GLenum(34924)
- GLenum_GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_EXT = GLenum(34924)
- GLenum_GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_OES = GLenum(34924)
- GLenum_GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS = GLenum(34925)
- GLenum_GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_EXT = GLenum(34925)
- GLenum_GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_OES = GLenum(34925)
- GLenum_GL_DEPTH_STENCIL_TO_RGBA_NV = GLenum(34926)
- GLenum_GL_DEPTH_STENCIL_TO_BGRA_NV = GLenum(34927)
- GLenum_GL_FRAGMENT_PROGRAM_NV = GLenum(34928)
- GLenum_GL_MAX_TEXTURE_COORDS = GLenum(34929)
- GLenum_GL_MAX_TEXTURE_COORDS_ARB = GLenum(34929)
- GLenum_GL_MAX_TEXTURE_COORDS_NV = GLenum(34929)
- GLenum_GL_MAX_TEXTURE_IMAGE_UNITS = GLenum(34930)
- GLenum_GL_MAX_TEXTURE_IMAGE_UNITS_ARB = GLenum(34930)
- GLenum_GL_MAX_TEXTURE_IMAGE_UNITS_NV = GLenum(34930)
- GLenum_GL_FRAGMENT_PROGRAM_BINDING_NV = GLenum(34931)
- GLenum_GL_PROGRAM_ERROR_STRING_ARB = GLenum(34932)
- GLenum_GL_PROGRAM_ERROR_STRING_NV = GLenum(34932)
- GLenum_GL_PROGRAM_FORMAT_ASCII_ARB = GLenum(34933)
- GLenum_GL_PROGRAM_FORMAT_ARB = GLenum(34934)
- GLenum_GL_WRITE_PIXEL_DATA_RANGE_NV = GLenum(34936)
- GLenum_GL_READ_PIXEL_DATA_RANGE_NV = GLenum(34937)
- GLenum_GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV = GLenum(34938)
- GLenum_GL_READ_PIXEL_DATA_RANGE_LENGTH_NV = GLenum(34939)
- GLenum_GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV = GLenum(34940)
- GLenum_GL_READ_PIXEL_DATA_RANGE_POINTER_NV = GLenum(34941)
- GLenum_GL_GEOMETRY_SHADER_INVOCATIONS = GLenum(34943)
- GLenum_GL_GEOMETRY_SHADER_INVOCATIONS_EXT = GLenum(34943)
- GLenum_GL_GEOMETRY_SHADER_INVOCATIONS_OES = GLenum(34943)
- GLenum_GL_FLOAT_R_NV = GLenum(34944)
- GLenum_GL_FLOAT_RG_NV = GLenum(34945)
- GLenum_GL_FLOAT_RGB_NV = GLenum(34946)
- GLenum_GL_FLOAT_RGBA_NV = GLenum(34947)
- GLenum_GL_FLOAT_R16_NV = GLenum(34948)
- GLenum_GL_FLOAT_R32_NV = GLenum(34949)
- GLenum_GL_FLOAT_RG16_NV = GLenum(34950)
- GLenum_GL_FLOAT_RG32_NV = GLenum(34951)
- GLenum_GL_FLOAT_RGB16_NV = GLenum(34952)
- GLenum_GL_FLOAT_RGB32_NV = GLenum(34953)
- GLenum_GL_FLOAT_RGBA16_NV = GLenum(34954)
- GLenum_GL_FLOAT_RGBA32_NV = GLenum(34955)
- GLenum_GL_TEXTURE_FLOAT_COMPONENTS_NV = GLenum(34956)
- GLenum_GL_FLOAT_CLEAR_COLOR_VALUE_NV = GLenum(34957)
- GLenum_GL_FLOAT_RGBA_MODE_NV = GLenum(34958)
- GLenum_GL_TEXTURE_UNSIGNED_REMAP_MODE_NV = GLenum(34959)
- GLenum_GL_DEPTH_BOUNDS_TEST_EXT = GLenum(34960)
- GLenum_GL_DEPTH_BOUNDS_EXT = GLenum(34961)
- GLenum_GL_ARRAY_BUFFER = GLenum(34962)
- GLenum_GL_ARRAY_BUFFER_ARB = GLenum(34962)
- GLenum_GL_ELEMENT_ARRAY_BUFFER = GLenum(34963)
- GLenum_GL_ELEMENT_ARRAY_BUFFER_ARB = GLenum(34963)
- GLenum_GL_ARRAY_BUFFER_BINDING = GLenum(34964)
- GLenum_GL_ARRAY_BUFFER_BINDING_ARB = GLenum(34964)
- GLenum_GL_ELEMENT_ARRAY_BUFFER_BINDING = GLenum(34965)
- GLenum_GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB = GLenum(34965)
- GLenum_GL_VERTEX_ARRAY_BUFFER_BINDING = GLenum(34966)
- GLenum_GL_VERTEX_ARRAY_BUFFER_BINDING_ARB = GLenum(34966)
- GLenum_GL_NORMAL_ARRAY_BUFFER_BINDING = GLenum(34967)
- GLenum_GL_NORMAL_ARRAY_BUFFER_BINDING_ARB = GLenum(34967)
- GLenum_GL_COLOR_ARRAY_BUFFER_BINDING = GLenum(34968)
- GLenum_GL_COLOR_ARRAY_BUFFER_BINDING_ARB = GLenum(34968)
- GLenum_GL_INDEX_ARRAY_BUFFER_BINDING = GLenum(34969)
- GLenum_GL_INDEX_ARRAY_BUFFER_BINDING_ARB = GLenum(34969)
- GLenum_GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING = GLenum(34970)
- GLenum_GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB = GLenum(34970)
- GLenum_GL_EDGE_FLAG_ARRAY_BUFFER_BINDING = GLenum(34971)
- GLenum_GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB = GLenum(34971)
- GLenum_GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING = GLenum(34972)
- GLenum_GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB = GLenum(34972)
- GLenum_GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB = GLenum(34973)
- GLenum_GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING = GLenum(34973)
- GLenum_GL_FOG_COORD_ARRAY_BUFFER_BINDING = GLenum(34973)
- GLenum_GL_WEIGHT_ARRAY_BUFFER_BINDING = GLenum(34974)
- GLenum_GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB = GLenum(34974)
- GLenum_GL_WEIGHT_ARRAY_BUFFER_BINDING_OES = GLenum(34974)
- GLenum_GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = GLenum(34975)
- GLenum_GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB = GLenum(34975)
- GLenum_GL_PROGRAM_INSTRUCTIONS_ARB = GLenum(34976)
- GLenum_GL_MAX_PROGRAM_INSTRUCTIONS_ARB = GLenum(34977)
- GLenum_GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB = GLenum(34978)
- GLenum_GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB = GLenum(34979)
- GLenum_GL_PROGRAM_TEMPORARIES_ARB = GLenum(34980)
- GLenum_GL_MAX_PROGRAM_TEMPORARIES_ARB = GLenum(34981)
- GLenum_GL_PROGRAM_NATIVE_TEMPORARIES_ARB = GLenum(34982)
- GLenum_GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB = GLenum(34983)
- GLenum_GL_PROGRAM_PARAMETERS_ARB = GLenum(34984)
- GLenum_GL_MAX_PROGRAM_PARAMETERS_ARB = GLenum(34985)
- GLenum_GL_PROGRAM_NATIVE_PARAMETERS_ARB = GLenum(34986)
- GLenum_GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB = GLenum(34987)
- GLenum_GL_PROGRAM_ATTRIBS_ARB = GLenum(34988)
- GLenum_GL_MAX_PROGRAM_ATTRIBS_ARB = GLenum(34989)
- GLenum_GL_PROGRAM_NATIVE_ATTRIBS_ARB = GLenum(34990)
- GLenum_GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB = GLenum(34991)
- GLenum_GL_PROGRAM_ADDRESS_REGISTERS_ARB = GLenum(34992)
- GLenum_GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB = GLenum(34993)
- GLenum_GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB = GLenum(34994)
- GLenum_GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB = GLenum(34995)
- GLenum_GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB = GLenum(34996)
- GLenum_GL_MAX_PROGRAM_ENV_PARAMETERS_ARB = GLenum(34997)
- GLenum_GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB = GLenum(34998)
- GLenum_GL_TRANSPOSE_CURRENT_MATRIX_ARB = GLenum(34999)
- GLenum_GL_READ_ONLY = GLenum(35000)
- GLenum_GL_READ_ONLY_ARB = GLenum(35000)
- GLenum_GL_WRITE_ONLY = GLenum(35001)
- GLenum_GL_WRITE_ONLY_ARB = GLenum(35001)
- GLenum_GL_WRITE_ONLY_OES = GLenum(35001)
- GLenum_GL_READ_WRITE = GLenum(35002)
- GLenum_GL_READ_WRITE_ARB = GLenum(35002)
- GLenum_GL_BUFFER_ACCESS = GLenum(35003)
- GLenum_GL_BUFFER_ACCESS_ARB = GLenum(35003)
- GLenum_GL_BUFFER_ACCESS_OES = GLenum(35003)
- GLenum_GL_BUFFER_MAPPED = GLenum(35004)
- GLenum_GL_BUFFER_MAPPED_ARB = GLenum(35004)
- GLenum_GL_BUFFER_MAPPED_OES = GLenum(35004)
- GLenum_GL_BUFFER_MAP_POINTER = GLenum(35005)
- GLenum_GL_BUFFER_MAP_POINTER_ARB = GLenum(35005)
- GLenum_GL_BUFFER_MAP_POINTER_OES = GLenum(35005)
- GLenum_GL_WRITE_DISCARD_NV = GLenum(35006)
- GLenum_GL_TIME_ELAPSED = GLenum(35007)
- GLenum_GL_TIME_ELAPSED_EXT = GLenum(35007)
- GLenum_GL_MATRIX0_ARB = GLenum(35008)
- GLenum_GL_MATRIX1_ARB = GLenum(35009)
- GLenum_GL_MATRIX2_ARB = GLenum(35010)
- GLenum_GL_MATRIX3_ARB = GLenum(35011)
- GLenum_GL_MATRIX4_ARB = GLenum(35012)
- GLenum_GL_MATRIX5_ARB = GLenum(35013)
- GLenum_GL_MATRIX6_ARB = GLenum(35014)
- GLenum_GL_MATRIX7_ARB = GLenum(35015)
- GLenum_GL_MATRIX8_ARB = GLenum(35016)
- GLenum_GL_MATRIX9_ARB = GLenum(35017)
- GLenum_GL_MATRIX10_ARB = GLenum(35018)
- GLenum_GL_MATRIX11_ARB = GLenum(35019)
- GLenum_GL_MATRIX12_ARB = GLenum(35020)
- GLenum_GL_MATRIX13_ARB = GLenum(35021)
- GLenum_GL_MATRIX14_ARB = GLenum(35022)
- GLenum_GL_MATRIX15_ARB = GLenum(35023)
- GLenum_GL_MATRIX16_ARB = GLenum(35024)
- GLenum_GL_MATRIX17_ARB = GLenum(35025)
- GLenum_GL_MATRIX18_ARB = GLenum(35026)
- GLenum_GL_MATRIX19_ARB = GLenum(35027)
- GLenum_GL_MATRIX20_ARB = GLenum(35028)
- GLenum_GL_MATRIX21_ARB = GLenum(35029)
- GLenum_GL_MATRIX22_ARB = GLenum(35030)
- GLenum_GL_MATRIX23_ARB = GLenum(35031)
- GLenum_GL_MATRIX24_ARB = GLenum(35032)
- GLenum_GL_MATRIX25_ARB = GLenum(35033)
- GLenum_GL_MATRIX26_ARB = GLenum(35034)
- GLenum_GL_MATRIX27_ARB = GLenum(35035)
- GLenum_GL_MATRIX28_ARB = GLenum(35036)
- GLenum_GL_MATRIX29_ARB = GLenum(35037)
- GLenum_GL_MATRIX30_ARB = GLenum(35038)
- GLenum_GL_MATRIX31_ARB = GLenum(35039)
- GLenum_GL_STREAM_DRAW = GLenum(35040)
- GLenum_GL_STREAM_DRAW_ARB = GLenum(35040)
- GLenum_GL_STREAM_READ = GLenum(35041)
- GLenum_GL_STREAM_READ_ARB = GLenum(35041)
- GLenum_GL_STREAM_COPY = GLenum(35042)
- GLenum_GL_STREAM_COPY_ARB = GLenum(35042)
- GLenum_GL_STATIC_DRAW = GLenum(35044)
- GLenum_GL_STATIC_DRAW_ARB = GLenum(35044)
- GLenum_GL_STATIC_READ = GLenum(35045)
- GLenum_GL_STATIC_READ_ARB = GLenum(35045)
- GLenum_GL_STATIC_COPY = GLenum(35046)
- GLenum_GL_STATIC_COPY_ARB = GLenum(35046)
- GLenum_GL_DYNAMIC_DRAW = GLenum(35048)
- GLenum_GL_DYNAMIC_DRAW_ARB = GLenum(35048)
- GLenum_GL_DYNAMIC_READ = GLenum(35049)
- GLenum_GL_DYNAMIC_READ_ARB = GLenum(35049)
- GLenum_GL_DYNAMIC_COPY = GLenum(35050)
- GLenum_GL_DYNAMIC_COPY_ARB = GLenum(35050)
- GLenum_GL_PIXEL_PACK_BUFFER = GLenum(35051)
- GLenum_GL_PIXEL_PACK_BUFFER_ARB = GLenum(35051)
- GLenum_GL_PIXEL_PACK_BUFFER_EXT = GLenum(35051)
- GLenum_GL_PIXEL_UNPACK_BUFFER = GLenum(35052)
- GLenum_GL_PIXEL_UNPACK_BUFFER_ARB = GLenum(35052)
- GLenum_GL_PIXEL_UNPACK_BUFFER_EXT = GLenum(35052)
- GLenum_GL_PIXEL_PACK_BUFFER_BINDING = GLenum(35053)
- GLenum_GL_PIXEL_PACK_BUFFER_BINDING_ARB = GLenum(35053)
- GLenum_GL_PIXEL_PACK_BUFFER_BINDING_EXT = GLenum(35053)
- GLenum_GL_ETC1_SRGB8_NV = GLenum(35054)
- GLenum_GL_PIXEL_UNPACK_BUFFER_BINDING = GLenum(35055)
- GLenum_GL_PIXEL_UNPACK_BUFFER_BINDING_ARB = GLenum(35055)
- GLenum_GL_PIXEL_UNPACK_BUFFER_BINDING_EXT = GLenum(35055)
- GLenum_GL_DEPTH24_STENCIL8 = GLenum(35056)
- GLenum_GL_DEPTH24_STENCIL8_EXT = GLenum(35056)
- GLenum_GL_DEPTH24_STENCIL8_OES = GLenum(35056)
- GLenum_GL_TEXTURE_STENCIL_SIZE = GLenum(35057)
- GLenum_GL_TEXTURE_STENCIL_SIZE_EXT = GLenum(35057)
- GLenum_GL_STENCIL_TAG_BITS_EXT = GLenum(35058)
- GLenum_GL_STENCIL_CLEAR_TAG_VALUE_EXT = GLenum(35059)
- GLenum_GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV = GLenum(35060)
- GLenum_GL_MAX_PROGRAM_CALL_DEPTH_NV = GLenum(35061)
- GLenum_GL_MAX_PROGRAM_IF_DEPTH_NV = GLenum(35062)
- GLenum_GL_MAX_PROGRAM_LOOP_DEPTH_NV = GLenum(35063)
- GLenum_GL_MAX_PROGRAM_LOOP_COUNT_NV = GLenum(35064)
- GLenum_GL_SRC1_COLOR = GLenum(35065)
- GLenum_GL_SRC1_COLOR_EXT = GLenum(35065)
- GLenum_GL_ONE_MINUS_SRC1_COLOR = GLenum(35066)
- GLenum_GL_ONE_MINUS_SRC1_COLOR_EXT = GLenum(35066)
- GLenum_GL_ONE_MINUS_SRC1_ALPHA = GLenum(35067)
- GLenum_GL_ONE_MINUS_SRC1_ALPHA_EXT = GLenum(35067)
- GLenum_GL_MAX_DUAL_SOURCE_DRAW_BUFFERS = GLenum(35068)
- GLenum_GL_MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT = GLenum(35068)
- GLenum_GL_VERTEX_ATTRIB_ARRAY_INTEGER = GLenum(35069)
- GLenum_GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT = GLenum(35069)
- GLenum_GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV = GLenum(35069)
- GLenum_GL_VERTEX_ATTRIB_ARRAY_DIVISOR = GLenum(35070)
- GLenum_GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE = GLenum(35070)
- GLenum_GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB = GLenum(35070)
- GLenum_GL_VERTEX_ATTRIB_ARRAY_DIVISOR_EXT = GLenum(35070)
- GLenum_GL_VERTEX_ATTRIB_ARRAY_DIVISOR_NV = GLenum(35070)
- GLenum_GL_MAX_ARRAY_TEXTURE_LAYERS = GLenum(35071)
- GLenum_GL_MAX_ARRAY_TEXTURE_LAYERS_EXT = GLenum(35071)
- GLenum_GL_MIN_PROGRAM_TEXEL_OFFSET = GLenum(35076)
- GLenum_GL_MIN_PROGRAM_TEXEL_OFFSET_EXT = GLenum(35076)
- GLenum_GL_MIN_PROGRAM_TEXEL_OFFSET_NV = GLenum(35076)
- GLenum_GL_MAX_PROGRAM_TEXEL_OFFSET = GLenum(35077)
- GLenum_GL_MAX_PROGRAM_TEXEL_OFFSET_EXT = GLenum(35077)
- GLenum_GL_MAX_PROGRAM_TEXEL_OFFSET_NV = GLenum(35077)
- GLenum_GL_PROGRAM_ATTRIB_COMPONENTS_NV = GLenum(35078)
- GLenum_GL_PROGRAM_RESULT_COMPONENTS_NV = GLenum(35079)
- GLenum_GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV = GLenum(35080)
- GLenum_GL_MAX_PROGRAM_RESULT_COMPONENTS_NV = GLenum(35081)
- GLenum_GL_STENCIL_TEST_TWO_SIDE_EXT = GLenum(35088)
- GLenum_GL_ACTIVE_STENCIL_FACE_EXT = GLenum(35089)
- GLenum_GL_MIRROR_CLAMP_TO_BORDER_EXT = GLenum(35090)
- GLenum_GL_SAMPLES_PASSED = GLenum(35092)
- GLenum_GL_SAMPLES_PASSED_ARB = GLenum(35092)
- GLenum_GL_GEOMETRY_VERTICES_OUT = GLenum(35094)
- GLenum_GL_GEOMETRY_LINKED_VERTICES_OUT_EXT = GLenum(35094)
- GLenum_GL_GEOMETRY_LINKED_VERTICES_OUT_OES = GLenum(35094)
- GLenum_GL_GEOMETRY_INPUT_TYPE = GLenum(35095)
- GLenum_GL_GEOMETRY_LINKED_INPUT_TYPE_EXT = GLenum(35095)
- GLenum_GL_GEOMETRY_LINKED_INPUT_TYPE_OES = GLenum(35095)
- GLenum_GL_GEOMETRY_OUTPUT_TYPE = GLenum(35096)
- GLenum_GL_GEOMETRY_LINKED_OUTPUT_TYPE_EXT = GLenum(35096)
- GLenum_GL_GEOMETRY_LINKED_OUTPUT_TYPE_OES = GLenum(35096)
- GLenum_GL_SAMPLER_BINDING = GLenum(35097)
- GLenum_GL_CLAMP_VERTEX_COLOR = GLenum(35098)
- GLenum_GL_CLAMP_VERTEX_COLOR_ARB = GLenum(35098)
- GLenum_GL_CLAMP_FRAGMENT_COLOR = GLenum(35099)
- GLenum_GL_CLAMP_FRAGMENT_COLOR_ARB = GLenum(35099)
- GLenum_GL_CLAMP_READ_COLOR = GLenum(35100)
- GLenum_GL_CLAMP_READ_COLOR_ARB = GLenum(35100)
- GLenum_GL_FIXED_ONLY = GLenum(35101)
- GLenum_GL_FIXED_ONLY_ARB = GLenum(35101)
- GLenum_GL_TESS_CONTROL_PROGRAM_NV = GLenum(35102)
- GLenum_GL_TESS_EVALUATION_PROGRAM_NV = GLenum(35103)
- GLenum_GL_FRAGMENT_SHADER_ATI = GLenum(35104)
- GLenum_GL_REG_0_ATI = GLenum(35105)
- GLenum_GL_REG_1_ATI = GLenum(35106)
- GLenum_GL_REG_2_ATI = GLenum(35107)
- GLenum_GL_REG_3_ATI = GLenum(35108)
- GLenum_GL_REG_4_ATI = GLenum(35109)
- GLenum_GL_REG_5_ATI = GLenum(35110)
- GLenum_GL_REG_6_ATI = GLenum(35111)
- GLenum_GL_REG_7_ATI = GLenum(35112)
- GLenum_GL_REG_8_ATI = GLenum(35113)
- GLenum_GL_REG_9_ATI = GLenum(35114)
- GLenum_GL_REG_10_ATI = GLenum(35115)
- GLenum_GL_REG_11_ATI = GLenum(35116)
- GLenum_GL_REG_12_ATI = GLenum(35117)
- GLenum_GL_REG_13_ATI = GLenum(35118)
- GLenum_GL_REG_14_ATI = GLenum(35119)
- GLenum_GL_REG_15_ATI = GLenum(35120)
- GLenum_GL_REG_16_ATI = GLenum(35121)
- GLenum_GL_REG_17_ATI = GLenum(35122)
- GLenum_GL_REG_18_ATI = GLenum(35123)
- GLenum_GL_REG_19_ATI = GLenum(35124)
- GLenum_GL_REG_20_ATI = GLenum(35125)
- GLenum_GL_REG_21_ATI = GLenum(35126)
- GLenum_GL_REG_22_ATI = GLenum(35127)
- GLenum_GL_REG_23_ATI = GLenum(35128)
- GLenum_GL_REG_24_ATI = GLenum(35129)
- GLenum_GL_REG_25_ATI = GLenum(35130)
- GLenum_GL_REG_26_ATI = GLenum(35131)
- GLenum_GL_REG_27_ATI = GLenum(35132)
- GLenum_GL_REG_28_ATI = GLenum(35133)
- GLenum_GL_REG_29_ATI = GLenum(35134)
- GLenum_GL_REG_30_ATI = GLenum(35135)
- GLenum_GL_REG_31_ATI = GLenum(35136)
- GLenum_GL_CON_0_ATI = GLenum(35137)
- GLenum_GL_CON_1_ATI = GLenum(35138)
- GLenum_GL_CON_2_ATI = GLenum(35139)
- GLenum_GL_CON_3_ATI = GLenum(35140)
- GLenum_GL_CON_4_ATI = GLenum(35141)
- GLenum_GL_CON_5_ATI = GLenum(35142)
- GLenum_GL_CON_6_ATI = GLenum(35143)
- GLenum_GL_CON_7_ATI = GLenum(35144)
- GLenum_GL_CON_8_ATI = GLenum(35145)
- GLenum_GL_CON_9_ATI = GLenum(35146)
- GLenum_GL_CON_10_ATI = GLenum(35147)
- GLenum_GL_CON_11_ATI = GLenum(35148)
- GLenum_GL_CON_12_ATI = GLenum(35149)
- GLenum_GL_CON_13_ATI = GLenum(35150)
- GLenum_GL_CON_14_ATI = GLenum(35151)
- GLenum_GL_CON_15_ATI = GLenum(35152)
- GLenum_GL_CON_16_ATI = GLenum(35153)
- GLenum_GL_CON_17_ATI = GLenum(35154)
- GLenum_GL_CON_18_ATI = GLenum(35155)
- GLenum_GL_CON_19_ATI = GLenum(35156)
- GLenum_GL_CON_20_ATI = GLenum(35157)
- GLenum_GL_CON_21_ATI = GLenum(35158)
- GLenum_GL_CON_22_ATI = GLenum(35159)
- GLenum_GL_CON_23_ATI = GLenum(35160)
- GLenum_GL_CON_24_ATI = GLenum(35161)
- GLenum_GL_CON_25_ATI = GLenum(35162)
- GLenum_GL_CON_26_ATI = GLenum(35163)
- GLenum_GL_CON_27_ATI = GLenum(35164)
- GLenum_GL_CON_28_ATI = GLenum(35165)
- GLenum_GL_CON_29_ATI = GLenum(35166)
- GLenum_GL_CON_30_ATI = GLenum(35167)
- GLenum_GL_CON_31_ATI = GLenum(35168)
- GLenum_GL_MOV_ATI = GLenum(35169)
- GLenum_GL_ADD_ATI = GLenum(35171)
- GLenum_GL_MUL_ATI = GLenum(35172)
- GLenum_GL_SUB_ATI = GLenum(35173)
- GLenum_GL_DOT3_ATI = GLenum(35174)
- GLenum_GL_DOT4_ATI = GLenum(35175)
- GLenum_GL_MAD_ATI = GLenum(35176)
- GLenum_GL_LERP_ATI = GLenum(35177)
- GLenum_GL_CND_ATI = GLenum(35178)
- GLenum_GL_CND0_ATI = GLenum(35179)
- GLenum_GL_DOT2_ADD_ATI = GLenum(35180)
- GLenum_GL_SECONDARY_INTERPOLATOR_ATI = GLenum(35181)
- GLenum_GL_NUM_FRAGMENT_REGISTERS_ATI = GLenum(35182)
- GLenum_GL_NUM_FRAGMENT_CONSTANTS_ATI = GLenum(35183)
- GLenum_GL_NUM_PASSES_ATI = GLenum(35184)
- GLenum_GL_NUM_INSTRUCTIONS_PER_PASS_ATI = GLenum(35185)
- GLenum_GL_NUM_INSTRUCTIONS_TOTAL_ATI = GLenum(35186)
- GLenum_GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI = GLenum(35187)
- GLenum_GL_NUM_LOOPBACK_COMPONENTS_ATI = GLenum(35188)
- GLenum_GL_COLOR_ALPHA_PAIRING_ATI = GLenum(35189)
- GLenum_GL_SWIZZLE_STR_ATI = GLenum(35190)
- GLenum_GL_SWIZZLE_STQ_ATI = GLenum(35191)
- GLenum_GL_SWIZZLE_STR_DR_ATI = GLenum(35192)
- GLenum_GL_SWIZZLE_STQ_DQ_ATI = GLenum(35193)
- GLenum_GL_SWIZZLE_STRQ_ATI = GLenum(35194)
- GLenum_GL_SWIZZLE_STRQ_DQ_ATI = GLenum(35195)
- GLenum_GL_INTERLACE_OML = GLenum(35200)
- GLenum_GL_INTERLACE_READ_OML = GLenum(35201)
- GLenum_GL_FORMAT_SUBSAMPLE_24_24_OML = GLenum(35202)
- GLenum_GL_FORMAT_SUBSAMPLE_244_244_OML = GLenum(35203)
- GLenum_GL_PACK_RESAMPLE_OML = GLenum(35204)
- GLenum_GL_UNPACK_RESAMPLE_OML = GLenum(35205)
- GLenum_GL_RESAMPLE_REPLICATE_OML = GLenum(35206)
- GLenum_GL_RESAMPLE_ZERO_FILL_OML = GLenum(35207)
- GLenum_GL_RESAMPLE_AVERAGE_OML = GLenum(35208)
- GLenum_GL_RESAMPLE_DECIMATE_OML = GLenum(35209)
- GLenum_GL_POINT_SIZE_ARRAY_TYPE_OES = GLenum(35210)
- GLenum_GL_POINT_SIZE_ARRAY_STRIDE_OES = GLenum(35211)
- GLenum_GL_POINT_SIZE_ARRAY_POINTER_OES = GLenum(35212)
- GLenum_GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES = GLenum(35213)
- GLenum_GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES = GLenum(35214)
- GLenum_GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES = GLenum(35215)
- GLenum_GL_VERTEX_ATTRIB_MAP1_APPLE = GLenum(35328)
- GLenum_GL_VERTEX_ATTRIB_MAP2_APPLE = GLenum(35329)
- GLenum_GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE = GLenum(35330)
- GLenum_GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE = GLenum(35331)
- GLenum_GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE = GLenum(35332)
- GLenum_GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE = GLenum(35333)
- GLenum_GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE = GLenum(35334)
- GLenum_GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE = GLenum(35335)
- GLenum_GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE = GLenum(35336)
- GLenum_GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE = GLenum(35337)
- GLenum_GL_DRAW_PIXELS_APPLE = GLenum(35338)
- GLenum_GL_FENCE_APPLE = GLenum(35339)
- GLenum_GL_ELEMENT_ARRAY_APPLE = GLenum(35340)
- GLenum_GL_ELEMENT_ARRAY_TYPE_APPLE = GLenum(35341)
- GLenum_GL_ELEMENT_ARRAY_POINTER_APPLE = GLenum(35342)
- GLenum_GL_COLOR_FLOAT_APPLE = GLenum(35343)
- GLenum_GL_UNIFORM_BUFFER = GLenum(35345)
- GLenum_GL_BUFFER_SERIALIZED_MODIFY_APPLE = GLenum(35346)
- GLenum_GL_BUFFER_FLUSHING_UNMAP_APPLE = GLenum(35347)
- GLenum_GL_AUX_DEPTH_STENCIL_APPLE = GLenum(35348)
- GLenum_GL_PACK_ROW_BYTES_APPLE = GLenum(35349)
- GLenum_GL_UNPACK_ROW_BYTES_APPLE = GLenum(35350)
- GLenum_GL_RELEASED_APPLE = GLenum(35353)
- GLenum_GL_VOLATILE_APPLE = GLenum(35354)
- GLenum_GL_RETAINED_APPLE = GLenum(35355)
- GLenum_GL_UNDEFINED_APPLE = GLenum(35356)
- GLenum_GL_PURGEABLE_APPLE = GLenum(35357)
- GLenum_GL_RGB_422_APPLE = GLenum(35359)
- GLenum_GL_UNIFORM_BUFFER_BINDING = GLenum(35368)
- GLenum_GL_UNIFORM_BUFFER_START = GLenum(35369)
- GLenum_GL_UNIFORM_BUFFER_SIZE = GLenum(35370)
- GLenum_GL_MAX_VERTEX_UNIFORM_BLOCKS = GLenum(35371)
- GLenum_GL_MAX_GEOMETRY_UNIFORM_BLOCKS = GLenum(35372)
- GLenum_GL_MAX_GEOMETRY_UNIFORM_BLOCKS_EXT = GLenum(35372)
- GLenum_GL_MAX_GEOMETRY_UNIFORM_BLOCKS_OES = GLenum(35372)
- GLenum_GL_MAX_FRAGMENT_UNIFORM_BLOCKS = GLenum(35373)
- GLenum_GL_MAX_COMBINED_UNIFORM_BLOCKS = GLenum(35374)
- GLenum_GL_MAX_UNIFORM_BUFFER_BINDINGS = GLenum(35375)
- GLenum_GL_MAX_UNIFORM_BLOCK_SIZE = GLenum(35376)
- GLenum_GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = GLenum(35377)
- GLenum_GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS = GLenum(35378)
- GLenum_GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT = GLenum(35378)
- GLenum_GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_OES = GLenum(35378)
- GLenum_GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = GLenum(35379)
- GLenum_GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT = GLenum(35380)
- GLenum_GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH = GLenum(35381)
- GLenum_GL_ACTIVE_UNIFORM_BLOCKS = GLenum(35382)
- GLenum_GL_UNIFORM_TYPE = GLenum(35383)
- GLenum_GL_UNIFORM_SIZE = GLenum(35384)
- GLenum_GL_UNIFORM_NAME_LENGTH = GLenum(35385)
- GLenum_GL_UNIFORM_BLOCK_INDEX = GLenum(35386)
- GLenum_GL_UNIFORM_OFFSET = GLenum(35387)
- GLenum_GL_UNIFORM_ARRAY_STRIDE = GLenum(35388)
- GLenum_GL_UNIFORM_MATRIX_STRIDE = GLenum(35389)
- GLenum_GL_UNIFORM_IS_ROW_MAJOR = GLenum(35390)
- GLenum_GL_UNIFORM_BLOCK_BINDING = GLenum(35391)
- GLenum_GL_UNIFORM_BLOCK_DATA_SIZE = GLenum(35392)
- GLenum_GL_UNIFORM_BLOCK_NAME_LENGTH = GLenum(35393)
- GLenum_GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS = GLenum(35394)
- GLenum_GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = GLenum(35395)
- GLenum_GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = GLenum(35396)
- GLenum_GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER = GLenum(35397)
- GLenum_GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = GLenum(35398)
- GLenum_GL_TEXTURE_SRGB_DECODE_EXT = GLenum(35400)
- GLenum_GL_DECODE_EXT = GLenum(35401)
- GLenum_GL_SKIP_DECODE_EXT = GLenum(35402)
- GLenum_GL_PROGRAM_PIPELINE_OBJECT_EXT = GLenum(35407)
- GLenum_GL_RGB_RAW_422_APPLE = GLenum(35409)
- GLenum_GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT = GLenum(35410)
- GLenum_GL_SYNC_OBJECT_APPLE = GLenum(35411)
- GLenum_GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT = GLenum(35412)
- GLenum_GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT = GLenum(35413)
- GLenum_GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT = GLenum(35414)
- GLenum_GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT = GLenum(35415)
- GLenum_GL_FRAGMENT_SHADER = GLenum(35632)
- GLenum_GL_FRAGMENT_SHADER_ARB = GLenum(35632)
- GLenum_GL_VERTEX_SHADER = GLenum(35633)
- GLenum_GL_VERTEX_SHADER_ARB = GLenum(35633)
- GLenum_GL_PROGRAM_OBJECT_ARB = GLenum(35648)
- GLenum_GL_PROGRAM_OBJECT_EXT = GLenum(35648)
- GLenum_GL_SHADER_OBJECT_ARB = GLenum(35656)
- GLenum_GL_SHADER_OBJECT_EXT = GLenum(35656)
- GLenum_GL_MAX_FRAGMENT_UNIFORM_COMPONENTS = GLenum(35657)
- GLenum_GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB = GLenum(35657)
- GLenum_GL_MAX_VERTEX_UNIFORM_COMPONENTS = GLenum(35658)
- GLenum_GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB = GLenum(35658)
- GLenum_GL_MAX_VARYING_FLOATS = GLenum(35659)
- GLenum_GL_MAX_VARYING_COMPONENTS = GLenum(35659)
- GLenum_GL_MAX_VARYING_COMPONENTS_EXT = GLenum(35659)
- GLenum_GL_MAX_VARYING_FLOATS_ARB = GLenum(35659)
- GLenum_GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS = GLenum(35660)
- GLenum_GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB = GLenum(35660)
- GLenum_GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS = GLenum(35661)
- GLenum_GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB = GLenum(35661)
- GLenum_GL_OBJECT_TYPE_ARB = GLenum(35662)
- GLenum_GL_SHADER_TYPE = GLenum(35663)
- GLenum_GL_OBJECT_SUBTYPE_ARB = GLenum(35663)
- GLenum_GL_FLOAT_VEC2 = GLenum(35664)
- GLenum_GL_FLOAT_VEC2_ARB = GLenum(35664)
- GLenum_GL_FLOAT_VEC3 = GLenum(35665)
- GLenum_GL_FLOAT_VEC3_ARB = GLenum(35665)
- GLenum_GL_FLOAT_VEC4 = GLenum(35666)
- GLenum_GL_FLOAT_VEC4_ARB = GLenum(35666)
- GLenum_GL_INT_VEC2 = GLenum(35667)
- GLenum_GL_INT_VEC2_ARB = GLenum(35667)
- GLenum_GL_INT_VEC3 = GLenum(35668)
- GLenum_GL_INT_VEC3_ARB = GLenum(35668)
- GLenum_GL_INT_VEC4 = GLenum(35669)
- GLenum_GL_INT_VEC4_ARB = GLenum(35669)
- GLenum_GL_BOOL = GLenum(35670)
- GLenum_GL_BOOL_ARB = GLenum(35670)
- GLenum_GL_BOOL_VEC2 = GLenum(35671)
- GLenum_GL_BOOL_VEC2_ARB = GLenum(35671)
- GLenum_GL_BOOL_VEC3 = GLenum(35672)
- GLenum_GL_BOOL_VEC3_ARB = GLenum(35672)
- GLenum_GL_BOOL_VEC4 = GLenum(35673)
- GLenum_GL_BOOL_VEC4_ARB = GLenum(35673)
- GLenum_GL_FLOAT_MAT2 = GLenum(35674)
- GLenum_GL_FLOAT_MAT2_ARB = GLenum(35674)
- GLenum_GL_FLOAT_MAT3 = GLenum(35675)
- GLenum_GL_FLOAT_MAT3_ARB = GLenum(35675)
- GLenum_GL_FLOAT_MAT4 = GLenum(35676)
- GLenum_GL_FLOAT_MAT4_ARB = GLenum(35676)
- GLenum_GL_SAMPLER_1D = GLenum(35677)
- GLenum_GL_SAMPLER_1D_ARB = GLenum(35677)
- GLenum_GL_SAMPLER_2D = GLenum(35678)
- GLenum_GL_SAMPLER_2D_ARB = GLenum(35678)
- GLenum_GL_SAMPLER_3D = GLenum(35679)
- GLenum_GL_SAMPLER_3D_ARB = GLenum(35679)
- GLenum_GL_SAMPLER_3D_OES = GLenum(35679)
- GLenum_GL_SAMPLER_CUBE = GLenum(35680)
- GLenum_GL_SAMPLER_CUBE_ARB = GLenum(35680)
- GLenum_GL_SAMPLER_1D_SHADOW = GLenum(35681)
- GLenum_GL_SAMPLER_1D_SHADOW_ARB = GLenum(35681)
- GLenum_GL_SAMPLER_2D_SHADOW = GLenum(35682)
- GLenum_GL_SAMPLER_2D_SHADOW_ARB = GLenum(35682)
- GLenum_GL_SAMPLER_2D_SHADOW_EXT = GLenum(35682)
- GLenum_GL_SAMPLER_2D_RECT = GLenum(35683)
- GLenum_GL_SAMPLER_2D_RECT_ARB = GLenum(35683)
- GLenum_GL_SAMPLER_2D_RECT_SHADOW = GLenum(35684)
- GLenum_GL_SAMPLER_2D_RECT_SHADOW_ARB = GLenum(35684)
- GLenum_GL_FLOAT_MAT2x3 = GLenum(35685)
- GLenum_GL_FLOAT_MAT2x3_NV = GLenum(35685)
- GLenum_GL_FLOAT_MAT2x4 = GLenum(35686)
- GLenum_GL_FLOAT_MAT2x4_NV = GLenum(35686)
- GLenum_GL_FLOAT_MAT3x2 = GLenum(35687)
- GLenum_GL_FLOAT_MAT3x2_NV = GLenum(35687)
- GLenum_GL_FLOAT_MAT3x4 = GLenum(35688)
- GLenum_GL_FLOAT_MAT3x4_NV = GLenum(35688)
- GLenum_GL_FLOAT_MAT4x2 = GLenum(35689)
- GLenum_GL_FLOAT_MAT4x2_NV = GLenum(35689)
- GLenum_GL_FLOAT_MAT4x3 = GLenum(35690)
- GLenum_GL_FLOAT_MAT4x3_NV = GLenum(35690)
- GLenum_GL_DELETE_STATUS = GLenum(35712)
- GLenum_GL_OBJECT_DELETE_STATUS_ARB = GLenum(35712)
- GLenum_GL_COMPILE_STATUS = GLenum(35713)
- GLenum_GL_OBJECT_COMPILE_STATUS_ARB = GLenum(35713)
- GLenum_GL_LINK_STATUS = GLenum(35714)
- GLenum_GL_OBJECT_LINK_STATUS_ARB = GLenum(35714)
- GLenum_GL_VALIDATE_STATUS = GLenum(35715)
- GLenum_GL_OBJECT_VALIDATE_STATUS_ARB = GLenum(35715)
- GLenum_GL_INFO_LOG_LENGTH = GLenum(35716)
- GLenum_GL_OBJECT_INFO_LOG_LENGTH_ARB = GLenum(35716)
- GLenum_GL_ATTACHED_SHADERS = GLenum(35717)
- GLenum_GL_OBJECT_ATTACHED_OBJECTS_ARB = GLenum(35717)
- GLenum_GL_ACTIVE_UNIFORMS = GLenum(35718)
- GLenum_GL_OBJECT_ACTIVE_UNIFORMS_ARB = GLenum(35718)
- GLenum_GL_ACTIVE_UNIFORM_MAX_LENGTH = GLenum(35719)
- GLenum_GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB = GLenum(35719)
- GLenum_GL_SHADER_SOURCE_LENGTH = GLenum(35720)
- GLenum_GL_OBJECT_SHADER_SOURCE_LENGTH_ARB = GLenum(35720)
- GLenum_GL_ACTIVE_ATTRIBUTES = GLenum(35721)
- GLenum_GL_OBJECT_ACTIVE_ATTRIBUTES_ARB = GLenum(35721)
- GLenum_GL_ACTIVE_ATTRIBUTE_MAX_LENGTH = GLenum(35722)
- GLenum_GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB = GLenum(35722)
- GLenum_GL_FRAGMENT_SHADER_DERIVATIVE_HINT = GLenum(35723)
- GLenum_GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB = GLenum(35723)
- GLenum_GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES = GLenum(35723)
- GLenum_GL_SHADING_LANGUAGE_VERSION = GLenum(35724)
- GLenum_GL_SHADING_LANGUAGE_VERSION_ARB = GLenum(35724)
- GLenum_GL_CURRENT_PROGRAM = GLenum(35725)
- GLenum_GL_PALETTE4_RGB8_OES = GLenum(35728)
- GLenum_GL_PALETTE4_RGBA8_OES = GLenum(35729)
- GLenum_GL_PALETTE4_R5_G6_B5_OES = GLenum(35730)
- GLenum_GL_PALETTE4_RGBA4_OES = GLenum(35731)
- GLenum_GL_PALETTE4_RGB5_A1_OES = GLenum(35732)
- GLenum_GL_PALETTE8_RGB8_OES = GLenum(35733)
- GLenum_GL_PALETTE8_RGBA8_OES = GLenum(35734)
- GLenum_GL_PALETTE8_R5_G6_B5_OES = GLenum(35735)
- GLenum_GL_PALETTE8_RGBA4_OES = GLenum(35736)
- GLenum_GL_PALETTE8_RGB5_A1_OES = GLenum(35737)
- GLenum_GL_IMPLEMENTATION_COLOR_READ_TYPE = GLenum(35738)
- GLenum_GL_IMPLEMENTATION_COLOR_READ_TYPE_OES = GLenum(35738)
- GLenum_GL_IMPLEMENTATION_COLOR_READ_FORMAT = GLenum(35739)
- GLenum_GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES = GLenum(35739)
- GLenum_GL_POINT_SIZE_ARRAY_OES = GLenum(35740)
- GLenum_GL_TEXTURE_CROP_RECT_OES = GLenum(35741)
- GLenum_GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES = GLenum(35742)
- GLenum_GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES = GLenum(35743)
- GLenum_GL_FRAGMENT_PROGRAM_POSITION_MESA = GLenum(35760)
- GLenum_GL_FRAGMENT_PROGRAM_CALLBACK_MESA = GLenum(35761)
- GLenum_GL_FRAGMENT_PROGRAM_CALLBACK_FUNC_MESA = GLenum(35762)
- GLenum_GL_FRAGMENT_PROGRAM_CALLBACK_DATA_MESA = GLenum(35763)
- GLenum_GL_VERTEX_PROGRAM_POSITION_MESA = GLenum(35764)
- GLenum_GL_VERTEX_PROGRAM_CALLBACK_MESA = GLenum(35765)
- GLenum_GL_VERTEX_PROGRAM_CALLBACK_FUNC_MESA = GLenum(35766)
- GLenum_GL_VERTEX_PROGRAM_CALLBACK_DATA_MESA = GLenum(35767)
- GLenum_GL_COUNTER_TYPE_AMD = GLenum(35776)
- GLenum_GL_COUNTER_RANGE_AMD = GLenum(35777)
- GLenum_GL_UNSIGNED_INT64_AMD = GLenum(35778)
- GLenum_GL_PERCENTAGE_AMD = GLenum(35779)
- GLenum_GL_PERFMON_RESULT_AVAILABLE_AMD = GLenum(35780)
- GLenum_GL_PERFMON_RESULT_SIZE_AMD = GLenum(35781)
- GLenum_GL_PERFMON_RESULT_AMD = GLenum(35782)
- GLenum_GL_TEXTURE_WIDTH_QCOM = GLenum(35794)
- GLenum_GL_TEXTURE_HEIGHT_QCOM = GLenum(35795)
- GLenum_GL_TEXTURE_DEPTH_QCOM = GLenum(35796)
- GLenum_GL_TEXTURE_INTERNAL_FORMAT_QCOM = GLenum(35797)
- GLenum_GL_TEXTURE_FORMAT_QCOM = GLenum(35798)
- GLenum_GL_TEXTURE_TYPE_QCOM = GLenum(35799)
- GLenum_GL_TEXTURE_IMAGE_VALID_QCOM = GLenum(35800)
- GLenum_GL_TEXTURE_NUM_LEVELS_QCOM = GLenum(35801)
- GLenum_GL_TEXTURE_TARGET_QCOM = GLenum(35802)
- GLenum_GL_TEXTURE_OBJECT_VALID_QCOM = GLenum(35803)
- GLenum_GL_STATE_RESTORE = GLenum(35804)
- GLenum_GL_SAMPLER_EXTERNAL_2D_Y2Y_EXT = GLenum(35815)
- GLenum_GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG = GLenum(35840)
- GLenum_GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG = GLenum(35841)
- GLenum_GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = GLenum(35842)
- GLenum_GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = GLenum(35843)
- GLenum_GL_MODULATE_COLOR_IMG = GLenum(35844)
- GLenum_GL_RECIP_ADD_SIGNED_ALPHA_IMG = GLenum(35845)
- GLenum_GL_TEXTURE_ALPHA_MODULATE_IMG = GLenum(35846)
- GLenum_GL_FACTOR_ALPHA_MODULATE_IMG = GLenum(35847)
- GLenum_GL_FRAGMENT_ALPHA_MODULATE_IMG = GLenum(35848)
- GLenum_GL_ADD_BLEND_IMG = GLenum(35849)
- GLenum_GL_SGX_BINARY_IMG = GLenum(35850)
- GLenum_GL_TEXTURE_RED_TYPE = GLenum(35856)
- GLenum_GL_TEXTURE_RED_TYPE_ARB = GLenum(35856)
- GLenum_GL_TEXTURE_GREEN_TYPE = GLenum(35857)
- GLenum_GL_TEXTURE_GREEN_TYPE_ARB = GLenum(35857)
- GLenum_GL_TEXTURE_BLUE_TYPE = GLenum(35858)
- GLenum_GL_TEXTURE_BLUE_TYPE_ARB = GLenum(35858)
- GLenum_GL_TEXTURE_ALPHA_TYPE = GLenum(35859)
- GLenum_GL_TEXTURE_ALPHA_TYPE_ARB = GLenum(35859)
- GLenum_GL_TEXTURE_LUMINANCE_TYPE = GLenum(35860)
- GLenum_GL_TEXTURE_LUMINANCE_TYPE_ARB = GLenum(35860)
- GLenum_GL_TEXTURE_INTENSITY_TYPE = GLenum(35861)
- GLenum_GL_TEXTURE_INTENSITY_TYPE_ARB = GLenum(35861)
- GLenum_GL_TEXTURE_DEPTH_TYPE = GLenum(35862)
- GLenum_GL_TEXTURE_DEPTH_TYPE_ARB = GLenum(35862)
- GLenum_GL_UNSIGNED_NORMALIZED = GLenum(35863)
- GLenum_GL_UNSIGNED_NORMALIZED_ARB = GLenum(35863)
- GLenum_GL_UNSIGNED_NORMALIZED_EXT = GLenum(35863)
- GLenum_GL_TEXTURE_1D_ARRAY = GLenum(35864)
- GLenum_GL_TEXTURE_1D_ARRAY_EXT = GLenum(35864)
- GLenum_GL_PROXY_TEXTURE_1D_ARRAY = GLenum(35865)
- GLenum_GL_PROXY_TEXTURE_1D_ARRAY_EXT = GLenum(35865)
- GLenum_GL_TEXTURE_2D_ARRAY = GLenum(35866)
- GLenum_GL_TEXTURE_2D_ARRAY_EXT = GLenum(35866)
- GLenum_GL_PROXY_TEXTURE_2D_ARRAY = GLenum(35867)
- GLenum_GL_PROXY_TEXTURE_2D_ARRAY_EXT = GLenum(35867)
- GLenum_GL_TEXTURE_BINDING_1D_ARRAY = GLenum(35868)
- GLenum_GL_TEXTURE_BINDING_1D_ARRAY_EXT = GLenum(35868)
- GLenum_GL_TEXTURE_BINDING_2D_ARRAY = GLenum(35869)
- GLenum_GL_TEXTURE_BINDING_2D_ARRAY_EXT = GLenum(35869)
- GLenum_GL_GEOMETRY_PROGRAM_NV = GLenum(35878)
- GLenum_GL_MAX_PROGRAM_OUTPUT_VERTICES_NV = GLenum(35879)
- GLenum_GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV = GLenum(35880)
- GLenum_GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS = GLenum(35881)
- GLenum_GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB = GLenum(35881)
- GLenum_GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT = GLenum(35881)
- GLenum_GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_OES = GLenum(35881)
- GLenum_GL_TEXTURE_BUFFER = GLenum(35882)
- GLenum_GL_TEXTURE_BUFFER_ARB = GLenum(35882)
- GLenum_GL_TEXTURE_BUFFER_EXT = GLenum(35882)
- GLenum_GL_TEXTURE_BUFFER_OES = GLenum(35882)
- GLenum_GL_TEXTURE_BUFFER_BINDING = GLenum(35882)
- GLenum_GL_TEXTURE_BUFFER_BINDING_EXT = GLenum(35882)
- GLenum_GL_TEXTURE_BUFFER_BINDING_OES = GLenum(35882)
- GLenum_GL_MAX_TEXTURE_BUFFER_SIZE = GLenum(35883)
- GLenum_GL_MAX_TEXTURE_BUFFER_SIZE_ARB = GLenum(35883)
- GLenum_GL_MAX_TEXTURE_BUFFER_SIZE_EXT = GLenum(35883)
- GLenum_GL_MAX_TEXTURE_BUFFER_SIZE_OES = GLenum(35883)
- GLenum_GL_TEXTURE_BINDING_BUFFER = GLenum(35884)
- GLenum_GL_TEXTURE_BINDING_BUFFER_ARB = GLenum(35884)
- GLenum_GL_TEXTURE_BINDING_BUFFER_EXT = GLenum(35884)
- GLenum_GL_TEXTURE_BINDING_BUFFER_OES = GLenum(35884)
- GLenum_GL_TEXTURE_BUFFER_DATA_STORE_BINDING = GLenum(35885)
- GLenum_GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB = GLenum(35885)
- GLenum_GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT = GLenum(35885)
- GLenum_GL_TEXTURE_BUFFER_DATA_STORE_BINDING_OES = GLenum(35885)
- GLenum_GL_TEXTURE_BUFFER_FORMAT_ARB = GLenum(35886)
- GLenum_GL_TEXTURE_BUFFER_FORMAT_EXT = GLenum(35886)
- GLenum_GL_ANY_SAMPLES_PASSED = GLenum(35887)
- GLenum_GL_ANY_SAMPLES_PASSED_EXT = GLenum(35887)
- GLenum_GL_SAMPLE_SHADING = GLenum(35894)
- GLenum_GL_SAMPLE_SHADING_ARB = GLenum(35894)
- GLenum_GL_SAMPLE_SHADING_OES = GLenum(35894)
- GLenum_GL_MIN_SAMPLE_SHADING_VALUE = GLenum(35895)
- GLenum_GL_MIN_SAMPLE_SHADING_VALUE_ARB = GLenum(35895)
- GLenum_GL_MIN_SAMPLE_SHADING_VALUE_OES = GLenum(35895)
- GLenum_GL_R11F_G11F_B10F = GLenum(35898)
- GLenum_GL_R11F_G11F_B10F_APPLE = GLenum(35898)
- GLenum_GL_R11F_G11F_B10F_EXT = GLenum(35898)
- GLenum_GL_UNSIGNED_INT_10F_11F_11F_REV = GLenum(35899)
- GLenum_GL_UNSIGNED_INT_10F_11F_11F_REV_APPLE = GLenum(35899)
- GLenum_GL_UNSIGNED_INT_10F_11F_11F_REV_EXT = GLenum(35899)
- GLenum_GL_RGBA_SIGNED_COMPONENTS_EXT = GLenum(35900)
- GLenum_GL_RGB9_E5 = GLenum(35901)
- GLenum_GL_RGB9_E5_APPLE = GLenum(35901)
- GLenum_GL_RGB9_E5_EXT = GLenum(35901)
- GLenum_GL_UNSIGNED_INT_5_9_9_9_REV = GLenum(35902)
- GLenum_GL_UNSIGNED_INT_5_9_9_9_REV_APPLE = GLenum(35902)
- GLenum_GL_UNSIGNED_INT_5_9_9_9_REV_EXT = GLenum(35902)
- GLenum_GL_TEXTURE_SHARED_SIZE = GLenum(35903)
- GLenum_GL_TEXTURE_SHARED_SIZE_EXT = GLenum(35903)
- GLenum_GL_SRGB = GLenum(35904)
- GLenum_GL_SRGB_EXT = GLenum(35904)
- GLenum_GL_SRGB8 = GLenum(35905)
- GLenum_GL_SRGB8_EXT = GLenum(35905)
- GLenum_GL_SRGB8_NV = GLenum(35905)
- GLenum_GL_SRGB_ALPHA = GLenum(35906)
- GLenum_GL_SRGB_ALPHA_EXT = GLenum(35906)
- GLenum_GL_SRGB8_ALPHA8 = GLenum(35907)
- GLenum_GL_SRGB8_ALPHA8_EXT = GLenum(35907)
- GLenum_GL_SLUMINANCE_ALPHA = GLenum(35908)
- GLenum_GL_SLUMINANCE_ALPHA_EXT = GLenum(35908)
- GLenum_GL_SLUMINANCE_ALPHA_NV = GLenum(35908)
- GLenum_GL_SLUMINANCE8_ALPHA8 = GLenum(35909)
- GLenum_GL_SLUMINANCE8_ALPHA8_EXT = GLenum(35909)
- GLenum_GL_SLUMINANCE8_ALPHA8_NV = GLenum(35909)
- GLenum_GL_SLUMINANCE = GLenum(35910)
- GLenum_GL_SLUMINANCE_EXT = GLenum(35910)
- GLenum_GL_SLUMINANCE_NV = GLenum(35910)
- GLenum_GL_SLUMINANCE8 = GLenum(35911)
- GLenum_GL_SLUMINANCE8_EXT = GLenum(35911)
- GLenum_GL_SLUMINANCE8_NV = GLenum(35911)
- GLenum_GL_COMPRESSED_SRGB = GLenum(35912)
- GLenum_GL_COMPRESSED_SRGB_EXT = GLenum(35912)
- GLenum_GL_COMPRESSED_SRGB_ALPHA = GLenum(35913)
- GLenum_GL_COMPRESSED_SRGB_ALPHA_EXT = GLenum(35913)
- GLenum_GL_COMPRESSED_SLUMINANCE = GLenum(35914)
- GLenum_GL_COMPRESSED_SLUMINANCE_EXT = GLenum(35914)
- GLenum_GL_COMPRESSED_SLUMINANCE_ALPHA = GLenum(35915)
- GLenum_GL_COMPRESSED_SLUMINANCE_ALPHA_EXT = GLenum(35915)
- GLenum_GL_COMPRESSED_SRGB_S3TC_DXT1_EXT = GLenum(35916)
- GLenum_GL_COMPRESSED_SRGB_S3TC_DXT1_NV = GLenum(35916)
- GLenum_GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT = GLenum(35917)
- GLenum_GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV = GLenum(35917)
- GLenum_GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT = GLenum(35918)
- GLenum_GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV = GLenum(35918)
- GLenum_GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT = GLenum(35919)
- GLenum_GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV = GLenum(35919)
- GLenum_GL_COMPRESSED_LUMINANCE_LATC1_EXT = GLenum(35952)
- GLenum_GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT = GLenum(35953)
- GLenum_GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT = GLenum(35954)
- GLenum_GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT = GLenum(35955)
- GLenum_GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV = GLenum(35956)
- GLenum_GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV = GLenum(35957)
- GLenum_GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH = GLenum(35958)
- GLenum_GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT = GLenum(35958)
- GLenum_GL_BACK_PRIMARY_COLOR_NV = GLenum(35959)
- GLenum_GL_BACK_SECONDARY_COLOR_NV = GLenum(35960)
- GLenum_GL_TEXTURE_COORD_NV = GLenum(35961)
- GLenum_GL_CLIP_DISTANCE_NV = GLenum(35962)
- GLenum_GL_VERTEX_ID_NV = GLenum(35963)
- GLenum_GL_PRIMITIVE_ID_NV = GLenum(35964)
- GLenum_GL_GENERIC_ATTRIB_NV = GLenum(35965)
- GLenum_GL_TRANSFORM_FEEDBACK_ATTRIBS_NV = GLenum(35966)
- GLenum_GL_TRANSFORM_FEEDBACK_BUFFER_MODE = GLenum(35967)
- GLenum_GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT = GLenum(35967)
- GLenum_GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV = GLenum(35967)
- GLenum_GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = GLenum(35968)
- GLenum_GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT = GLenum(35968)
- GLenum_GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV = GLenum(35968)
- GLenum_GL_ACTIVE_VARYINGS_NV = GLenum(35969)
- GLenum_GL_ACTIVE_VARYING_MAX_LENGTH_NV = GLenum(35970)
- GLenum_GL_TRANSFORM_FEEDBACK_VARYINGS = GLenum(35971)
- GLenum_GL_TRANSFORM_FEEDBACK_VARYINGS_EXT = GLenum(35971)
- GLenum_GL_TRANSFORM_FEEDBACK_VARYINGS_NV = GLenum(35971)
- GLenum_GL_TRANSFORM_FEEDBACK_BUFFER_START = GLenum(35972)
- GLenum_GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT = GLenum(35972)
- GLenum_GL_TRANSFORM_FEEDBACK_BUFFER_START_NV = GLenum(35972)
- GLenum_GL_TRANSFORM_FEEDBACK_BUFFER_SIZE = GLenum(35973)
- GLenum_GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT = GLenum(35973)
- GLenum_GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV = GLenum(35973)
- GLenum_GL_TRANSFORM_FEEDBACK_RECORD_NV = GLenum(35974)
- GLenum_GL_PRIMITIVES_GENERATED = GLenum(35975)
- GLenum_GL_PRIMITIVES_GENERATED_EXT = GLenum(35975)
- GLenum_GL_PRIMITIVES_GENERATED_NV = GLenum(35975)
- GLenum_GL_PRIMITIVES_GENERATED_OES = GLenum(35975)
- GLenum_GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = GLenum(35976)
- GLenum_GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT = GLenum(35976)
- GLenum_GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV = GLenum(35976)
- GLenum_GL_RASTERIZER_DISCARD = GLenum(35977)
- GLenum_GL_RASTERIZER_DISCARD_EXT = GLenum(35977)
- GLenum_GL_RASTERIZER_DISCARD_NV = GLenum(35977)
- GLenum_GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = GLenum(35978)
- GLenum_GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT = GLenum(35978)
- GLenum_GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV = GLenum(35978)
- GLenum_GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = GLenum(35979)
- GLenum_GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT = GLenum(35979)
- GLenum_GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV = GLenum(35979)
- GLenum_GL_INTERLEAVED_ATTRIBS = GLenum(35980)
- GLenum_GL_INTERLEAVED_ATTRIBS_EXT = GLenum(35980)
- GLenum_GL_INTERLEAVED_ATTRIBS_NV = GLenum(35980)
- GLenum_GL_SEPARATE_ATTRIBS = GLenum(35981)
- GLenum_GL_SEPARATE_ATTRIBS_EXT = GLenum(35981)
- GLenum_GL_SEPARATE_ATTRIBS_NV = GLenum(35981)
- GLenum_GL_TRANSFORM_FEEDBACK_BUFFER = GLenum(35982)
- GLenum_GL_TRANSFORM_FEEDBACK_BUFFER_EXT = GLenum(35982)
- GLenum_GL_TRANSFORM_FEEDBACK_BUFFER_NV = GLenum(35982)
- GLenum_GL_TRANSFORM_FEEDBACK_BUFFER_BINDING = GLenum(35983)
- GLenum_GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT = GLenum(35983)
- GLenum_GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV = GLenum(35983)
- GLenum_GL_ATC_RGB_AMD = GLenum(35986)
- GLenum_GL_ATC_RGBA_EXPLICIT_ALPHA_AMD = GLenum(35987)
- GLenum_GL_POINT_SPRITE_COORD_ORIGIN = GLenum(36000)
- GLenum_GL_LOWER_LEFT = GLenum(36001)
- GLenum_GL_UPPER_LEFT = GLenum(36002)
- GLenum_GL_STENCIL_BACK_REF = GLenum(36003)
- GLenum_GL_STENCIL_BACK_VALUE_MASK = GLenum(36004)
- GLenum_GL_STENCIL_BACK_WRITEMASK = GLenum(36005)
- GLenum_GL_DRAW_FRAMEBUFFER_BINDING = GLenum(36006)
- GLenum_GL_DRAW_FRAMEBUFFER_BINDING_ANGLE = GLenum(36006)
- GLenum_GL_DRAW_FRAMEBUFFER_BINDING_APPLE = GLenum(36006)
- GLenum_GL_DRAW_FRAMEBUFFER_BINDING_EXT = GLenum(36006)
- GLenum_GL_DRAW_FRAMEBUFFER_BINDING_NV = GLenum(36006)
- GLenum_GL_FRAMEBUFFER_BINDING = GLenum(36006)
- GLenum_GL_FRAMEBUFFER_BINDING_ANGLE = GLenum(36006)
- GLenum_GL_FRAMEBUFFER_BINDING_EXT = GLenum(36006)
- GLenum_GL_FRAMEBUFFER_BINDING_OES = GLenum(36006)
- GLenum_GL_RENDERBUFFER_BINDING = GLenum(36007)
- GLenum_GL_RENDERBUFFER_BINDING_ANGLE = GLenum(36007)
- GLenum_GL_RENDERBUFFER_BINDING_EXT = GLenum(36007)
- GLenum_GL_RENDERBUFFER_BINDING_OES = GLenum(36007)
- GLenum_GL_READ_FRAMEBUFFER = GLenum(36008)
- GLenum_GL_READ_FRAMEBUFFER_ANGLE = GLenum(36008)
- GLenum_GL_READ_FRAMEBUFFER_APPLE = GLenum(36008)
- GLenum_GL_READ_FRAMEBUFFER_EXT = GLenum(36008)
- GLenum_GL_READ_FRAMEBUFFER_NV = GLenum(36008)
- GLenum_GL_DRAW_FRAMEBUFFER = GLenum(36009)
- GLenum_GL_DRAW_FRAMEBUFFER_ANGLE = GLenum(36009)
- GLenum_GL_DRAW_FRAMEBUFFER_APPLE = GLenum(36009)
- GLenum_GL_DRAW_FRAMEBUFFER_EXT = GLenum(36009)
- GLenum_GL_DRAW_FRAMEBUFFER_NV = GLenum(36009)
- GLenum_GL_READ_FRAMEBUFFER_BINDING = GLenum(36010)
- GLenum_GL_READ_FRAMEBUFFER_BINDING_ANGLE = GLenum(36010)
- GLenum_GL_READ_FRAMEBUFFER_BINDING_APPLE = GLenum(36010)
- GLenum_GL_READ_FRAMEBUFFER_BINDING_EXT = GLenum(36010)
- GLenum_GL_READ_FRAMEBUFFER_BINDING_NV = GLenum(36010)
- GLenum_GL_RENDERBUFFER_COVERAGE_SAMPLES_NV = GLenum(36011)
- GLenum_GL_RENDERBUFFER_SAMPLES = GLenum(36011)
- GLenum_GL_RENDERBUFFER_SAMPLES_ANGLE = GLenum(36011)
- GLenum_GL_RENDERBUFFER_SAMPLES_APPLE = GLenum(36011)
- GLenum_GL_RENDERBUFFER_SAMPLES_EXT = GLenum(36011)
- GLenum_GL_RENDERBUFFER_SAMPLES_NV = GLenum(36011)
- GLenum_GL_DEPTH_COMPONENT32F = GLenum(36012)
- GLenum_GL_DEPTH32F_STENCIL8 = GLenum(36013)
- GLenum_GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = GLenum(36048)
- GLenum_GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT = GLenum(36048)
- GLenum_GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES = GLenum(36048)
- GLenum_GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = GLenum(36049)
- GLenum_GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT = GLenum(36049)
- GLenum_GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES = GLenum(36049)
- GLenum_GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = GLenum(36050)
- GLenum_GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT = GLenum(36050)
- GLenum_GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES = GLenum(36050)
- GLenum_GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = GLenum(36051)
- GLenum_GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT = GLenum(36051)
- GLenum_GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES = GLenum(36051)
- GLenum_GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT = GLenum(36052)
- GLenum_GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES = GLenum(36052)
- GLenum_GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER = GLenum(36052)
- GLenum_GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT = GLenum(36052)
- GLenum_GL_FRAMEBUFFER_COMPLETE = GLenum(36053)
- GLenum_GL_FRAMEBUFFER_COMPLETE_EXT = GLenum(36053)
- GLenum_GL_FRAMEBUFFER_COMPLETE_OES = GLenum(36053)
- GLenum_GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT = GLenum(36054)
- GLenum_GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT = GLenum(36054)
- GLenum_GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES = GLenum(36054)
- GLenum_GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = GLenum(36055)
- GLenum_GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT = GLenum(36055)
- GLenum_GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES = GLenum(36055)
- GLenum_GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS = GLenum(36057)
- GLenum_GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT = GLenum(36057)
- GLenum_GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES = GLenum(36057)
- GLenum_GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT = GLenum(36058)
- GLenum_GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES = GLenum(36058)
- GLenum_GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER = GLenum(36059)
- GLenum_GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT = GLenum(36059)
- GLenum_GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES = GLenum(36059)
- GLenum_GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER = GLenum(36060)
- GLenum_GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT = GLenum(36060)
- GLenum_GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES = GLenum(36060)
- GLenum_GL_FRAMEBUFFER_UNSUPPORTED = GLenum(36061)
- GLenum_GL_FRAMEBUFFER_UNSUPPORTED_EXT = GLenum(36061)
- GLenum_GL_FRAMEBUFFER_UNSUPPORTED_OES = GLenum(36061)
- GLenum_GL_MAX_COLOR_ATTACHMENTS = GLenum(36063)
- GLenum_GL_MAX_COLOR_ATTACHMENTS_EXT = GLenum(36063)
- GLenum_GL_MAX_COLOR_ATTACHMENTS_NV = GLenum(36063)
- GLenum_GL_COLOR_ATTACHMENT0 = GLenum(36064)
- GLenum_GL_COLOR_ATTACHMENT0_EXT = GLenum(36064)
- GLenum_GL_COLOR_ATTACHMENT0_NV = GLenum(36064)
- GLenum_GL_COLOR_ATTACHMENT0_OES = GLenum(36064)
- GLenum_GL_COLOR_ATTACHMENT1 = GLenum(36065)
- GLenum_GL_COLOR_ATTACHMENT1_EXT = GLenum(36065)
- GLenum_GL_COLOR_ATTACHMENT1_NV = GLenum(36065)
- GLenum_GL_COLOR_ATTACHMENT2 = GLenum(36066)
- GLenum_GL_COLOR_ATTACHMENT2_EXT = GLenum(36066)
- GLenum_GL_COLOR_ATTACHMENT2_NV = GLenum(36066)
- GLenum_GL_COLOR_ATTACHMENT3 = GLenum(36067)
- GLenum_GL_COLOR_ATTACHMENT3_EXT = GLenum(36067)
- GLenum_GL_COLOR_ATTACHMENT3_NV = GLenum(36067)
- GLenum_GL_COLOR_ATTACHMENT4 = GLenum(36068)
- GLenum_GL_COLOR_ATTACHMENT4_EXT = GLenum(36068)
- GLenum_GL_COLOR_ATTACHMENT4_NV = GLenum(36068)
- GLenum_GL_COLOR_ATTACHMENT5 = GLenum(36069)
- GLenum_GL_COLOR_ATTACHMENT5_EXT = GLenum(36069)
- GLenum_GL_COLOR_ATTACHMENT5_NV = GLenum(36069)
- GLenum_GL_COLOR_ATTACHMENT6 = GLenum(36070)
- GLenum_GL_COLOR_ATTACHMENT6_EXT = GLenum(36070)
- GLenum_GL_COLOR_ATTACHMENT6_NV = GLenum(36070)
- GLenum_GL_COLOR_ATTACHMENT7 = GLenum(36071)
- GLenum_GL_COLOR_ATTACHMENT7_EXT = GLenum(36071)
- GLenum_GL_COLOR_ATTACHMENT7_NV = GLenum(36071)
- GLenum_GL_COLOR_ATTACHMENT8 = GLenum(36072)
- GLenum_GL_COLOR_ATTACHMENT8_EXT = GLenum(36072)
- GLenum_GL_COLOR_ATTACHMENT8_NV = GLenum(36072)
- GLenum_GL_COLOR_ATTACHMENT9 = GLenum(36073)
- GLenum_GL_COLOR_ATTACHMENT9_EXT = GLenum(36073)
- GLenum_GL_COLOR_ATTACHMENT9_NV = GLenum(36073)
- GLenum_GL_COLOR_ATTACHMENT10 = GLenum(36074)
- GLenum_GL_COLOR_ATTACHMENT10_EXT = GLenum(36074)
- GLenum_GL_COLOR_ATTACHMENT10_NV = GLenum(36074)
- GLenum_GL_COLOR_ATTACHMENT11 = GLenum(36075)
- GLenum_GL_COLOR_ATTACHMENT11_EXT = GLenum(36075)
- GLenum_GL_COLOR_ATTACHMENT11_NV = GLenum(36075)
- GLenum_GL_COLOR_ATTACHMENT12 = GLenum(36076)
- GLenum_GL_COLOR_ATTACHMENT12_EXT = GLenum(36076)
- GLenum_GL_COLOR_ATTACHMENT12_NV = GLenum(36076)
- GLenum_GL_COLOR_ATTACHMENT13 = GLenum(36077)
- GLenum_GL_COLOR_ATTACHMENT13_EXT = GLenum(36077)
- GLenum_GL_COLOR_ATTACHMENT13_NV = GLenum(36077)
- GLenum_GL_COLOR_ATTACHMENT14 = GLenum(36078)
- GLenum_GL_COLOR_ATTACHMENT14_EXT = GLenum(36078)
- GLenum_GL_COLOR_ATTACHMENT14_NV = GLenum(36078)
- GLenum_GL_COLOR_ATTACHMENT15 = GLenum(36079)
- GLenum_GL_COLOR_ATTACHMENT15_EXT = GLenum(36079)
- GLenum_GL_COLOR_ATTACHMENT15_NV = GLenum(36079)
- GLenum_GL_COLOR_ATTACHMENT16 = GLenum(36080)
- GLenum_GL_COLOR_ATTACHMENT17 = GLenum(36081)
- GLenum_GL_COLOR_ATTACHMENT18 = GLenum(36082)
- GLenum_GL_COLOR_ATTACHMENT19 = GLenum(36083)
- GLenum_GL_COLOR_ATTACHMENT20 = GLenum(36084)
- GLenum_GL_COLOR_ATTACHMENT21 = GLenum(36085)
- GLenum_GL_COLOR_ATTACHMENT22 = GLenum(36086)
- GLenum_GL_COLOR_ATTACHMENT23 = GLenum(36087)
- GLenum_GL_COLOR_ATTACHMENT24 = GLenum(36088)
- GLenum_GL_COLOR_ATTACHMENT25 = GLenum(36089)
- GLenum_GL_COLOR_ATTACHMENT26 = GLenum(36090)
- GLenum_GL_COLOR_ATTACHMENT27 = GLenum(36091)
- GLenum_GL_COLOR_ATTACHMENT28 = GLenum(36092)
- GLenum_GL_COLOR_ATTACHMENT29 = GLenum(36093)
- GLenum_GL_COLOR_ATTACHMENT30 = GLenum(36094)
- GLenum_GL_COLOR_ATTACHMENT31 = GLenum(36095)
- GLenum_GL_DEPTH_ATTACHMENT = GLenum(36096)
- GLenum_GL_DEPTH_ATTACHMENT_EXT = GLenum(36096)
- GLenum_GL_DEPTH_ATTACHMENT_OES = GLenum(36096)
- GLenum_GL_STENCIL_ATTACHMENT = GLenum(36128)
- GLenum_GL_STENCIL_ATTACHMENT_EXT = GLenum(36128)
- GLenum_GL_STENCIL_ATTACHMENT_OES = GLenum(36128)
- GLenum_GL_FRAMEBUFFER = GLenum(36160)
- GLenum_GL_FRAMEBUFFER_EXT = GLenum(36160)
- GLenum_GL_FRAMEBUFFER_OES = GLenum(36160)
- GLenum_GL_RENDERBUFFER = GLenum(36161)
- GLenum_GL_RENDERBUFFER_EXT = GLenum(36161)
- GLenum_GL_RENDERBUFFER_OES = GLenum(36161)
- GLenum_GL_RENDERBUFFER_WIDTH = GLenum(36162)
- GLenum_GL_RENDERBUFFER_WIDTH_EXT = GLenum(36162)
- GLenum_GL_RENDERBUFFER_WIDTH_OES = GLenum(36162)
- GLenum_GL_RENDERBUFFER_HEIGHT = GLenum(36163)
- GLenum_GL_RENDERBUFFER_HEIGHT_EXT = GLenum(36163)
- GLenum_GL_RENDERBUFFER_HEIGHT_OES = GLenum(36163)
- GLenum_GL_RENDERBUFFER_INTERNAL_FORMAT = GLenum(36164)
- GLenum_GL_RENDERBUFFER_INTERNAL_FORMAT_EXT = GLenum(36164)
- GLenum_GL_RENDERBUFFER_INTERNAL_FORMAT_OES = GLenum(36164)
- GLenum_GL_STENCIL_INDEX1 = GLenum(36166)
- GLenum_GL_STENCIL_INDEX1_EXT = GLenum(36166)
- GLenum_GL_STENCIL_INDEX1_OES = GLenum(36166)
- GLenum_GL_STENCIL_INDEX4 = GLenum(36167)
- GLenum_GL_STENCIL_INDEX4_EXT = GLenum(36167)
- GLenum_GL_STENCIL_INDEX4_OES = GLenum(36167)
- GLenum_GL_STENCIL_INDEX8 = GLenum(36168)
- GLenum_GL_STENCIL_INDEX8_EXT = GLenum(36168)
- GLenum_GL_STENCIL_INDEX8_OES = GLenum(36168)
- GLenum_GL_STENCIL_INDEX16 = GLenum(36169)
- GLenum_GL_STENCIL_INDEX16_EXT = GLenum(36169)
- GLenum_GL_RENDERBUFFER_RED_SIZE = GLenum(36176)
- GLenum_GL_RENDERBUFFER_RED_SIZE_EXT = GLenum(36176)
- GLenum_GL_RENDERBUFFER_RED_SIZE_OES = GLenum(36176)
- GLenum_GL_RENDERBUFFER_GREEN_SIZE = GLenum(36177)
- GLenum_GL_RENDERBUFFER_GREEN_SIZE_EXT = GLenum(36177)
- GLenum_GL_RENDERBUFFER_GREEN_SIZE_OES = GLenum(36177)
- GLenum_GL_RENDERBUFFER_BLUE_SIZE = GLenum(36178)
- GLenum_GL_RENDERBUFFER_BLUE_SIZE_EXT = GLenum(36178)
- GLenum_GL_RENDERBUFFER_BLUE_SIZE_OES = GLenum(36178)
- GLenum_GL_RENDERBUFFER_ALPHA_SIZE = GLenum(36179)
- GLenum_GL_RENDERBUFFER_ALPHA_SIZE_EXT = GLenum(36179)
- GLenum_GL_RENDERBUFFER_ALPHA_SIZE_OES = GLenum(36179)
- GLenum_GL_RENDERBUFFER_DEPTH_SIZE = GLenum(36180)
- GLenum_GL_RENDERBUFFER_DEPTH_SIZE_EXT = GLenum(36180)
- GLenum_GL_RENDERBUFFER_DEPTH_SIZE_OES = GLenum(36180)
- GLenum_GL_RENDERBUFFER_STENCIL_SIZE = GLenum(36181)
- GLenum_GL_RENDERBUFFER_STENCIL_SIZE_EXT = GLenum(36181)
- GLenum_GL_RENDERBUFFER_STENCIL_SIZE_OES = GLenum(36181)
- GLenum_GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = GLenum(36182)
- GLenum_GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE = GLenum(36182)
- GLenum_GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE = GLenum(36182)
- GLenum_GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT = GLenum(36182)
- GLenum_GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV = GLenum(36182)
- GLenum_GL_MAX_SAMPLES = GLenum(36183)
- GLenum_GL_MAX_SAMPLES_ANGLE = GLenum(36183)
- GLenum_GL_MAX_SAMPLES_APPLE = GLenum(36183)
- GLenum_GL_MAX_SAMPLES_EXT = GLenum(36183)
- GLenum_GL_MAX_SAMPLES_NV = GLenum(36183)
- GLenum_GL_TEXTURE_GEN_STR_OES = GLenum(36192)
- GLenum_GL_HALF_FLOAT_OES = GLenum(36193)
- GLenum_GL_RGB565_OES = GLenum(36194)
- GLenum_GL_RGB565 = GLenum(36194)
- GLenum_GL_ETC1_RGB8_OES = GLenum(36196)
- GLenum_GL_TEXTURE_EXTERNAL_OES = GLenum(36197)
- GLenum_GL_SAMPLER_EXTERNAL_OES = GLenum(36198)
- GLenum_GL_TEXTURE_BINDING_EXTERNAL_OES = GLenum(36199)
- GLenum_GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES = GLenum(36200)
- GLenum_GL_PRIMITIVE_RESTART_FIXED_INDEX = GLenum(36201)
- GLenum_GL_ANY_SAMPLES_PASSED_CONSERVATIVE = GLenum(36202)
- GLenum_GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT = GLenum(36202)
- GLenum_GL_MAX_ELEMENT_INDEX = GLenum(36203)
- GLenum_GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT = GLenum(36204)
- GLenum_GL_RGBA32UI = GLenum(36208)
- GLenum_GL_RGBA32UI_EXT = GLenum(36208)
- GLenum_GL_RGB32UI = GLenum(36209)
- GLenum_GL_RGB32UI_EXT = GLenum(36209)
- GLenum_GL_ALPHA32UI_EXT = GLenum(36210)
- GLenum_GL_INTENSITY32UI_EXT = GLenum(36211)
- GLenum_GL_LUMINANCE32UI_EXT = GLenum(36212)
- GLenum_GL_LUMINANCE_ALPHA32UI_EXT = GLenum(36213)
- GLenum_GL_RGBA16UI = GLenum(36214)
- GLenum_GL_RGBA16UI_EXT = GLenum(36214)
- GLenum_GL_RGB16UI = GLenum(36215)
- GLenum_GL_RGB16UI_EXT = GLenum(36215)
- GLenum_GL_ALPHA16UI_EXT = GLenum(36216)
- GLenum_GL_INTENSITY16UI_EXT = GLenum(36217)
- GLenum_GL_LUMINANCE16UI_EXT = GLenum(36218)
- GLenum_GL_LUMINANCE_ALPHA16UI_EXT = GLenum(36219)
- GLenum_GL_RGBA8UI = GLenum(36220)
- GLenum_GL_RGBA8UI_EXT = GLenum(36220)
- GLenum_GL_RGB8UI = GLenum(36221)
- GLenum_GL_RGB8UI_EXT = GLenum(36221)
- GLenum_GL_ALPHA8UI_EXT = GLenum(36222)
- GLenum_GL_INTENSITY8UI_EXT = GLenum(36223)
- GLenum_GL_LUMINANCE8UI_EXT = GLenum(36224)
- GLenum_GL_LUMINANCE_ALPHA8UI_EXT = GLenum(36225)
- GLenum_GL_RGBA32I = GLenum(36226)
- GLenum_GL_RGBA32I_EXT = GLenum(36226)
- GLenum_GL_RGB32I = GLenum(36227)
- GLenum_GL_RGB32I_EXT = GLenum(36227)
- GLenum_GL_ALPHA32I_EXT = GLenum(36228)
- GLenum_GL_INTENSITY32I_EXT = GLenum(36229)
- GLenum_GL_LUMINANCE32I_EXT = GLenum(36230)
- GLenum_GL_LUMINANCE_ALPHA32I_EXT = GLenum(36231)
- GLenum_GL_RGBA16I = GLenum(36232)
- GLenum_GL_RGBA16I_EXT = GLenum(36232)
- GLenum_GL_RGB16I = GLenum(36233)
- GLenum_GL_RGB16I_EXT = GLenum(36233)
- GLenum_GL_ALPHA16I_EXT = GLenum(36234)
- GLenum_GL_INTENSITY16I_EXT = GLenum(36235)
- GLenum_GL_LUMINANCE16I_EXT = GLenum(36236)
- GLenum_GL_LUMINANCE_ALPHA16I_EXT = GLenum(36237)
- GLenum_GL_RGBA8I = GLenum(36238)
- GLenum_GL_RGBA8I_EXT = GLenum(36238)
- GLenum_GL_RGB8I = GLenum(36239)
- GLenum_GL_RGB8I_EXT = GLenum(36239)
- GLenum_GL_ALPHA8I_EXT = GLenum(36240)
- GLenum_GL_INTENSITY8I_EXT = GLenum(36241)
- GLenum_GL_LUMINANCE8I_EXT = GLenum(36242)
- GLenum_GL_LUMINANCE_ALPHA8I_EXT = GLenum(36243)
- GLenum_GL_RED_INTEGER = GLenum(36244)
- GLenum_GL_RED_INTEGER_EXT = GLenum(36244)
- GLenum_GL_GREEN_INTEGER = GLenum(36245)
- GLenum_GL_GREEN_INTEGER_EXT = GLenum(36245)
- GLenum_GL_BLUE_INTEGER = GLenum(36246)
- GLenum_GL_BLUE_INTEGER_EXT = GLenum(36246)
- GLenum_GL_ALPHA_INTEGER = GLenum(36247)
- GLenum_GL_ALPHA_INTEGER_EXT = GLenum(36247)
- GLenum_GL_RGB_INTEGER = GLenum(36248)
- GLenum_GL_RGB_INTEGER_EXT = GLenum(36248)
- GLenum_GL_RGBA_INTEGER = GLenum(36249)
- GLenum_GL_RGBA_INTEGER_EXT = GLenum(36249)
- GLenum_GL_BGR_INTEGER = GLenum(36250)
- GLenum_GL_BGR_INTEGER_EXT = GLenum(36250)
- GLenum_GL_BGRA_INTEGER = GLenum(36251)
- GLenum_GL_BGRA_INTEGER_EXT = GLenum(36251)
- GLenum_GL_LUMINANCE_INTEGER_EXT = GLenum(36252)
- GLenum_GL_LUMINANCE_ALPHA_INTEGER_EXT = GLenum(36253)
- GLenum_GL_RGBA_INTEGER_MODE_EXT = GLenum(36254)
- GLenum_GL_INT_2_10_10_10_REV = GLenum(36255)
- GLenum_GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV = GLenum(36256)
- GLenum_GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV = GLenum(36257)
- GLenum_GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV = GLenum(36258)
- GLenum_GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV = GLenum(36259)
- GLenum_GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV = GLenum(36260)
- GLenum_GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV = GLenum(36261)
- GLenum_GL_MAX_PROGRAM_GENERIC_RESULTS_NV = GLenum(36262)
- GLenum_GL_FRAMEBUFFER_ATTACHMENT_LAYERED = GLenum(36263)
- GLenum_GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB = GLenum(36263)
- GLenum_GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT = GLenum(36263)
- GLenum_GL_FRAMEBUFFER_ATTACHMENT_LAYERED_OES = GLenum(36263)
- GLenum_GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS = GLenum(36264)
- GLenum_GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB = GLenum(36264)
- GLenum_GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT = GLenum(36264)
- GLenum_GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_OES = GLenum(36264)
- GLenum_GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB = GLenum(36265)
- GLenum_GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT = GLenum(36265)
- GLenum_GL_LAYER_NV = GLenum(36266)
- GLenum_GL_DEPTH_COMPONENT32F_NV = GLenum(36267)
- GLenum_GL_DEPTH32F_STENCIL8_NV = GLenum(36268)
- GLenum_GL_FLOAT_32_UNSIGNED_INT_24_8_REV = GLenum(36269)
- GLenum_GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV = GLenum(36269)
- GLenum_GL_SHADER_INCLUDE_ARB = GLenum(36270)
- GLenum_GL_DEPTH_BUFFER_FLOAT_MODE_NV = GLenum(36271)
- GLenum_GL_FRAMEBUFFER_SRGB = GLenum(36281)
- GLenum_GL_FRAMEBUFFER_SRGB_EXT = GLenum(36281)
- GLenum_GL_FRAMEBUFFER_SRGB_CAPABLE_EXT = GLenum(36282)
- GLenum_GL_COMPRESSED_RED_RGTC1 = GLenum(36283)
- GLenum_GL_COMPRESSED_RED_RGTC1_EXT = GLenum(36283)
- GLenum_GL_COMPRESSED_SIGNED_RED_RGTC1 = GLenum(36284)
- GLenum_GL_COMPRESSED_SIGNED_RED_RGTC1_EXT = GLenum(36284)
- GLenum_GL_COMPRESSED_RED_GREEN_RGTC2_EXT = GLenum(36285)
- GLenum_GL_COMPRESSED_RG_RGTC2 = GLenum(36285)
- GLenum_GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT = GLenum(36286)
- GLenum_GL_COMPRESSED_SIGNED_RG_RGTC2 = GLenum(36286)
- GLenum_GL_SAMPLER_1D_ARRAY = GLenum(36288)
- GLenum_GL_SAMPLER_1D_ARRAY_EXT = GLenum(36288)
- GLenum_GL_SAMPLER_2D_ARRAY = GLenum(36289)
- GLenum_GL_SAMPLER_2D_ARRAY_EXT = GLenum(36289)
- GLenum_GL_SAMPLER_BUFFER = GLenum(36290)
- GLenum_GL_SAMPLER_BUFFER_EXT = GLenum(36290)
- GLenum_GL_SAMPLER_BUFFER_OES = GLenum(36290)
- GLenum_GL_SAMPLER_1D_ARRAY_SHADOW = GLenum(36291)
- GLenum_GL_SAMPLER_1D_ARRAY_SHADOW_EXT = GLenum(36291)
- GLenum_GL_SAMPLER_2D_ARRAY_SHADOW = GLenum(36292)
- GLenum_GL_SAMPLER_2D_ARRAY_SHADOW_EXT = GLenum(36292)
- GLenum_GL_SAMPLER_2D_ARRAY_SHADOW_NV = GLenum(36292)
- GLenum_GL_SAMPLER_CUBE_SHADOW = GLenum(36293)
- GLenum_GL_SAMPLER_CUBE_SHADOW_EXT = GLenum(36293)
- GLenum_GL_SAMPLER_CUBE_SHADOW_NV = GLenum(36293)
- GLenum_GL_UNSIGNED_INT_VEC2 = GLenum(36294)
- GLenum_GL_UNSIGNED_INT_VEC2_EXT = GLenum(36294)
- GLenum_GL_UNSIGNED_INT_VEC3 = GLenum(36295)
- GLenum_GL_UNSIGNED_INT_VEC3_EXT = GLenum(36295)
- GLenum_GL_UNSIGNED_INT_VEC4 = GLenum(36296)
- GLenum_GL_UNSIGNED_INT_VEC4_EXT = GLenum(36296)
- GLenum_GL_INT_SAMPLER_1D = GLenum(36297)
- GLenum_GL_INT_SAMPLER_1D_EXT = GLenum(36297)
- GLenum_GL_INT_SAMPLER_2D = GLenum(36298)
- GLenum_GL_INT_SAMPLER_2D_EXT = GLenum(36298)
- GLenum_GL_INT_SAMPLER_3D = GLenum(36299)
- GLenum_GL_INT_SAMPLER_3D_EXT = GLenum(36299)
- GLenum_GL_INT_SAMPLER_CUBE = GLenum(36300)
- GLenum_GL_INT_SAMPLER_CUBE_EXT = GLenum(36300)
- GLenum_GL_INT_SAMPLER_2D_RECT = GLenum(36301)
- GLenum_GL_INT_SAMPLER_2D_RECT_EXT = GLenum(36301)
- GLenum_GL_INT_SAMPLER_1D_ARRAY = GLenum(36302)
- GLenum_GL_INT_SAMPLER_1D_ARRAY_EXT = GLenum(36302)
- GLenum_GL_INT_SAMPLER_2D_ARRAY = GLenum(36303)
- GLenum_GL_INT_SAMPLER_2D_ARRAY_EXT = GLenum(36303)
- GLenum_GL_INT_SAMPLER_BUFFER = GLenum(36304)
- GLenum_GL_INT_SAMPLER_BUFFER_EXT = GLenum(36304)
- GLenum_GL_INT_SAMPLER_BUFFER_OES = GLenum(36304)
- GLenum_GL_UNSIGNED_INT_SAMPLER_1D = GLenum(36305)
- GLenum_GL_UNSIGNED_INT_SAMPLER_1D_EXT = GLenum(36305)
- GLenum_GL_UNSIGNED_INT_SAMPLER_2D = GLenum(36306)
- GLenum_GL_UNSIGNED_INT_SAMPLER_2D_EXT = GLenum(36306)
- GLenum_GL_UNSIGNED_INT_SAMPLER_3D = GLenum(36307)
- GLenum_GL_UNSIGNED_INT_SAMPLER_3D_EXT = GLenum(36307)
- GLenum_GL_UNSIGNED_INT_SAMPLER_CUBE = GLenum(36308)
- GLenum_GL_UNSIGNED_INT_SAMPLER_CUBE_EXT = GLenum(36308)
- GLenum_GL_UNSIGNED_INT_SAMPLER_2D_RECT = GLenum(36309)
- GLenum_GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT = GLenum(36309)
- GLenum_GL_UNSIGNED_INT_SAMPLER_1D_ARRAY = GLenum(36310)
- GLenum_GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT = GLenum(36310)
- GLenum_GL_UNSIGNED_INT_SAMPLER_2D_ARRAY = GLenum(36311)
- GLenum_GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT = GLenum(36311)
- GLenum_GL_UNSIGNED_INT_SAMPLER_BUFFER = GLenum(36312)
- GLenum_GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT = GLenum(36312)
- GLenum_GL_UNSIGNED_INT_SAMPLER_BUFFER_OES = GLenum(36312)
- GLenum_GL_GEOMETRY_SHADER = GLenum(36313)
- GLenum_GL_GEOMETRY_SHADER_ARB = GLenum(36313)
- GLenum_GL_GEOMETRY_SHADER_EXT = GLenum(36313)
- GLenum_GL_GEOMETRY_SHADER_OES = GLenum(36313)
- GLenum_GL_GEOMETRY_VERTICES_OUT_ARB = GLenum(36314)
- GLenum_GL_GEOMETRY_VERTICES_OUT_EXT = GLenum(36314)
- GLenum_GL_GEOMETRY_INPUT_TYPE_ARB = GLenum(36315)
- GLenum_GL_GEOMETRY_INPUT_TYPE_EXT = GLenum(36315)
- GLenum_GL_GEOMETRY_OUTPUT_TYPE_ARB = GLenum(36316)
- GLenum_GL_GEOMETRY_OUTPUT_TYPE_EXT = GLenum(36316)
- GLenum_GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB = GLenum(36317)
- GLenum_GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT = GLenum(36317)
- GLenum_GL_MAX_VERTEX_VARYING_COMPONENTS_ARB = GLenum(36318)
- GLenum_GL_MAX_VERTEX_VARYING_COMPONENTS_EXT = GLenum(36318)
- GLenum_GL_MAX_GEOMETRY_UNIFORM_COMPONENTS = GLenum(36319)
- GLenum_GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB = GLenum(36319)
- GLenum_GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT = GLenum(36319)
- GLenum_GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_OES = GLenum(36319)
- GLenum_GL_MAX_GEOMETRY_OUTPUT_VERTICES = GLenum(36320)
- GLenum_GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB = GLenum(36320)
- GLenum_GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT = GLenum(36320)
- GLenum_GL_MAX_GEOMETRY_OUTPUT_VERTICES_OES = GLenum(36320)
- GLenum_GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS = GLenum(36321)
- GLenum_GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB = GLenum(36321)
- GLenum_GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT = GLenum(36321)
- GLenum_GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_OES = GLenum(36321)
- GLenum_GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT = GLenum(36322)
- GLenum_GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT = GLenum(36323)
- GLenum_GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT = GLenum(36324)
- GLenum_GL_ACTIVE_SUBROUTINES = GLenum(36325)
- GLenum_GL_ACTIVE_SUBROUTINE_UNIFORMS = GLenum(36326)
- GLenum_GL_MAX_SUBROUTINES = GLenum(36327)
- GLenum_GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS = GLenum(36328)
- GLenum_GL_NAMED_STRING_LENGTH_ARB = GLenum(36329)
- GLenum_GL_NAMED_STRING_TYPE_ARB = GLenum(36330)
- GLenum_GL_MAX_BINDABLE_UNIFORM_SIZE_EXT = GLenum(36333)
- GLenum_GL_UNIFORM_BUFFER_EXT = GLenum(36334)
- GLenum_GL_UNIFORM_BUFFER_BINDING_EXT = GLenum(36335)
- GLenum_GL_LOW_FLOAT = GLenum(36336)
- GLenum_GL_MEDIUM_FLOAT = GLenum(36337)
- GLenum_GL_HIGH_FLOAT = GLenum(36338)
- GLenum_GL_LOW_INT = GLenum(36339)
- GLenum_GL_MEDIUM_INT = GLenum(36340)
- GLenum_GL_HIGH_INT = GLenum(36341)
- GLenum_GL_UNSIGNED_INT_10_10_10_2_OES = GLenum(36342)
- GLenum_GL_INT_10_10_10_2_OES = GLenum(36343)
- GLenum_GL_SHADER_BINARY_FORMATS = GLenum(36344)
- GLenum_GL_NUM_SHADER_BINARY_FORMATS = GLenum(36345)
- GLenum_GL_SHADER_COMPILER = GLenum(36346)
- GLenum_GL_MAX_VERTEX_UNIFORM_VECTORS = GLenum(36347)
- GLenum_GL_MAX_VARYING_VECTORS = GLenum(36348)
- GLenum_GL_MAX_FRAGMENT_UNIFORM_VECTORS = GLenum(36349)
- GLenum_GL_RENDERBUFFER_COLOR_SAMPLES_NV = GLenum(36368)
- GLenum_GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV = GLenum(36369)
- GLenum_GL_MULTISAMPLE_COVERAGE_MODES_NV = GLenum(36370)
- GLenum_GL_QUERY_WAIT = GLenum(36371)
- GLenum_GL_QUERY_WAIT_NV = GLenum(36371)
- GLenum_GL_QUERY_NO_WAIT = GLenum(36372)
- GLenum_GL_QUERY_NO_WAIT_NV = GLenum(36372)
- GLenum_GL_QUERY_BY_REGION_WAIT = GLenum(36373)
- GLenum_GL_QUERY_BY_REGION_WAIT_NV = GLenum(36373)
- GLenum_GL_QUERY_BY_REGION_NO_WAIT = GLenum(36374)
- GLenum_GL_QUERY_BY_REGION_NO_WAIT_NV = GLenum(36374)
- GLenum_GL_QUERY_WAIT_INVERTED = GLenum(36375)
- GLenum_GL_QUERY_NO_WAIT_INVERTED = GLenum(36376)
- GLenum_GL_QUERY_BY_REGION_WAIT_INVERTED = GLenum(36377)
- GLenum_GL_QUERY_BY_REGION_NO_WAIT_INVERTED = GLenum(36378)
- GLenum_GL_POLYGON_OFFSET_CLAMP_EXT = GLenum(36379)
- GLenum_GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS = GLenum(36382)
- GLenum_GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT = GLenum(36382)
- GLenum_GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_OES = GLenum(36382)
- GLenum_GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS = GLenum(36383)
- GLenum_GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT = GLenum(36383)
- GLenum_GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_OES = GLenum(36383)
- GLenum_GL_COLOR_SAMPLES_NV = GLenum(36384)
- GLenum_GL_TRANSFORM_FEEDBACK = GLenum(36386)
- GLenum_GL_TRANSFORM_FEEDBACK_NV = GLenum(36386)
- GLenum_GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED = GLenum(36387)
- GLenum_GL_TRANSFORM_FEEDBACK_PAUSED = GLenum(36387)
- GLenum_GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV = GLenum(36387)
- GLenum_GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE = GLenum(36388)
- GLenum_GL_TRANSFORM_FEEDBACK_ACTIVE = GLenum(36388)
- GLenum_GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV = GLenum(36388)
- GLenum_GL_TRANSFORM_FEEDBACK_BINDING = GLenum(36389)
- GLenum_GL_TRANSFORM_FEEDBACK_BINDING_NV = GLenum(36389)
- GLenum_GL_FRAME_NV = GLenum(36390)
- GLenum_GL_FIELDS_NV = GLenum(36391)
- GLenum_GL_CURRENT_TIME_NV = GLenum(36392)
- GLenum_GL_TIMESTAMP = GLenum(36392)
- GLenum_GL_TIMESTAMP_EXT = GLenum(36392)
- GLenum_GL_NUM_FILL_STREAMS_NV = GLenum(36393)
- GLenum_GL_PRESENT_TIME_NV = GLenum(36394)
- GLenum_GL_PRESENT_DURATION_NV = GLenum(36395)
- GLenum_GL_DEPTH_COMPONENT16_NONLINEAR_NV = GLenum(36396)
- GLenum_GL_PROGRAM_MATRIX_EXT = GLenum(36397)
- GLenum_GL_TRANSPOSE_PROGRAM_MATRIX_EXT = GLenum(36398)
- GLenum_GL_PROGRAM_MATRIX_STACK_DEPTH_EXT = GLenum(36399)
- GLenum_GL_TEXTURE_SWIZZLE_R = GLenum(36418)
- GLenum_GL_TEXTURE_SWIZZLE_R_EXT = GLenum(36418)
- GLenum_GL_TEXTURE_SWIZZLE_G = GLenum(36419)
- GLenum_GL_TEXTURE_SWIZZLE_G_EXT = GLenum(36419)
- GLenum_GL_TEXTURE_SWIZZLE_B = GLenum(36420)
- GLenum_GL_TEXTURE_SWIZZLE_B_EXT = GLenum(36420)
- GLenum_GL_TEXTURE_SWIZZLE_A = GLenum(36421)
- GLenum_GL_TEXTURE_SWIZZLE_A_EXT = GLenum(36421)
- GLenum_GL_TEXTURE_SWIZZLE_RGBA = GLenum(36422)
- GLenum_GL_TEXTURE_SWIZZLE_RGBA_EXT = GLenum(36422)
- GLenum_GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS = GLenum(36423)
- GLenum_GL_ACTIVE_SUBROUTINE_MAX_LENGTH = GLenum(36424)
- GLenum_GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH = GLenum(36425)
- GLenum_GL_NUM_COMPATIBLE_SUBROUTINES = GLenum(36426)
- GLenum_GL_COMPATIBLE_SUBROUTINES = GLenum(36427)
- GLenum_GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION = GLenum(36428)
- GLenum_GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT = GLenum(36428)
- GLenum_GL_FIRST_VERTEX_CONVENTION = GLenum(36429)
- GLenum_GL_FIRST_VERTEX_CONVENTION_EXT = GLenum(36429)
- GLenum_GL_FIRST_VERTEX_CONVENTION_OES = GLenum(36429)
- GLenum_GL_LAST_VERTEX_CONVENTION = GLenum(36430)
- GLenum_GL_LAST_VERTEX_CONVENTION_EXT = GLenum(36430)
- GLenum_GL_LAST_VERTEX_CONVENTION_OES = GLenum(36430)
- GLenum_GL_PROVOKING_VERTEX = GLenum(36431)
- GLenum_GL_PROVOKING_VERTEX_EXT = GLenum(36431)
- GLenum_GL_SAMPLE_POSITION = GLenum(36432)
- GLenum_GL_SAMPLE_POSITION_NV = GLenum(36432)
- GLenum_GL_SAMPLE_LOCATION_ARB = GLenum(36432)
- GLenum_GL_SAMPLE_LOCATION_NV = GLenum(36432)
- GLenum_GL_SAMPLE_MASK = GLenum(36433)
- GLenum_GL_SAMPLE_MASK_NV = GLenum(36433)
- GLenum_GL_SAMPLE_MASK_VALUE = GLenum(36434)
- GLenum_GL_SAMPLE_MASK_VALUE_NV = GLenum(36434)
- GLenum_GL_TEXTURE_BINDING_RENDERBUFFER_NV = GLenum(36435)
- GLenum_GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV = GLenum(36436)
- GLenum_GL_TEXTURE_RENDERBUFFER_NV = GLenum(36437)
- GLenum_GL_SAMPLER_RENDERBUFFER_NV = GLenum(36438)
- GLenum_GL_INT_SAMPLER_RENDERBUFFER_NV = GLenum(36439)
- GLenum_GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV = GLenum(36440)
- GLenum_GL_MAX_SAMPLE_MASK_WORDS = GLenum(36441)
- GLenum_GL_MAX_SAMPLE_MASK_WORDS_NV = GLenum(36441)
- GLenum_GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV = GLenum(36442)
- GLenum_GL_MAX_GEOMETRY_SHADER_INVOCATIONS = GLenum(36442)
- GLenum_GL_MAX_GEOMETRY_SHADER_INVOCATIONS_EXT = GLenum(36442)
- GLenum_GL_MAX_GEOMETRY_SHADER_INVOCATIONS_OES = GLenum(36442)
- GLenum_GL_MIN_FRAGMENT_INTERPOLATION_OFFSET = GLenum(36443)
- GLenum_GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_OES = GLenum(36443)
- GLenum_GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV = GLenum(36443)
- GLenum_GL_MAX_FRAGMENT_INTERPOLATION_OFFSET = GLenum(36444)
- GLenum_GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_OES = GLenum(36444)
- GLenum_GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV = GLenum(36444)
- GLenum_GL_FRAGMENT_INTERPOLATION_OFFSET_BITS = GLenum(36445)
- GLenum_GL_FRAGMENT_INTERPOLATION_OFFSET_BITS_OES = GLenum(36445)
- GLenum_GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV = GLenum(36445)
- GLenum_GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET = GLenum(36446)
- GLenum_GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB = GLenum(36446)
- GLenum_GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV = GLenum(36446)
- GLenum_GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET = GLenum(36447)
- GLenum_GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB = GLenum(36447)
- GLenum_GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV = GLenum(36447)
- GLenum_GL_MAX_TRANSFORM_FEEDBACK_BUFFERS = GLenum(36464)
- GLenum_GL_MAX_VERTEX_STREAMS = GLenum(36465)
- GLenum_GL_PATCH_VERTICES = GLenum(36466)
- GLenum_GL_PATCH_VERTICES_EXT = GLenum(36466)
- GLenum_GL_PATCH_VERTICES_OES = GLenum(36466)
- GLenum_GL_PATCH_DEFAULT_INNER_LEVEL = GLenum(36467)
- GLenum_GL_PATCH_DEFAULT_INNER_LEVEL_EXT = GLenum(36467)
- GLenum_GL_PATCH_DEFAULT_OUTER_LEVEL = GLenum(36468)
- GLenum_GL_PATCH_DEFAULT_OUTER_LEVEL_EXT = GLenum(36468)
- GLenum_GL_TESS_CONTROL_OUTPUT_VERTICES = GLenum(36469)
- GLenum_GL_TESS_CONTROL_OUTPUT_VERTICES_EXT = GLenum(36469)
- GLenum_GL_TESS_CONTROL_OUTPUT_VERTICES_OES = GLenum(36469)
- GLenum_GL_TESS_GEN_MODE = GLenum(36470)
- GLenum_GL_TESS_GEN_MODE_EXT = GLenum(36470)
- GLenum_GL_TESS_GEN_MODE_OES = GLenum(36470)
- GLenum_GL_TESS_GEN_SPACING = GLenum(36471)
- GLenum_GL_TESS_GEN_SPACING_EXT = GLenum(36471)
- GLenum_GL_TESS_GEN_SPACING_OES = GLenum(36471)
- GLenum_GL_TESS_GEN_VERTEX_ORDER = GLenum(36472)
- GLenum_GL_TESS_GEN_VERTEX_ORDER_EXT = GLenum(36472)
- GLenum_GL_TESS_GEN_VERTEX_ORDER_OES = GLenum(36472)
- GLenum_GL_TESS_GEN_POINT_MODE = GLenum(36473)
- GLenum_GL_TESS_GEN_POINT_MODE_EXT = GLenum(36473)
- GLenum_GL_TESS_GEN_POINT_MODE_OES = GLenum(36473)
- GLenum_GL_ISOLINES = GLenum(36474)
- GLenum_GL_ISOLINES_EXT = GLenum(36474)
- GLenum_GL_ISOLINES_OES = GLenum(36474)
- GLenum_GL_FRACTIONAL_ODD = GLenum(36475)
- GLenum_GL_FRACTIONAL_ODD_EXT = GLenum(36475)
- GLenum_GL_FRACTIONAL_ODD_OES = GLenum(36475)
- GLenum_GL_FRACTIONAL_EVEN = GLenum(36476)
- GLenum_GL_FRACTIONAL_EVEN_EXT = GLenum(36476)
- GLenum_GL_FRACTIONAL_EVEN_OES = GLenum(36476)
- GLenum_GL_MAX_PATCH_VERTICES = GLenum(36477)
- GLenum_GL_MAX_PATCH_VERTICES_EXT = GLenum(36477)
- GLenum_GL_MAX_PATCH_VERTICES_OES = GLenum(36477)
- GLenum_GL_MAX_TESS_GEN_LEVEL = GLenum(36478)
- GLenum_GL_MAX_TESS_GEN_LEVEL_EXT = GLenum(36478)
- GLenum_GL_MAX_TESS_GEN_LEVEL_OES = GLenum(36478)
- GLenum_GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS = GLenum(36479)
- GLenum_GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_EXT = GLenum(36479)
- GLenum_GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_OES = GLenum(36479)
- GLenum_GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS = GLenum(36480)
- GLenum_GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT = GLenum(36480)
- GLenum_GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_OES = GLenum(36480)
- GLenum_GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS = GLenum(36481)
- GLenum_GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_EXT = GLenum(36481)
- GLenum_GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_OES = GLenum(36481)
- GLenum_GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS = GLenum(36482)
- GLenum_GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_EXT = GLenum(36482)
- GLenum_GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_OES = GLenum(36482)
- GLenum_GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS = GLenum(36483)
- GLenum_GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_EXT = GLenum(36483)
- GLenum_GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_OES = GLenum(36483)
- GLenum_GL_MAX_TESS_PATCH_COMPONENTS = GLenum(36484)
- GLenum_GL_MAX_TESS_PATCH_COMPONENTS_EXT = GLenum(36484)
- GLenum_GL_MAX_TESS_PATCH_COMPONENTS_OES = GLenum(36484)
- GLenum_GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS = GLenum(36485)
- GLenum_GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_EXT = GLenum(36485)
- GLenum_GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_OES = GLenum(36485)
- GLenum_GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS = GLenum(36486)
- GLenum_GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_EXT = GLenum(36486)
- GLenum_GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_OES = GLenum(36486)
- GLenum_GL_TESS_EVALUATION_SHADER = GLenum(36487)
- GLenum_GL_TESS_EVALUATION_SHADER_EXT = GLenum(36487)
- GLenum_GL_TESS_EVALUATION_SHADER_OES = GLenum(36487)
- GLenum_GL_TESS_CONTROL_SHADER = GLenum(36488)
- GLenum_GL_TESS_CONTROL_SHADER_EXT = GLenum(36488)
- GLenum_GL_TESS_CONTROL_SHADER_OES = GLenum(36488)
- GLenum_GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS = GLenum(36489)
- GLenum_GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_EXT = GLenum(36489)
- GLenum_GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_OES = GLenum(36489)
- GLenum_GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS = GLenum(36490)
- GLenum_GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_EXT = GLenum(36490)
- GLenum_GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_OES = GLenum(36490)
- GLenum_GL_COMPRESSED_RGBA_BPTC_UNORM = GLenum(36492)
- GLenum_GL_COMPRESSED_RGBA_BPTC_UNORM_ARB = GLenum(36492)
- GLenum_GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM = GLenum(36493)
- GLenum_GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB = GLenum(36493)
- GLenum_GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT = GLenum(36494)
- GLenum_GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB = GLenum(36494)
- GLenum_GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT = GLenum(36495)
- GLenum_GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB = GLenum(36495)
- GLenum_GL_COVERAGE_COMPONENT_NV = GLenum(36560)
- GLenum_GL_COVERAGE_COMPONENT4_NV = GLenum(36561)
- GLenum_GL_COVERAGE_ATTACHMENT_NV = GLenum(36562)
- GLenum_GL_COVERAGE_BUFFERS_NV = GLenum(36563)
- GLenum_GL_COVERAGE_SAMPLES_NV = GLenum(36564)
- GLenum_GL_COVERAGE_ALL_FRAGMENTS_NV = GLenum(36565)
- GLenum_GL_COVERAGE_EDGE_FRAGMENTS_NV = GLenum(36566)
- GLenum_GL_COVERAGE_AUTOMATIC_NV = GLenum(36567)
- GLenum_GL_BUFFER_GPU_ADDRESS_NV = GLenum(36637)
- GLenum_GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV = GLenum(36638)
- GLenum_GL_ELEMENT_ARRAY_UNIFIED_NV = GLenum(36639)
- GLenum_GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV = GLenum(36640)
- GLenum_GL_VERTEX_ARRAY_ADDRESS_NV = GLenum(36641)
- GLenum_GL_NORMAL_ARRAY_ADDRESS_NV = GLenum(36642)
- GLenum_GL_COLOR_ARRAY_ADDRESS_NV = GLenum(36643)
- GLenum_GL_INDEX_ARRAY_ADDRESS_NV = GLenum(36644)
- GLenum_GL_TEXTURE_COORD_ARRAY_ADDRESS_NV = GLenum(36645)
- GLenum_GL_EDGE_FLAG_ARRAY_ADDRESS_NV = GLenum(36646)
- GLenum_GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV = GLenum(36647)
- GLenum_GL_FOG_COORD_ARRAY_ADDRESS_NV = GLenum(36648)
- GLenum_GL_ELEMENT_ARRAY_ADDRESS_NV = GLenum(36649)
- GLenum_GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV = GLenum(36650)
- GLenum_GL_VERTEX_ARRAY_LENGTH_NV = GLenum(36651)
- GLenum_GL_NORMAL_ARRAY_LENGTH_NV = GLenum(36652)
- GLenum_GL_COLOR_ARRAY_LENGTH_NV = GLenum(36653)
- GLenum_GL_INDEX_ARRAY_LENGTH_NV = GLenum(36654)
- GLenum_GL_TEXTURE_COORD_ARRAY_LENGTH_NV = GLenum(36655)
- GLenum_GL_EDGE_FLAG_ARRAY_LENGTH_NV = GLenum(36656)
- GLenum_GL_SECONDARY_COLOR_ARRAY_LENGTH_NV = GLenum(36657)
- GLenum_GL_FOG_COORD_ARRAY_LENGTH_NV = GLenum(36658)
- GLenum_GL_ELEMENT_ARRAY_LENGTH_NV = GLenum(36659)
- GLenum_GL_GPU_ADDRESS_NV = GLenum(36660)
- GLenum_GL_MAX_SHADER_BUFFER_ADDRESS_NV = GLenum(36661)
- GLenum_GL_COPY_READ_BUFFER = GLenum(36662)
- GLenum_GL_COPY_READ_BUFFER_NV = GLenum(36662)
- GLenum_GL_COPY_READ_BUFFER_BINDING = GLenum(36662)
- GLenum_GL_COPY_WRITE_BUFFER = GLenum(36663)
- GLenum_GL_COPY_WRITE_BUFFER_NV = GLenum(36663)
- GLenum_GL_COPY_WRITE_BUFFER_BINDING = GLenum(36663)
- GLenum_GL_MAX_IMAGE_UNITS = GLenum(36664)
- GLenum_GL_MAX_IMAGE_UNITS_EXT = GLenum(36664)
- GLenum_GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS = GLenum(36665)
- GLenum_GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT = GLenum(36665)
- GLenum_GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES = GLenum(36665)
- GLenum_GL_IMAGE_BINDING_NAME = GLenum(36666)
- GLenum_GL_IMAGE_BINDING_NAME_EXT = GLenum(36666)
- GLenum_GL_IMAGE_BINDING_LEVEL = GLenum(36667)
- GLenum_GL_IMAGE_BINDING_LEVEL_EXT = GLenum(36667)
- GLenum_GL_IMAGE_BINDING_LAYERED = GLenum(36668)
- GLenum_GL_IMAGE_BINDING_LAYERED_EXT = GLenum(36668)
- GLenum_GL_IMAGE_BINDING_LAYER = GLenum(36669)
- GLenum_GL_IMAGE_BINDING_LAYER_EXT = GLenum(36669)
- GLenum_GL_IMAGE_BINDING_ACCESS = GLenum(36670)
- GLenum_GL_IMAGE_BINDING_ACCESS_EXT = GLenum(36670)
- GLenum_GL_DRAW_INDIRECT_BUFFER = GLenum(36671)
- GLenum_GL_DRAW_INDIRECT_UNIFIED_NV = GLenum(36672)
- GLenum_GL_DRAW_INDIRECT_ADDRESS_NV = GLenum(36673)
- GLenum_GL_DRAW_INDIRECT_LENGTH_NV = GLenum(36674)
- GLenum_GL_DRAW_INDIRECT_BUFFER_BINDING = GLenum(36675)
- GLenum_GL_MAX_PROGRAM_SUBROUTINE_PARAMETERS_NV = GLenum(36676)
- GLenum_GL_MAX_PROGRAM_SUBROUTINE_NUM_NV = GLenum(36677)
- GLenum_GL_DOUBLE_MAT2 = GLenum(36678)
- GLenum_GL_DOUBLE_MAT2_EXT = GLenum(36678)
- GLenum_GL_DOUBLE_MAT3 = GLenum(36679)
- GLenum_GL_DOUBLE_MAT3_EXT = GLenum(36679)
- GLenum_GL_DOUBLE_MAT4 = GLenum(36680)
- GLenum_GL_DOUBLE_MAT4_EXT = GLenum(36680)
- GLenum_GL_DOUBLE_MAT2x3 = GLenum(36681)
- GLenum_GL_DOUBLE_MAT2x3_EXT = GLenum(36681)
- GLenum_GL_DOUBLE_MAT2x4 = GLenum(36682)
- GLenum_GL_DOUBLE_MAT2x4_EXT = GLenum(36682)
- GLenum_GL_DOUBLE_MAT3x2 = GLenum(36683)
- GLenum_GL_DOUBLE_MAT3x2_EXT = GLenum(36683)
- GLenum_GL_DOUBLE_MAT3x4 = GLenum(36684)
- GLenum_GL_DOUBLE_MAT3x4_EXT = GLenum(36684)
- GLenum_GL_DOUBLE_MAT4x2 = GLenum(36685)
- GLenum_GL_DOUBLE_MAT4x2_EXT = GLenum(36685)
- GLenum_GL_DOUBLE_MAT4x3 = GLenum(36686)
- GLenum_GL_DOUBLE_MAT4x3_EXT = GLenum(36686)
- GLenum_GL_VERTEX_BINDING_BUFFER = GLenum(36687)
- GLenum_GL_MALI_SHADER_BINARY_ARM = GLenum(36704)
- GLenum_GL_MALI_PROGRAM_BINARY_ARM = GLenum(36705)
- GLenum_GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT = GLenum(36707)
- GLenum_GL_SHADER_PIXEL_LOCAL_STORAGE_EXT = GLenum(36708)
- GLenum_GL_FETCH_PER_SAMPLE_ARM = GLenum(36709)
- GLenum_GL_FRAGMENT_SHADER_FRAMEBUFFER_FETCH_MRT_ARM = GLenum(36710)
- GLenum_GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_SIZE_EXT = GLenum(36711)
- GLenum_GL_RED_SNORM = GLenum(36752)
- GLenum_GL_RG_SNORM = GLenum(36753)
- GLenum_GL_RGB_SNORM = GLenum(36754)
- GLenum_GL_RGBA_SNORM = GLenum(36755)
- GLenum_GL_R8_SNORM = GLenum(36756)
- GLenum_GL_RG8_SNORM = GLenum(36757)
- GLenum_GL_RGB8_SNORM = GLenum(36758)
- GLenum_GL_RGBA8_SNORM = GLenum(36759)
- GLenum_GL_R16_SNORM = GLenum(36760)
- GLenum_GL_R16_SNORM_EXT = GLenum(36760)
- GLenum_GL_RG16_SNORM = GLenum(36761)
- GLenum_GL_RG16_SNORM_EXT = GLenum(36761)
- GLenum_GL_RGB16_SNORM = GLenum(36762)
- GLenum_GL_RGB16_SNORM_EXT = GLenum(36762)
- GLenum_GL_RGBA16_SNORM = GLenum(36763)
- GLenum_GL_RGBA16_SNORM_EXT = GLenum(36763)
- GLenum_GL_SIGNED_NORMALIZED = GLenum(36764)
- GLenum_GL_PRIMITIVE_RESTART = GLenum(36765)
- GLenum_GL_PRIMITIVE_RESTART_INDEX = GLenum(36766)
- GLenum_GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB = GLenum(36767)
- GLenum_GL_PERFMON_GLOBAL_MODE_QCOM = GLenum(36768)
- GLenum_GL_BINNING_CONTROL_HINT_QCOM = GLenum(36784)
- GLenum_GL_CPU_OPTIMIZED_QCOM = GLenum(36785)
- GLenum_GL_GPU_OPTIMIZED_QCOM = GLenum(36786)
- GLenum_GL_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM = GLenum(36787)
- GLenum_GL_GPU_DISJOINT_EXT = GLenum(36795)
- GLenum_GL_SR8_EXT = GLenum(36797)
- GLenum_GL_SRG8_EXT = GLenum(36798)
- GLenum_GL_SHADER_BINARY_VIV = GLenum(36804)
- GLenum_GL_INT8_NV = GLenum(36832)
- GLenum_GL_INT8_VEC2_NV = GLenum(36833)
- GLenum_GL_INT8_VEC3_NV = GLenum(36834)
- GLenum_GL_INT8_VEC4_NV = GLenum(36835)
- GLenum_GL_INT16_NV = GLenum(36836)
- GLenum_GL_INT16_VEC2_NV = GLenum(36837)
- GLenum_GL_INT16_VEC3_NV = GLenum(36838)
- GLenum_GL_INT16_VEC4_NV = GLenum(36839)
- GLenum_GL_INT64_VEC2_ARB = GLenum(36841)
- GLenum_GL_INT64_VEC2_NV = GLenum(36841)
- GLenum_GL_INT64_VEC3_ARB = GLenum(36842)
- GLenum_GL_INT64_VEC3_NV = GLenum(36842)
- GLenum_GL_INT64_VEC4_ARB = GLenum(36843)
- GLenum_GL_INT64_VEC4_NV = GLenum(36843)
- GLenum_GL_UNSIGNED_INT8_NV = GLenum(36844)
- GLenum_GL_UNSIGNED_INT8_VEC2_NV = GLenum(36845)
- GLenum_GL_UNSIGNED_INT8_VEC3_NV = GLenum(36846)
- GLenum_GL_UNSIGNED_INT8_VEC4_NV = GLenum(36847)
- GLenum_GL_UNSIGNED_INT16_NV = GLenum(36848)
- GLenum_GL_UNSIGNED_INT16_VEC2_NV = GLenum(36849)
- GLenum_GL_UNSIGNED_INT16_VEC3_NV = GLenum(36850)
- GLenum_GL_UNSIGNED_INT16_VEC4_NV = GLenum(36851)
- GLenum_GL_UNSIGNED_INT64_VEC2_ARB = GLenum(36853)
- GLenum_GL_UNSIGNED_INT64_VEC2_NV = GLenum(36853)
- GLenum_GL_UNSIGNED_INT64_VEC3_ARB = GLenum(36854)
- GLenum_GL_UNSIGNED_INT64_VEC3_NV = GLenum(36854)
- GLenum_GL_UNSIGNED_INT64_VEC4_ARB = GLenum(36855)
- GLenum_GL_UNSIGNED_INT64_VEC4_NV = GLenum(36855)
- GLenum_GL_FLOAT16_NV = GLenum(36856)
- GLenum_GL_FLOAT16_VEC2_NV = GLenum(36857)
- GLenum_GL_FLOAT16_VEC3_NV = GLenum(36858)
- GLenum_GL_FLOAT16_VEC4_NV = GLenum(36859)
- GLenum_GL_DOUBLE_VEC2 = GLenum(36860)
- GLenum_GL_DOUBLE_VEC2_EXT = GLenum(36860)
- GLenum_GL_DOUBLE_VEC3 = GLenum(36861)
- GLenum_GL_DOUBLE_VEC3_EXT = GLenum(36861)
- GLenum_GL_DOUBLE_VEC4 = GLenum(36862)
- GLenum_GL_DOUBLE_VEC4_EXT = GLenum(36862)
- GLenum_GL_SAMPLER_BUFFER_AMD = GLenum(36865)
- GLenum_GL_INT_SAMPLER_BUFFER_AMD = GLenum(36866)
- GLenum_GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD = GLenum(36867)
- GLenum_GL_TESSELLATION_MODE_AMD = GLenum(36868)
- GLenum_GL_TESSELLATION_FACTOR_AMD = GLenum(36869)
- GLenum_GL_DISCRETE_AMD = GLenum(36870)
- GLenum_GL_CONTINUOUS_AMD = GLenum(36871)
- GLenum_GL_TEXTURE_CUBE_MAP_ARRAY = GLenum(36873)
- GLenum_GL_TEXTURE_CUBE_MAP_ARRAY_ARB = GLenum(36873)
- GLenum_GL_TEXTURE_CUBE_MAP_ARRAY_EXT = GLenum(36873)
- GLenum_GL_TEXTURE_CUBE_MAP_ARRAY_OES = GLenum(36873)
- GLenum_GL_TEXTURE_BINDING_CUBE_MAP_ARRAY = GLenum(36874)
- GLenum_GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB = GLenum(36874)
- GLenum_GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_EXT = GLenum(36874)
- GLenum_GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_OES = GLenum(36874)
- GLenum_GL_PROXY_TEXTURE_CUBE_MAP_ARRAY = GLenum(36875)
- GLenum_GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB = GLenum(36875)
- GLenum_GL_SAMPLER_CUBE_MAP_ARRAY = GLenum(36876)
- GLenum_GL_SAMPLER_CUBE_MAP_ARRAY_ARB = GLenum(36876)
- GLenum_GL_SAMPLER_CUBE_MAP_ARRAY_EXT = GLenum(36876)
- GLenum_GL_SAMPLER_CUBE_MAP_ARRAY_OES = GLenum(36876)
- GLenum_GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW = GLenum(36877)
- GLenum_GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB = GLenum(36877)
- GLenum_GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_EXT = GLenum(36877)
- GLenum_GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_OES = GLenum(36877)
- GLenum_GL_INT_SAMPLER_CUBE_MAP_ARRAY = GLenum(36878)
- GLenum_GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB = GLenum(36878)
- GLenum_GL_INT_SAMPLER_CUBE_MAP_ARRAY_EXT = GLenum(36878)
- GLenum_GL_INT_SAMPLER_CUBE_MAP_ARRAY_OES = GLenum(36878)
- GLenum_GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY = GLenum(36879)
- GLenum_GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB = GLenum(36879)
- GLenum_GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_EXT = GLenum(36879)
- GLenum_GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_OES = GLenum(36879)
- GLenum_GL_ALPHA_SNORM = GLenum(36880)
- GLenum_GL_LUMINANCE_SNORM = GLenum(36881)
- GLenum_GL_LUMINANCE_ALPHA_SNORM = GLenum(36882)
- GLenum_GL_INTENSITY_SNORM = GLenum(36883)
- GLenum_GL_ALPHA8_SNORM = GLenum(36884)
- GLenum_GL_LUMINANCE8_SNORM = GLenum(36885)
- GLenum_GL_LUMINANCE8_ALPHA8_SNORM = GLenum(36886)
- GLenum_GL_INTENSITY8_SNORM = GLenum(36887)
- GLenum_GL_ALPHA16_SNORM = GLenum(36888)
- GLenum_GL_LUMINANCE16_SNORM = GLenum(36889)
- GLenum_GL_LUMINANCE16_ALPHA16_SNORM = GLenum(36890)
- GLenum_GL_INTENSITY16_SNORM = GLenum(36891)
- GLenum_GL_FACTOR_MIN_AMD = GLenum(36892)
- GLenum_GL_FACTOR_MAX_AMD = GLenum(36893)
- GLenum_GL_DEPTH_CLAMP_NEAR_AMD = GLenum(36894)
- GLenum_GL_DEPTH_CLAMP_FAR_AMD = GLenum(36895)
- GLenum_GL_VIDEO_BUFFER_NV = GLenum(36896)
- GLenum_GL_VIDEO_BUFFER_BINDING_NV = GLenum(36897)
- GLenum_GL_FIELD_UPPER_NV = GLenum(36898)
- GLenum_GL_FIELD_LOWER_NV = GLenum(36899)
- GLenum_GL_NUM_VIDEO_CAPTURE_STREAMS_NV = GLenum(36900)
- GLenum_GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV = GLenum(36901)
- GLenum_GL_VIDEO_CAPTURE_TO_422_SUPPORTED_NV = GLenum(36902)
- GLenum_GL_LAST_VIDEO_CAPTURE_STATUS_NV = GLenum(36903)
- GLenum_GL_VIDEO_BUFFER_PITCH_NV = GLenum(36904)
- GLenum_GL_VIDEO_COLOR_CONVERSION_MATRIX_NV = GLenum(36905)
- GLenum_GL_VIDEO_COLOR_CONVERSION_MAX_NV = GLenum(36906)
- GLenum_GL_VIDEO_COLOR_CONVERSION_MIN_NV = GLenum(36907)
- GLenum_GL_VIDEO_COLOR_CONVERSION_OFFSET_NV = GLenum(36908)
- GLenum_GL_VIDEO_BUFFER_INTERNAL_FORMAT_NV = GLenum(36909)
- GLenum_GL_PARTIAL_SUCCESS_NV = GLenum(36910)
- GLenum_GL_SUCCESS_NV = GLenum(36911)
- GLenum_GL_FAILURE_NV = GLenum(36912)
- GLenum_GL_YCBYCR8_422_NV = GLenum(36913)
- GLenum_GL_YCBAYCR8A_4224_NV = GLenum(36914)
- GLenum_GL_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV = GLenum(36915)
- GLenum_GL_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV = GLenum(36916)
- GLenum_GL_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV = GLenum(36917)
- GLenum_GL_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV = GLenum(36918)
- GLenum_GL_Z4Y12Z4CB12Z4CR12_444_NV = GLenum(36919)
- GLenum_GL_VIDEO_CAPTURE_FRAME_WIDTH_NV = GLenum(36920)
- GLenum_GL_VIDEO_CAPTURE_FRAME_HEIGHT_NV = GLenum(36921)
- GLenum_GL_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV = GLenum(36922)
- GLenum_GL_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV = GLenum(36923)
- GLenum_GL_VIDEO_CAPTURE_SURFACE_ORIGIN_NV = GLenum(36924)
- GLenum_GL_TEXTURE_COVERAGE_SAMPLES_NV = GLenum(36933)
- GLenum_GL_TEXTURE_COLOR_SAMPLES_NV = GLenum(36934)
- GLenum_GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX = GLenum(36935)
- GLenum_GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX = GLenum(36936)
- GLenum_GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX = GLenum(36937)
- GLenum_GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX = GLenum(36938)
- GLenum_GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX = GLenum(36939)
- GLenum_GL_IMAGE_1D = GLenum(36940)
- GLenum_GL_IMAGE_1D_EXT = GLenum(36940)
- GLenum_GL_IMAGE_2D = GLenum(36941)
- GLenum_GL_IMAGE_2D_EXT = GLenum(36941)
- GLenum_GL_IMAGE_3D = GLenum(36942)
- GLenum_GL_IMAGE_3D_EXT = GLenum(36942)
- GLenum_GL_IMAGE_2D_RECT = GLenum(36943)
- GLenum_GL_IMAGE_2D_RECT_EXT = GLenum(36943)
- GLenum_GL_IMAGE_CUBE = GLenum(36944)
- GLenum_GL_IMAGE_CUBE_EXT = GLenum(36944)
- GLenum_GL_IMAGE_BUFFER = GLenum(36945)
- GLenum_GL_IMAGE_BUFFER_EXT = GLenum(36945)
- GLenum_GL_IMAGE_BUFFER_OES = GLenum(36945)
- GLenum_GL_IMAGE_1D_ARRAY = GLenum(36946)
- GLenum_GL_IMAGE_1D_ARRAY_EXT = GLenum(36946)
- GLenum_GL_IMAGE_2D_ARRAY = GLenum(36947)
- GLenum_GL_IMAGE_2D_ARRAY_EXT = GLenum(36947)
- GLenum_GL_IMAGE_CUBE_MAP_ARRAY = GLenum(36948)
- GLenum_GL_IMAGE_CUBE_MAP_ARRAY_EXT = GLenum(36948)
- GLenum_GL_IMAGE_CUBE_MAP_ARRAY_OES = GLenum(36948)
- GLenum_GL_IMAGE_2D_MULTISAMPLE = GLenum(36949)
- GLenum_GL_IMAGE_2D_MULTISAMPLE_EXT = GLenum(36949)
- GLenum_GL_IMAGE_2D_MULTISAMPLE_ARRAY = GLenum(36950)
- GLenum_GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT = GLenum(36950)
- GLenum_GL_INT_IMAGE_1D = GLenum(36951)
- GLenum_GL_INT_IMAGE_1D_EXT = GLenum(36951)
- GLenum_GL_INT_IMAGE_2D = GLenum(36952)
- GLenum_GL_INT_IMAGE_2D_EXT = GLenum(36952)
- GLenum_GL_INT_IMAGE_3D = GLenum(36953)
- GLenum_GL_INT_IMAGE_3D_EXT = GLenum(36953)
- GLenum_GL_INT_IMAGE_2D_RECT = GLenum(36954)
- GLenum_GL_INT_IMAGE_2D_RECT_EXT = GLenum(36954)
- GLenum_GL_INT_IMAGE_CUBE = GLenum(36955)
- GLenum_GL_INT_IMAGE_CUBE_EXT = GLenum(36955)
- GLenum_GL_INT_IMAGE_BUFFER = GLenum(36956)
- GLenum_GL_INT_IMAGE_BUFFER_EXT = GLenum(36956)
- GLenum_GL_INT_IMAGE_BUFFER_OES = GLenum(36956)
- GLenum_GL_INT_IMAGE_1D_ARRAY = GLenum(36957)
- GLenum_GL_INT_IMAGE_1D_ARRAY_EXT = GLenum(36957)
- GLenum_GL_INT_IMAGE_2D_ARRAY = GLenum(36958)
- GLenum_GL_INT_IMAGE_2D_ARRAY_EXT = GLenum(36958)
- GLenum_GL_INT_IMAGE_CUBE_MAP_ARRAY = GLenum(36959)
- GLenum_GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT = GLenum(36959)
- GLenum_GL_INT_IMAGE_CUBE_MAP_ARRAY_OES = GLenum(36959)
- GLenum_GL_INT_IMAGE_2D_MULTISAMPLE = GLenum(36960)
- GLenum_GL_INT_IMAGE_2D_MULTISAMPLE_EXT = GLenum(36960)
- GLenum_GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY = GLenum(36961)
- GLenum_GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT = GLenum(36961)
- GLenum_GL_UNSIGNED_INT_IMAGE_1D = GLenum(36962)
- GLenum_GL_UNSIGNED_INT_IMAGE_1D_EXT = GLenum(36962)
- GLenum_GL_UNSIGNED_INT_IMAGE_2D = GLenum(36963)
- GLenum_GL_UNSIGNED_INT_IMAGE_2D_EXT = GLenum(36963)
- GLenum_GL_UNSIGNED_INT_IMAGE_3D = GLenum(36964)
- GLenum_GL_UNSIGNED_INT_IMAGE_3D_EXT = GLenum(36964)
- GLenum_GL_UNSIGNED_INT_IMAGE_2D_RECT = GLenum(36965)
- GLenum_GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT = GLenum(36965)
- GLenum_GL_UNSIGNED_INT_IMAGE_CUBE = GLenum(36966)
- GLenum_GL_UNSIGNED_INT_IMAGE_CUBE_EXT = GLenum(36966)
- GLenum_GL_UNSIGNED_INT_IMAGE_BUFFER = GLenum(36967)
- GLenum_GL_UNSIGNED_INT_IMAGE_BUFFER_EXT = GLenum(36967)
- GLenum_GL_UNSIGNED_INT_IMAGE_BUFFER_OES = GLenum(36967)
- GLenum_GL_UNSIGNED_INT_IMAGE_1D_ARRAY = GLenum(36968)
- GLenum_GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT = GLenum(36968)
- GLenum_GL_UNSIGNED_INT_IMAGE_2D_ARRAY = GLenum(36969)
- GLenum_GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT = GLenum(36969)
- GLenum_GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY = GLenum(36970)
- GLenum_GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT = GLenum(36970)
- GLenum_GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_OES = GLenum(36970)
- GLenum_GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE = GLenum(36971)
- GLenum_GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT = GLenum(36971)
- GLenum_GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY = GLenum(36972)
- GLenum_GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT = GLenum(36972)
- GLenum_GL_MAX_IMAGE_SAMPLES = GLenum(36973)
- GLenum_GL_MAX_IMAGE_SAMPLES_EXT = GLenum(36973)
- GLenum_GL_IMAGE_BINDING_FORMAT = GLenum(36974)
- GLenum_GL_IMAGE_BINDING_FORMAT_EXT = GLenum(36974)
- GLenum_GL_RGB10_A2UI = GLenum(36975)
- GLenum_GL_PATH_FORMAT_SVG_NV = GLenum(36976)
- GLenum_GL_PATH_FORMAT_PS_NV = GLenum(36977)
- GLenum_GL_STANDARD_FONT_NAME_NV = GLenum(36978)
- GLenum_GL_SYSTEM_FONT_NAME_NV = GLenum(36979)
- GLenum_GL_FILE_NAME_NV = GLenum(36980)
- GLenum_GL_PATH_STROKE_WIDTH_NV = GLenum(36981)
- GLenum_GL_PATH_END_CAPS_NV = GLenum(36982)
- GLenum_GL_PATH_INITIAL_END_CAP_NV = GLenum(36983)
- GLenum_GL_PATH_TERMINAL_END_CAP_NV = GLenum(36984)
- GLenum_GL_PATH_JOIN_STYLE_NV = GLenum(36985)
- GLenum_GL_PATH_MITER_LIMIT_NV = GLenum(36986)
- GLenum_GL_PATH_DASH_CAPS_NV = GLenum(36987)
- GLenum_GL_PATH_INITIAL_DASH_CAP_NV = GLenum(36988)
- GLenum_GL_PATH_TERMINAL_DASH_CAP_NV = GLenum(36989)
- GLenum_GL_PATH_DASH_OFFSET_NV = GLenum(36990)
- GLenum_GL_PATH_CLIENT_LENGTH_NV = GLenum(36991)
- GLenum_GL_PATH_FILL_MODE_NV = GLenum(36992)
- GLenum_GL_PATH_FILL_MASK_NV = GLenum(36993)
- GLenum_GL_PATH_FILL_COVER_MODE_NV = GLenum(36994)
- GLenum_GL_PATH_STROKE_COVER_MODE_NV = GLenum(36995)
- GLenum_GL_PATH_STROKE_MASK_NV = GLenum(36996)
- GLenum_GL_COUNT_UP_NV = GLenum(37000)
- GLenum_GL_COUNT_DOWN_NV = GLenum(37001)
- GLenum_GL_PATH_OBJECT_BOUNDING_BOX_NV = GLenum(37002)
- GLenum_GL_CONVEX_HULL_NV = GLenum(37003)
- GLenum_GL_BOUNDING_BOX_NV = GLenum(37005)
- GLenum_GL_TRANSLATE_X_NV = GLenum(37006)
- GLenum_GL_TRANSLATE_Y_NV = GLenum(37007)
- GLenum_GL_TRANSLATE_2D_NV = GLenum(37008)
- GLenum_GL_TRANSLATE_3D_NV = GLenum(37009)
- GLenum_GL_AFFINE_2D_NV = GLenum(37010)
- GLenum_GL_AFFINE_3D_NV = GLenum(37012)
- GLenum_GL_TRANSPOSE_AFFINE_2D_NV = GLenum(37014)
- GLenum_GL_TRANSPOSE_AFFINE_3D_NV = GLenum(37016)
- GLenum_GL_UTF8_NV = GLenum(37018)
- GLenum_GL_UTF16_NV = GLenum(37019)
- GLenum_GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV = GLenum(37020)
- GLenum_GL_PATH_COMMAND_COUNT_NV = GLenum(37021)
- GLenum_GL_PATH_COORD_COUNT_NV = GLenum(37022)
- GLenum_GL_PATH_DASH_ARRAY_COUNT_NV = GLenum(37023)
- GLenum_GL_PATH_COMPUTED_LENGTH_NV = GLenum(37024)
- GLenum_GL_PATH_FILL_BOUNDING_BOX_NV = GLenum(37025)
- GLenum_GL_PATH_STROKE_BOUNDING_BOX_NV = GLenum(37026)
- GLenum_GL_SQUARE_NV = GLenum(37027)
- GLenum_GL_ROUND_NV = GLenum(37028)
- GLenum_GL_TRIANGULAR_NV = GLenum(37029)
- GLenum_GL_BEVEL_NV = GLenum(37030)
- GLenum_GL_MITER_REVERT_NV = GLenum(37031)
- GLenum_GL_MITER_TRUNCATE_NV = GLenum(37032)
- GLenum_GL_SKIP_MISSING_GLYPH_NV = GLenum(37033)
- GLenum_GL_USE_MISSING_GLYPH_NV = GLenum(37034)
- GLenum_GL_PATH_ERROR_POSITION_NV = GLenum(37035)
- GLenum_GL_PATH_FOG_GEN_MODE_NV = GLenum(37036)
- GLenum_GL_ACCUM_ADJACENT_PAIRS_NV = GLenum(37037)
- GLenum_GL_ADJACENT_PAIRS_NV = GLenum(37038)
- GLenum_GL_FIRST_TO_REST_NV = GLenum(37039)
- GLenum_GL_PATH_GEN_MODE_NV = GLenum(37040)
- GLenum_GL_PATH_GEN_COEFF_NV = GLenum(37041)
- GLenum_GL_PATH_GEN_COLOR_FORMAT_NV = GLenum(37042)
- GLenum_GL_PATH_GEN_COMPONENTS_NV = GLenum(37043)
- GLenum_GL_PATH_DASH_OFFSET_RESET_NV = GLenum(37044)
- GLenum_GL_MOVE_TO_RESETS_NV = GLenum(37045)
- GLenum_GL_MOVE_TO_CONTINUES_NV = GLenum(37046)
- GLenum_GL_PATH_STENCIL_FUNC_NV = GLenum(37047)
- GLenum_GL_PATH_STENCIL_REF_NV = GLenum(37048)
- GLenum_GL_PATH_STENCIL_VALUE_MASK_NV = GLenum(37049)
- GLenum_GL_SCALED_RESOLVE_FASTEST_EXT = GLenum(37050)
- GLenum_GL_SCALED_RESOLVE_NICEST_EXT = GLenum(37051)
- GLenum_GL_MIN_MAP_BUFFER_ALIGNMENT = GLenum(37052)
- GLenum_GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV = GLenum(37053)
- GLenum_GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV = GLenum(37054)
- GLenum_GL_PATH_COVER_DEPTH_FUNC_NV = GLenum(37055)
- GLenum_GL_IMAGE_FORMAT_COMPATIBILITY_TYPE = GLenum(37063)
- GLenum_GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE = GLenum(37064)
- GLenum_GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS = GLenum(37065)
- GLenum_GL_MAX_VERTEX_IMAGE_UNIFORMS = GLenum(37066)
- GLenum_GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS = GLenum(37067)
- GLenum_GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_EXT = GLenum(37067)
- GLenum_GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_OES = GLenum(37067)
- GLenum_GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS = GLenum(37068)
- GLenum_GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_EXT = GLenum(37068)
- GLenum_GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_OES = GLenum(37068)
- GLenum_GL_MAX_GEOMETRY_IMAGE_UNIFORMS = GLenum(37069)
- GLenum_GL_MAX_GEOMETRY_IMAGE_UNIFORMS_EXT = GLenum(37069)
- GLenum_GL_MAX_GEOMETRY_IMAGE_UNIFORMS_OES = GLenum(37069)
- GLenum_GL_MAX_FRAGMENT_IMAGE_UNIFORMS = GLenum(37070)
- GLenum_GL_MAX_COMBINED_IMAGE_UNIFORMS = GLenum(37071)
- GLenum_GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV = GLenum(37072)
- GLenum_GL_MAX_DEEP_3D_TEXTURE_DEPTH_NV = GLenum(37073)
- GLenum_GL_SHADER_STORAGE_BUFFER = GLenum(37074)
- GLenum_GL_SHADER_STORAGE_BUFFER_BINDING = GLenum(37075)
- GLenum_GL_SHADER_STORAGE_BUFFER_START = GLenum(37076)
- GLenum_GL_SHADER_STORAGE_BUFFER_SIZE = GLenum(37077)
- GLenum_GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS = GLenum(37078)
- GLenum_GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS = GLenum(37079)
- GLenum_GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT = GLenum(37079)
- GLenum_GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_OES = GLenum(37079)
- GLenum_GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS = GLenum(37080)
- GLenum_GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_EXT = GLenum(37080)
- GLenum_GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_OES = GLenum(37080)
- GLenum_GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS = GLenum(37081)
- GLenum_GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_EXT = GLenum(37081)
- GLenum_GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_OES = GLenum(37081)
- GLenum_GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS = GLenum(37082)
- GLenum_GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS = GLenum(37083)
- GLenum_GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS = GLenum(37084)
- GLenum_GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS = GLenum(37085)
- GLenum_GL_MAX_SHADER_STORAGE_BLOCK_SIZE = GLenum(37086)
- GLenum_GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT = GLenum(37087)
- GLenum_GL_SYNC_X11_FENCE_EXT = GLenum(37089)
- GLenum_GL_DEPTH_STENCIL_TEXTURE_MODE = GLenum(37098)
- GLenum_GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS = GLenum(37099)
- GLenum_GL_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB = GLenum(37099)
- GLenum_GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER = GLenum(37100)
- GLenum_GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER = GLenum(37101)
- GLenum_GL_DISPATCH_INDIRECT_BUFFER = GLenum(37102)
- GLenum_GL_DISPATCH_INDIRECT_BUFFER_BINDING = GLenum(37103)
- GLenum_GL_COLOR_ATTACHMENT_EXT = GLenum(37104)
- GLenum_GL_MULTIVIEW_EXT = GLenum(37105)
- GLenum_GL_MAX_MULTIVIEW_BUFFERS_EXT = GLenum(37106)
- GLenum_GL_CONTEXT_ROBUST_ACCESS = GLenum(37107)
- GLenum_GL_CONTEXT_ROBUST_ACCESS_EXT = GLenum(37107)
- GLenum_GL_CONTEXT_ROBUST_ACCESS_KHR = GLenum(37107)
- GLenum_GL_COMPUTE_PROGRAM_NV = GLenum(37115)
- GLenum_GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV = GLenum(37116)
- GLenum_GL_TEXTURE_2D_MULTISAMPLE = GLenum(37120)
- GLenum_GL_PROXY_TEXTURE_2D_MULTISAMPLE = GLenum(37121)
- GLenum_GL_TEXTURE_2D_MULTISAMPLE_ARRAY = GLenum(37122)
- GLenum_GL_TEXTURE_2D_MULTISAMPLE_ARRAY_OES = GLenum(37122)
- GLenum_GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY = GLenum(37123)
- GLenum_GL_TEXTURE_BINDING_2D_MULTISAMPLE = GLenum(37124)
- GLenum_GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY = GLenum(37125)
- GLenum_GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY_OES = GLenum(37125)
- GLenum_GL_TEXTURE_SAMPLES = GLenum(37126)
- GLenum_GL_TEXTURE_FIXED_SAMPLE_LOCATIONS = GLenum(37127)
- GLenum_GL_SAMPLER_2D_MULTISAMPLE = GLenum(37128)
- GLenum_GL_INT_SAMPLER_2D_MULTISAMPLE = GLenum(37129)
- GLenum_GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE = GLenum(37130)
- GLenum_GL_SAMPLER_2D_MULTISAMPLE_ARRAY = GLenum(37131)
- GLenum_GL_SAMPLER_2D_MULTISAMPLE_ARRAY_OES = GLenum(37131)
- GLenum_GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = GLenum(37132)
- GLenum_GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES = GLenum(37132)
- GLenum_GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = GLenum(37133)
- GLenum_GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES = GLenum(37133)
- GLenum_GL_MAX_COLOR_TEXTURE_SAMPLES = GLenum(37134)
- GLenum_GL_MAX_DEPTH_TEXTURE_SAMPLES = GLenum(37135)
- GLenum_GL_MAX_INTEGER_SAMPLES = GLenum(37136)
- GLenum_GL_MAX_SERVER_WAIT_TIMEOUT = GLenum(37137)
- GLenum_GL_MAX_SERVER_WAIT_TIMEOUT_APPLE = GLenum(37137)
- GLenum_GL_OBJECT_TYPE = GLenum(37138)
- GLenum_GL_OBJECT_TYPE_APPLE = GLenum(37138)
- GLenum_GL_SYNC_CONDITION = GLenum(37139)
- GLenum_GL_SYNC_CONDITION_APPLE = GLenum(37139)
- GLenum_GL_SYNC_STATUS = GLenum(37140)
- GLenum_GL_SYNC_STATUS_APPLE = GLenum(37140)
- GLenum_GL_SYNC_FLAGS = GLenum(37141)
- GLenum_GL_SYNC_FLAGS_APPLE = GLenum(37141)
- GLenum_GL_SYNC_FENCE = GLenum(37142)
- GLenum_GL_SYNC_FENCE_APPLE = GLenum(37142)
- GLenum_GL_SYNC_GPU_COMMANDS_COMPLETE = GLenum(37143)
- GLenum_GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE = GLenum(37143)
- GLenum_GL_UNSIGNALED = GLenum(37144)
- GLenum_GL_UNSIGNALED_APPLE = GLenum(37144)
- GLenum_GL_SIGNALED = GLenum(37145)
- GLenum_GL_SIGNALED_APPLE = GLenum(37145)
- GLenum_GL_ALREADY_SIGNALED = GLenum(37146)
- GLenum_GL_ALREADY_SIGNALED_APPLE = GLenum(37146)
- GLenum_GL_TIMEOUT_EXPIRED = GLenum(37147)
- GLenum_GL_TIMEOUT_EXPIRED_APPLE = GLenum(37147)
- GLenum_GL_CONDITION_SATISFIED = GLenum(37148)
- GLenum_GL_CONDITION_SATISFIED_APPLE = GLenum(37148)
- GLenum_GL_WAIT_FAILED = GLenum(37149)
- GLenum_GL_WAIT_FAILED_APPLE = GLenum(37149)
- GLenum_GL_BUFFER_ACCESS_FLAGS = GLenum(37151)
- GLenum_GL_BUFFER_MAP_LENGTH = GLenum(37152)
- GLenum_GL_BUFFER_MAP_OFFSET = GLenum(37153)
- GLenum_GL_MAX_VERTEX_OUTPUT_COMPONENTS = GLenum(37154)
- GLenum_GL_MAX_GEOMETRY_INPUT_COMPONENTS = GLenum(37155)
- GLenum_GL_MAX_GEOMETRY_INPUT_COMPONENTS_EXT = GLenum(37155)
- GLenum_GL_MAX_GEOMETRY_INPUT_COMPONENTS_OES = GLenum(37155)
- GLenum_GL_MAX_GEOMETRY_OUTPUT_COMPONENTS = GLenum(37156)
- GLenum_GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT = GLenum(37156)
- GLenum_GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_OES = GLenum(37156)
- GLenum_GL_MAX_FRAGMENT_INPUT_COMPONENTS = GLenum(37157)
- GLenum_GL_CONTEXT_PROFILE_MASK = GLenum(37158)
- GLenum_GL_UNPACK_COMPRESSED_BLOCK_WIDTH = GLenum(37159)
- GLenum_GL_UNPACK_COMPRESSED_BLOCK_HEIGHT = GLenum(37160)
- GLenum_GL_UNPACK_COMPRESSED_BLOCK_DEPTH = GLenum(37161)
- GLenum_GL_UNPACK_COMPRESSED_BLOCK_SIZE = GLenum(37162)
- GLenum_GL_PACK_COMPRESSED_BLOCK_WIDTH = GLenum(37163)
- GLenum_GL_PACK_COMPRESSED_BLOCK_HEIGHT = GLenum(37164)
- GLenum_GL_PACK_COMPRESSED_BLOCK_DEPTH = GLenum(37165)
- GLenum_GL_PACK_COMPRESSED_BLOCK_SIZE = GLenum(37166)
- GLenum_GL_TEXTURE_IMMUTABLE_FORMAT = GLenum(37167)
- GLenum_GL_TEXTURE_IMMUTABLE_FORMAT_EXT = GLenum(37167)
- GLenum_GL_SGX_PROGRAM_BINARY_IMG = GLenum(37168)
- GLenum_GL_RENDERBUFFER_SAMPLES_IMG = GLenum(37171)
- GLenum_GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG = GLenum(37172)
- GLenum_GL_MAX_SAMPLES_IMG = GLenum(37173)
- GLenum_GL_TEXTURE_SAMPLES_IMG = GLenum(37174)
- GLenum_GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG = GLenum(37175)
- GLenum_GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG = GLenum(37176)
- GLenum_GL_MAX_DEBUG_MESSAGE_LENGTH = GLenum(37187)
- GLenum_GL_MAX_DEBUG_MESSAGE_LENGTH_AMD = GLenum(37187)
- GLenum_GL_MAX_DEBUG_MESSAGE_LENGTH_ARB = GLenum(37187)
- GLenum_GL_MAX_DEBUG_MESSAGE_LENGTH_KHR = GLenum(37187)
- GLenum_GL_MAX_DEBUG_LOGGED_MESSAGES = GLenum(37188)
- GLenum_GL_MAX_DEBUG_LOGGED_MESSAGES_AMD = GLenum(37188)
- GLenum_GL_MAX_DEBUG_LOGGED_MESSAGES_ARB = GLenum(37188)
- GLenum_GL_MAX_DEBUG_LOGGED_MESSAGES_KHR = GLenum(37188)
- GLenum_GL_DEBUG_LOGGED_MESSAGES = GLenum(37189)
- GLenum_GL_DEBUG_LOGGED_MESSAGES_AMD = GLenum(37189)
- GLenum_GL_DEBUG_LOGGED_MESSAGES_ARB = GLenum(37189)
- GLenum_GL_DEBUG_LOGGED_MESSAGES_KHR = GLenum(37189)
- GLenum_GL_DEBUG_SEVERITY_HIGH = GLenum(37190)
- GLenum_GL_DEBUG_SEVERITY_HIGH_AMD = GLenum(37190)
- GLenum_GL_DEBUG_SEVERITY_HIGH_ARB = GLenum(37190)
- GLenum_GL_DEBUG_SEVERITY_HIGH_KHR = GLenum(37190)
- GLenum_GL_DEBUG_SEVERITY_MEDIUM = GLenum(37191)
- GLenum_GL_DEBUG_SEVERITY_MEDIUM_AMD = GLenum(37191)
- GLenum_GL_DEBUG_SEVERITY_MEDIUM_ARB = GLenum(37191)
- GLenum_GL_DEBUG_SEVERITY_MEDIUM_KHR = GLenum(37191)
- GLenum_GL_DEBUG_SEVERITY_LOW = GLenum(37192)
- GLenum_GL_DEBUG_SEVERITY_LOW_AMD = GLenum(37192)
- GLenum_GL_DEBUG_SEVERITY_LOW_ARB = GLenum(37192)
- GLenum_GL_DEBUG_SEVERITY_LOW_KHR = GLenum(37192)
- GLenum_GL_DEBUG_CATEGORY_API_ERROR_AMD = GLenum(37193)
- GLenum_GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD = GLenum(37194)
- GLenum_GL_DEBUG_CATEGORY_DEPRECATION_AMD = GLenum(37195)
- GLenum_GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD = GLenum(37196)
- GLenum_GL_DEBUG_CATEGORY_PERFORMANCE_AMD = GLenum(37197)
- GLenum_GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD = GLenum(37198)
- GLenum_GL_DEBUG_CATEGORY_APPLICATION_AMD = GLenum(37199)
- GLenum_GL_DEBUG_CATEGORY_OTHER_AMD = GLenum(37200)
- GLenum_GL_BUFFER_OBJECT_EXT = GLenum(37201)
- GLenum_GL_DATA_BUFFER_AMD = GLenum(37201)
- GLenum_GL_PERFORMANCE_MONITOR_AMD = GLenum(37202)
- GLenum_GL_QUERY_OBJECT_AMD = GLenum(37203)
- GLenum_GL_QUERY_OBJECT_EXT = GLenum(37203)
- GLenum_GL_VERTEX_ARRAY_OBJECT_AMD = GLenum(37204)
- GLenum_GL_VERTEX_ARRAY_OBJECT_EXT = GLenum(37204)
- GLenum_GL_SAMPLER_OBJECT_AMD = GLenum(37205)
- GLenum_GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD = GLenum(37216)
- GLenum_GL_QUERY_BUFFER = GLenum(37266)
- GLenum_GL_QUERY_BUFFER_AMD = GLenum(37266)
- GLenum_GL_QUERY_BUFFER_BINDING = GLenum(37267)
- GLenum_GL_QUERY_BUFFER_BINDING_AMD = GLenum(37267)
- GLenum_GL_QUERY_RESULT_NO_WAIT = GLenum(37268)
- GLenum_GL_QUERY_RESULT_NO_WAIT_AMD = GLenum(37268)
- GLenum_GL_VIRTUAL_PAGE_SIZE_X_ARB = GLenum(37269)
- GLenum_GL_VIRTUAL_PAGE_SIZE_X_EXT = GLenum(37269)
- GLenum_GL_VIRTUAL_PAGE_SIZE_X_AMD = GLenum(37269)
- GLenum_GL_VIRTUAL_PAGE_SIZE_Y_ARB = GLenum(37270)
- GLenum_GL_VIRTUAL_PAGE_SIZE_Y_EXT = GLenum(37270)
- GLenum_GL_VIRTUAL_PAGE_SIZE_Y_AMD = GLenum(37270)
- GLenum_GL_VIRTUAL_PAGE_SIZE_Z_ARB = GLenum(37271)
- GLenum_GL_VIRTUAL_PAGE_SIZE_Z_EXT = GLenum(37271)
- GLenum_GL_VIRTUAL_PAGE_SIZE_Z_AMD = GLenum(37271)
- GLenum_GL_MAX_SPARSE_TEXTURE_SIZE_ARB = GLenum(37272)
- GLenum_GL_MAX_SPARSE_TEXTURE_SIZE_EXT = GLenum(37272)
- GLenum_GL_MAX_SPARSE_TEXTURE_SIZE_AMD = GLenum(37272)
- GLenum_GL_MAX_SPARSE_3D_TEXTURE_SIZE_ARB = GLenum(37273)
- GLenum_GL_MAX_SPARSE_3D_TEXTURE_SIZE_EXT = GLenum(37273)
- GLenum_GL_MAX_SPARSE_3D_TEXTURE_SIZE_AMD = GLenum(37273)
- GLenum_GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS = GLenum(37274)
- GLenum_GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB = GLenum(37274)
- GLenum_GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_EXT = GLenum(37274)
- GLenum_GL_MIN_SPARSE_LEVEL_AMD = GLenum(37275)
- GLenum_GL_MIN_LOD_WARNING_AMD = GLenum(37276)
- GLenum_GL_TEXTURE_BUFFER_OFFSET = GLenum(37277)
- GLenum_GL_TEXTURE_BUFFER_OFFSET_EXT = GLenum(37277)
- GLenum_GL_TEXTURE_BUFFER_OFFSET_OES = GLenum(37277)
- GLenum_GL_TEXTURE_BUFFER_SIZE = GLenum(37278)
- GLenum_GL_TEXTURE_BUFFER_SIZE_EXT = GLenum(37278)
- GLenum_GL_TEXTURE_BUFFER_SIZE_OES = GLenum(37278)
- GLenum_GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT = GLenum(37279)
- GLenum_GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_EXT = GLenum(37279)
- GLenum_GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_OES = GLenum(37279)
- GLenum_GL_STREAM_RASTERIZATION_AMD = GLenum(37280)
- GLenum_GL_VERTEX_ELEMENT_SWIZZLE_AMD = GLenum(37284)
- GLenum_GL_VERTEX_ID_SWIZZLE_AMD = GLenum(37285)
- GLenum_GL_TEXTURE_SPARSE_ARB = GLenum(37286)
- GLenum_GL_TEXTURE_SPARSE_EXT = GLenum(37286)
- GLenum_GL_VIRTUAL_PAGE_SIZE_INDEX_ARB = GLenum(37287)
- GLenum_GL_VIRTUAL_PAGE_SIZE_INDEX_EXT = GLenum(37287)
- GLenum_GL_NUM_VIRTUAL_PAGE_SIZES_ARB = GLenum(37288)
- GLenum_GL_NUM_VIRTUAL_PAGE_SIZES_EXT = GLenum(37288)
- GLenum_GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB = GLenum(37289)
- GLenum_GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_EXT = GLenum(37289)
- GLenum_GL_NUM_SPARSE_LEVELS_ARB = GLenum(37290)
- GLenum_GL_NUM_SPARSE_LEVELS_EXT = GLenum(37290)
- GLenum_GL_MAX_SHADER_COMPILER_THREADS_ARB = GLenum(37296)
- GLenum_GL_COMPLETION_STATUS_ARB = GLenum(37297)
- GLenum_GL_COMPUTE_SHADER = GLenum(37305)
- GLenum_GL_MAX_COMPUTE_UNIFORM_BLOCKS = GLenum(37307)
- GLenum_GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS = GLenum(37308)
- GLenum_GL_MAX_COMPUTE_IMAGE_UNIFORMS = GLenum(37309)
- GLenum_GL_MAX_COMPUTE_WORK_GROUP_COUNT = GLenum(37310)
- GLenum_GL_MAX_COMPUTE_WORK_GROUP_SIZE = GLenum(37311)
- GLenum_GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB = GLenum(37311)
- GLenum_GL_UNPACK_FLIP_Y_WEBGL = GLenum(37440)
- GLenum_GL_UNPACK_PREMULTIPLY_ALPHA_WEBGL = GLenum(37441)
- GLenum_GL_CONTEXT_LOST_WEBGL = GLenum(37442)
- GLenum_GL_UNPACK_COLORSPACE_CONVERSION_WEBGL = GLenum(37443)
- GLenum_GL_BROWSER_DEFAULT_WEBGL = GLenum(37444)
- GLenum_GL_SHADER_BINARY_DMP = GLenum(37456)
- GLenum_GL_SMAPHS30_PROGRAM_BINARY_DMP = GLenum(37457)
- GLenum_GL_SMAPHS_PROGRAM_BINARY_DMP = GLenum(37458)
- GLenum_GL_DMP_PROGRAM_BINARY_DMP = GLenum(37459)
- GLenum_GL_GCCSO_SHADER_BINARY_FJ = GLenum(37472)
- GLenum_GL_COMPRESSED_R11_EAC = GLenum(37488)
- GLenum_GL_COMPRESSED_R11_EAC_OES = GLenum(37488)
- GLenum_GL_COMPRESSED_SIGNED_R11_EAC = GLenum(37489)
- GLenum_GL_COMPRESSED_SIGNED_R11_EAC_OES = GLenum(37489)
- GLenum_GL_COMPRESSED_RG11_EAC = GLenum(37490)
- GLenum_GL_COMPRESSED_RG11_EAC_OES = GLenum(37490)
- GLenum_GL_COMPRESSED_SIGNED_RG11_EAC = GLenum(37491)
- GLenum_GL_COMPRESSED_SIGNED_RG11_EAC_OES = GLenum(37491)
- GLenum_GL_COMPRESSED_RGB8_ETC2 = GLenum(37492)
- GLenum_GL_COMPRESSED_RGB8_ETC2_OES = GLenum(37492)
- GLenum_GL_COMPRESSED_SRGB8_ETC2 = GLenum(37493)
- GLenum_GL_COMPRESSED_SRGB8_ETC2_OES = GLenum(37493)
- GLenum_GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 = GLenum(37494)
- GLenum_GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2_OES = GLenum(37494)
- GLenum_GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = GLenum(37495)
- GLenum_GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2_OES = GLenum(37495)
- GLenum_GL_COMPRESSED_RGBA8_ETC2_EAC = GLenum(37496)
- GLenum_GL_COMPRESSED_RGBA8_ETC2_EAC_OES = GLenum(37496)
- GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC = GLenum(37497)
- GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC_OES = GLenum(37497)
- GLenum_GL_BLEND_PREMULTIPLIED_SRC_NV = GLenum(37504)
- GLenum_GL_BLEND_OVERLAP_NV = GLenum(37505)
- GLenum_GL_UNCORRELATED_NV = GLenum(37506)
- GLenum_GL_DISJOINT_NV = GLenum(37507)
- GLenum_GL_CONJOINT_NV = GLenum(37508)
- GLenum_GL_BLEND_ADVANCED_COHERENT_KHR = GLenum(37509)
- GLenum_GL_BLEND_ADVANCED_COHERENT_NV = GLenum(37509)
- GLenum_GL_SRC_NV = GLenum(37510)
- GLenum_GL_DST_NV = GLenum(37511)
- GLenum_GL_SRC_OVER_NV = GLenum(37512)
- GLenum_GL_DST_OVER_NV = GLenum(37513)
- GLenum_GL_SRC_IN_NV = GLenum(37514)
- GLenum_GL_DST_IN_NV = GLenum(37515)
- GLenum_GL_SRC_OUT_NV = GLenum(37516)
- GLenum_GL_DST_OUT_NV = GLenum(37517)
- GLenum_GL_SRC_ATOP_NV = GLenum(37518)
- GLenum_GL_DST_ATOP_NV = GLenum(37519)
- GLenum_GL_PLUS_NV = GLenum(37521)
- GLenum_GL_PLUS_DARKER_NV = GLenum(37522)
- GLenum_GL_MULTIPLY = GLenum(37524)
- GLenum_GL_MULTIPLY_KHR = GLenum(37524)
- GLenum_GL_MULTIPLY_NV = GLenum(37524)
- GLenum_GL_SCREEN = GLenum(37525)
- GLenum_GL_SCREEN_KHR = GLenum(37525)
- GLenum_GL_SCREEN_NV = GLenum(37525)
- GLenum_GL_OVERLAY = GLenum(37526)
- GLenum_GL_OVERLAY_KHR = GLenum(37526)
- GLenum_GL_OVERLAY_NV = GLenum(37526)
- GLenum_GL_DARKEN = GLenum(37527)
- GLenum_GL_DARKEN_KHR = GLenum(37527)
- GLenum_GL_DARKEN_NV = GLenum(37527)
- GLenum_GL_LIGHTEN = GLenum(37528)
- GLenum_GL_LIGHTEN_KHR = GLenum(37528)
- GLenum_GL_LIGHTEN_NV = GLenum(37528)
- GLenum_GL_COLORDODGE = GLenum(37529)
- GLenum_GL_COLORDODGE_KHR = GLenum(37529)
- GLenum_GL_COLORDODGE_NV = GLenum(37529)
- GLenum_GL_COLORBURN = GLenum(37530)
- GLenum_GL_COLORBURN_KHR = GLenum(37530)
- GLenum_GL_COLORBURN_NV = GLenum(37530)
- GLenum_GL_HARDLIGHT = GLenum(37531)
- GLenum_GL_HARDLIGHT_KHR = GLenum(37531)
- GLenum_GL_HARDLIGHT_NV = GLenum(37531)
- GLenum_GL_SOFTLIGHT = GLenum(37532)
- GLenum_GL_SOFTLIGHT_KHR = GLenum(37532)
- GLenum_GL_SOFTLIGHT_NV = GLenum(37532)
- GLenum_GL_DIFFERENCE = GLenum(37534)
- GLenum_GL_DIFFERENCE_KHR = GLenum(37534)
- GLenum_GL_DIFFERENCE_NV = GLenum(37534)
- GLenum_GL_MINUS_NV = GLenum(37535)
- GLenum_GL_EXCLUSION = GLenum(37536)
- GLenum_GL_EXCLUSION_KHR = GLenum(37536)
- GLenum_GL_EXCLUSION_NV = GLenum(37536)
- GLenum_GL_CONTRAST_NV = GLenum(37537)
- GLenum_GL_INVERT_RGB_NV = GLenum(37539)
- GLenum_GL_LINEARDODGE_NV = GLenum(37540)
- GLenum_GL_LINEARBURN_NV = GLenum(37541)
- GLenum_GL_VIVIDLIGHT_NV = GLenum(37542)
- GLenum_GL_LINEARLIGHT_NV = GLenum(37543)
- GLenum_GL_PINLIGHT_NV = GLenum(37544)
- GLenum_GL_HARDMIX_NV = GLenum(37545)
- GLenum_GL_HSL_HUE = GLenum(37549)
- GLenum_GL_HSL_HUE_KHR = GLenum(37549)
- GLenum_GL_HSL_HUE_NV = GLenum(37549)
- GLenum_GL_HSL_SATURATION = GLenum(37550)
- GLenum_GL_HSL_SATURATION_KHR = GLenum(37550)
- GLenum_GL_HSL_SATURATION_NV = GLenum(37550)
- GLenum_GL_HSL_COLOR = GLenum(37551)
- GLenum_GL_HSL_COLOR_KHR = GLenum(37551)
- GLenum_GL_HSL_COLOR_NV = GLenum(37551)
- GLenum_GL_HSL_LUMINOSITY = GLenum(37552)
- GLenum_GL_HSL_LUMINOSITY_KHR = GLenum(37552)
- GLenum_GL_HSL_LUMINOSITY_NV = GLenum(37552)
- GLenum_GL_PLUS_CLAMPED_NV = GLenum(37553)
- GLenum_GL_PLUS_CLAMPED_ALPHA_NV = GLenum(37554)
- GLenum_GL_MINUS_CLAMPED_NV = GLenum(37555)
- GLenum_GL_INVERT_OVG_NV = GLenum(37556)
- GLenum_GL_PRIMITIVE_BOUNDING_BOX_ARB = GLenum(37566)
- GLenum_GL_PRIMITIVE_BOUNDING_BOX = GLenum(37566)
- GLenum_GL_PRIMITIVE_BOUNDING_BOX_EXT = GLenum(37566)
- GLenum_GL_PRIMITIVE_BOUNDING_BOX_OES = GLenum(37566)
- GLenum_GL_ATOMIC_COUNTER_BUFFER = GLenum(37568)
- GLenum_GL_ATOMIC_COUNTER_BUFFER_BINDING = GLenum(37569)
- GLenum_GL_ATOMIC_COUNTER_BUFFER_START = GLenum(37570)
- GLenum_GL_ATOMIC_COUNTER_BUFFER_SIZE = GLenum(37571)
- GLenum_GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE = GLenum(37572)
- GLenum_GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS = GLenum(37573)
- GLenum_GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES = GLenum(37574)
- GLenum_GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER = GLenum(37575)
- GLenum_GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER = GLenum(37576)
- GLenum_GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER = GLenum(37577)
- GLenum_GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER = GLenum(37578)
- GLenum_GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER = GLenum(37579)
- GLenum_GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS = GLenum(37580)
- GLenum_GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS = GLenum(37581)
- GLenum_GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_EXT = GLenum(37581)
- GLenum_GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_OES = GLenum(37581)
- GLenum_GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS = GLenum(37582)
- GLenum_GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_EXT = GLenum(37582)
- GLenum_GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_OES = GLenum(37582)
- GLenum_GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS = GLenum(37583)
- GLenum_GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT = GLenum(37583)
- GLenum_GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_OES = GLenum(37583)
- GLenum_GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS = GLenum(37584)
- GLenum_GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS = GLenum(37585)
- GLenum_GL_MAX_VERTEX_ATOMIC_COUNTERS = GLenum(37586)
- GLenum_GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS = GLenum(37587)
- GLenum_GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_EXT = GLenum(37587)
- GLenum_GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_OES = GLenum(37587)
- GLenum_GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS = GLenum(37588)
- GLenum_GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_EXT = GLenum(37588)
- GLenum_GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_OES = GLenum(37588)
- GLenum_GL_MAX_GEOMETRY_ATOMIC_COUNTERS = GLenum(37589)
- GLenum_GL_MAX_GEOMETRY_ATOMIC_COUNTERS_EXT = GLenum(37589)
- GLenum_GL_MAX_GEOMETRY_ATOMIC_COUNTERS_OES = GLenum(37589)
- GLenum_GL_MAX_FRAGMENT_ATOMIC_COUNTERS = GLenum(37590)
- GLenum_GL_MAX_COMBINED_ATOMIC_COUNTERS = GLenum(37591)
- GLenum_GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE = GLenum(37592)
- GLenum_GL_ACTIVE_ATOMIC_COUNTER_BUFFERS = GLenum(37593)
- GLenum_GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX = GLenum(37594)
- GLenum_GL_UNSIGNED_INT_ATOMIC_COUNTER = GLenum(37595)
- GLenum_GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS = GLenum(37596)
- GLenum_GL_FRAGMENT_COVERAGE_TO_COLOR_NV = GLenum(37597)
- GLenum_GL_FRAGMENT_COVERAGE_COLOR_NV = GLenum(37598)
- GLenum_GL_DEBUG_OUTPUT = GLenum(37600)
- GLenum_GL_DEBUG_OUTPUT_KHR = GLenum(37600)
- GLenum_GL_UNIFORM = GLenum(37601)
- GLenum_GL_UNIFORM_BLOCK = GLenum(37602)
- GLenum_GL_PROGRAM_INPUT = GLenum(37603)
- GLenum_GL_PROGRAM_OUTPUT = GLenum(37604)
- GLenum_GL_BUFFER_VARIABLE = GLenum(37605)
- GLenum_GL_SHADER_STORAGE_BLOCK = GLenum(37606)
- GLenum_GL_IS_PER_PATCH = GLenum(37607)
- GLenum_GL_IS_PER_PATCH_EXT = GLenum(37607)
- GLenum_GL_IS_PER_PATCH_OES = GLenum(37607)
- GLenum_GL_VERTEX_SUBROUTINE = GLenum(37608)
- GLenum_GL_TESS_CONTROL_SUBROUTINE = GLenum(37609)
- GLenum_GL_TESS_EVALUATION_SUBROUTINE = GLenum(37610)
- GLenum_GL_GEOMETRY_SUBROUTINE = GLenum(37611)
- GLenum_GL_FRAGMENT_SUBROUTINE = GLenum(37612)
- GLenum_GL_COMPUTE_SUBROUTINE = GLenum(37613)
- GLenum_GL_VERTEX_SUBROUTINE_UNIFORM = GLenum(37614)
- GLenum_GL_TESS_CONTROL_SUBROUTINE_UNIFORM = GLenum(37615)
- GLenum_GL_TESS_EVALUATION_SUBROUTINE_UNIFORM = GLenum(37616)
- GLenum_GL_GEOMETRY_SUBROUTINE_UNIFORM = GLenum(37617)
- GLenum_GL_FRAGMENT_SUBROUTINE_UNIFORM = GLenum(37618)
- GLenum_GL_COMPUTE_SUBROUTINE_UNIFORM = GLenum(37619)
- GLenum_GL_TRANSFORM_FEEDBACK_VARYING = GLenum(37620)
- GLenum_GL_ACTIVE_RESOURCES = GLenum(37621)
- GLenum_GL_MAX_NAME_LENGTH = GLenum(37622)
- GLenum_GL_MAX_NUM_ACTIVE_VARIABLES = GLenum(37623)
- GLenum_GL_MAX_NUM_COMPATIBLE_SUBROUTINES = GLenum(37624)
- GLenum_GL_NAME_LENGTH = GLenum(37625)
- GLenum_GL_TYPE = GLenum(37626)
- GLenum_GL_ARRAY_SIZE = GLenum(37627)
- GLenum_GL_OFFSET = GLenum(37628)
- GLenum_GL_BLOCK_INDEX = GLenum(37629)
- GLenum_GL_ARRAY_STRIDE = GLenum(37630)
- GLenum_GL_MATRIX_STRIDE = GLenum(37631)
- GLenum_GL_IS_ROW_MAJOR = GLenum(37632)
- GLenum_GL_ATOMIC_COUNTER_BUFFER_INDEX = GLenum(37633)
- GLenum_GL_BUFFER_BINDING = GLenum(37634)
- GLenum_GL_BUFFER_DATA_SIZE = GLenum(37635)
- GLenum_GL_NUM_ACTIVE_VARIABLES = GLenum(37636)
- GLenum_GL_ACTIVE_VARIABLES = GLenum(37637)
- GLenum_GL_REFERENCED_BY_VERTEX_SHADER = GLenum(37638)
- GLenum_GL_REFERENCED_BY_TESS_CONTROL_SHADER = GLenum(37639)
- GLenum_GL_REFERENCED_BY_TESS_CONTROL_SHADER_EXT = GLenum(37639)
- GLenum_GL_REFERENCED_BY_TESS_CONTROL_SHADER_OES = GLenum(37639)
- GLenum_GL_REFERENCED_BY_TESS_EVALUATION_SHADER = GLenum(37640)
- GLenum_GL_REFERENCED_BY_TESS_EVALUATION_SHADER_EXT = GLenum(37640)
- GLenum_GL_REFERENCED_BY_TESS_EVALUATION_SHADER_OES = GLenum(37640)
- GLenum_GL_REFERENCED_BY_GEOMETRY_SHADER = GLenum(37641)
- GLenum_GL_REFERENCED_BY_GEOMETRY_SHADER_EXT = GLenum(37641)
- GLenum_GL_REFERENCED_BY_GEOMETRY_SHADER_OES = GLenum(37641)
- GLenum_GL_REFERENCED_BY_FRAGMENT_SHADER = GLenum(37642)
- GLenum_GL_REFERENCED_BY_COMPUTE_SHADER = GLenum(37643)
- GLenum_GL_TOP_LEVEL_ARRAY_SIZE = GLenum(37644)
- GLenum_GL_TOP_LEVEL_ARRAY_STRIDE = GLenum(37645)
- GLenum_GL_LOCATION = GLenum(37646)
- GLenum_GL_LOCATION_INDEX = GLenum(37647)
- GLenum_GL_LOCATION_INDEX_EXT = GLenum(37647)
- GLenum_GL_FRAMEBUFFER_DEFAULT_WIDTH = GLenum(37648)
- GLenum_GL_FRAMEBUFFER_DEFAULT_HEIGHT = GLenum(37649)
- GLenum_GL_FRAMEBUFFER_DEFAULT_LAYERS = GLenum(37650)
- GLenum_GL_FRAMEBUFFER_DEFAULT_LAYERS_EXT = GLenum(37650)
- GLenum_GL_FRAMEBUFFER_DEFAULT_LAYERS_OES = GLenum(37650)
- GLenum_GL_FRAMEBUFFER_DEFAULT_SAMPLES = GLenum(37651)
- GLenum_GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS = GLenum(37652)
- GLenum_GL_MAX_FRAMEBUFFER_WIDTH = GLenum(37653)
- GLenum_GL_MAX_FRAMEBUFFER_HEIGHT = GLenum(37654)
- GLenum_GL_MAX_FRAMEBUFFER_LAYERS = GLenum(37655)
- GLenum_GL_MAX_FRAMEBUFFER_LAYERS_EXT = GLenum(37655)
- GLenum_GL_MAX_FRAMEBUFFER_LAYERS_OES = GLenum(37655)
- GLenum_GL_MAX_FRAMEBUFFER_SAMPLES = GLenum(37656)
- GLenum_GL_RASTER_MULTISAMPLE_EXT = GLenum(37671)
- GLenum_GL_RASTER_SAMPLES_EXT = GLenum(37672)
- GLenum_GL_MAX_RASTER_SAMPLES_EXT = GLenum(37673)
- GLenum_GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT = GLenum(37674)
- GLenum_GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT = GLenum(37675)
- GLenum_GL_EFFECTIVE_RASTER_SAMPLES_EXT = GLenum(37676)
- GLenum_GL_DEPTH_SAMPLES_NV = GLenum(37677)
- GLenum_GL_STENCIL_SAMPLES_NV = GLenum(37678)
- GLenum_GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV = GLenum(37679)
- GLenum_GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV = GLenum(37680)
- GLenum_GL_COVERAGE_MODULATION_TABLE_NV = GLenum(37681)
- GLenum_GL_COVERAGE_MODULATION_NV = GLenum(37682)
- GLenum_GL_COVERAGE_MODULATION_TABLE_SIZE_NV = GLenum(37683)
- GLenum_GL_WARP_SIZE_NV = GLenum(37689)
- GLenum_GL_WARPS_PER_SM_NV = GLenum(37690)
- GLenum_GL_SM_COUNT_NV = GLenum(37691)
- GLenum_GL_FILL_RECTANGLE_NV = GLenum(37692)
- GLenum_GL_SAMPLE_LOCATION_SUBPIXEL_BITS_ARB = GLenum(37693)
- GLenum_GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV = GLenum(37693)
- GLenum_GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_ARB = GLenum(37694)
- GLenum_GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV = GLenum(37694)
- GLenum_GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_ARB = GLenum(37695)
- GLenum_GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV = GLenum(37695)
- GLenum_GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_ARB = GLenum(37696)
- GLenum_GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV = GLenum(37696)
- GLenum_GL_PROGRAMMABLE_SAMPLE_LOCATION_ARB = GLenum(37697)
- GLenum_GL_PROGRAMMABLE_SAMPLE_LOCATION_NV = GLenum(37697)
- GLenum_GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_ARB = GLenum(37698)
- GLenum_GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV = GLenum(37698)
- GLenum_GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_ARB = GLenum(37699)
- GLenum_GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV = GLenum(37699)
- GLenum_GL_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB = GLenum(37700)
- GLenum_GL_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB = GLenum(37701)
- GLenum_GL_CONSERVATIVE_RASTERIZATION_NV = GLenum(37702)
- GLenum_GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV = GLenum(37703)
- GLenum_GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV = GLenum(37704)
- GLenum_GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV = GLenum(37705)
- GLenum_GL_LOCATION_COMPONENT = GLenum(37706)
- GLenum_GL_TRANSFORM_FEEDBACK_BUFFER_INDEX = GLenum(37707)
- GLenum_GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE = GLenum(37708)
- GLenum_GL_CLIP_ORIGIN = GLenum(37724)
- GLenum_GL_CLIP_DEPTH_MODE = GLenum(37725)
- GLenum_GL_NEGATIVE_ONE_TO_ONE = GLenum(37726)
- GLenum_GL_ZERO_TO_ONE = GLenum(37727)
- GLenum_GL_CLEAR_TEXTURE = GLenum(37733)
- GLenum_GL_TEXTURE_REDUCTION_MODE_ARB = GLenum(37734)
- GLenum_GL_WEIGHTED_AVERAGE_ARB = GLenum(37735)
- GLenum_GL_FONT_GLYPHS_AVAILABLE_NV = GLenum(37736)
- GLenum_GL_FONT_TARGET_UNAVAILABLE_NV = GLenum(37737)
- GLenum_GL_FONT_UNAVAILABLE_NV = GLenum(37738)
- GLenum_GL_FONT_UNINTELLIGIBLE_NV = GLenum(37739)
- GLenum_GL_STANDARD_FONT_FORMAT_NV = GLenum(37740)
- GLenum_GL_FRAGMENT_INPUT_NV = GLenum(37741)
- GLenum_GL_UNIFORM_BUFFER_UNIFIED_NV = GLenum(37742)
- GLenum_GL_UNIFORM_BUFFER_ADDRESS_NV = GLenum(37743)
- GLenum_GL_UNIFORM_BUFFER_LENGTH_NV = GLenum(37744)
- GLenum_GL_MULTISAMPLES_NV = GLenum(37745)
- GLenum_GL_SUPERSAMPLE_SCALE_X_NV = GLenum(37746)
- GLenum_GL_SUPERSAMPLE_SCALE_Y_NV = GLenum(37747)
- GLenum_GL_CONFORMANT_NV = GLenum(37748)
- GLenum_GL_CONSERVATIVE_RASTER_DILATE_NV = GLenum(37753)
- GLenum_GL_CONSERVATIVE_RASTER_DILATE_RANGE_NV = GLenum(37754)
- GLenum_GL_CONSERVATIVE_RASTER_DILATE_GRANULARITY_NV = GLenum(37755)
- GLenum_GL_NUM_SAMPLE_COUNTS = GLenum(37760)
- GLenum_GL_MULTISAMPLE_LINE_WIDTH_RANGE_ARB = GLenum(37761)
- GLenum_GL_MULTISAMPLE_LINE_WIDTH_RANGE = GLenum(37761)
- GLenum_GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY_ARB = GLenum(37762)
- GLenum_GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY = GLenum(37762)
- GLenum_GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE = GLenum(37792)
- GLenum_GL_BGRA8_EXT = GLenum(37793)
- GLenum_GL_TEXTURE_USAGE_ANGLE = GLenum(37794)
- GLenum_GL_FRAMEBUFFER_ATTACHMENT_ANGLE = GLenum(37795)
- GLenum_GL_PACK_REVERSE_ROW_ORDER_ANGLE = GLenum(37796)
- GLenum_GL_PROGRAM_BINARY_ANGLE = GLenum(37798)
- GLenum_GL_COMPRESSED_RGBA_ASTC_4x4 = GLenum(37808)
- GLenum_GL_COMPRESSED_RGBA_ASTC_4x4_KHR = GLenum(37808)
- GLenum_GL_COMPRESSED_RGBA_ASTC_5x4 = GLenum(37809)
- GLenum_GL_COMPRESSED_RGBA_ASTC_5x4_KHR = GLenum(37809)
- GLenum_GL_COMPRESSED_RGBA_ASTC_5x5 = GLenum(37810)
- GLenum_GL_COMPRESSED_RGBA_ASTC_5x5_KHR = GLenum(37810)
- GLenum_GL_COMPRESSED_RGBA_ASTC_6x5 = GLenum(37811)
- GLenum_GL_COMPRESSED_RGBA_ASTC_6x5_KHR = GLenum(37811)
- GLenum_GL_COMPRESSED_RGBA_ASTC_6x6 = GLenum(37812)
- GLenum_GL_COMPRESSED_RGBA_ASTC_6x6_KHR = GLenum(37812)
- GLenum_GL_COMPRESSED_RGBA_ASTC_8x5 = GLenum(37813)
- GLenum_GL_COMPRESSED_RGBA_ASTC_8x5_KHR = GLenum(37813)
- GLenum_GL_COMPRESSED_RGBA_ASTC_8x6 = GLenum(37814)
- GLenum_GL_COMPRESSED_RGBA_ASTC_8x6_KHR = GLenum(37814)
- GLenum_GL_COMPRESSED_RGBA_ASTC_8x8 = GLenum(37815)
- GLenum_GL_COMPRESSED_RGBA_ASTC_8x8_KHR = GLenum(37815)
- GLenum_GL_COMPRESSED_RGBA_ASTC_10x5 = GLenum(37816)
- GLenum_GL_COMPRESSED_RGBA_ASTC_10x5_KHR = GLenum(37816)
- GLenum_GL_COMPRESSED_RGBA_ASTC_10x6 = GLenum(37817)
- GLenum_GL_COMPRESSED_RGBA_ASTC_10x6_KHR = GLenum(37817)
- GLenum_GL_COMPRESSED_RGBA_ASTC_10x8 = GLenum(37818)
- GLenum_GL_COMPRESSED_RGBA_ASTC_10x8_KHR = GLenum(37818)
- GLenum_GL_COMPRESSED_RGBA_ASTC_10x10 = GLenum(37819)
- GLenum_GL_COMPRESSED_RGBA_ASTC_10x10_KHR = GLenum(37819)
- GLenum_GL_COMPRESSED_RGBA_ASTC_12x10 = GLenum(37820)
- GLenum_GL_COMPRESSED_RGBA_ASTC_12x10_KHR = GLenum(37820)
- GLenum_GL_COMPRESSED_RGBA_ASTC_12x12 = GLenum(37821)
- GLenum_GL_COMPRESSED_RGBA_ASTC_12x12_KHR = GLenum(37821)
- GLenum_GL_COMPRESSED_RGBA_ASTC_3x3x3_OES = GLenum(37824)
- GLenum_GL_COMPRESSED_RGBA_ASTC_4x3x3_OES = GLenum(37825)
- GLenum_GL_COMPRESSED_RGBA_ASTC_4x4x3_OES = GLenum(37826)
- GLenum_GL_COMPRESSED_RGBA_ASTC_4x4x4_OES = GLenum(37827)
- GLenum_GL_COMPRESSED_RGBA_ASTC_5x4x4_OES = GLenum(37828)
- GLenum_GL_COMPRESSED_RGBA_ASTC_5x5x4_OES = GLenum(37829)
- GLenum_GL_COMPRESSED_RGBA_ASTC_5x5x5_OES = GLenum(37830)
- GLenum_GL_COMPRESSED_RGBA_ASTC_6x5x5_OES = GLenum(37831)
- GLenum_GL_COMPRESSED_RGBA_ASTC_6x6x5_OES = GLenum(37832)
- GLenum_GL_COMPRESSED_RGBA_ASTC_6x6x6_OES = GLenum(37833)
- GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4 = GLenum(37840)
- GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR = GLenum(37840)
- GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4 = GLenum(37841)
- GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR = GLenum(37841)
- GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5 = GLenum(37842)
- GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR = GLenum(37842)
- GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5 = GLenum(37843)
- GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR = GLenum(37843)
- GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6 = GLenum(37844)
- GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR = GLenum(37844)
- GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5 = GLenum(37845)
- GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR = GLenum(37845)
- GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6 = GLenum(37846)
- GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR = GLenum(37846)
- GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8 = GLenum(37847)
- GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR = GLenum(37847)
- GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5 = GLenum(37848)
- GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR = GLenum(37848)
- GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6 = GLenum(37849)
- GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR = GLenum(37849)
- GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8 = GLenum(37850)
- GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR = GLenum(37850)
- GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10 = GLenum(37851)
- GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR = GLenum(37851)
- GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10 = GLenum(37852)
- GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR = GLenum(37852)
- GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12 = GLenum(37853)
- GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR = GLenum(37853)
- GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES = GLenum(37856)
- GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES = GLenum(37857)
- GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES = GLenum(37858)
- GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES = GLenum(37859)
- GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES = GLenum(37860)
- GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES = GLenum(37861)
- GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES = GLenum(37862)
- GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES = GLenum(37863)
- GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES = GLenum(37864)
- GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES = GLenum(37865)
- GLenum_GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG = GLenum(37872)
- GLenum_GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG = GLenum(37873)
- GLenum_GL_PERFQUERY_COUNTER_EVENT_INTEL = GLenum(38128)
- GLenum_GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL = GLenum(38129)
- GLenum_GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL = GLenum(38130)
- GLenum_GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL = GLenum(38131)
- GLenum_GL_PERFQUERY_COUNTER_RAW_INTEL = GLenum(38132)
- GLenum_GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL = GLenum(38133)
- GLenum_GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL = GLenum(38136)
- GLenum_GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL = GLenum(38137)
- GLenum_GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL = GLenum(38138)
- GLenum_GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL = GLenum(38139)
- GLenum_GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL = GLenum(38140)
- GLenum_GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL = GLenum(38141)
- GLenum_GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL = GLenum(38142)
- GLenum_GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL = GLenum(38143)
- GLenum_GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL = GLenum(38144)
- GLenum_GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR = GLenum(38448)
- GLenum_GL_MAX_VIEWS_OVR = GLenum(38449)
- GLenum_GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR = GLenum(38450)
- GLenum_GL_GS_SHADER_BINARY_MTK = GLenum(38464)
- GLenum_GL_GS_PROGRAM_BINARY_MTK = GLenum(38465)
- GLenum_GL_RASTER_POSITION_UNCLIPPED_IBM = GLenum(103010)
- GLenum_GL_CULL_VERTEX_IBM = GLenum(103050)
- GLenum_GL_ALL_STATIC_DATA_IBM = GLenum(103060)
- GLenum_GL_STATIC_VERTEX_ARRAY_IBM = GLenum(103061)
- GLenum_GL_VERTEX_ARRAY_LIST_IBM = GLenum(103070)
- GLenum_GL_NORMAL_ARRAY_LIST_IBM = GLenum(103071)
- GLenum_GL_COLOR_ARRAY_LIST_IBM = GLenum(103072)
- GLenum_GL_INDEX_ARRAY_LIST_IBM = GLenum(103073)
- GLenum_GL_TEXTURE_COORD_ARRAY_LIST_IBM = GLenum(103074)
- GLenum_GL_EDGE_FLAG_ARRAY_LIST_IBM = GLenum(103075)
- GLenum_GL_FOG_COORDINATE_ARRAY_LIST_IBM = GLenum(103076)
- GLenum_GL_SECONDARY_COLOR_ARRAY_LIST_IBM = GLenum(103077)
- GLenum_GL_VERTEX_ARRAY_LIST_STRIDE_IBM = GLenum(103080)
- GLenum_GL_NORMAL_ARRAY_LIST_STRIDE_IBM = GLenum(103081)
- GLenum_GL_COLOR_ARRAY_LIST_STRIDE_IBM = GLenum(103082)
- GLenum_GL_INDEX_ARRAY_LIST_STRIDE_IBM = GLenum(103083)
- GLenum_GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM = GLenum(103084)
- GLenum_GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM = GLenum(103085)
- GLenum_GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM = GLenum(103086)
- GLenum_GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM = GLenum(103087)
- GLenum_GL_PREFER_DOUBLEBUFFER_HINT_PGI = GLenum(107000)
- GLenum_GL_CONSERVE_MEMORY_HINT_PGI = GLenum(107005)
- GLenum_GL_RECLAIM_MEMORY_HINT_PGI = GLenum(107006)
- GLenum_GL_NATIVE_GRAPHICS_HANDLE_PGI = GLenum(107010)
- GLenum_GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI = GLenum(107011)
- GLenum_GL_NATIVE_GRAPHICS_END_HINT_PGI = GLenum(107012)
- GLenum_GL_ALWAYS_FAST_HINT_PGI = GLenum(107020)
- GLenum_GL_ALWAYS_SOFT_HINT_PGI = GLenum(107021)
- GLenum_GL_ALLOW_DRAW_OBJ_HINT_PGI = GLenum(107022)
- GLenum_GL_ALLOW_DRAW_WIN_HINT_PGI = GLenum(107023)
- GLenum_GL_ALLOW_DRAW_FRG_HINT_PGI = GLenum(107024)
- GLenum_GL_ALLOW_DRAW_MEM_HINT_PGI = GLenum(107025)
- GLenum_GL_STRICT_DEPTHFUNC_HINT_PGI = GLenum(107030)
- GLenum_GL_STRICT_LIGHTING_HINT_PGI = GLenum(107031)
- GLenum_GL_STRICT_SCISSOR_HINT_PGI = GLenum(107032)
- GLenum_GL_FULL_STIPPLE_HINT_PGI = GLenum(107033)
- GLenum_GL_CLIP_NEAR_HINT_PGI = GLenum(107040)
- GLenum_GL_CLIP_FAR_HINT_PGI = GLenum(107041)
- GLenum_GL_WIDE_LINE_HINT_PGI = GLenum(107042)
- GLenum_GL_BACK_NORMALS_HINT_PGI = GLenum(107043)
- GLenum_GL_VERTEX_DATA_HINT_PGI = GLenum(107050)
- GLenum_GL_VERTEX_CONSISTENT_HINT_PGI = GLenum(107051)
- GLenum_GL_MATERIAL_SIDE_HINT_PGI = GLenum(107052)
- GLenum_GL_MAX_VERTEX_HINT_PGI = GLenum(107053)
+ GLenum_GL_TERMINATE_SEQUENCE_COMMAND_NV = GLenum(0)
+ GLenum_GL_NOP_COMMAND_NV = GLenum(1)
+ GLenum_GL_DRAW_ELEMENTS_COMMAND_NV = GLenum(2)
+ GLenum_GL_DRAW_ARRAYS_COMMAND_NV = GLenum(3)
+ GLenum_GL_DRAW_ELEMENTS_STRIP_COMMAND_NV = GLenum(4)
+ GLenum_GL_DRAW_ARRAYS_STRIP_COMMAND_NV = GLenum(5)
+ GLenum_GL_DRAW_ELEMENTS_INSTANCED_COMMAND_NV = GLenum(6)
+ GLenum_GL_DRAW_ARRAYS_INSTANCED_COMMAND_NV = GLenum(7)
+ GLenum_GL_ELEMENT_ADDRESS_COMMAND_NV = GLenum(8)
+ GLenum_GL_ATTRIBUTE_ADDRESS_COMMAND_NV = GLenum(9)
+ GLenum_GL_UNIFORM_ADDRESS_COMMAND_NV = GLenum(10)
+ GLenum_GL_BLEND_COLOR_COMMAND_NV = GLenum(11)
+ GLenum_GL_STENCIL_REF_COMMAND_NV = GLenum(12)
+ GLenum_GL_LINE_WIDTH_COMMAND_NV = GLenum(13)
+ GLenum_GL_POLYGON_OFFSET_COMMAND_NV = GLenum(14)
+ GLenum_GL_ALPHA_REF_COMMAND_NV = GLenum(15)
+ GLenum_GL_VIEWPORT_COMMAND_NV = GLenum(16)
+ GLenum_GL_SCISSOR_COMMAND_NV = GLenum(17)
+ GLenum_GL_FRONT_FACE_COMMAND_NV = GLenum(18)
+ GLenum_GL_LAYOUT_DEFAULT_INTEL = GLenum(0)
+ GLenum_GL_LAYOUT_LINEAR_INTEL = GLenum(1)
+ GLenum_GL_LAYOUT_LINEAR_CPU_CACHED_INTEL = GLenum(2)
+ GLenum_GL_CLOSE_PATH_NV = GLenum(0)
+ GLenum_GL_MOVE_TO_NV = GLenum(2)
+ GLenum_GL_RELATIVE_MOVE_TO_NV = GLenum(3)
+ GLenum_GL_LINE_TO_NV = GLenum(4)
+ GLenum_GL_RELATIVE_LINE_TO_NV = GLenum(5)
+ GLenum_GL_HORIZONTAL_LINE_TO_NV = GLenum(6)
+ GLenum_GL_RELATIVE_HORIZONTAL_LINE_TO_NV = GLenum(7)
+ GLenum_GL_VERTICAL_LINE_TO_NV = GLenum(8)
+ GLenum_GL_RELATIVE_VERTICAL_LINE_TO_NV = GLenum(9)
+ GLenum_GL_QUADRATIC_CURVE_TO_NV = GLenum(10)
+ GLenum_GL_RELATIVE_QUADRATIC_CURVE_TO_NV = GLenum(11)
+ GLenum_GL_CUBIC_CURVE_TO_NV = GLenum(12)
+ GLenum_GL_RELATIVE_CUBIC_CURVE_TO_NV = GLenum(13)
+ GLenum_GL_SMOOTH_QUADRATIC_CURVE_TO_NV = GLenum(14)
+ GLenum_GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV = GLenum(15)
+ GLenum_GL_SMOOTH_CUBIC_CURVE_TO_NV = GLenum(16)
+ GLenum_GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV = GLenum(17)
+ GLenum_GL_SMALL_CCW_ARC_TO_NV = GLenum(18)
+ GLenum_GL_RELATIVE_SMALL_CCW_ARC_TO_NV = GLenum(19)
+ GLenum_GL_SMALL_CW_ARC_TO_NV = GLenum(20)
+ GLenum_GL_RELATIVE_SMALL_CW_ARC_TO_NV = GLenum(21)
+ GLenum_GL_LARGE_CCW_ARC_TO_NV = GLenum(22)
+ GLenum_GL_RELATIVE_LARGE_CCW_ARC_TO_NV = GLenum(23)
+ GLenum_GL_LARGE_CW_ARC_TO_NV = GLenum(24)
+ GLenum_GL_RELATIVE_LARGE_CW_ARC_TO_NV = GLenum(25)
+ GLenum_GL_CONIC_CURVE_TO_NV = GLenum(26)
+ GLenum_GL_RELATIVE_CONIC_CURVE_TO_NV = GLenum(27)
+ GLenum_GL_SHARED_EDGE_NV = GLenum(192)
+ GLenum_GL_ROUNDED_RECT_NV = GLenum(232)
+ GLenum_GL_RELATIVE_ROUNDED_RECT_NV = GLenum(233)
+ GLenum_GL_ROUNDED_RECT2_NV = GLenum(234)
+ GLenum_GL_RELATIVE_ROUNDED_RECT2_NV = GLenum(235)
+ GLenum_GL_ROUNDED_RECT4_NV = GLenum(236)
+ GLenum_GL_RELATIVE_ROUNDED_RECT4_NV = GLenum(237)
+ GLenum_GL_ROUNDED_RECT8_NV = GLenum(238)
+ GLenum_GL_RELATIVE_ROUNDED_RECT8_NV = GLenum(239)
+ GLenum_GL_RESTART_PATH_NV = GLenum(240)
+ GLenum_GL_DUP_FIRST_CUBIC_CURVE_TO_NV = GLenum(242)
+ GLenum_GL_DUP_LAST_CUBIC_CURVE_TO_NV = GLenum(244)
+ GLenum_GL_RECT_NV = GLenum(246)
+ GLenum_GL_RELATIVE_RECT_NV = GLenum(247)
+ GLenum_GL_CIRCULAR_CCW_ARC_TO_NV = GLenum(248)
+ GLenum_GL_CIRCULAR_CW_ARC_TO_NV = GLenum(250)
+ GLenum_GL_CIRCULAR_TANGENT_ARC_TO_NV = GLenum(252)
+ GLenum_GL_ARC_TO_NV = GLenum(254)
+ GLenum_GL_RELATIVE_ARC_TO_NV = GLenum(255)
+ GLenum_GL_NEXT_BUFFER_NV = GLenum(4294967294)
+ GLenum_GL_SKIP_COMPONENTS4_NV = GLenum(4294967293)
+ GLenum_GL_SKIP_COMPONENTS3_NV = GLenum(4294967292)
+ GLenum_GL_SKIP_COMPONENTS2_NV = GLenum(4294967291)
+ GLenum_GL_SKIP_COMPONENTS1_NV = GLenum(4294967290)
+ GLenum_GL_RESTART_SUN = GLenum(1)
+ GLenum_GL_REPLACE_MIDDLE_SUN = GLenum(2)
+ GLenum_GL_REPLACE_OLDEST_SUN = GLenum(3)
+ GLenum_GL_NO_ERROR = GLenum(0)
+ GLenum_GL_ZERO = GLenum(0)
+ GLenum_GL_NONE = GLenum(0)
+ GLenum_GL_NONE_OES = GLenum(0)
+ GLenum_GL_ONE = GLenum(1)
+ GLenum_GL_INVALID_INDEX = GLenum(4294967295)
+ GLenum_GL_VERSION_ES_CL_1_0 = GLenum(1)
+ GLenum_GL_VERSION_ES_CM_1_1 = GLenum(1)
+ GLenum_GL_VERSION_ES_CL_1_1 = GLenum(1)
+ GLenum_GL_POINTS = GLenum(0)
+ GLenum_GL_LINES = GLenum(1)
+ GLenum_GL_LINE_LOOP = GLenum(2)
+ GLenum_GL_LINE_STRIP = GLenum(3)
+ GLenum_GL_TRIANGLES = GLenum(4)
+ GLenum_GL_TRIANGLE_STRIP = GLenum(5)
+ GLenum_GL_TRIANGLE_FAN = GLenum(6)
+ GLenum_GL_QUADS = GLenum(7)
+ GLenum_GL_QUADS_EXT = GLenum(7)
+ GLenum_GL_QUADS_OES = GLenum(7)
+ GLenum_GL_QUAD_STRIP = GLenum(8)
+ GLenum_GL_POLYGON = GLenum(9)
+ GLenum_GL_LINES_ADJACENCY = GLenum(10)
+ GLenum_GL_LINES_ADJACENCY_ARB = GLenum(10)
+ GLenum_GL_LINES_ADJACENCY_EXT = GLenum(10)
+ GLenum_GL_LINES_ADJACENCY_OES = GLenum(10)
+ GLenum_GL_LINE_STRIP_ADJACENCY = GLenum(11)
+ GLenum_GL_LINE_STRIP_ADJACENCY_ARB = GLenum(11)
+ GLenum_GL_LINE_STRIP_ADJACENCY_EXT = GLenum(11)
+ GLenum_GL_LINE_STRIP_ADJACENCY_OES = GLenum(11)
+ GLenum_GL_TRIANGLES_ADJACENCY = GLenum(12)
+ GLenum_GL_TRIANGLES_ADJACENCY_ARB = GLenum(12)
+ GLenum_GL_TRIANGLES_ADJACENCY_EXT = GLenum(12)
+ GLenum_GL_TRIANGLES_ADJACENCY_OES = GLenum(12)
+ GLenum_GL_TRIANGLE_STRIP_ADJACENCY = GLenum(13)
+ GLenum_GL_TRIANGLE_STRIP_ADJACENCY_ARB = GLenum(13)
+ GLenum_GL_TRIANGLE_STRIP_ADJACENCY_EXT = GLenum(13)
+ GLenum_GL_TRIANGLE_STRIP_ADJACENCY_OES = GLenum(13)
+ GLenum_GL_PATCHES = GLenum(14)
+ GLenum_GL_PATCHES_EXT = GLenum(14)
+ GLenum_GL_PATCHES_OES = GLenum(14)
+ GLenum_GL_ACCUM = GLenum(256)
+ GLenum_GL_LOAD = GLenum(257)
+ GLenum_GL_RETURN = GLenum(258)
+ GLenum_GL_MULT = GLenum(259)
+ GLenum_GL_ADD = GLenum(260)
+ GLenum_GL_NEVER = GLenum(512)
+ GLenum_GL_LESS = GLenum(513)
+ GLenum_GL_EQUAL = GLenum(514)
+ GLenum_GL_LEQUAL = GLenum(515)
+ GLenum_GL_GREATER = GLenum(516)
+ GLenum_GL_NOTEQUAL = GLenum(517)
+ GLenum_GL_GEQUAL = GLenum(518)
+ GLenum_GL_ALWAYS = GLenum(519)
+ GLenum_GL_SRC_COLOR = GLenum(768)
+ GLenum_GL_ONE_MINUS_SRC_COLOR = GLenum(769)
+ GLenum_GL_SRC_ALPHA = GLenum(770)
+ GLenum_GL_ONE_MINUS_SRC_ALPHA = GLenum(771)
+ GLenum_GL_DST_ALPHA = GLenum(772)
+ GLenum_GL_ONE_MINUS_DST_ALPHA = GLenum(773)
+ GLenum_GL_DST_COLOR = GLenum(774)
+ GLenum_GL_ONE_MINUS_DST_COLOR = GLenum(775)
+ GLenum_GL_SRC_ALPHA_SATURATE = GLenum(776)
+ GLenum_GL_SRC_ALPHA_SATURATE_EXT = GLenum(776)
+ GLenum_GL_FRONT_LEFT = GLenum(1024)
+ GLenum_GL_FRONT_RIGHT = GLenum(1025)
+ GLenum_GL_BACK_LEFT = GLenum(1026)
+ GLenum_GL_BACK_RIGHT = GLenum(1027)
+ GLenum_GL_FRONT = GLenum(1028)
+ GLenum_GL_BACK = GLenum(1029)
+ GLenum_GL_LEFT = GLenum(1030)
+ GLenum_GL_RIGHT = GLenum(1031)
+ GLenum_GL_FRONT_AND_BACK = GLenum(1032)
+ GLenum_GL_AUX0 = GLenum(1033)
+ GLenum_GL_AUX1 = GLenum(1034)
+ GLenum_GL_AUX2 = GLenum(1035)
+ GLenum_GL_AUX3 = GLenum(1036)
+ GLenum_GL_INVALID_ENUM = GLenum(1280)
+ GLenum_GL_INVALID_VALUE = GLenum(1281)
+ GLenum_GL_INVALID_OPERATION = GLenum(1282)
+ GLenum_GL_STACK_OVERFLOW = GLenum(1283)
+ GLenum_GL_STACK_OVERFLOW_KHR = GLenum(1283)
+ GLenum_GL_STACK_UNDERFLOW = GLenum(1284)
+ GLenum_GL_STACK_UNDERFLOW_KHR = GLenum(1284)
+ GLenum_GL_OUT_OF_MEMORY = GLenum(1285)
+ GLenum_GL_INVALID_FRAMEBUFFER_OPERATION = GLenum(1286)
+ GLenum_GL_INVALID_FRAMEBUFFER_OPERATION_EXT = GLenum(1286)
+ GLenum_GL_INVALID_FRAMEBUFFER_OPERATION_OES = GLenum(1286)
+ GLenum_GL_CONTEXT_LOST = GLenum(1287)
+ GLenum_GL_CONTEXT_LOST_KHR = GLenum(1287)
+ GLenum_GL_2D = GLenum(1536)
+ GLenum_GL_3D = GLenum(1537)
+ GLenum_GL_3D_COLOR = GLenum(1538)
+ GLenum_GL_3D_COLOR_TEXTURE = GLenum(1539)
+ GLenum_GL_4D_COLOR_TEXTURE = GLenum(1540)
+ GLenum_GL_PASS_THROUGH_TOKEN = GLenum(1792)
+ GLenum_GL_POINT_TOKEN = GLenum(1793)
+ GLenum_GL_LINE_TOKEN = GLenum(1794)
+ GLenum_GL_POLYGON_TOKEN = GLenum(1795)
+ GLenum_GL_BITMAP_TOKEN = GLenum(1796)
+ GLenum_GL_DRAW_PIXEL_TOKEN = GLenum(1797)
+ GLenum_GL_COPY_PIXEL_TOKEN = GLenum(1798)
+ GLenum_GL_LINE_RESET_TOKEN = GLenum(1799)
+ GLenum_GL_EXP = GLenum(2048)
+ GLenum_GL_EXP2 = GLenum(2049)
+ GLenum_GL_CW = GLenum(2304)
+ GLenum_GL_CCW = GLenum(2305)
+ GLenum_GL_COEFF = GLenum(2560)
+ GLenum_GL_ORDER = GLenum(2561)
+ GLenum_GL_DOMAIN = GLenum(2562)
+ GLenum_GL_CURRENT_COLOR = GLenum(2816)
+ GLenum_GL_CURRENT_INDEX = GLenum(2817)
+ GLenum_GL_CURRENT_NORMAL = GLenum(2818)
+ GLenum_GL_CURRENT_TEXTURE_COORDS = GLenum(2819)
+ GLenum_GL_CURRENT_RASTER_COLOR = GLenum(2820)
+ GLenum_GL_CURRENT_RASTER_INDEX = GLenum(2821)
+ GLenum_GL_CURRENT_RASTER_TEXTURE_COORDS = GLenum(2822)
+ GLenum_GL_CURRENT_RASTER_POSITION = GLenum(2823)
+ GLenum_GL_CURRENT_RASTER_POSITION_VALID = GLenum(2824)
+ GLenum_GL_CURRENT_RASTER_DISTANCE = GLenum(2825)
+ GLenum_GL_POINT_SMOOTH = GLenum(2832)
+ GLenum_GL_POINT_SIZE = GLenum(2833)
+ GLenum_GL_POINT_SIZE_RANGE = GLenum(2834)
+ GLenum_GL_SMOOTH_POINT_SIZE_RANGE = GLenum(2834)
+ GLenum_GL_POINT_SIZE_GRANULARITY = GLenum(2835)
+ GLenum_GL_SMOOTH_POINT_SIZE_GRANULARITY = GLenum(2835)
+ GLenum_GL_LINE_SMOOTH = GLenum(2848)
+ GLenum_GL_LINE_WIDTH = GLenum(2849)
+ GLenum_GL_LINE_WIDTH_RANGE = GLenum(2850)
+ GLenum_GL_SMOOTH_LINE_WIDTH_RANGE = GLenum(2850)
+ GLenum_GL_LINE_WIDTH_GRANULARITY = GLenum(2851)
+ GLenum_GL_SMOOTH_LINE_WIDTH_GRANULARITY = GLenum(2851)
+ GLenum_GL_LINE_STIPPLE = GLenum(2852)
+ GLenum_GL_LINE_STIPPLE_PATTERN = GLenum(2853)
+ GLenum_GL_LINE_STIPPLE_REPEAT = GLenum(2854)
+ GLenum_GL_LIST_MODE = GLenum(2864)
+ GLenum_GL_MAX_LIST_NESTING = GLenum(2865)
+ GLenum_GL_LIST_BASE = GLenum(2866)
+ GLenum_GL_LIST_INDEX = GLenum(2867)
+ GLenum_GL_POLYGON_MODE = GLenum(2880)
+ GLenum_GL_POLYGON_MODE_NV = GLenum(2880)
+ GLenum_GL_POLYGON_SMOOTH = GLenum(2881)
+ GLenum_GL_POLYGON_STIPPLE = GLenum(2882)
+ GLenum_GL_EDGE_FLAG = GLenum(2883)
+ GLenum_GL_CULL_FACE = GLenum(2884)
+ GLenum_GL_CULL_FACE_MODE = GLenum(2885)
+ GLenum_GL_FRONT_FACE = GLenum(2886)
+ GLenum_GL_LIGHTING = GLenum(2896)
+ GLenum_GL_LIGHT_MODEL_LOCAL_VIEWER = GLenum(2897)
+ GLenum_GL_LIGHT_MODEL_TWO_SIDE = GLenum(2898)
+ GLenum_GL_LIGHT_MODEL_AMBIENT = GLenum(2899)
+ GLenum_GL_SHADE_MODEL = GLenum(2900)
+ GLenum_GL_COLOR_MATERIAL_FACE = GLenum(2901)
+ GLenum_GL_COLOR_MATERIAL_PARAMETER = GLenum(2902)
+ GLenum_GL_COLOR_MATERIAL = GLenum(2903)
+ GLenum_GL_FOG = GLenum(2912)
+ GLenum_GL_FOG_INDEX = GLenum(2913)
+ GLenum_GL_FOG_DENSITY = GLenum(2914)
+ GLenum_GL_FOG_START = GLenum(2915)
+ GLenum_GL_FOG_END = GLenum(2916)
+ GLenum_GL_FOG_MODE = GLenum(2917)
+ GLenum_GL_FOG_COLOR = GLenum(2918)
+ GLenum_GL_DEPTH_RANGE = GLenum(2928)
+ GLenum_GL_DEPTH_TEST = GLenum(2929)
+ GLenum_GL_DEPTH_WRITEMASK = GLenum(2930)
+ GLenum_GL_DEPTH_CLEAR_VALUE = GLenum(2931)
+ GLenum_GL_DEPTH_FUNC = GLenum(2932)
+ GLenum_GL_ACCUM_CLEAR_VALUE = GLenum(2944)
+ GLenum_GL_STENCIL_TEST = GLenum(2960)
+ GLenum_GL_STENCIL_CLEAR_VALUE = GLenum(2961)
+ GLenum_GL_STENCIL_FUNC = GLenum(2962)
+ GLenum_GL_STENCIL_VALUE_MASK = GLenum(2963)
+ GLenum_GL_STENCIL_FAIL = GLenum(2964)
+ GLenum_GL_STENCIL_PASS_DEPTH_FAIL = GLenum(2965)
+ GLenum_GL_STENCIL_PASS_DEPTH_PASS = GLenum(2966)
+ GLenum_GL_STENCIL_REF = GLenum(2967)
+ GLenum_GL_STENCIL_WRITEMASK = GLenum(2968)
+ GLenum_GL_MATRIX_MODE = GLenum(2976)
+ GLenum_GL_NORMALIZE = GLenum(2977)
+ GLenum_GL_VIEWPORT = GLenum(2978)
+ GLenum_GL_MODELVIEW_STACK_DEPTH = GLenum(2979)
+ GLenum_GL_MODELVIEW0_STACK_DEPTH_EXT = GLenum(2979)
+ GLenum_GL_PATH_MODELVIEW_STACK_DEPTH_NV = GLenum(2979)
+ GLenum_GL_PROJECTION_STACK_DEPTH = GLenum(2980)
+ GLenum_GL_PATH_PROJECTION_STACK_DEPTH_NV = GLenum(2980)
+ GLenum_GL_TEXTURE_STACK_DEPTH = GLenum(2981)
+ GLenum_GL_MODELVIEW_MATRIX = GLenum(2982)
+ GLenum_GL_MODELVIEW0_MATRIX_EXT = GLenum(2982)
+ GLenum_GL_PATH_MODELVIEW_MATRIX_NV = GLenum(2982)
+ GLenum_GL_PROJECTION_MATRIX = GLenum(2983)
+ GLenum_GL_PATH_PROJECTION_MATRIX_NV = GLenum(2983)
+ GLenum_GL_TEXTURE_MATRIX = GLenum(2984)
+ GLenum_GL_ATTRIB_STACK_DEPTH = GLenum(2992)
+ GLenum_GL_CLIENT_ATTRIB_STACK_DEPTH = GLenum(2993)
+ GLenum_GL_ALPHA_TEST = GLenum(3008)
+ GLenum_GL_ALPHA_TEST_QCOM = GLenum(3008)
+ GLenum_GL_ALPHA_TEST_FUNC = GLenum(3009)
+ GLenum_GL_ALPHA_TEST_FUNC_QCOM = GLenum(3009)
+ GLenum_GL_ALPHA_TEST_REF = GLenum(3010)
+ GLenum_GL_ALPHA_TEST_REF_QCOM = GLenum(3010)
+ GLenum_GL_DITHER = GLenum(3024)
+ GLenum_GL_BLEND_DST = GLenum(3040)
+ GLenum_GL_BLEND_SRC = GLenum(3041)
+ GLenum_GL_BLEND = GLenum(3042)
+ GLenum_GL_LOGIC_OP_MODE = GLenum(3056)
+ GLenum_GL_INDEX_LOGIC_OP = GLenum(3057)
+ GLenum_GL_LOGIC_OP = GLenum(3057)
+ GLenum_GL_COLOR_LOGIC_OP = GLenum(3058)
+ GLenum_GL_AUX_BUFFERS = GLenum(3072)
+ GLenum_GL_DRAW_BUFFER = GLenum(3073)
+ GLenum_GL_DRAW_BUFFER_EXT = GLenum(3073)
+ GLenum_GL_READ_BUFFER = GLenum(3074)
+ GLenum_GL_READ_BUFFER_EXT = GLenum(3074)
+ GLenum_GL_READ_BUFFER_NV = GLenum(3074)
+ GLenum_GL_SCISSOR_BOX = GLenum(3088)
+ GLenum_GL_SCISSOR_TEST = GLenum(3089)
+ GLenum_GL_INDEX_CLEAR_VALUE = GLenum(3104)
+ GLenum_GL_INDEX_WRITEMASK = GLenum(3105)
+ GLenum_GL_COLOR_CLEAR_VALUE = GLenum(3106)
+ GLenum_GL_COLOR_WRITEMASK = GLenum(3107)
+ GLenum_GL_INDEX_MODE = GLenum(3120)
+ GLenum_GL_RGBA_MODE = GLenum(3121)
+ GLenum_GL_DOUBLEBUFFER = GLenum(3122)
+ GLenum_GL_STEREO = GLenum(3123)
+ GLenum_GL_RENDER_MODE = GLenum(3136)
+ GLenum_GL_PERSPECTIVE_CORRECTION_HINT = GLenum(3152)
+ GLenum_GL_POINT_SMOOTH_HINT = GLenum(3153)
+ GLenum_GL_LINE_SMOOTH_HINT = GLenum(3154)
+ GLenum_GL_POLYGON_SMOOTH_HINT = GLenum(3155)
+ GLenum_GL_FOG_HINT = GLenum(3156)
+ GLenum_GL_TEXTURE_GEN_S = GLenum(3168)
+ GLenum_GL_TEXTURE_GEN_T = GLenum(3169)
+ GLenum_GL_TEXTURE_GEN_R = GLenum(3170)
+ GLenum_GL_TEXTURE_GEN_Q = GLenum(3171)
+ GLenum_GL_PIXEL_MAP_I_TO_I = GLenum(3184)
+ GLenum_GL_PIXEL_MAP_S_TO_S = GLenum(3185)
+ GLenum_GL_PIXEL_MAP_I_TO_R = GLenum(3186)
+ GLenum_GL_PIXEL_MAP_I_TO_G = GLenum(3187)
+ GLenum_GL_PIXEL_MAP_I_TO_B = GLenum(3188)
+ GLenum_GL_PIXEL_MAP_I_TO_A = GLenum(3189)
+ GLenum_GL_PIXEL_MAP_R_TO_R = GLenum(3190)
+ GLenum_GL_PIXEL_MAP_G_TO_G = GLenum(3191)
+ GLenum_GL_PIXEL_MAP_B_TO_B = GLenum(3192)
+ GLenum_GL_PIXEL_MAP_A_TO_A = GLenum(3193)
+ GLenum_GL_PIXEL_MAP_I_TO_I_SIZE = GLenum(3248)
+ GLenum_GL_PIXEL_MAP_S_TO_S_SIZE = GLenum(3249)
+ GLenum_GL_PIXEL_MAP_I_TO_R_SIZE = GLenum(3250)
+ GLenum_GL_PIXEL_MAP_I_TO_G_SIZE = GLenum(3251)
+ GLenum_GL_PIXEL_MAP_I_TO_B_SIZE = GLenum(3252)
+ GLenum_GL_PIXEL_MAP_I_TO_A_SIZE = GLenum(3253)
+ GLenum_GL_PIXEL_MAP_R_TO_R_SIZE = GLenum(3254)
+ GLenum_GL_PIXEL_MAP_G_TO_G_SIZE = GLenum(3255)
+ GLenum_GL_PIXEL_MAP_B_TO_B_SIZE = GLenum(3256)
+ GLenum_GL_PIXEL_MAP_A_TO_A_SIZE = GLenum(3257)
+ GLenum_GL_UNPACK_SWAP_BYTES = GLenum(3312)
+ GLenum_GL_UNPACK_LSB_FIRST = GLenum(3313)
+ GLenum_GL_UNPACK_ROW_LENGTH = GLenum(3314)
+ GLenum_GL_UNPACK_ROW_LENGTH_EXT = GLenum(3314)
+ GLenum_GL_UNPACK_SKIP_ROWS = GLenum(3315)
+ GLenum_GL_UNPACK_SKIP_ROWS_EXT = GLenum(3315)
+ GLenum_GL_UNPACK_SKIP_PIXELS = GLenum(3316)
+ GLenum_GL_UNPACK_SKIP_PIXELS_EXT = GLenum(3316)
+ GLenum_GL_UNPACK_ALIGNMENT = GLenum(3317)
+ GLenum_GL_PACK_SWAP_BYTES = GLenum(3328)
+ GLenum_GL_PACK_LSB_FIRST = GLenum(3329)
+ GLenum_GL_PACK_ROW_LENGTH = GLenum(3330)
+ GLenum_GL_PACK_SKIP_ROWS = GLenum(3331)
+ GLenum_GL_PACK_SKIP_PIXELS = GLenum(3332)
+ GLenum_GL_PACK_ALIGNMENT = GLenum(3333)
+ GLenum_GL_MAP_COLOR = GLenum(3344)
+ GLenum_GL_MAP_STENCIL = GLenum(3345)
+ GLenum_GL_INDEX_SHIFT = GLenum(3346)
+ GLenum_GL_INDEX_OFFSET = GLenum(3347)
+ GLenum_GL_RED_SCALE = GLenum(3348)
+ GLenum_GL_RED_BIAS = GLenum(3349)
+ GLenum_GL_ZOOM_X = GLenum(3350)
+ GLenum_GL_ZOOM_Y = GLenum(3351)
+ GLenum_GL_GREEN_SCALE = GLenum(3352)
+ GLenum_GL_GREEN_BIAS = GLenum(3353)
+ GLenum_GL_BLUE_SCALE = GLenum(3354)
+ GLenum_GL_BLUE_BIAS = GLenum(3355)
+ GLenum_GL_ALPHA_SCALE = GLenum(3356)
+ GLenum_GL_ALPHA_BIAS = GLenum(3357)
+ GLenum_GL_DEPTH_SCALE = GLenum(3358)
+ GLenum_GL_DEPTH_BIAS = GLenum(3359)
+ GLenum_GL_MAX_EVAL_ORDER = GLenum(3376)
+ GLenum_GL_MAX_LIGHTS = GLenum(3377)
+ GLenum_GL_MAX_CLIP_PLANES = GLenum(3378)
+ GLenum_GL_MAX_CLIP_PLANES_IMG = GLenum(3378)
+ GLenum_GL_MAX_CLIP_DISTANCES = GLenum(3378)
+ GLenum_GL_MAX_CLIP_DISTANCES_APPLE = GLenum(3378)
+ GLenum_GL_MAX_TEXTURE_SIZE = GLenum(3379)
+ GLenum_GL_MAX_PIXEL_MAP_TABLE = GLenum(3380)
+ GLenum_GL_MAX_ATTRIB_STACK_DEPTH = GLenum(3381)
+ GLenum_GL_MAX_MODELVIEW_STACK_DEPTH = GLenum(3382)
+ GLenum_GL_PATH_MAX_MODELVIEW_STACK_DEPTH_NV = GLenum(3382)
+ GLenum_GL_MAX_NAME_STACK_DEPTH = GLenum(3383)
+ GLenum_GL_MAX_PROJECTION_STACK_DEPTH = GLenum(3384)
+ GLenum_GL_PATH_MAX_PROJECTION_STACK_DEPTH_NV = GLenum(3384)
+ GLenum_GL_MAX_TEXTURE_STACK_DEPTH = GLenum(3385)
+ GLenum_GL_MAX_VIEWPORT_DIMS = GLenum(3386)
+ GLenum_GL_MAX_CLIENT_ATTRIB_STACK_DEPTH = GLenum(3387)
+ GLenum_GL_SUBPIXEL_BITS = GLenum(3408)
+ GLenum_GL_INDEX_BITS = GLenum(3409)
+ GLenum_GL_RED_BITS = GLenum(3410)
+ GLenum_GL_GREEN_BITS = GLenum(3411)
+ GLenum_GL_BLUE_BITS = GLenum(3412)
+ GLenum_GL_ALPHA_BITS = GLenum(3413)
+ GLenum_GL_DEPTH_BITS = GLenum(3414)
+ GLenum_GL_STENCIL_BITS = GLenum(3415)
+ GLenum_GL_ACCUM_RED_BITS = GLenum(3416)
+ GLenum_GL_ACCUM_GREEN_BITS = GLenum(3417)
+ GLenum_GL_ACCUM_BLUE_BITS = GLenum(3418)
+ GLenum_GL_ACCUM_ALPHA_BITS = GLenum(3419)
+ GLenum_GL_NAME_STACK_DEPTH = GLenum(3440)
+ GLenum_GL_AUTO_NORMAL = GLenum(3456)
+ GLenum_GL_MAP1_COLOR_4 = GLenum(3472)
+ GLenum_GL_MAP1_INDEX = GLenum(3473)
+ GLenum_GL_MAP1_NORMAL = GLenum(3474)
+ GLenum_GL_MAP1_TEXTURE_COORD_1 = GLenum(3475)
+ GLenum_GL_MAP1_TEXTURE_COORD_2 = GLenum(3476)
+ GLenum_GL_MAP1_TEXTURE_COORD_3 = GLenum(3477)
+ GLenum_GL_MAP1_TEXTURE_COORD_4 = GLenum(3478)
+ GLenum_GL_MAP1_VERTEX_3 = GLenum(3479)
+ GLenum_GL_MAP1_VERTEX_4 = GLenum(3480)
+ GLenum_GL_MAP2_COLOR_4 = GLenum(3504)
+ GLenum_GL_MAP2_INDEX = GLenum(3505)
+ GLenum_GL_MAP2_NORMAL = GLenum(3506)
+ GLenum_GL_MAP2_TEXTURE_COORD_1 = GLenum(3507)
+ GLenum_GL_MAP2_TEXTURE_COORD_2 = GLenum(3508)
+ GLenum_GL_MAP2_TEXTURE_COORD_3 = GLenum(3509)
+ GLenum_GL_MAP2_TEXTURE_COORD_4 = GLenum(3510)
+ GLenum_GL_MAP2_VERTEX_3 = GLenum(3511)
+ GLenum_GL_MAP2_VERTEX_4 = GLenum(3512)
+ GLenum_GL_MAP1_GRID_DOMAIN = GLenum(3536)
+ GLenum_GL_MAP1_GRID_SEGMENTS = GLenum(3537)
+ GLenum_GL_MAP2_GRID_DOMAIN = GLenum(3538)
+ GLenum_GL_MAP2_GRID_SEGMENTS = GLenum(3539)
+ GLenum_GL_TEXTURE_1D = GLenum(3552)
+ GLenum_GL_TEXTURE_2D = GLenum(3553)
+ GLenum_GL_FEEDBACK_BUFFER_POINTER = GLenum(3568)
+ GLenum_GL_FEEDBACK_BUFFER_SIZE = GLenum(3569)
+ GLenum_GL_FEEDBACK_BUFFER_TYPE = GLenum(3570)
+ GLenum_GL_SELECTION_BUFFER_POINTER = GLenum(3571)
+ GLenum_GL_SELECTION_BUFFER_SIZE = GLenum(3572)
+ GLenum_GL_TEXTURE_WIDTH = GLenum(4096)
+ GLenum_GL_TEXTURE_HEIGHT = GLenum(4097)
+ GLenum_GL_TEXTURE_INTERNAL_FORMAT = GLenum(4099)
+ GLenum_GL_TEXTURE_COMPONENTS = GLenum(4099)
+ GLenum_GL_TEXTURE_BORDER_COLOR = GLenum(4100)
+ GLenum_GL_TEXTURE_BORDER_COLOR_EXT = GLenum(4100)
+ GLenum_GL_TEXTURE_BORDER_COLOR_NV = GLenum(4100)
+ GLenum_GL_TEXTURE_BORDER_COLOR_OES = GLenum(4100)
+ GLenum_GL_TEXTURE_BORDER = GLenum(4101)
+ GLenum_GL_TEXTURE_TARGET = GLenum(4102)
+ GLenum_GL_DONT_CARE = GLenum(4352)
+ GLenum_GL_FASTEST = GLenum(4353)
+ GLenum_GL_NICEST = GLenum(4354)
+ GLenum_GL_AMBIENT = GLenum(4608)
+ GLenum_GL_DIFFUSE = GLenum(4609)
+ GLenum_GL_SPECULAR = GLenum(4610)
+ GLenum_GL_POSITION = GLenum(4611)
+ GLenum_GL_SPOT_DIRECTION = GLenum(4612)
+ GLenum_GL_SPOT_EXPONENT = GLenum(4613)
+ GLenum_GL_SPOT_CUTOFF = GLenum(4614)
+ GLenum_GL_CONSTANT_ATTENUATION = GLenum(4615)
+ GLenum_GL_LINEAR_ATTENUATION = GLenum(4616)
+ GLenum_GL_QUADRATIC_ATTENUATION = GLenum(4617)
+ GLenum_GL_COMPILE = GLenum(4864)
+ GLenum_GL_COMPILE_AND_EXECUTE = GLenum(4865)
+ GLenum_GL_BYTE = GLenum(5120)
+ GLenum_GL_UNSIGNED_BYTE = GLenum(5121)
+ GLenum_GL_SHORT = GLenum(5122)
+ GLenum_GL_UNSIGNED_SHORT = GLenum(5123)
+ GLenum_GL_INT = GLenum(5124)
+ GLenum_GL_UNSIGNED_INT = GLenum(5125)
+ GLenum_GL_FLOAT = GLenum(5126)
+ GLenum_GL_2_BYTES = GLenum(5127)
+ GLenum_GL_2_BYTES_NV = GLenum(5127)
+ GLenum_GL_3_BYTES = GLenum(5128)
+ GLenum_GL_3_BYTES_NV = GLenum(5128)
+ GLenum_GL_4_BYTES = GLenum(5129)
+ GLenum_GL_4_BYTES_NV = GLenum(5129)
+ GLenum_GL_DOUBLE = GLenum(5130)
+ GLenum_GL_DOUBLE_EXT = GLenum(5130)
+ GLenum_GL_HALF_FLOAT = GLenum(5131)
+ GLenum_GL_HALF_FLOAT_ARB = GLenum(5131)
+ GLenum_GL_HALF_FLOAT_NV = GLenum(5131)
+ GLenum_GL_HALF_APPLE = GLenum(5131)
+ GLenum_GL_FIXED = GLenum(5132)
+ GLenum_GL_FIXED_OES = GLenum(5132)
+ GLenum_GL_INT64_ARB = GLenum(5134)
+ GLenum_GL_INT64_NV = GLenum(5134)
+ GLenum_GL_UNSIGNED_INT64_ARB = GLenum(5135)
+ GLenum_GL_UNSIGNED_INT64_NV = GLenum(5135)
+ GLenum_GL_CLEAR = GLenum(5376)
+ GLenum_GL_AND = GLenum(5377)
+ GLenum_GL_AND_REVERSE = GLenum(5378)
+ GLenum_GL_COPY = GLenum(5379)
+ GLenum_GL_AND_INVERTED = GLenum(5380)
+ GLenum_GL_NOOP = GLenum(5381)
+ GLenum_GL_XOR = GLenum(5382)
+ GLenum_GL_XOR_NV = GLenum(5382)
+ GLenum_GL_OR = GLenum(5383)
+ GLenum_GL_NOR = GLenum(5384)
+ GLenum_GL_EQUIV = GLenum(5385)
+ GLenum_GL_INVERT = GLenum(5386)
+ GLenum_GL_OR_REVERSE = GLenum(5387)
+ GLenum_GL_COPY_INVERTED = GLenum(5388)
+ GLenum_GL_OR_INVERTED = GLenum(5389)
+ GLenum_GL_NAND = GLenum(5390)
+ GLenum_GL_SET = GLenum(5391)
+ GLenum_GL_EMISSION = GLenum(5632)
+ GLenum_GL_SHININESS = GLenum(5633)
+ GLenum_GL_AMBIENT_AND_DIFFUSE = GLenum(5634)
+ GLenum_GL_COLOR_INDEXES = GLenum(5635)
+ GLenum_GL_MODELVIEW = GLenum(5888)
+ GLenum_GL_MODELVIEW0_ARB = GLenum(5888)
+ GLenum_GL_MODELVIEW0_EXT = GLenum(5888)
+ GLenum_GL_PATH_MODELVIEW_NV = GLenum(5888)
+ GLenum_GL_PROJECTION = GLenum(5889)
+ GLenum_GL_PATH_PROJECTION_NV = GLenum(5889)
+ GLenum_GL_TEXTURE = GLenum(5890)
+ GLenum_GL_COLOR = GLenum(6144)
+ GLenum_GL_COLOR_EXT = GLenum(6144)
+ GLenum_GL_DEPTH = GLenum(6145)
+ GLenum_GL_DEPTH_EXT = GLenum(6145)
+ GLenum_GL_STENCIL = GLenum(6146)
+ GLenum_GL_STENCIL_EXT = GLenum(6146)
+ GLenum_GL_COLOR_INDEX = GLenum(6400)
+ GLenum_GL_STENCIL_INDEX = GLenum(6401)
+ GLenum_GL_STENCIL_INDEX_OES = GLenum(6401)
+ GLenum_GL_DEPTH_COMPONENT = GLenum(6402)
+ GLenum_GL_RED = GLenum(6403)
+ GLenum_GL_RED_EXT = GLenum(6403)
+ GLenum_GL_RED_NV = GLenum(6403)
+ GLenum_GL_GREEN = GLenum(6404)
+ GLenum_GL_GREEN_NV = GLenum(6404)
+ GLenum_GL_BLUE = GLenum(6405)
+ GLenum_GL_BLUE_NV = GLenum(6405)
+ GLenum_GL_ALPHA = GLenum(6406)
+ GLenum_GL_RGB = GLenum(6407)
+ GLenum_GL_RGBA = GLenum(6408)
+ GLenum_GL_LUMINANCE = GLenum(6409)
+ GLenum_GL_LUMINANCE_ALPHA = GLenum(6410)
+ GLenum_GL_BITMAP = GLenum(6656)
+ GLenum_GL_POINT = GLenum(6912)
+ GLenum_GL_POINT_NV = GLenum(6912)
+ GLenum_GL_LINE = GLenum(6913)
+ GLenum_GL_LINE_NV = GLenum(6913)
+ GLenum_GL_FILL = GLenum(6914)
+ GLenum_GL_FILL_NV = GLenum(6914)
+ GLenum_GL_RENDER = GLenum(7168)
+ GLenum_GL_FEEDBACK = GLenum(7169)
+ GLenum_GL_SELECT = GLenum(7170)
+ GLenum_GL_FLAT = GLenum(7424)
+ GLenum_GL_SMOOTH = GLenum(7425)
+ GLenum_GL_KEEP = GLenum(7680)
+ GLenum_GL_REPLACE = GLenum(7681)
+ GLenum_GL_INCR = GLenum(7682)
+ GLenum_GL_DECR = GLenum(7683)
+ GLenum_GL_VENDOR = GLenum(7936)
+ GLenum_GL_RENDERER = GLenum(7937)
+ GLenum_GL_VERSION = GLenum(7938)
+ GLenum_GL_EXTENSIONS = GLenum(7939)
+ GLenum_GL_S = GLenum(8192)
+ GLenum_GL_T = GLenum(8193)
+ GLenum_GL_R = GLenum(8194)
+ GLenum_GL_Q = GLenum(8195)
+ GLenum_GL_MODULATE = GLenum(8448)
+ GLenum_GL_DECAL = GLenum(8449)
+ GLenum_GL_TEXTURE_ENV_MODE = GLenum(8704)
+ GLenum_GL_TEXTURE_ENV_COLOR = GLenum(8705)
+ GLenum_GL_TEXTURE_ENV = GLenum(8960)
+ GLenum_GL_EYE_LINEAR = GLenum(9216)
+ GLenum_GL_EYE_LINEAR_NV = GLenum(9216)
+ GLenum_GL_OBJECT_LINEAR = GLenum(9217)
+ GLenum_GL_OBJECT_LINEAR_NV = GLenum(9217)
+ GLenum_GL_SPHERE_MAP = GLenum(9218)
+ GLenum_GL_TEXTURE_GEN_MODE = GLenum(9472)
+ GLenum_GL_TEXTURE_GEN_MODE_OES = GLenum(9472)
+ GLenum_GL_OBJECT_PLANE = GLenum(9473)
+ GLenum_GL_EYE_PLANE = GLenum(9474)
+ GLenum_GL_NEAREST = GLenum(9728)
+ GLenum_GL_LINEAR = GLenum(9729)
+ GLenum_GL_NEAREST_MIPMAP_NEAREST = GLenum(9984)
+ GLenum_GL_LINEAR_MIPMAP_NEAREST = GLenum(9985)
+ GLenum_GL_NEAREST_MIPMAP_LINEAR = GLenum(9986)
+ GLenum_GL_LINEAR_MIPMAP_LINEAR = GLenum(9987)
+ GLenum_GL_TEXTURE_MAG_FILTER = GLenum(10240)
+ GLenum_GL_TEXTURE_MIN_FILTER = GLenum(10241)
+ GLenum_GL_TEXTURE_WRAP_S = GLenum(10242)
+ GLenum_GL_TEXTURE_WRAP_T = GLenum(10243)
+ GLenum_GL_CLAMP = GLenum(10496)
+ GLenum_GL_REPEAT = GLenum(10497)
+ GLenum_GL_POLYGON_OFFSET_UNITS = GLenum(10752)
+ GLenum_GL_POLYGON_OFFSET_POINT = GLenum(10753)
+ GLenum_GL_POLYGON_OFFSET_POINT_NV = GLenum(10753)
+ GLenum_GL_POLYGON_OFFSET_LINE = GLenum(10754)
+ GLenum_GL_POLYGON_OFFSET_LINE_NV = GLenum(10754)
+ GLenum_GL_R3_G3_B2 = GLenum(10768)
+ GLenum_GL_V2F = GLenum(10784)
+ GLenum_GL_V3F = GLenum(10785)
+ GLenum_GL_C4UB_V2F = GLenum(10786)
+ GLenum_GL_C4UB_V3F = GLenum(10787)
+ GLenum_GL_C3F_V3F = GLenum(10788)
+ GLenum_GL_N3F_V3F = GLenum(10789)
+ GLenum_GL_C4F_N3F_V3F = GLenum(10790)
+ GLenum_GL_T2F_V3F = GLenum(10791)
+ GLenum_GL_T4F_V4F = GLenum(10792)
+ GLenum_GL_T2F_C4UB_V3F = GLenum(10793)
+ GLenum_GL_T2F_C3F_V3F = GLenum(10794)
+ GLenum_GL_T2F_N3F_V3F = GLenum(10795)
+ GLenum_GL_T2F_C4F_N3F_V3F = GLenum(10796)
+ GLenum_GL_T4F_C4F_N3F_V4F = GLenum(10797)
+ GLenum_GL_CLIP_PLANE0 = GLenum(12288)
+ GLenum_GL_CLIP_PLANE0_IMG = GLenum(12288)
+ GLenum_GL_CLIP_DISTANCE0 = GLenum(12288)
+ GLenum_GL_CLIP_DISTANCE0_APPLE = GLenum(12288)
+ GLenum_GL_CLIP_PLANE1 = GLenum(12289)
+ GLenum_GL_CLIP_PLANE1_IMG = GLenum(12289)
+ GLenum_GL_CLIP_DISTANCE1 = GLenum(12289)
+ GLenum_GL_CLIP_DISTANCE1_APPLE = GLenum(12289)
+ GLenum_GL_CLIP_PLANE2 = GLenum(12290)
+ GLenum_GL_CLIP_PLANE2_IMG = GLenum(12290)
+ GLenum_GL_CLIP_DISTANCE2 = GLenum(12290)
+ GLenum_GL_CLIP_DISTANCE2_APPLE = GLenum(12290)
+ GLenum_GL_CLIP_PLANE3 = GLenum(12291)
+ GLenum_GL_CLIP_PLANE3_IMG = GLenum(12291)
+ GLenum_GL_CLIP_DISTANCE3 = GLenum(12291)
+ GLenum_GL_CLIP_DISTANCE3_APPLE = GLenum(12291)
+ GLenum_GL_CLIP_PLANE4 = GLenum(12292)
+ GLenum_GL_CLIP_PLANE4_IMG = GLenum(12292)
+ GLenum_GL_CLIP_DISTANCE4 = GLenum(12292)
+ GLenum_GL_CLIP_DISTANCE4_APPLE = GLenum(12292)
+ GLenum_GL_CLIP_PLANE5 = GLenum(12293)
+ GLenum_GL_CLIP_PLANE5_IMG = GLenum(12293)
+ GLenum_GL_CLIP_DISTANCE5 = GLenum(12293)
+ GLenum_GL_CLIP_DISTANCE5_APPLE = GLenum(12293)
+ GLenum_GL_CLIP_DISTANCE6 = GLenum(12294)
+ GLenum_GL_CLIP_DISTANCE6_APPLE = GLenum(12294)
+ GLenum_GL_CLIP_DISTANCE7 = GLenum(12295)
+ GLenum_GL_CLIP_DISTANCE7_APPLE = GLenum(12295)
+ GLenum_GL_LIGHT0 = GLenum(16384)
+ GLenum_GL_LIGHT1 = GLenum(16385)
+ GLenum_GL_LIGHT2 = GLenum(16386)
+ GLenum_GL_LIGHT3 = GLenum(16387)
+ GLenum_GL_LIGHT4 = GLenum(16388)
+ GLenum_GL_LIGHT5 = GLenum(16389)
+ GLenum_GL_LIGHT6 = GLenum(16390)
+ GLenum_GL_LIGHT7 = GLenum(16391)
+ GLenum_GL_ABGR_EXT = GLenum(32768)
+ GLenum_GL_CONSTANT_COLOR = GLenum(32769)
+ GLenum_GL_CONSTANT_COLOR_EXT = GLenum(32769)
+ GLenum_GL_ONE_MINUS_CONSTANT_COLOR = GLenum(32770)
+ GLenum_GL_ONE_MINUS_CONSTANT_COLOR_EXT = GLenum(32770)
+ GLenum_GL_CONSTANT_ALPHA = GLenum(32771)
+ GLenum_GL_CONSTANT_ALPHA_EXT = GLenum(32771)
+ GLenum_GL_ONE_MINUS_CONSTANT_ALPHA = GLenum(32772)
+ GLenum_GL_ONE_MINUS_CONSTANT_ALPHA_EXT = GLenum(32772)
+ GLenum_GL_BLEND_COLOR = GLenum(32773)
+ GLenum_GL_BLEND_COLOR_EXT = GLenum(32773)
+ GLenum_GL_FUNC_ADD = GLenum(32774)
+ GLenum_GL_FUNC_ADD_EXT = GLenum(32774)
+ GLenum_GL_FUNC_ADD_OES = GLenum(32774)
+ GLenum_GL_MIN = GLenum(32775)
+ GLenum_GL_MIN_EXT = GLenum(32775)
+ GLenum_GL_MAX = GLenum(32776)
+ GLenum_GL_MAX_EXT = GLenum(32776)
+ GLenum_GL_BLEND_EQUATION = GLenum(32777)
+ GLenum_GL_BLEND_EQUATION_EXT = GLenum(32777)
+ GLenum_GL_BLEND_EQUATION_OES = GLenum(32777)
+ GLenum_GL_BLEND_EQUATION_RGB = GLenum(32777)
+ GLenum_GL_BLEND_EQUATION_RGB_EXT = GLenum(32777)
+ GLenum_GL_BLEND_EQUATION_RGB_OES = GLenum(32777)
+ GLenum_GL_FUNC_SUBTRACT = GLenum(32778)
+ GLenum_GL_FUNC_SUBTRACT_EXT = GLenum(32778)
+ GLenum_GL_FUNC_SUBTRACT_OES = GLenum(32778)
+ GLenum_GL_FUNC_REVERSE_SUBTRACT = GLenum(32779)
+ GLenum_GL_FUNC_REVERSE_SUBTRACT_EXT = GLenum(32779)
+ GLenum_GL_FUNC_REVERSE_SUBTRACT_OES = GLenum(32779)
+ GLenum_GL_CMYK_EXT = GLenum(32780)
+ GLenum_GL_CMYKA_EXT = GLenum(32781)
+ GLenum_GL_PACK_CMYK_HINT_EXT = GLenum(32782)
+ GLenum_GL_UNPACK_CMYK_HINT_EXT = GLenum(32783)
+ GLenum_GL_CONVOLUTION_1D = GLenum(32784)
+ GLenum_GL_CONVOLUTION_1D_EXT = GLenum(32784)
+ GLenum_GL_CONVOLUTION_2D = GLenum(32785)
+ GLenum_GL_CONVOLUTION_2D_EXT = GLenum(32785)
+ GLenum_GL_SEPARABLE_2D = GLenum(32786)
+ GLenum_GL_SEPARABLE_2D_EXT = GLenum(32786)
+ GLenum_GL_CONVOLUTION_BORDER_MODE = GLenum(32787)
+ GLenum_GL_CONVOLUTION_BORDER_MODE_EXT = GLenum(32787)
+ GLenum_GL_CONVOLUTION_FILTER_SCALE = GLenum(32788)
+ GLenum_GL_CONVOLUTION_FILTER_SCALE_EXT = GLenum(32788)
+ GLenum_GL_CONVOLUTION_FILTER_BIAS = GLenum(32789)
+ GLenum_GL_CONVOLUTION_FILTER_BIAS_EXT = GLenum(32789)
+ GLenum_GL_REDUCE = GLenum(32790)
+ GLenum_GL_REDUCE_EXT = GLenum(32790)
+ GLenum_GL_CONVOLUTION_FORMAT = GLenum(32791)
+ GLenum_GL_CONVOLUTION_FORMAT_EXT = GLenum(32791)
+ GLenum_GL_CONVOLUTION_WIDTH = GLenum(32792)
+ GLenum_GL_CONVOLUTION_WIDTH_EXT = GLenum(32792)
+ GLenum_GL_CONVOLUTION_HEIGHT = GLenum(32793)
+ GLenum_GL_CONVOLUTION_HEIGHT_EXT = GLenum(32793)
+ GLenum_GL_MAX_CONVOLUTION_WIDTH = GLenum(32794)
+ GLenum_GL_MAX_CONVOLUTION_WIDTH_EXT = GLenum(32794)
+ GLenum_GL_MAX_CONVOLUTION_HEIGHT = GLenum(32795)
+ GLenum_GL_MAX_CONVOLUTION_HEIGHT_EXT = GLenum(32795)
+ GLenum_GL_POST_CONVOLUTION_RED_SCALE = GLenum(32796)
+ GLenum_GL_POST_CONVOLUTION_RED_SCALE_EXT = GLenum(32796)
+ GLenum_GL_POST_CONVOLUTION_GREEN_SCALE = GLenum(32797)
+ GLenum_GL_POST_CONVOLUTION_GREEN_SCALE_EXT = GLenum(32797)
+ GLenum_GL_POST_CONVOLUTION_BLUE_SCALE = GLenum(32798)
+ GLenum_GL_POST_CONVOLUTION_BLUE_SCALE_EXT = GLenum(32798)
+ GLenum_GL_POST_CONVOLUTION_ALPHA_SCALE = GLenum(32799)
+ GLenum_GL_POST_CONVOLUTION_ALPHA_SCALE_EXT = GLenum(32799)
+ GLenum_GL_POST_CONVOLUTION_RED_BIAS = GLenum(32800)
+ GLenum_GL_POST_CONVOLUTION_RED_BIAS_EXT = GLenum(32800)
+ GLenum_GL_POST_CONVOLUTION_GREEN_BIAS = GLenum(32801)
+ GLenum_GL_POST_CONVOLUTION_GREEN_BIAS_EXT = GLenum(32801)
+ GLenum_GL_POST_CONVOLUTION_BLUE_BIAS = GLenum(32802)
+ GLenum_GL_POST_CONVOLUTION_BLUE_BIAS_EXT = GLenum(32802)
+ GLenum_GL_POST_CONVOLUTION_ALPHA_BIAS = GLenum(32803)
+ GLenum_GL_POST_CONVOLUTION_ALPHA_BIAS_EXT = GLenum(32803)
+ GLenum_GL_HISTOGRAM = GLenum(32804)
+ GLenum_GL_HISTOGRAM_EXT = GLenum(32804)
+ GLenum_GL_PROXY_HISTOGRAM = GLenum(32805)
+ GLenum_GL_PROXY_HISTOGRAM_EXT = GLenum(32805)
+ GLenum_GL_HISTOGRAM_WIDTH = GLenum(32806)
+ GLenum_GL_HISTOGRAM_WIDTH_EXT = GLenum(32806)
+ GLenum_GL_HISTOGRAM_FORMAT = GLenum(32807)
+ GLenum_GL_HISTOGRAM_FORMAT_EXT = GLenum(32807)
+ GLenum_GL_HISTOGRAM_RED_SIZE = GLenum(32808)
+ GLenum_GL_HISTOGRAM_RED_SIZE_EXT = GLenum(32808)
+ GLenum_GL_HISTOGRAM_GREEN_SIZE = GLenum(32809)
+ GLenum_GL_HISTOGRAM_GREEN_SIZE_EXT = GLenum(32809)
+ GLenum_GL_HISTOGRAM_BLUE_SIZE = GLenum(32810)
+ GLenum_GL_HISTOGRAM_BLUE_SIZE_EXT = GLenum(32810)
+ GLenum_GL_HISTOGRAM_ALPHA_SIZE = GLenum(32811)
+ GLenum_GL_HISTOGRAM_ALPHA_SIZE_EXT = GLenum(32811)
+ GLenum_GL_HISTOGRAM_LUMINANCE_SIZE = GLenum(32812)
+ GLenum_GL_HISTOGRAM_LUMINANCE_SIZE_EXT = GLenum(32812)
+ GLenum_GL_HISTOGRAM_SINK = GLenum(32813)
+ GLenum_GL_HISTOGRAM_SINK_EXT = GLenum(32813)
+ GLenum_GL_MINMAX = GLenum(32814)
+ GLenum_GL_MINMAX_EXT = GLenum(32814)
+ GLenum_GL_MINMAX_FORMAT = GLenum(32815)
+ GLenum_GL_MINMAX_FORMAT_EXT = GLenum(32815)
+ GLenum_GL_MINMAX_SINK = GLenum(32816)
+ GLenum_GL_MINMAX_SINK_EXT = GLenum(32816)
+ GLenum_GL_TABLE_TOO_LARGE_EXT = GLenum(32817)
+ GLenum_GL_TABLE_TOO_LARGE = GLenum(32817)
+ GLenum_GL_UNSIGNED_BYTE_3_3_2 = GLenum(32818)
+ GLenum_GL_UNSIGNED_BYTE_3_3_2_EXT = GLenum(32818)
+ GLenum_GL_UNSIGNED_SHORT_4_4_4_4 = GLenum(32819)
+ GLenum_GL_UNSIGNED_SHORT_4_4_4_4_EXT = GLenum(32819)
+ GLenum_GL_UNSIGNED_SHORT_5_5_5_1 = GLenum(32820)
+ GLenum_GL_UNSIGNED_SHORT_5_5_5_1_EXT = GLenum(32820)
+ GLenum_GL_UNSIGNED_INT_8_8_8_8 = GLenum(32821)
+ GLenum_GL_UNSIGNED_INT_8_8_8_8_EXT = GLenum(32821)
+ GLenum_GL_UNSIGNED_INT_10_10_10_2 = GLenum(32822)
+ GLenum_GL_UNSIGNED_INT_10_10_10_2_EXT = GLenum(32822)
+ GLenum_GL_POLYGON_OFFSET_EXT = GLenum(32823)
+ GLenum_GL_POLYGON_OFFSET_FILL = GLenum(32823)
+ GLenum_GL_POLYGON_OFFSET_FACTOR = GLenum(32824)
+ GLenum_GL_POLYGON_OFFSET_FACTOR_EXT = GLenum(32824)
+ GLenum_GL_POLYGON_OFFSET_BIAS_EXT = GLenum(32825)
+ GLenum_GL_RESCALE_NORMAL = GLenum(32826)
+ GLenum_GL_RESCALE_NORMAL_EXT = GLenum(32826)
+ GLenum_GL_ALPHA4 = GLenum(32827)
+ GLenum_GL_ALPHA4_EXT = GLenum(32827)
+ GLenum_GL_ALPHA8 = GLenum(32828)
+ GLenum_GL_ALPHA8_EXT = GLenum(32828)
+ GLenum_GL_ALPHA8_OES = GLenum(32828)
+ GLenum_GL_ALPHA12 = GLenum(32829)
+ GLenum_GL_ALPHA12_EXT = GLenum(32829)
+ GLenum_GL_ALPHA16 = GLenum(32830)
+ GLenum_GL_ALPHA16_EXT = GLenum(32830)
+ GLenum_GL_LUMINANCE4 = GLenum(32831)
+ GLenum_GL_LUMINANCE4_EXT = GLenum(32831)
+ GLenum_GL_LUMINANCE8 = GLenum(32832)
+ GLenum_GL_LUMINANCE8_EXT = GLenum(32832)
+ GLenum_GL_LUMINANCE8_OES = GLenum(32832)
+ GLenum_GL_LUMINANCE12 = GLenum(32833)
+ GLenum_GL_LUMINANCE12_EXT = GLenum(32833)
+ GLenum_GL_LUMINANCE16 = GLenum(32834)
+ GLenum_GL_LUMINANCE16_EXT = GLenum(32834)
+ GLenum_GL_LUMINANCE4_ALPHA4 = GLenum(32835)
+ GLenum_GL_LUMINANCE4_ALPHA4_EXT = GLenum(32835)
+ GLenum_GL_LUMINANCE4_ALPHA4_OES = GLenum(32835)
+ GLenum_GL_LUMINANCE6_ALPHA2 = GLenum(32836)
+ GLenum_GL_LUMINANCE6_ALPHA2_EXT = GLenum(32836)
+ GLenum_GL_LUMINANCE8_ALPHA8 = GLenum(32837)
+ GLenum_GL_LUMINANCE8_ALPHA8_EXT = GLenum(32837)
+ GLenum_GL_LUMINANCE8_ALPHA8_OES = GLenum(32837)
+ GLenum_GL_LUMINANCE12_ALPHA4 = GLenum(32838)
+ GLenum_GL_LUMINANCE12_ALPHA4_EXT = GLenum(32838)
+ GLenum_GL_LUMINANCE12_ALPHA12 = GLenum(32839)
+ GLenum_GL_LUMINANCE12_ALPHA12_EXT = GLenum(32839)
+ GLenum_GL_LUMINANCE16_ALPHA16 = GLenum(32840)
+ GLenum_GL_LUMINANCE16_ALPHA16_EXT = GLenum(32840)
+ GLenum_GL_INTENSITY = GLenum(32841)
+ GLenum_GL_INTENSITY_EXT = GLenum(32841)
+ GLenum_GL_INTENSITY4 = GLenum(32842)
+ GLenum_GL_INTENSITY4_EXT = GLenum(32842)
+ GLenum_GL_INTENSITY8 = GLenum(32843)
+ GLenum_GL_INTENSITY8_EXT = GLenum(32843)
+ GLenum_GL_INTENSITY12 = GLenum(32844)
+ GLenum_GL_INTENSITY12_EXT = GLenum(32844)
+ GLenum_GL_INTENSITY16 = GLenum(32845)
+ GLenum_GL_INTENSITY16_EXT = GLenum(32845)
+ GLenum_GL_RGB2_EXT = GLenum(32846)
+ GLenum_GL_RGB4 = GLenum(32847)
+ GLenum_GL_RGB4_EXT = GLenum(32847)
+ GLenum_GL_RGB5 = GLenum(32848)
+ GLenum_GL_RGB5_EXT = GLenum(32848)
+ GLenum_GL_RGB8 = GLenum(32849)
+ GLenum_GL_RGB8_EXT = GLenum(32849)
+ GLenum_GL_RGB8_OES = GLenum(32849)
+ GLenum_GL_RGB10 = GLenum(32850)
+ GLenum_GL_RGB10_EXT = GLenum(32850)
+ GLenum_GL_RGB12 = GLenum(32851)
+ GLenum_GL_RGB12_EXT = GLenum(32851)
+ GLenum_GL_RGB16 = GLenum(32852)
+ GLenum_GL_RGB16_EXT = GLenum(32852)
+ GLenum_GL_RGBA2 = GLenum(32853)
+ GLenum_GL_RGBA2_EXT = GLenum(32853)
+ GLenum_GL_RGBA4 = GLenum(32854)
+ GLenum_GL_RGBA4_EXT = GLenum(32854)
+ GLenum_GL_RGBA4_OES = GLenum(32854)
+ GLenum_GL_RGB5_A1 = GLenum(32855)
+ GLenum_GL_RGB5_A1_EXT = GLenum(32855)
+ GLenum_GL_RGB5_A1_OES = GLenum(32855)
+ GLenum_GL_RGBA8 = GLenum(32856)
+ GLenum_GL_RGBA8_EXT = GLenum(32856)
+ GLenum_GL_RGBA8_OES = GLenum(32856)
+ GLenum_GL_RGB10_A2 = GLenum(32857)
+ GLenum_GL_RGB10_A2_EXT = GLenum(32857)
+ GLenum_GL_RGBA12 = GLenum(32858)
+ GLenum_GL_RGBA12_EXT = GLenum(32858)
+ GLenum_GL_RGBA16 = GLenum(32859)
+ GLenum_GL_RGBA16_EXT = GLenum(32859)
+ GLenum_GL_TEXTURE_RED_SIZE = GLenum(32860)
+ GLenum_GL_TEXTURE_RED_SIZE_EXT = GLenum(32860)
+ GLenum_GL_TEXTURE_GREEN_SIZE = GLenum(32861)
+ GLenum_GL_TEXTURE_GREEN_SIZE_EXT = GLenum(32861)
+ GLenum_GL_TEXTURE_BLUE_SIZE = GLenum(32862)
+ GLenum_GL_TEXTURE_BLUE_SIZE_EXT = GLenum(32862)
+ GLenum_GL_TEXTURE_ALPHA_SIZE = GLenum(32863)
+ GLenum_GL_TEXTURE_ALPHA_SIZE_EXT = GLenum(32863)
+ GLenum_GL_TEXTURE_LUMINANCE_SIZE = GLenum(32864)
+ GLenum_GL_TEXTURE_LUMINANCE_SIZE_EXT = GLenum(32864)
+ GLenum_GL_TEXTURE_INTENSITY_SIZE = GLenum(32865)
+ GLenum_GL_TEXTURE_INTENSITY_SIZE_EXT = GLenum(32865)
+ GLenum_GL_REPLACE_EXT = GLenum(32866)
+ GLenum_GL_PROXY_TEXTURE_1D = GLenum(32867)
+ GLenum_GL_PROXY_TEXTURE_1D_EXT = GLenum(32867)
+ GLenum_GL_PROXY_TEXTURE_2D = GLenum(32868)
+ GLenum_GL_PROXY_TEXTURE_2D_EXT = GLenum(32868)
+ GLenum_GL_TEXTURE_TOO_LARGE_EXT = GLenum(32869)
+ GLenum_GL_TEXTURE_PRIORITY = GLenum(32870)
+ GLenum_GL_TEXTURE_PRIORITY_EXT = GLenum(32870)
+ GLenum_GL_TEXTURE_RESIDENT = GLenum(32871)
+ GLenum_GL_TEXTURE_RESIDENT_EXT = GLenum(32871)
+ GLenum_GL_TEXTURE_1D_BINDING_EXT = GLenum(32872)
+ GLenum_GL_TEXTURE_BINDING_1D = GLenum(32872)
+ GLenum_GL_TEXTURE_2D_BINDING_EXT = GLenum(32873)
+ GLenum_GL_TEXTURE_BINDING_2D = GLenum(32873)
+ GLenum_GL_TEXTURE_3D_BINDING_EXT = GLenum(32874)
+ GLenum_GL_TEXTURE_3D_BINDING_OES = GLenum(32874)
+ GLenum_GL_TEXTURE_BINDING_3D = GLenum(32874)
+ GLenum_GL_TEXTURE_BINDING_3D_OES = GLenum(32874)
+ GLenum_GL_PACK_SKIP_IMAGES = GLenum(32875)
+ GLenum_GL_PACK_SKIP_IMAGES_EXT = GLenum(32875)
+ GLenum_GL_PACK_IMAGE_HEIGHT = GLenum(32876)
+ GLenum_GL_PACK_IMAGE_HEIGHT_EXT = GLenum(32876)
+ GLenum_GL_UNPACK_SKIP_IMAGES = GLenum(32877)
+ GLenum_GL_UNPACK_SKIP_IMAGES_EXT = GLenum(32877)
+ GLenum_GL_UNPACK_IMAGE_HEIGHT = GLenum(32878)
+ GLenum_GL_UNPACK_IMAGE_HEIGHT_EXT = GLenum(32878)
+ GLenum_GL_TEXTURE_3D = GLenum(32879)
+ GLenum_GL_TEXTURE_3D_EXT = GLenum(32879)
+ GLenum_GL_TEXTURE_3D_OES = GLenum(32879)
+ GLenum_GL_PROXY_TEXTURE_3D = GLenum(32880)
+ GLenum_GL_PROXY_TEXTURE_3D_EXT = GLenum(32880)
+ GLenum_GL_TEXTURE_DEPTH = GLenum(32881)
+ GLenum_GL_TEXTURE_DEPTH_EXT = GLenum(32881)
+ GLenum_GL_TEXTURE_WRAP_R = GLenum(32882)
+ GLenum_GL_TEXTURE_WRAP_R_EXT = GLenum(32882)
+ GLenum_GL_TEXTURE_WRAP_R_OES = GLenum(32882)
+ GLenum_GL_MAX_3D_TEXTURE_SIZE = GLenum(32883)
+ GLenum_GL_MAX_3D_TEXTURE_SIZE_EXT = GLenum(32883)
+ GLenum_GL_MAX_3D_TEXTURE_SIZE_OES = GLenum(32883)
+ GLenum_GL_VERTEX_ARRAY = GLenum(32884)
+ GLenum_GL_VERTEX_ARRAY_EXT = GLenum(32884)
+ GLenum_GL_VERTEX_ARRAY_KHR = GLenum(32884)
+ GLenum_GL_NORMAL_ARRAY = GLenum(32885)
+ GLenum_GL_NORMAL_ARRAY_EXT = GLenum(32885)
+ GLenum_GL_COLOR_ARRAY = GLenum(32886)
+ GLenum_GL_COLOR_ARRAY_EXT = GLenum(32886)
+ GLenum_GL_INDEX_ARRAY = GLenum(32887)
+ GLenum_GL_INDEX_ARRAY_EXT = GLenum(32887)
+ GLenum_GL_TEXTURE_COORD_ARRAY = GLenum(32888)
+ GLenum_GL_TEXTURE_COORD_ARRAY_EXT = GLenum(32888)
+ GLenum_GL_EDGE_FLAG_ARRAY = GLenum(32889)
+ GLenum_GL_EDGE_FLAG_ARRAY_EXT = GLenum(32889)
+ GLenum_GL_VERTEX_ARRAY_SIZE = GLenum(32890)
+ GLenum_GL_VERTEX_ARRAY_SIZE_EXT = GLenum(32890)
+ GLenum_GL_VERTEX_ARRAY_TYPE = GLenum(32891)
+ GLenum_GL_VERTEX_ARRAY_TYPE_EXT = GLenum(32891)
+ GLenum_GL_VERTEX_ARRAY_STRIDE = GLenum(32892)
+ GLenum_GL_VERTEX_ARRAY_STRIDE_EXT = GLenum(32892)
+ GLenum_GL_VERTEX_ARRAY_COUNT_EXT = GLenum(32893)
+ GLenum_GL_NORMAL_ARRAY_TYPE = GLenum(32894)
+ GLenum_GL_NORMAL_ARRAY_TYPE_EXT = GLenum(32894)
+ GLenum_GL_NORMAL_ARRAY_STRIDE = GLenum(32895)
+ GLenum_GL_NORMAL_ARRAY_STRIDE_EXT = GLenum(32895)
+ GLenum_GL_NORMAL_ARRAY_COUNT_EXT = GLenum(32896)
+ GLenum_GL_COLOR_ARRAY_SIZE = GLenum(32897)
+ GLenum_GL_COLOR_ARRAY_SIZE_EXT = GLenum(32897)
+ GLenum_GL_COLOR_ARRAY_TYPE = GLenum(32898)
+ GLenum_GL_COLOR_ARRAY_TYPE_EXT = GLenum(32898)
+ GLenum_GL_COLOR_ARRAY_STRIDE = GLenum(32899)
+ GLenum_GL_COLOR_ARRAY_STRIDE_EXT = GLenum(32899)
+ GLenum_GL_COLOR_ARRAY_COUNT_EXT = GLenum(32900)
+ GLenum_GL_INDEX_ARRAY_TYPE = GLenum(32901)
+ GLenum_GL_INDEX_ARRAY_TYPE_EXT = GLenum(32901)
+ GLenum_GL_INDEX_ARRAY_STRIDE = GLenum(32902)
+ GLenum_GL_INDEX_ARRAY_STRIDE_EXT = GLenum(32902)
+ GLenum_GL_INDEX_ARRAY_COUNT_EXT = GLenum(32903)
+ GLenum_GL_TEXTURE_COORD_ARRAY_SIZE = GLenum(32904)
+ GLenum_GL_TEXTURE_COORD_ARRAY_SIZE_EXT = GLenum(32904)
+ GLenum_GL_TEXTURE_COORD_ARRAY_TYPE = GLenum(32905)
+ GLenum_GL_TEXTURE_COORD_ARRAY_TYPE_EXT = GLenum(32905)
+ GLenum_GL_TEXTURE_COORD_ARRAY_STRIDE = GLenum(32906)
+ GLenum_GL_TEXTURE_COORD_ARRAY_STRIDE_EXT = GLenum(32906)
+ GLenum_GL_TEXTURE_COORD_ARRAY_COUNT_EXT = GLenum(32907)
+ GLenum_GL_EDGE_FLAG_ARRAY_STRIDE = GLenum(32908)
+ GLenum_GL_EDGE_FLAG_ARRAY_STRIDE_EXT = GLenum(32908)
+ GLenum_GL_EDGE_FLAG_ARRAY_COUNT_EXT = GLenum(32909)
+ GLenum_GL_VERTEX_ARRAY_POINTER = GLenum(32910)
+ GLenum_GL_VERTEX_ARRAY_POINTER_EXT = GLenum(32910)
+ GLenum_GL_NORMAL_ARRAY_POINTER = GLenum(32911)
+ GLenum_GL_NORMAL_ARRAY_POINTER_EXT = GLenum(32911)
+ GLenum_GL_COLOR_ARRAY_POINTER = GLenum(32912)
+ GLenum_GL_COLOR_ARRAY_POINTER_EXT = GLenum(32912)
+ GLenum_GL_INDEX_ARRAY_POINTER = GLenum(32913)
+ GLenum_GL_INDEX_ARRAY_POINTER_EXT = GLenum(32913)
+ GLenum_GL_TEXTURE_COORD_ARRAY_POINTER = GLenum(32914)
+ GLenum_GL_TEXTURE_COORD_ARRAY_POINTER_EXT = GLenum(32914)
+ GLenum_GL_EDGE_FLAG_ARRAY_POINTER = GLenum(32915)
+ GLenum_GL_EDGE_FLAG_ARRAY_POINTER_EXT = GLenum(32915)
+ GLenum_GL_INTERLACE_SGIX = GLenum(32916)
+ GLenum_GL_DETAIL_TEXTURE_2D_SGIS = GLenum(32917)
+ GLenum_GL_DETAIL_TEXTURE_2D_BINDING_SGIS = GLenum(32918)
+ GLenum_GL_LINEAR_DETAIL_SGIS = GLenum(32919)
+ GLenum_GL_LINEAR_DETAIL_ALPHA_SGIS = GLenum(32920)
+ GLenum_GL_LINEAR_DETAIL_COLOR_SGIS = GLenum(32921)
+ GLenum_GL_DETAIL_TEXTURE_LEVEL_SGIS = GLenum(32922)
+ GLenum_GL_DETAIL_TEXTURE_MODE_SGIS = GLenum(32923)
+ GLenum_GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS = GLenum(32924)
+ GLenum_GL_MULTISAMPLE = GLenum(32925)
+ GLenum_GL_MULTISAMPLE_ARB = GLenum(32925)
+ GLenum_GL_MULTISAMPLE_EXT = GLenum(32925)
+ GLenum_GL_MULTISAMPLE_SGIS = GLenum(32925)
+ GLenum_GL_SAMPLE_ALPHA_TO_COVERAGE = GLenum(32926)
+ GLenum_GL_SAMPLE_ALPHA_TO_COVERAGE_ARB = GLenum(32926)
+ GLenum_GL_SAMPLE_ALPHA_TO_MASK_EXT = GLenum(32926)
+ GLenum_GL_SAMPLE_ALPHA_TO_MASK_SGIS = GLenum(32926)
+ GLenum_GL_SAMPLE_ALPHA_TO_ONE = GLenum(32927)
+ GLenum_GL_SAMPLE_ALPHA_TO_ONE_ARB = GLenum(32927)
+ GLenum_GL_SAMPLE_ALPHA_TO_ONE_EXT = GLenum(32927)
+ GLenum_GL_SAMPLE_ALPHA_TO_ONE_SGIS = GLenum(32927)
+ GLenum_GL_SAMPLE_COVERAGE = GLenum(32928)
+ GLenum_GL_SAMPLE_COVERAGE_ARB = GLenum(32928)
+ GLenum_GL_SAMPLE_MASK_EXT = GLenum(32928)
+ GLenum_GL_SAMPLE_MASK_SGIS = GLenum(32928)
+ GLenum_GL_1PASS_EXT = GLenum(32929)
+ GLenum_GL_1PASS_SGIS = GLenum(32929)
+ GLenum_GL_2PASS_0_EXT = GLenum(32930)
+ GLenum_GL_2PASS_0_SGIS = GLenum(32930)
+ GLenum_GL_2PASS_1_EXT = GLenum(32931)
+ GLenum_GL_2PASS_1_SGIS = GLenum(32931)
+ GLenum_GL_4PASS_0_EXT = GLenum(32932)
+ GLenum_GL_4PASS_0_SGIS = GLenum(32932)
+ GLenum_GL_4PASS_1_EXT = GLenum(32933)
+ GLenum_GL_4PASS_1_SGIS = GLenum(32933)
+ GLenum_GL_4PASS_2_EXT = GLenum(32934)
+ GLenum_GL_4PASS_2_SGIS = GLenum(32934)
+ GLenum_GL_4PASS_3_EXT = GLenum(32935)
+ GLenum_GL_4PASS_3_SGIS = GLenum(32935)
+ GLenum_GL_SAMPLE_BUFFERS = GLenum(32936)
+ GLenum_GL_SAMPLE_BUFFERS_ARB = GLenum(32936)
+ GLenum_GL_SAMPLE_BUFFERS_EXT = GLenum(32936)
+ GLenum_GL_SAMPLE_BUFFERS_SGIS = GLenum(32936)
+ GLenum_GL_SAMPLES = GLenum(32937)
+ GLenum_GL_SAMPLES_ARB = GLenum(32937)
+ GLenum_GL_SAMPLES_EXT = GLenum(32937)
+ GLenum_GL_SAMPLES_SGIS = GLenum(32937)
+ GLenum_GL_SAMPLE_COVERAGE_VALUE = GLenum(32938)
+ GLenum_GL_SAMPLE_COVERAGE_VALUE_ARB = GLenum(32938)
+ GLenum_GL_SAMPLE_MASK_VALUE_EXT = GLenum(32938)
+ GLenum_GL_SAMPLE_MASK_VALUE_SGIS = GLenum(32938)
+ GLenum_GL_SAMPLE_COVERAGE_INVERT = GLenum(32939)
+ GLenum_GL_SAMPLE_COVERAGE_INVERT_ARB = GLenum(32939)
+ GLenum_GL_SAMPLE_MASK_INVERT_EXT = GLenum(32939)
+ GLenum_GL_SAMPLE_MASK_INVERT_SGIS = GLenum(32939)
+ GLenum_GL_SAMPLE_PATTERN_EXT = GLenum(32940)
+ GLenum_GL_SAMPLE_PATTERN_SGIS = GLenum(32940)
+ GLenum_GL_LINEAR_SHARPEN_SGIS = GLenum(32941)
+ GLenum_GL_LINEAR_SHARPEN_ALPHA_SGIS = GLenum(32942)
+ GLenum_GL_LINEAR_SHARPEN_COLOR_SGIS = GLenum(32943)
+ GLenum_GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS = GLenum(32944)
+ GLenum_GL_COLOR_MATRIX = GLenum(32945)
+ GLenum_GL_COLOR_MATRIX_SGI = GLenum(32945)
+ GLenum_GL_COLOR_MATRIX_STACK_DEPTH = GLenum(32946)
+ GLenum_GL_COLOR_MATRIX_STACK_DEPTH_SGI = GLenum(32946)
+ GLenum_GL_MAX_COLOR_MATRIX_STACK_DEPTH = GLenum(32947)
+ GLenum_GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI = GLenum(32947)
+ GLenum_GL_POST_COLOR_MATRIX_RED_SCALE = GLenum(32948)
+ GLenum_GL_POST_COLOR_MATRIX_RED_SCALE_SGI = GLenum(32948)
+ GLenum_GL_POST_COLOR_MATRIX_GREEN_SCALE = GLenum(32949)
+ GLenum_GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI = GLenum(32949)
+ GLenum_GL_POST_COLOR_MATRIX_BLUE_SCALE = GLenum(32950)
+ GLenum_GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI = GLenum(32950)
+ GLenum_GL_POST_COLOR_MATRIX_ALPHA_SCALE = GLenum(32951)
+ GLenum_GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI = GLenum(32951)
+ GLenum_GL_POST_COLOR_MATRIX_RED_BIAS = GLenum(32952)
+ GLenum_GL_POST_COLOR_MATRIX_RED_BIAS_SGI = GLenum(32952)
+ GLenum_GL_POST_COLOR_MATRIX_GREEN_BIAS = GLenum(32953)
+ GLenum_GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI = GLenum(32953)
+ GLenum_GL_POST_COLOR_MATRIX_BLUE_BIAS = GLenum(32954)
+ GLenum_GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI = GLenum(32954)
+ GLenum_GL_POST_COLOR_MATRIX_ALPHA_BIAS = GLenum(32955)
+ GLenum_GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI = GLenum(32955)
+ GLenum_GL_TEXTURE_COLOR_TABLE_SGI = GLenum(32956)
+ GLenum_GL_PROXY_TEXTURE_COLOR_TABLE_SGI = GLenum(32957)
+ GLenum_GL_TEXTURE_ENV_BIAS_SGIX = GLenum(32958)
+ GLenum_GL_SHADOW_AMBIENT_SGIX = GLenum(32959)
+ GLenum_GL_TEXTURE_COMPARE_FAIL_VALUE_ARB = GLenum(32959)
+ GLenum_GL_BLEND_DST_RGB = GLenum(32968)
+ GLenum_GL_BLEND_DST_RGB_EXT = GLenum(32968)
+ GLenum_GL_BLEND_DST_RGB_OES = GLenum(32968)
+ GLenum_GL_BLEND_SRC_RGB = GLenum(32969)
+ GLenum_GL_BLEND_SRC_RGB_EXT = GLenum(32969)
+ GLenum_GL_BLEND_SRC_RGB_OES = GLenum(32969)
+ GLenum_GL_BLEND_DST_ALPHA = GLenum(32970)
+ GLenum_GL_BLEND_DST_ALPHA_EXT = GLenum(32970)
+ GLenum_GL_BLEND_DST_ALPHA_OES = GLenum(32970)
+ GLenum_GL_BLEND_SRC_ALPHA = GLenum(32971)
+ GLenum_GL_BLEND_SRC_ALPHA_EXT = GLenum(32971)
+ GLenum_GL_BLEND_SRC_ALPHA_OES = GLenum(32971)
+ GLenum_GL_422_EXT = GLenum(32972)
+ GLenum_GL_422_REV_EXT = GLenum(32973)
+ GLenum_GL_422_AVERAGE_EXT = GLenum(32974)
+ GLenum_GL_422_REV_AVERAGE_EXT = GLenum(32975)
+ GLenum_GL_COLOR_TABLE = GLenum(32976)
+ GLenum_GL_COLOR_TABLE_SGI = GLenum(32976)
+ GLenum_GL_POST_CONVOLUTION_COLOR_TABLE = GLenum(32977)
+ GLenum_GL_POST_CONVOLUTION_COLOR_TABLE_SGI = GLenum(32977)
+ GLenum_GL_POST_COLOR_MATRIX_COLOR_TABLE = GLenum(32978)
+ GLenum_GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI = GLenum(32978)
+ GLenum_GL_PROXY_COLOR_TABLE = GLenum(32979)
+ GLenum_GL_PROXY_COLOR_TABLE_SGI = GLenum(32979)
+ GLenum_GL_PROXY_POST_CONVOLUTION_COLOR_TABLE = GLenum(32980)
+ GLenum_GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI = GLenum(32980)
+ GLenum_GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE = GLenum(32981)
+ GLenum_GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI = GLenum(32981)
+ GLenum_GL_COLOR_TABLE_SCALE = GLenum(32982)
+ GLenum_GL_COLOR_TABLE_SCALE_SGI = GLenum(32982)
+ GLenum_GL_COLOR_TABLE_BIAS = GLenum(32983)
+ GLenum_GL_COLOR_TABLE_BIAS_SGI = GLenum(32983)
+ GLenum_GL_COLOR_TABLE_FORMAT = GLenum(32984)
+ GLenum_GL_COLOR_TABLE_FORMAT_SGI = GLenum(32984)
+ GLenum_GL_COLOR_TABLE_WIDTH = GLenum(32985)
+ GLenum_GL_COLOR_TABLE_WIDTH_SGI = GLenum(32985)
+ GLenum_GL_COLOR_TABLE_RED_SIZE = GLenum(32986)
+ GLenum_GL_COLOR_TABLE_RED_SIZE_SGI = GLenum(32986)
+ GLenum_GL_COLOR_TABLE_GREEN_SIZE = GLenum(32987)
+ GLenum_GL_COLOR_TABLE_GREEN_SIZE_SGI = GLenum(32987)
+ GLenum_GL_COLOR_TABLE_BLUE_SIZE = GLenum(32988)
+ GLenum_GL_COLOR_TABLE_BLUE_SIZE_SGI = GLenum(32988)
+ GLenum_GL_COLOR_TABLE_ALPHA_SIZE = GLenum(32989)
+ GLenum_GL_COLOR_TABLE_ALPHA_SIZE_SGI = GLenum(32989)
+ GLenum_GL_COLOR_TABLE_LUMINANCE_SIZE = GLenum(32990)
+ GLenum_GL_COLOR_TABLE_LUMINANCE_SIZE_SGI = GLenum(32990)
+ GLenum_GL_COLOR_TABLE_INTENSITY_SIZE = GLenum(32991)
+ GLenum_GL_COLOR_TABLE_INTENSITY_SIZE_SGI = GLenum(32991)
+ GLenum_GL_BGR = GLenum(32992)
+ GLenum_GL_BGR_EXT = GLenum(32992)
+ GLenum_GL_BGRA = GLenum(32993)
+ GLenum_GL_BGRA_EXT = GLenum(32993)
+ GLenum_GL_BGRA_IMG = GLenum(32993)
+ GLenum_GL_COLOR_INDEX1_EXT = GLenum(32994)
+ GLenum_GL_COLOR_INDEX2_EXT = GLenum(32995)
+ GLenum_GL_COLOR_INDEX4_EXT = GLenum(32996)
+ GLenum_GL_COLOR_INDEX8_EXT = GLenum(32997)
+ GLenum_GL_COLOR_INDEX12_EXT = GLenum(32998)
+ GLenum_GL_COLOR_INDEX16_EXT = GLenum(32999)
+ GLenum_GL_MAX_ELEMENTS_VERTICES = GLenum(33000)
+ GLenum_GL_MAX_ELEMENTS_VERTICES_EXT = GLenum(33000)
+ GLenum_GL_MAX_ELEMENTS_INDICES = GLenum(33001)
+ GLenum_GL_MAX_ELEMENTS_INDICES_EXT = GLenum(33001)
+ GLenum_GL_PHONG_WIN = GLenum(33002)
+ GLenum_GL_PHONG_HINT_WIN = GLenum(33003)
+ GLenum_GL_FOG_SPECULAR_TEXTURE_WIN = GLenum(33004)
+ GLenum_GL_TEXTURE_INDEX_SIZE_EXT = GLenum(33005)
+ GLenum_GL_PARAMETER_BUFFER_ARB = GLenum(33006)
+ GLenum_GL_PARAMETER_BUFFER_BINDING_ARB = GLenum(33007)
+ GLenum_GL_CLIP_VOLUME_CLIPPING_HINT_EXT = GLenum(33008)
+ GLenum_GL_DUAL_ALPHA4_SGIS = GLenum(33040)
+ GLenum_GL_DUAL_ALPHA8_SGIS = GLenum(33041)
+ GLenum_GL_DUAL_ALPHA12_SGIS = GLenum(33042)
+ GLenum_GL_DUAL_ALPHA16_SGIS = GLenum(33043)
+ GLenum_GL_DUAL_LUMINANCE4_SGIS = GLenum(33044)
+ GLenum_GL_DUAL_LUMINANCE8_SGIS = GLenum(33045)
+ GLenum_GL_DUAL_LUMINANCE12_SGIS = GLenum(33046)
+ GLenum_GL_DUAL_LUMINANCE16_SGIS = GLenum(33047)
+ GLenum_GL_DUAL_INTENSITY4_SGIS = GLenum(33048)
+ GLenum_GL_DUAL_INTENSITY8_SGIS = GLenum(33049)
+ GLenum_GL_DUAL_INTENSITY12_SGIS = GLenum(33050)
+ GLenum_GL_DUAL_INTENSITY16_SGIS = GLenum(33051)
+ GLenum_GL_DUAL_LUMINANCE_ALPHA4_SGIS = GLenum(33052)
+ GLenum_GL_DUAL_LUMINANCE_ALPHA8_SGIS = GLenum(33053)
+ GLenum_GL_QUAD_ALPHA4_SGIS = GLenum(33054)
+ GLenum_GL_QUAD_ALPHA8_SGIS = GLenum(33055)
+ GLenum_GL_QUAD_LUMINANCE4_SGIS = GLenum(33056)
+ GLenum_GL_QUAD_LUMINANCE8_SGIS = GLenum(33057)
+ GLenum_GL_QUAD_INTENSITY4_SGIS = GLenum(33058)
+ GLenum_GL_QUAD_INTENSITY8_SGIS = GLenum(33059)
+ GLenum_GL_DUAL_TEXTURE_SELECT_SGIS = GLenum(33060)
+ GLenum_GL_QUAD_TEXTURE_SELECT_SGIS = GLenum(33061)
+ GLenum_GL_POINT_SIZE_MIN = GLenum(33062)
+ GLenum_GL_POINT_SIZE_MIN_ARB = GLenum(33062)
+ GLenum_GL_POINT_SIZE_MIN_EXT = GLenum(33062)
+ GLenum_GL_POINT_SIZE_MIN_SGIS = GLenum(33062)
+ GLenum_GL_POINT_SIZE_MAX = GLenum(33063)
+ GLenum_GL_POINT_SIZE_MAX_ARB = GLenum(33063)
+ GLenum_GL_POINT_SIZE_MAX_EXT = GLenum(33063)
+ GLenum_GL_POINT_SIZE_MAX_SGIS = GLenum(33063)
+ GLenum_GL_POINT_FADE_THRESHOLD_SIZE = GLenum(33064)
+ GLenum_GL_POINT_FADE_THRESHOLD_SIZE_ARB = GLenum(33064)
+ GLenum_GL_POINT_FADE_THRESHOLD_SIZE_EXT = GLenum(33064)
+ GLenum_GL_POINT_FADE_THRESHOLD_SIZE_SGIS = GLenum(33064)
+ GLenum_GL_DISTANCE_ATTENUATION_EXT = GLenum(33065)
+ GLenum_GL_DISTANCE_ATTENUATION_SGIS = GLenum(33065)
+ GLenum_GL_POINT_DISTANCE_ATTENUATION = GLenum(33065)
+ GLenum_GL_POINT_DISTANCE_ATTENUATION_ARB = GLenum(33065)
+ GLenum_GL_FOG_FUNC_SGIS = GLenum(33066)
+ GLenum_GL_FOG_FUNC_POINTS_SGIS = GLenum(33067)
+ GLenum_GL_MAX_FOG_FUNC_POINTS_SGIS = GLenum(33068)
+ GLenum_GL_CLAMP_TO_BORDER = GLenum(33069)
+ GLenum_GL_CLAMP_TO_BORDER_ARB = GLenum(33069)
+ GLenum_GL_CLAMP_TO_BORDER_EXT = GLenum(33069)
+ GLenum_GL_CLAMP_TO_BORDER_NV = GLenum(33069)
+ GLenum_GL_CLAMP_TO_BORDER_SGIS = GLenum(33069)
+ GLenum_GL_CLAMP_TO_BORDER_OES = GLenum(33069)
+ GLenum_GL_TEXTURE_MULTI_BUFFER_HINT_SGIX = GLenum(33070)
+ GLenum_GL_CLAMP_TO_EDGE = GLenum(33071)
+ GLenum_GL_CLAMP_TO_EDGE_SGIS = GLenum(33071)
+ GLenum_GL_PACK_SKIP_VOLUMES_SGIS = GLenum(33072)
+ GLenum_GL_PACK_IMAGE_DEPTH_SGIS = GLenum(33073)
+ GLenum_GL_UNPACK_SKIP_VOLUMES_SGIS = GLenum(33074)
+ GLenum_GL_UNPACK_IMAGE_DEPTH_SGIS = GLenum(33075)
+ GLenum_GL_TEXTURE_4D_SGIS = GLenum(33076)
+ GLenum_GL_PROXY_TEXTURE_4D_SGIS = GLenum(33077)
+ GLenum_GL_TEXTURE_4DSIZE_SGIS = GLenum(33078)
+ GLenum_GL_TEXTURE_WRAP_Q_SGIS = GLenum(33079)
+ GLenum_GL_MAX_4D_TEXTURE_SIZE_SGIS = GLenum(33080)
+ GLenum_GL_PIXEL_TEX_GEN_SGIX = GLenum(33081)
+ GLenum_GL_TEXTURE_MIN_LOD = GLenum(33082)
+ GLenum_GL_TEXTURE_MIN_LOD_SGIS = GLenum(33082)
+ GLenum_GL_TEXTURE_MAX_LOD = GLenum(33083)
+ GLenum_GL_TEXTURE_MAX_LOD_SGIS = GLenum(33083)
+ GLenum_GL_TEXTURE_BASE_LEVEL = GLenum(33084)
+ GLenum_GL_TEXTURE_BASE_LEVEL_SGIS = GLenum(33084)
+ GLenum_GL_TEXTURE_MAX_LEVEL = GLenum(33085)
+ GLenum_GL_TEXTURE_MAX_LEVEL_APPLE = GLenum(33085)
+ GLenum_GL_TEXTURE_MAX_LEVEL_SGIS = GLenum(33085)
+ GLenum_GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX = GLenum(33086)
+ GLenum_GL_PIXEL_TILE_CACHE_INCREMENT_SGIX = GLenum(33087)
+ GLenum_GL_PIXEL_TILE_WIDTH_SGIX = GLenum(33088)
+ GLenum_GL_PIXEL_TILE_HEIGHT_SGIX = GLenum(33089)
+ GLenum_GL_PIXEL_TILE_GRID_WIDTH_SGIX = GLenum(33090)
+ GLenum_GL_PIXEL_TILE_GRID_HEIGHT_SGIX = GLenum(33091)
+ GLenum_GL_PIXEL_TILE_GRID_DEPTH_SGIX = GLenum(33092)
+ GLenum_GL_PIXEL_TILE_CACHE_SIZE_SGIX = GLenum(33093)
+ GLenum_GL_FILTER4_SGIS = GLenum(33094)
+ GLenum_GL_TEXTURE_FILTER4_SIZE_SGIS = GLenum(33095)
+ GLenum_GL_SPRITE_SGIX = GLenum(33096)
+ GLenum_GL_SPRITE_MODE_SGIX = GLenum(33097)
+ GLenum_GL_SPRITE_AXIS_SGIX = GLenum(33098)
+ GLenum_GL_SPRITE_TRANSLATION_SGIX = GLenum(33099)
+ GLenum_GL_SPRITE_AXIAL_SGIX = GLenum(33100)
+ GLenum_GL_SPRITE_OBJECT_ALIGNED_SGIX = GLenum(33101)
+ GLenum_GL_SPRITE_EYE_ALIGNED_SGIX = GLenum(33102)
+ GLenum_GL_TEXTURE_4D_BINDING_SGIS = GLenum(33103)
+ GLenum_GL_IGNORE_BORDER_HP = GLenum(33104)
+ GLenum_GL_CONSTANT_BORDER = GLenum(33105)
+ GLenum_GL_CONSTANT_BORDER_HP = GLenum(33105)
+ GLenum_GL_REPLICATE_BORDER = GLenum(33107)
+ GLenum_GL_REPLICATE_BORDER_HP = GLenum(33107)
+ GLenum_GL_CONVOLUTION_BORDER_COLOR = GLenum(33108)
+ GLenum_GL_CONVOLUTION_BORDER_COLOR_HP = GLenum(33108)
+ GLenum_GL_IMAGE_SCALE_X_HP = GLenum(33109)
+ GLenum_GL_IMAGE_SCALE_Y_HP = GLenum(33110)
+ GLenum_GL_IMAGE_TRANSLATE_X_HP = GLenum(33111)
+ GLenum_GL_IMAGE_TRANSLATE_Y_HP = GLenum(33112)
+ GLenum_GL_IMAGE_ROTATE_ANGLE_HP = GLenum(33113)
+ GLenum_GL_IMAGE_ROTATE_ORIGIN_X_HP = GLenum(33114)
+ GLenum_GL_IMAGE_ROTATE_ORIGIN_Y_HP = GLenum(33115)
+ GLenum_GL_IMAGE_MAG_FILTER_HP = GLenum(33116)
+ GLenum_GL_IMAGE_MIN_FILTER_HP = GLenum(33117)
+ GLenum_GL_IMAGE_CUBIC_WEIGHT_HP = GLenum(33118)
+ GLenum_GL_CUBIC_HP = GLenum(33119)
+ GLenum_GL_AVERAGE_HP = GLenum(33120)
+ GLenum_GL_IMAGE_TRANSFORM_2D_HP = GLenum(33121)
+ GLenum_GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP = GLenum(33122)
+ GLenum_GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP = GLenum(33123)
+ GLenum_GL_OCCLUSION_TEST_HP = GLenum(33125)
+ GLenum_GL_OCCLUSION_TEST_RESULT_HP = GLenum(33126)
+ GLenum_GL_TEXTURE_LIGHTING_MODE_HP = GLenum(33127)
+ GLenum_GL_TEXTURE_POST_SPECULAR_HP = GLenum(33128)
+ GLenum_GL_TEXTURE_PRE_SPECULAR_HP = GLenum(33129)
+ GLenum_GL_LINEAR_CLIPMAP_LINEAR_SGIX = GLenum(33136)
+ GLenum_GL_TEXTURE_CLIPMAP_CENTER_SGIX = GLenum(33137)
+ GLenum_GL_TEXTURE_CLIPMAP_FRAME_SGIX = GLenum(33138)
+ GLenum_GL_TEXTURE_CLIPMAP_OFFSET_SGIX = GLenum(33139)
+ GLenum_GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX = GLenum(33140)
+ GLenum_GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX = GLenum(33141)
+ GLenum_GL_TEXTURE_CLIPMAP_DEPTH_SGIX = GLenum(33142)
+ GLenum_GL_MAX_CLIPMAP_DEPTH_SGIX = GLenum(33143)
+ GLenum_GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX = GLenum(33144)
+ GLenum_GL_POST_TEXTURE_FILTER_BIAS_SGIX = GLenum(33145)
+ GLenum_GL_POST_TEXTURE_FILTER_SCALE_SGIX = GLenum(33146)
+ GLenum_GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX = GLenum(33147)
+ GLenum_GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX = GLenum(33148)
+ GLenum_GL_REFERENCE_PLANE_SGIX = GLenum(33149)
+ GLenum_GL_REFERENCE_PLANE_EQUATION_SGIX = GLenum(33150)
+ GLenum_GL_IR_INSTRUMENT1_SGIX = GLenum(33151)
+ GLenum_GL_INSTRUMENT_BUFFER_POINTER_SGIX = GLenum(33152)
+ GLenum_GL_INSTRUMENT_MEASUREMENTS_SGIX = GLenum(33153)
+ GLenum_GL_LIST_PRIORITY_SGIX = GLenum(33154)
+ GLenum_GL_CALLIGRAPHIC_FRAGMENT_SGIX = GLenum(33155)
+ GLenum_GL_PIXEL_TEX_GEN_Q_CEILING_SGIX = GLenum(33156)
+ GLenum_GL_PIXEL_TEX_GEN_Q_ROUND_SGIX = GLenum(33157)
+ GLenum_GL_PIXEL_TEX_GEN_Q_FLOOR_SGIX = GLenum(33158)
+ GLenum_GL_PIXEL_TEX_GEN_ALPHA_REPLACE_SGIX = GLenum(33159)
+ GLenum_GL_PIXEL_TEX_GEN_ALPHA_NO_REPLACE_SGIX = GLenum(33160)
+ GLenum_GL_PIXEL_TEX_GEN_ALPHA_LS_SGIX = GLenum(33161)
+ GLenum_GL_PIXEL_TEX_GEN_ALPHA_MS_SGIX = GLenum(33162)
+ GLenum_GL_FRAMEZOOM_SGIX = GLenum(33163)
+ GLenum_GL_FRAMEZOOM_FACTOR_SGIX = GLenum(33164)
+ GLenum_GL_MAX_FRAMEZOOM_FACTOR_SGIX = GLenum(33165)
+ GLenum_GL_TEXTURE_LOD_BIAS_S_SGIX = GLenum(33166)
+ GLenum_GL_TEXTURE_LOD_BIAS_T_SGIX = GLenum(33167)
+ GLenum_GL_TEXTURE_LOD_BIAS_R_SGIX = GLenum(33168)
+ GLenum_GL_GENERATE_MIPMAP = GLenum(33169)
+ GLenum_GL_GENERATE_MIPMAP_SGIS = GLenum(33169)
+ GLenum_GL_GENERATE_MIPMAP_HINT = GLenum(33170)
+ GLenum_GL_GENERATE_MIPMAP_HINT_SGIS = GLenum(33170)
+ GLenum_GL_GEOMETRY_DEFORMATION_SGIX = GLenum(33172)
+ GLenum_GL_TEXTURE_DEFORMATION_SGIX = GLenum(33173)
+ GLenum_GL_DEFORMATIONS_MASK_SGIX = GLenum(33174)
+ GLenum_GL_MAX_DEFORMATION_ORDER_SGIX = GLenum(33175)
+ GLenum_GL_FOG_OFFSET_SGIX = GLenum(33176)
+ GLenum_GL_FOG_OFFSET_VALUE_SGIX = GLenum(33177)
+ GLenum_GL_TEXTURE_COMPARE_SGIX = GLenum(33178)
+ GLenum_GL_TEXTURE_COMPARE_OPERATOR_SGIX = GLenum(33179)
+ GLenum_GL_TEXTURE_LEQUAL_R_SGIX = GLenum(33180)
+ GLenum_GL_TEXTURE_GEQUAL_R_SGIX = GLenum(33181)
+ GLenum_GL_DEPTH_COMPONENT16 = GLenum(33189)
+ GLenum_GL_DEPTH_COMPONENT16_ARB = GLenum(33189)
+ GLenum_GL_DEPTH_COMPONENT16_OES = GLenum(33189)
+ GLenum_GL_DEPTH_COMPONENT16_SGIX = GLenum(33189)
+ GLenum_GL_DEPTH_COMPONENT24 = GLenum(33190)
+ GLenum_GL_DEPTH_COMPONENT24_ARB = GLenum(33190)
+ GLenum_GL_DEPTH_COMPONENT24_OES = GLenum(33190)
+ GLenum_GL_DEPTH_COMPONENT24_SGIX = GLenum(33190)
+ GLenum_GL_DEPTH_COMPONENT32 = GLenum(33191)
+ GLenum_GL_DEPTH_COMPONENT32_ARB = GLenum(33191)
+ GLenum_GL_DEPTH_COMPONENT32_OES = GLenum(33191)
+ GLenum_GL_DEPTH_COMPONENT32_SGIX = GLenum(33191)
+ GLenum_GL_ARRAY_ELEMENT_LOCK_FIRST_EXT = GLenum(33192)
+ GLenum_GL_ARRAY_ELEMENT_LOCK_COUNT_EXT = GLenum(33193)
+ GLenum_GL_CULL_VERTEX_EXT = GLenum(33194)
+ GLenum_GL_CULL_VERTEX_EYE_POSITION_EXT = GLenum(33195)
+ GLenum_GL_CULL_VERTEX_OBJECT_POSITION_EXT = GLenum(33196)
+ GLenum_GL_IUI_V2F_EXT = GLenum(33197)
+ GLenum_GL_IUI_V3F_EXT = GLenum(33198)
+ GLenum_GL_IUI_N3F_V2F_EXT = GLenum(33199)
+ GLenum_GL_IUI_N3F_V3F_EXT = GLenum(33200)
+ GLenum_GL_T2F_IUI_V2F_EXT = GLenum(33201)
+ GLenum_GL_T2F_IUI_V3F_EXT = GLenum(33202)
+ GLenum_GL_T2F_IUI_N3F_V2F_EXT = GLenum(33203)
+ GLenum_GL_T2F_IUI_N3F_V3F_EXT = GLenum(33204)
+ GLenum_GL_INDEX_TEST_EXT = GLenum(33205)
+ GLenum_GL_INDEX_TEST_FUNC_EXT = GLenum(33206)
+ GLenum_GL_INDEX_TEST_REF_EXT = GLenum(33207)
+ GLenum_GL_INDEX_MATERIAL_EXT = GLenum(33208)
+ GLenum_GL_INDEX_MATERIAL_PARAMETER_EXT = GLenum(33209)
+ GLenum_GL_INDEX_MATERIAL_FACE_EXT = GLenum(33210)
+ GLenum_GL_YCRCB_422_SGIX = GLenum(33211)
+ GLenum_GL_YCRCB_444_SGIX = GLenum(33212)
+ GLenum_GL_WRAP_BORDER_SUN = GLenum(33236)
+ GLenum_GL_UNPACK_CONSTANT_DATA_SUNX = GLenum(33237)
+ GLenum_GL_TEXTURE_CONSTANT_DATA_SUNX = GLenum(33238)
+ GLenum_GL_TRIANGLE_LIST_SUN = GLenum(33239)
+ GLenum_GL_REPLACEMENT_CODE_SUN = GLenum(33240)
+ GLenum_GL_GLOBAL_ALPHA_SUN = GLenum(33241)
+ GLenum_GL_GLOBAL_ALPHA_FACTOR_SUN = GLenum(33242)
+ GLenum_GL_TEXTURE_COLOR_WRITEMASK_SGIS = GLenum(33263)
+ GLenum_GL_EYE_DISTANCE_TO_POINT_SGIS = GLenum(33264)
+ GLenum_GL_OBJECT_DISTANCE_TO_POINT_SGIS = GLenum(33265)
+ GLenum_GL_EYE_DISTANCE_TO_LINE_SGIS = GLenum(33266)
+ GLenum_GL_OBJECT_DISTANCE_TO_LINE_SGIS = GLenum(33267)
+ GLenum_GL_EYE_POINT_SGIS = GLenum(33268)
+ GLenum_GL_OBJECT_POINT_SGIS = GLenum(33269)
+ GLenum_GL_EYE_LINE_SGIS = GLenum(33270)
+ GLenum_GL_OBJECT_LINE_SGIS = GLenum(33271)
+ GLenum_GL_LIGHT_MODEL_COLOR_CONTROL = GLenum(33272)
+ GLenum_GL_LIGHT_MODEL_COLOR_CONTROL_EXT = GLenum(33272)
+ GLenum_GL_SINGLE_COLOR = GLenum(33273)
+ GLenum_GL_SINGLE_COLOR_EXT = GLenum(33273)
+ GLenum_GL_SEPARATE_SPECULAR_COLOR = GLenum(33274)
+ GLenum_GL_SEPARATE_SPECULAR_COLOR_EXT = GLenum(33274)
+ GLenum_GL_SHARED_TEXTURE_PALETTE_EXT = GLenum(33275)
+ GLenum_GL_TEXT_FRAGMENT_SHADER_ATI = GLenum(33280)
+ GLenum_GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING = GLenum(33296)
+ GLenum_GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT = GLenum(33296)
+ GLenum_GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE = GLenum(33297)
+ GLenum_GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT = GLenum(33297)
+ GLenum_GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE = GLenum(33298)
+ GLenum_GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE = GLenum(33299)
+ GLenum_GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE = GLenum(33300)
+ GLenum_GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE = GLenum(33301)
+ GLenum_GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = GLenum(33302)
+ GLenum_GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = GLenum(33303)
+ GLenum_GL_FRAMEBUFFER_DEFAULT = GLenum(33304)
+ GLenum_GL_FRAMEBUFFER_UNDEFINED = GLenum(33305)
+ GLenum_GL_FRAMEBUFFER_UNDEFINED_OES = GLenum(33305)
+ GLenum_GL_DEPTH_STENCIL_ATTACHMENT = GLenum(33306)
+ GLenum_GL_MAJOR_VERSION = GLenum(33307)
+ GLenum_GL_MINOR_VERSION = GLenum(33308)
+ GLenum_GL_NUM_EXTENSIONS = GLenum(33309)
+ GLenum_GL_CONTEXT_FLAGS = GLenum(33310)
+ GLenum_GL_BUFFER_IMMUTABLE_STORAGE = GLenum(33311)
+ GLenum_GL_BUFFER_IMMUTABLE_STORAGE_EXT = GLenum(33311)
+ GLenum_GL_BUFFER_STORAGE_FLAGS = GLenum(33312)
+ GLenum_GL_BUFFER_STORAGE_FLAGS_EXT = GLenum(33312)
+ GLenum_GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED = GLenum(33313)
+ GLenum_GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED_OES = GLenum(33313)
+ GLenum_GL_INDEX = GLenum(33314)
+ GLenum_GL_COMPRESSED_RED = GLenum(33317)
+ GLenum_GL_COMPRESSED_RG = GLenum(33318)
+ GLenum_GL_RG = GLenum(33319)
+ GLenum_GL_RG_EXT = GLenum(33319)
+ GLenum_GL_RG_INTEGER = GLenum(33320)
+ GLenum_GL_R8 = GLenum(33321)
+ GLenum_GL_R8_EXT = GLenum(33321)
+ GLenum_GL_R16 = GLenum(33322)
+ GLenum_GL_R16_EXT = GLenum(33322)
+ GLenum_GL_RG8 = GLenum(33323)
+ GLenum_GL_RG8_EXT = GLenum(33323)
+ GLenum_GL_RG16 = GLenum(33324)
+ GLenum_GL_RG16_EXT = GLenum(33324)
+ GLenum_GL_R16F = GLenum(33325)
+ GLenum_GL_R16F_EXT = GLenum(33325)
+ GLenum_GL_R32F = GLenum(33326)
+ GLenum_GL_R32F_EXT = GLenum(33326)
+ GLenum_GL_RG16F = GLenum(33327)
+ GLenum_GL_RG16F_EXT = GLenum(33327)
+ GLenum_GL_RG32F = GLenum(33328)
+ GLenum_GL_RG32F_EXT = GLenum(33328)
+ GLenum_GL_R8I = GLenum(33329)
+ GLenum_GL_R8UI = GLenum(33330)
+ GLenum_GL_R16I = GLenum(33331)
+ GLenum_GL_R16UI = GLenum(33332)
+ GLenum_GL_R32I = GLenum(33333)
+ GLenum_GL_R32UI = GLenum(33334)
+ GLenum_GL_RG8I = GLenum(33335)
+ GLenum_GL_RG8UI = GLenum(33336)
+ GLenum_GL_RG16I = GLenum(33337)
+ GLenum_GL_RG16UI = GLenum(33338)
+ GLenum_GL_RG32I = GLenum(33339)
+ GLenum_GL_RG32UI = GLenum(33340)
+ GLenum_GL_SYNC_CL_EVENT_ARB = GLenum(33344)
+ GLenum_GL_SYNC_CL_EVENT_COMPLETE_ARB = GLenum(33345)
+ GLenum_GL_DEBUG_OUTPUT_SYNCHRONOUS = GLenum(33346)
+ GLenum_GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB = GLenum(33346)
+ GLenum_GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR = GLenum(33346)
+ GLenum_GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH = GLenum(33347)
+ GLenum_GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB = GLenum(33347)
+ GLenum_GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR = GLenum(33347)
+ GLenum_GL_DEBUG_CALLBACK_FUNCTION = GLenum(33348)
+ GLenum_GL_DEBUG_CALLBACK_FUNCTION_ARB = GLenum(33348)
+ GLenum_GL_DEBUG_CALLBACK_FUNCTION_KHR = GLenum(33348)
+ GLenum_GL_DEBUG_CALLBACK_USER_PARAM = GLenum(33349)
+ GLenum_GL_DEBUG_CALLBACK_USER_PARAM_ARB = GLenum(33349)
+ GLenum_GL_DEBUG_CALLBACK_USER_PARAM_KHR = GLenum(33349)
+ GLenum_GL_DEBUG_SOURCE_API = GLenum(33350)
+ GLenum_GL_DEBUG_SOURCE_API_ARB = GLenum(33350)
+ GLenum_GL_DEBUG_SOURCE_API_KHR = GLenum(33350)
+ GLenum_GL_DEBUG_SOURCE_WINDOW_SYSTEM = GLenum(33351)
+ GLenum_GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB = GLenum(33351)
+ GLenum_GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR = GLenum(33351)
+ GLenum_GL_DEBUG_SOURCE_SHADER_COMPILER = GLenum(33352)
+ GLenum_GL_DEBUG_SOURCE_SHADER_COMPILER_ARB = GLenum(33352)
+ GLenum_GL_DEBUG_SOURCE_SHADER_COMPILER_KHR = GLenum(33352)
+ GLenum_GL_DEBUG_SOURCE_THIRD_PARTY = GLenum(33353)
+ GLenum_GL_DEBUG_SOURCE_THIRD_PARTY_ARB = GLenum(33353)
+ GLenum_GL_DEBUG_SOURCE_THIRD_PARTY_KHR = GLenum(33353)
+ GLenum_GL_DEBUG_SOURCE_APPLICATION = GLenum(33354)
+ GLenum_GL_DEBUG_SOURCE_APPLICATION_ARB = GLenum(33354)
+ GLenum_GL_DEBUG_SOURCE_APPLICATION_KHR = GLenum(33354)
+ GLenum_GL_DEBUG_SOURCE_OTHER = GLenum(33355)
+ GLenum_GL_DEBUG_SOURCE_OTHER_ARB = GLenum(33355)
+ GLenum_GL_DEBUG_SOURCE_OTHER_KHR = GLenum(33355)
+ GLenum_GL_DEBUG_TYPE_ERROR = GLenum(33356)
+ GLenum_GL_DEBUG_TYPE_ERROR_ARB = GLenum(33356)
+ GLenum_GL_DEBUG_TYPE_ERROR_KHR = GLenum(33356)
+ GLenum_GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR = GLenum(33357)
+ GLenum_GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB = GLenum(33357)
+ GLenum_GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR = GLenum(33357)
+ GLenum_GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR = GLenum(33358)
+ GLenum_GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB = GLenum(33358)
+ GLenum_GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR = GLenum(33358)
+ GLenum_GL_DEBUG_TYPE_PORTABILITY = GLenum(33359)
+ GLenum_GL_DEBUG_TYPE_PORTABILITY_ARB = GLenum(33359)
+ GLenum_GL_DEBUG_TYPE_PORTABILITY_KHR = GLenum(33359)
+ GLenum_GL_DEBUG_TYPE_PERFORMANCE = GLenum(33360)
+ GLenum_GL_DEBUG_TYPE_PERFORMANCE_ARB = GLenum(33360)
+ GLenum_GL_DEBUG_TYPE_PERFORMANCE_KHR = GLenum(33360)
+ GLenum_GL_DEBUG_TYPE_OTHER = GLenum(33361)
+ GLenum_GL_DEBUG_TYPE_OTHER_ARB = GLenum(33361)
+ GLenum_GL_DEBUG_TYPE_OTHER_KHR = GLenum(33361)
+ GLenum_GL_LOSE_CONTEXT_ON_RESET = GLenum(33362)
+ GLenum_GL_LOSE_CONTEXT_ON_RESET_ARB = GLenum(33362)
+ GLenum_GL_LOSE_CONTEXT_ON_RESET_EXT = GLenum(33362)
+ GLenum_GL_LOSE_CONTEXT_ON_RESET_KHR = GLenum(33362)
+ GLenum_GL_GUILTY_CONTEXT_RESET = GLenum(33363)
+ GLenum_GL_GUILTY_CONTEXT_RESET_ARB = GLenum(33363)
+ GLenum_GL_GUILTY_CONTEXT_RESET_EXT = GLenum(33363)
+ GLenum_GL_GUILTY_CONTEXT_RESET_KHR = GLenum(33363)
+ GLenum_GL_INNOCENT_CONTEXT_RESET = GLenum(33364)
+ GLenum_GL_INNOCENT_CONTEXT_RESET_ARB = GLenum(33364)
+ GLenum_GL_INNOCENT_CONTEXT_RESET_EXT = GLenum(33364)
+ GLenum_GL_INNOCENT_CONTEXT_RESET_KHR = GLenum(33364)
+ GLenum_GL_UNKNOWN_CONTEXT_RESET = GLenum(33365)
+ GLenum_GL_UNKNOWN_CONTEXT_RESET_ARB = GLenum(33365)
+ GLenum_GL_UNKNOWN_CONTEXT_RESET_EXT = GLenum(33365)
+ GLenum_GL_UNKNOWN_CONTEXT_RESET_KHR = GLenum(33365)
+ GLenum_GL_RESET_NOTIFICATION_STRATEGY = GLenum(33366)
+ GLenum_GL_RESET_NOTIFICATION_STRATEGY_ARB = GLenum(33366)
+ GLenum_GL_RESET_NOTIFICATION_STRATEGY_EXT = GLenum(33366)
+ GLenum_GL_RESET_NOTIFICATION_STRATEGY_KHR = GLenum(33366)
+ GLenum_GL_PROGRAM_BINARY_RETRIEVABLE_HINT = GLenum(33367)
+ GLenum_GL_PROGRAM_SEPARABLE = GLenum(33368)
+ GLenum_GL_PROGRAM_SEPARABLE_EXT = GLenum(33368)
+ GLenum_GL_ACTIVE_PROGRAM = GLenum(33369)
+ GLenum_GL_ACTIVE_PROGRAM_EXT = GLenum(33369)
+ GLenum_GL_PROGRAM_PIPELINE_BINDING = GLenum(33370)
+ GLenum_GL_PROGRAM_PIPELINE_BINDING_EXT = GLenum(33370)
+ GLenum_GL_MAX_VIEWPORTS = GLenum(33371)
+ GLenum_GL_MAX_VIEWPORTS_NV = GLenum(33371)
+ GLenum_GL_VIEWPORT_SUBPIXEL_BITS = GLenum(33372)
+ GLenum_GL_VIEWPORT_SUBPIXEL_BITS_EXT = GLenum(33372)
+ GLenum_GL_VIEWPORT_SUBPIXEL_BITS_NV = GLenum(33372)
+ GLenum_GL_VIEWPORT_BOUNDS_RANGE = GLenum(33373)
+ GLenum_GL_VIEWPORT_BOUNDS_RANGE_EXT = GLenum(33373)
+ GLenum_GL_VIEWPORT_BOUNDS_RANGE_NV = GLenum(33373)
+ GLenum_GL_LAYER_PROVOKING_VERTEX = GLenum(33374)
+ GLenum_GL_LAYER_PROVOKING_VERTEX_EXT = GLenum(33374)
+ GLenum_GL_LAYER_PROVOKING_VERTEX_OES = GLenum(33374)
+ GLenum_GL_VIEWPORT_INDEX_PROVOKING_VERTEX = GLenum(33375)
+ GLenum_GL_VIEWPORT_INDEX_PROVOKING_VERTEX_EXT = GLenum(33375)
+ GLenum_GL_VIEWPORT_INDEX_PROVOKING_VERTEX_NV = GLenum(33375)
+ GLenum_GL_UNDEFINED_VERTEX = GLenum(33376)
+ GLenum_GL_UNDEFINED_VERTEX_EXT = GLenum(33376)
+ GLenum_GL_UNDEFINED_VERTEX_OES = GLenum(33376)
+ GLenum_GL_NO_RESET_NOTIFICATION = GLenum(33377)
+ GLenum_GL_NO_RESET_NOTIFICATION_ARB = GLenum(33377)
+ GLenum_GL_NO_RESET_NOTIFICATION_EXT = GLenum(33377)
+ GLenum_GL_NO_RESET_NOTIFICATION_KHR = GLenum(33377)
+ GLenum_GL_MAX_COMPUTE_SHARED_MEMORY_SIZE = GLenum(33378)
+ GLenum_GL_MAX_COMPUTE_UNIFORM_COMPONENTS = GLenum(33379)
+ GLenum_GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS = GLenum(33380)
+ GLenum_GL_MAX_COMPUTE_ATOMIC_COUNTERS = GLenum(33381)
+ GLenum_GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS = GLenum(33382)
+ GLenum_GL_COMPUTE_WORK_GROUP_SIZE = GLenum(33383)
+ GLenum_GL_DEBUG_TYPE_MARKER = GLenum(33384)
+ GLenum_GL_DEBUG_TYPE_MARKER_KHR = GLenum(33384)
+ GLenum_GL_DEBUG_TYPE_PUSH_GROUP = GLenum(33385)
+ GLenum_GL_DEBUG_TYPE_PUSH_GROUP_KHR = GLenum(33385)
+ GLenum_GL_DEBUG_TYPE_POP_GROUP = GLenum(33386)
+ GLenum_GL_DEBUG_TYPE_POP_GROUP_KHR = GLenum(33386)
+ GLenum_GL_DEBUG_SEVERITY_NOTIFICATION = GLenum(33387)
+ GLenum_GL_DEBUG_SEVERITY_NOTIFICATION_KHR = GLenum(33387)
+ GLenum_GL_MAX_DEBUG_GROUP_STACK_DEPTH = GLenum(33388)
+ GLenum_GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR = GLenum(33388)
+ GLenum_GL_DEBUG_GROUP_STACK_DEPTH = GLenum(33389)
+ GLenum_GL_DEBUG_GROUP_STACK_DEPTH_KHR = GLenum(33389)
+ GLenum_GL_MAX_UNIFORM_LOCATIONS = GLenum(33390)
+ GLenum_GL_INTERNALFORMAT_SUPPORTED = GLenum(33391)
+ GLenum_GL_INTERNALFORMAT_PREFERRED = GLenum(33392)
+ GLenum_GL_INTERNALFORMAT_RED_SIZE = GLenum(33393)
+ GLenum_GL_INTERNALFORMAT_GREEN_SIZE = GLenum(33394)
+ GLenum_GL_INTERNALFORMAT_BLUE_SIZE = GLenum(33395)
+ GLenum_GL_INTERNALFORMAT_ALPHA_SIZE = GLenum(33396)
+ GLenum_GL_INTERNALFORMAT_DEPTH_SIZE = GLenum(33397)
+ GLenum_GL_INTERNALFORMAT_STENCIL_SIZE = GLenum(33398)
+ GLenum_GL_INTERNALFORMAT_SHARED_SIZE = GLenum(33399)
+ GLenum_GL_INTERNALFORMAT_RED_TYPE = GLenum(33400)
+ GLenum_GL_INTERNALFORMAT_GREEN_TYPE = GLenum(33401)
+ GLenum_GL_INTERNALFORMAT_BLUE_TYPE = GLenum(33402)
+ GLenum_GL_INTERNALFORMAT_ALPHA_TYPE = GLenum(33403)
+ GLenum_GL_INTERNALFORMAT_DEPTH_TYPE = GLenum(33404)
+ GLenum_GL_INTERNALFORMAT_STENCIL_TYPE = GLenum(33405)
+ GLenum_GL_MAX_WIDTH = GLenum(33406)
+ GLenum_GL_MAX_HEIGHT = GLenum(33407)
+ GLenum_GL_MAX_DEPTH = GLenum(33408)
+ GLenum_GL_MAX_LAYERS = GLenum(33409)
+ GLenum_GL_MAX_COMBINED_DIMENSIONS = GLenum(33410)
+ GLenum_GL_COLOR_COMPONENTS = GLenum(33411)
+ GLenum_GL_DEPTH_COMPONENTS = GLenum(33412)
+ GLenum_GL_STENCIL_COMPONENTS = GLenum(33413)
+ GLenum_GL_COLOR_RENDERABLE = GLenum(33414)
+ GLenum_GL_DEPTH_RENDERABLE = GLenum(33415)
+ GLenum_GL_STENCIL_RENDERABLE = GLenum(33416)
+ GLenum_GL_FRAMEBUFFER_RENDERABLE = GLenum(33417)
+ GLenum_GL_FRAMEBUFFER_RENDERABLE_LAYERED = GLenum(33418)
+ GLenum_GL_FRAMEBUFFER_BLEND = GLenum(33419)
+ GLenum_GL_READ_PIXELS = GLenum(33420)
+ GLenum_GL_READ_PIXELS_FORMAT = GLenum(33421)
+ GLenum_GL_READ_PIXELS_TYPE = GLenum(33422)
+ GLenum_GL_TEXTURE_IMAGE_FORMAT = GLenum(33423)
+ GLenum_GL_TEXTURE_IMAGE_TYPE = GLenum(33424)
+ GLenum_GL_GET_TEXTURE_IMAGE_FORMAT = GLenum(33425)
+ GLenum_GL_GET_TEXTURE_IMAGE_TYPE = GLenum(33426)
+ GLenum_GL_MIPMAP = GLenum(33427)
+ GLenum_GL_MANUAL_GENERATE_MIPMAP = GLenum(33428)
+ GLenum_GL_AUTO_GENERATE_MIPMAP = GLenum(33429)
+ GLenum_GL_COLOR_ENCODING = GLenum(33430)
+ GLenum_GL_SRGB_READ = GLenum(33431)
+ GLenum_GL_SRGB_WRITE = GLenum(33432)
+ GLenum_GL_SRGB_DECODE_ARB = GLenum(33433)
+ GLenum_GL_FILTER = GLenum(33434)
+ GLenum_GL_VERTEX_TEXTURE = GLenum(33435)
+ GLenum_GL_TESS_CONTROL_TEXTURE = GLenum(33436)
+ GLenum_GL_TESS_EVALUATION_TEXTURE = GLenum(33437)
+ GLenum_GL_GEOMETRY_TEXTURE = GLenum(33438)
+ GLenum_GL_FRAGMENT_TEXTURE = GLenum(33439)
+ GLenum_GL_COMPUTE_TEXTURE = GLenum(33440)
+ GLenum_GL_TEXTURE_SHADOW = GLenum(33441)
+ GLenum_GL_TEXTURE_GATHER = GLenum(33442)
+ GLenum_GL_TEXTURE_GATHER_SHADOW = GLenum(33443)
+ GLenum_GL_SHADER_IMAGE_LOAD = GLenum(33444)
+ GLenum_GL_SHADER_IMAGE_STORE = GLenum(33445)
+ GLenum_GL_SHADER_IMAGE_ATOMIC = GLenum(33446)
+ GLenum_GL_IMAGE_TEXEL_SIZE = GLenum(33447)
+ GLenum_GL_IMAGE_COMPATIBILITY_CLASS = GLenum(33448)
+ GLenum_GL_IMAGE_PIXEL_FORMAT = GLenum(33449)
+ GLenum_GL_IMAGE_PIXEL_TYPE = GLenum(33450)
+ GLenum_GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST = GLenum(33452)
+ GLenum_GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST = GLenum(33453)
+ GLenum_GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE = GLenum(33454)
+ GLenum_GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE = GLenum(33455)
+ GLenum_GL_TEXTURE_COMPRESSED_BLOCK_WIDTH = GLenum(33457)
+ GLenum_GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT = GLenum(33458)
+ GLenum_GL_TEXTURE_COMPRESSED_BLOCK_SIZE = GLenum(33459)
+ GLenum_GL_CLEAR_BUFFER = GLenum(33460)
+ GLenum_GL_TEXTURE_VIEW = GLenum(33461)
+ GLenum_GL_VIEW_COMPATIBILITY_CLASS = GLenum(33462)
+ GLenum_GL_FULL_SUPPORT = GLenum(33463)
+ GLenum_GL_CAVEAT_SUPPORT = GLenum(33464)
+ GLenum_GL_IMAGE_CLASS_4_X_32 = GLenum(33465)
+ GLenum_GL_IMAGE_CLASS_2_X_32 = GLenum(33466)
+ GLenum_GL_IMAGE_CLASS_1_X_32 = GLenum(33467)
+ GLenum_GL_IMAGE_CLASS_4_X_16 = GLenum(33468)
+ GLenum_GL_IMAGE_CLASS_2_X_16 = GLenum(33469)
+ GLenum_GL_IMAGE_CLASS_1_X_16 = GLenum(33470)
+ GLenum_GL_IMAGE_CLASS_4_X_8 = GLenum(33471)
+ GLenum_GL_IMAGE_CLASS_2_X_8 = GLenum(33472)
+ GLenum_GL_IMAGE_CLASS_1_X_8 = GLenum(33473)
+ GLenum_GL_IMAGE_CLASS_11_11_10 = GLenum(33474)
+ GLenum_GL_IMAGE_CLASS_10_10_10_2 = GLenum(33475)
+ GLenum_GL_VIEW_CLASS_128_BITS = GLenum(33476)
+ GLenum_GL_VIEW_CLASS_96_BITS = GLenum(33477)
+ GLenum_GL_VIEW_CLASS_64_BITS = GLenum(33478)
+ GLenum_GL_VIEW_CLASS_48_BITS = GLenum(33479)
+ GLenum_GL_VIEW_CLASS_32_BITS = GLenum(33480)
+ GLenum_GL_VIEW_CLASS_24_BITS = GLenum(33481)
+ GLenum_GL_VIEW_CLASS_16_BITS = GLenum(33482)
+ GLenum_GL_VIEW_CLASS_8_BITS = GLenum(33483)
+ GLenum_GL_VIEW_CLASS_S3TC_DXT1_RGB = GLenum(33484)
+ GLenum_GL_VIEW_CLASS_S3TC_DXT1_RGBA = GLenum(33485)
+ GLenum_GL_VIEW_CLASS_S3TC_DXT3_RGBA = GLenum(33486)
+ GLenum_GL_VIEW_CLASS_S3TC_DXT5_RGBA = GLenum(33487)
+ GLenum_GL_VIEW_CLASS_RGTC1_RED = GLenum(33488)
+ GLenum_GL_VIEW_CLASS_RGTC2_RG = GLenum(33489)
+ GLenum_GL_VIEW_CLASS_BPTC_UNORM = GLenum(33490)
+ GLenum_GL_VIEW_CLASS_BPTC_FLOAT = GLenum(33491)
+ GLenum_GL_VERTEX_ATTRIB_BINDING = GLenum(33492)
+ GLenum_GL_VERTEX_ATTRIB_RELATIVE_OFFSET = GLenum(33493)
+ GLenum_GL_VERTEX_BINDING_DIVISOR = GLenum(33494)
+ GLenum_GL_VERTEX_BINDING_OFFSET = GLenum(33495)
+ GLenum_GL_VERTEX_BINDING_STRIDE = GLenum(33496)
+ GLenum_GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET = GLenum(33497)
+ GLenum_GL_MAX_VERTEX_ATTRIB_BINDINGS = GLenum(33498)
+ GLenum_GL_TEXTURE_VIEW_MIN_LEVEL = GLenum(33499)
+ GLenum_GL_TEXTURE_VIEW_MIN_LEVEL_EXT = GLenum(33499)
+ GLenum_GL_TEXTURE_VIEW_MIN_LEVEL_OES = GLenum(33499)
+ GLenum_GL_TEXTURE_VIEW_NUM_LEVELS = GLenum(33500)
+ GLenum_GL_TEXTURE_VIEW_NUM_LEVELS_EXT = GLenum(33500)
+ GLenum_GL_TEXTURE_VIEW_NUM_LEVELS_OES = GLenum(33500)
+ GLenum_GL_TEXTURE_VIEW_MIN_LAYER = GLenum(33501)
+ GLenum_GL_TEXTURE_VIEW_MIN_LAYER_EXT = GLenum(33501)
+ GLenum_GL_TEXTURE_VIEW_MIN_LAYER_OES = GLenum(33501)
+ GLenum_GL_TEXTURE_VIEW_NUM_LAYERS = GLenum(33502)
+ GLenum_GL_TEXTURE_VIEW_NUM_LAYERS_EXT = GLenum(33502)
+ GLenum_GL_TEXTURE_VIEW_NUM_LAYERS_OES = GLenum(33502)
+ GLenum_GL_TEXTURE_IMMUTABLE_LEVELS = GLenum(33503)
+ GLenum_GL_BUFFER = GLenum(33504)
+ GLenum_GL_BUFFER_KHR = GLenum(33504)
+ GLenum_GL_SHADER = GLenum(33505)
+ GLenum_GL_SHADER_KHR = GLenum(33505)
+ GLenum_GL_PROGRAM = GLenum(33506)
+ GLenum_GL_PROGRAM_KHR = GLenum(33506)
+ GLenum_GL_QUERY = GLenum(33507)
+ GLenum_GL_QUERY_KHR = GLenum(33507)
+ GLenum_GL_PROGRAM_PIPELINE = GLenum(33508)
+ GLenum_GL_PROGRAM_PIPELINE_KHR = GLenum(33508)
+ GLenum_GL_MAX_VERTEX_ATTRIB_STRIDE = GLenum(33509)
+ GLenum_GL_SAMPLER = GLenum(33510)
+ GLenum_GL_SAMPLER_KHR = GLenum(33510)
+ GLenum_GL_DISPLAY_LIST = GLenum(33511)
+ GLenum_GL_MAX_LABEL_LENGTH = GLenum(33512)
+ GLenum_GL_MAX_LABEL_LENGTH_KHR = GLenum(33512)
+ GLenum_GL_NUM_SHADING_LANGUAGE_VERSIONS = GLenum(33513)
+ GLenum_GL_QUERY_TARGET = GLenum(33514)
+ GLenum_GL_TRANSFORM_FEEDBACK_OVERFLOW_ARB = GLenum(33516)
+ GLenum_GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB = GLenum(33517)
+ GLenum_GL_VERTICES_SUBMITTED_ARB = GLenum(33518)
+ GLenum_GL_PRIMITIVES_SUBMITTED_ARB = GLenum(33519)
+ GLenum_GL_VERTEX_SHADER_INVOCATIONS_ARB = GLenum(33520)
+ GLenum_GL_TESS_CONTROL_SHADER_PATCHES_ARB = GLenum(33521)
+ GLenum_GL_TESS_EVALUATION_SHADER_INVOCATIONS_ARB = GLenum(33522)
+ GLenum_GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB = GLenum(33523)
+ GLenum_GL_FRAGMENT_SHADER_INVOCATIONS_ARB = GLenum(33524)
+ GLenum_GL_COMPUTE_SHADER_INVOCATIONS_ARB = GLenum(33525)
+ GLenum_GL_CLIPPING_INPUT_PRIMITIVES_ARB = GLenum(33526)
+ GLenum_GL_CLIPPING_OUTPUT_PRIMITIVES_ARB = GLenum(33527)
+ GLenum_GL_SPARSE_BUFFER_PAGE_SIZE_ARB = GLenum(33528)
+ GLenum_GL_MAX_CULL_DISTANCES = GLenum(33529)
+ GLenum_GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES = GLenum(33530)
+ GLenum_GL_CONTEXT_RELEASE_BEHAVIOR = GLenum(33531)
+ GLenum_GL_CONTEXT_RELEASE_BEHAVIOR_KHR = GLenum(33531)
+ GLenum_GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH = GLenum(33532)
+ GLenum_GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR = GLenum(33532)
+ GLenum_GL_DEPTH_PASS_INSTRUMENT_SGIX = GLenum(33552)
+ GLenum_GL_DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX = GLenum(33553)
+ GLenum_GL_DEPTH_PASS_INSTRUMENT_MAX_SGIX = GLenum(33554)
+ GLenum_GL_FRAGMENTS_INSTRUMENT_SGIX = GLenum(33555)
+ GLenum_GL_FRAGMENTS_INSTRUMENT_COUNTERS_SGIX = GLenum(33556)
+ GLenum_GL_FRAGMENTS_INSTRUMENT_MAX_SGIX = GLenum(33557)
+ GLenum_GL_CONVOLUTION_HINT_SGIX = GLenum(33558)
+ GLenum_GL_YCRCB_SGIX = GLenum(33560)
+ GLenum_GL_YCRCBA_SGIX = GLenum(33561)
+ GLenum_GL_UNPACK_COMPRESSED_SIZE_SGIX = GLenum(33562)
+ GLenum_GL_PACK_MAX_COMPRESSED_SIZE_SGIX = GLenum(33563)
+ GLenum_GL_PACK_COMPRESSED_SIZE_SGIX = GLenum(33564)
+ GLenum_GL_SLIM8U_SGIX = GLenum(33565)
+ GLenum_GL_SLIM10U_SGIX = GLenum(33566)
+ GLenum_GL_SLIM12S_SGIX = GLenum(33567)
+ GLenum_GL_ALPHA_MIN_SGIX = GLenum(33568)
+ GLenum_GL_ALPHA_MAX_SGIX = GLenum(33569)
+ GLenum_GL_SCALEBIAS_HINT_SGIX = GLenum(33570)
+ GLenum_GL_ASYNC_MARKER_SGIX = GLenum(33577)
+ GLenum_GL_PIXEL_TEX_GEN_MODE_SGIX = GLenum(33579)
+ GLenum_GL_ASYNC_HISTOGRAM_SGIX = GLenum(33580)
+ GLenum_GL_MAX_ASYNC_HISTOGRAM_SGIX = GLenum(33581)
+ GLenum_GL_PIXEL_TRANSFORM_2D_EXT = GLenum(33584)
+ GLenum_GL_PIXEL_MAG_FILTER_EXT = GLenum(33585)
+ GLenum_GL_PIXEL_MIN_FILTER_EXT = GLenum(33586)
+ GLenum_GL_PIXEL_CUBIC_WEIGHT_EXT = GLenum(33587)
+ GLenum_GL_CUBIC_EXT = GLenum(33588)
+ GLenum_GL_AVERAGE_EXT = GLenum(33589)
+ GLenum_GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT = GLenum(33590)
+ GLenum_GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT = GLenum(33591)
+ GLenum_GL_PIXEL_TRANSFORM_2D_MATRIX_EXT = GLenum(33592)
+ GLenum_GL_FRAGMENT_MATERIAL_EXT = GLenum(33609)
+ GLenum_GL_FRAGMENT_NORMAL_EXT = GLenum(33610)
+ GLenum_GL_FRAGMENT_COLOR_EXT = GLenum(33612)
+ GLenum_GL_ATTENUATION_EXT = GLenum(33613)
+ GLenum_GL_SHADOW_ATTENUATION_EXT = GLenum(33614)
+ GLenum_GL_TEXTURE_APPLICATION_MODE_EXT = GLenum(33615)
+ GLenum_GL_TEXTURE_LIGHT_EXT = GLenum(33616)
+ GLenum_GL_TEXTURE_MATERIAL_FACE_EXT = GLenum(33617)
+ GLenum_GL_TEXTURE_MATERIAL_PARAMETER_EXT = GLenum(33618)
+ GLenum_GL_PIXEL_TEXTURE_SGIS = GLenum(33619)
+ GLenum_GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS = GLenum(33620)
+ GLenum_GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS = GLenum(33621)
+ GLenum_GL_PIXEL_GROUP_COLOR_SGIS = GLenum(33622)
+ GLenum_GL_LINE_QUALITY_HINT_SGIX = GLenum(33627)
+ GLenum_GL_ASYNC_TEX_IMAGE_SGIX = GLenum(33628)
+ GLenum_GL_ASYNC_DRAW_PIXELS_SGIX = GLenum(33629)
+ GLenum_GL_ASYNC_READ_PIXELS_SGIX = GLenum(33630)
+ GLenum_GL_MAX_ASYNC_TEX_IMAGE_SGIX = GLenum(33631)
+ GLenum_GL_MAX_ASYNC_DRAW_PIXELS_SGIX = GLenum(33632)
+ GLenum_GL_MAX_ASYNC_READ_PIXELS_SGIX = GLenum(33633)
+ GLenum_GL_UNSIGNED_BYTE_2_3_3_REV = GLenum(33634)
+ GLenum_GL_UNSIGNED_BYTE_2_3_3_REV_EXT = GLenum(33634)
+ GLenum_GL_UNSIGNED_SHORT_5_6_5 = GLenum(33635)
+ GLenum_GL_UNSIGNED_SHORT_5_6_5_EXT = GLenum(33635)
+ GLenum_GL_UNSIGNED_SHORT_5_6_5_REV = GLenum(33636)
+ GLenum_GL_UNSIGNED_SHORT_5_6_5_REV_EXT = GLenum(33636)
+ GLenum_GL_UNSIGNED_SHORT_4_4_4_4_REV = GLenum(33637)
+ GLenum_GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT = GLenum(33637)
+ GLenum_GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG = GLenum(33637)
+ GLenum_GL_UNSIGNED_SHORT_1_5_5_5_REV = GLenum(33638)
+ GLenum_GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT = GLenum(33638)
+ GLenum_GL_UNSIGNED_INT_8_8_8_8_REV = GLenum(33639)
+ GLenum_GL_UNSIGNED_INT_8_8_8_8_REV_EXT = GLenum(33639)
+ GLenum_GL_UNSIGNED_INT_2_10_10_10_REV = GLenum(33640)
+ GLenum_GL_UNSIGNED_INT_2_10_10_10_REV_EXT = GLenum(33640)
+ GLenum_GL_TEXTURE_MAX_CLAMP_S_SGIX = GLenum(33641)
+ GLenum_GL_TEXTURE_MAX_CLAMP_T_SGIX = GLenum(33642)
+ GLenum_GL_TEXTURE_MAX_CLAMP_R_SGIX = GLenum(33643)
+ GLenum_GL_MIRRORED_REPEAT = GLenum(33648)
+ GLenum_GL_MIRRORED_REPEAT_ARB = GLenum(33648)
+ GLenum_GL_MIRRORED_REPEAT_IBM = GLenum(33648)
+ GLenum_GL_MIRRORED_REPEAT_OES = GLenum(33648)
+ GLenum_GL_RGB_S3TC = GLenum(33696)
+ GLenum_GL_RGB4_S3TC = GLenum(33697)
+ GLenum_GL_RGBA_S3TC = GLenum(33698)
+ GLenum_GL_RGBA4_S3TC = GLenum(33699)
+ GLenum_GL_RGBA_DXT5_S3TC = GLenum(33700)
+ GLenum_GL_RGBA4_DXT5_S3TC = GLenum(33701)
+ GLenum_GL_VERTEX_PRECLIP_SGIX = GLenum(33774)
+ GLenum_GL_VERTEX_PRECLIP_HINT_SGIX = GLenum(33775)
+ GLenum_GL_COMPRESSED_RGB_S3TC_DXT1_EXT = GLenum(33776)
+ GLenum_GL_COMPRESSED_RGBA_S3TC_DXT1_EXT = GLenum(33777)
+ GLenum_GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE = GLenum(33778)
+ GLenum_GL_COMPRESSED_RGBA_S3TC_DXT3_EXT = GLenum(33778)
+ GLenum_GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE = GLenum(33779)
+ GLenum_GL_COMPRESSED_RGBA_S3TC_DXT5_EXT = GLenum(33779)
+ GLenum_GL_PARALLEL_ARRAYS_INTEL = GLenum(33780)
+ GLenum_GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL = GLenum(33781)
+ GLenum_GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL = GLenum(33782)
+ GLenum_GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL = GLenum(33783)
+ GLenum_GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL = GLenum(33784)
+ GLenum_GL_PERFQUERY_DONOT_FLUSH_INTEL = GLenum(33785)
+ GLenum_GL_PERFQUERY_FLUSH_INTEL = GLenum(33786)
+ GLenum_GL_PERFQUERY_WAIT_INTEL = GLenum(33787)
+ GLenum_GL_TEXTURE_MEMORY_LAYOUT_INTEL = GLenum(33791)
+ GLenum_GL_FRAGMENT_LIGHTING_SGIX = GLenum(33792)
+ GLenum_GL_FRAGMENT_COLOR_MATERIAL_SGIX = GLenum(33793)
+ GLenum_GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX = GLenum(33794)
+ GLenum_GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX = GLenum(33795)
+ GLenum_GL_MAX_FRAGMENT_LIGHTS_SGIX = GLenum(33796)
+ GLenum_GL_MAX_ACTIVE_LIGHTS_SGIX = GLenum(33797)
+ GLenum_GL_CURRENT_RASTER_NORMAL_SGIX = GLenum(33798)
+ GLenum_GL_LIGHT_ENV_MODE_SGIX = GLenum(33799)
+ GLenum_GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX = GLenum(33800)
+ GLenum_GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX = GLenum(33801)
+ GLenum_GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX = GLenum(33802)
+ GLenum_GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX = GLenum(33803)
+ GLenum_GL_FRAGMENT_LIGHT0_SGIX = GLenum(33804)
+ GLenum_GL_FRAGMENT_LIGHT1_SGIX = GLenum(33805)
+ GLenum_GL_FRAGMENT_LIGHT2_SGIX = GLenum(33806)
+ GLenum_GL_FRAGMENT_LIGHT3_SGIX = GLenum(33807)
+ GLenum_GL_FRAGMENT_LIGHT4_SGIX = GLenum(33808)
+ GLenum_GL_FRAGMENT_LIGHT5_SGIX = GLenum(33809)
+ GLenum_GL_FRAGMENT_LIGHT6_SGIX = GLenum(33810)
+ GLenum_GL_FRAGMENT_LIGHT7_SGIX = GLenum(33811)
+ GLenum_GL_PACK_RESAMPLE_SGIX = GLenum(33838)
+ GLenum_GL_UNPACK_RESAMPLE_SGIX = GLenum(33839)
+ GLenum_GL_RESAMPLE_DECIMATE_SGIX = GLenum(33840)
+ GLenum_GL_RESAMPLE_REPLICATE_SGIX = GLenum(33843)
+ GLenum_GL_RESAMPLE_ZERO_FILL_SGIX = GLenum(33844)
+ GLenum_GL_TANGENT_ARRAY_EXT = GLenum(33849)
+ GLenum_GL_BINORMAL_ARRAY_EXT = GLenum(33850)
+ GLenum_GL_CURRENT_TANGENT_EXT = GLenum(33851)
+ GLenum_GL_CURRENT_BINORMAL_EXT = GLenum(33852)
+ GLenum_GL_TANGENT_ARRAY_TYPE_EXT = GLenum(33854)
+ GLenum_GL_TANGENT_ARRAY_STRIDE_EXT = GLenum(33855)
+ GLenum_GL_BINORMAL_ARRAY_TYPE_EXT = GLenum(33856)
+ GLenum_GL_BINORMAL_ARRAY_STRIDE_EXT = GLenum(33857)
+ GLenum_GL_TANGENT_ARRAY_POINTER_EXT = GLenum(33858)
+ GLenum_GL_BINORMAL_ARRAY_POINTER_EXT = GLenum(33859)
+ GLenum_GL_MAP1_TANGENT_EXT = GLenum(33860)
+ GLenum_GL_MAP2_TANGENT_EXT = GLenum(33861)
+ GLenum_GL_MAP1_BINORMAL_EXT = GLenum(33862)
+ GLenum_GL_MAP2_BINORMAL_EXT = GLenum(33863)
+ GLenum_GL_NEAREST_CLIPMAP_NEAREST_SGIX = GLenum(33869)
+ GLenum_GL_NEAREST_CLIPMAP_LINEAR_SGIX = GLenum(33870)
+ GLenum_GL_LINEAR_CLIPMAP_NEAREST_SGIX = GLenum(33871)
+ GLenum_GL_FOG_COORDINATE_SOURCE = GLenum(33872)
+ GLenum_GL_FOG_COORDINATE_SOURCE_EXT = GLenum(33872)
+ GLenum_GL_FOG_COORD_SRC = GLenum(33872)
+ GLenum_GL_FOG_COORDINATE = GLenum(33873)
+ GLenum_GL_FOG_COORD = GLenum(33873)
+ GLenum_GL_FOG_COORDINATE_EXT = GLenum(33873)
+ GLenum_GL_FRAGMENT_DEPTH = GLenum(33874)
+ GLenum_GL_FRAGMENT_DEPTH_EXT = GLenum(33874)
+ GLenum_GL_CURRENT_FOG_COORDINATE = GLenum(33875)
+ GLenum_GL_CURRENT_FOG_COORD = GLenum(33875)
+ GLenum_GL_CURRENT_FOG_COORDINATE_EXT = GLenum(33875)
+ GLenum_GL_FOG_COORDINATE_ARRAY_TYPE = GLenum(33876)
+ GLenum_GL_FOG_COORDINATE_ARRAY_TYPE_EXT = GLenum(33876)
+ GLenum_GL_FOG_COORD_ARRAY_TYPE = GLenum(33876)
+ GLenum_GL_FOG_COORDINATE_ARRAY_STRIDE = GLenum(33877)
+ GLenum_GL_FOG_COORDINATE_ARRAY_STRIDE_EXT = GLenum(33877)
+ GLenum_GL_FOG_COORD_ARRAY_STRIDE = GLenum(33877)
+ GLenum_GL_FOG_COORDINATE_ARRAY_POINTER = GLenum(33878)
+ GLenum_GL_FOG_COORDINATE_ARRAY_POINTER_EXT = GLenum(33878)
+ GLenum_GL_FOG_COORD_ARRAY_POINTER = GLenum(33878)
+ GLenum_GL_FOG_COORDINATE_ARRAY = GLenum(33879)
+ GLenum_GL_FOG_COORDINATE_ARRAY_EXT = GLenum(33879)
+ GLenum_GL_FOG_COORD_ARRAY = GLenum(33879)
+ GLenum_GL_COLOR_SUM = GLenum(33880)
+ GLenum_GL_COLOR_SUM_ARB = GLenum(33880)
+ GLenum_GL_COLOR_SUM_EXT = GLenum(33880)
+ GLenum_GL_CURRENT_SECONDARY_COLOR = GLenum(33881)
+ GLenum_GL_CURRENT_SECONDARY_COLOR_EXT = GLenum(33881)
+ GLenum_GL_SECONDARY_COLOR_ARRAY_SIZE = GLenum(33882)
+ GLenum_GL_SECONDARY_COLOR_ARRAY_SIZE_EXT = GLenum(33882)
+ GLenum_GL_SECONDARY_COLOR_ARRAY_TYPE = GLenum(33883)
+ GLenum_GL_SECONDARY_COLOR_ARRAY_TYPE_EXT = GLenum(33883)
+ GLenum_GL_SECONDARY_COLOR_ARRAY_STRIDE = GLenum(33884)
+ GLenum_GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT = GLenum(33884)
+ GLenum_GL_SECONDARY_COLOR_ARRAY_POINTER = GLenum(33885)
+ GLenum_GL_SECONDARY_COLOR_ARRAY_POINTER_EXT = GLenum(33885)
+ GLenum_GL_SECONDARY_COLOR_ARRAY = GLenum(33886)
+ GLenum_GL_SECONDARY_COLOR_ARRAY_EXT = GLenum(33886)
+ GLenum_GL_CURRENT_RASTER_SECONDARY_COLOR = GLenum(33887)
+ GLenum_GL_ALIASED_POINT_SIZE_RANGE = GLenum(33901)
+ GLenum_GL_ALIASED_LINE_WIDTH_RANGE = GLenum(33902)
+ GLenum_GL_SCREEN_COORDINATES_REND = GLenum(33936)
+ GLenum_GL_INVERTED_SCREEN_W_REND = GLenum(33937)
+ GLenum_GL_TEXTURE0 = GLenum(33984)
+ GLenum_GL_TEXTURE0_ARB = GLenum(33984)
+ GLenum_GL_TEXTURE1 = GLenum(33985)
+ GLenum_GL_TEXTURE1_ARB = GLenum(33985)
+ GLenum_GL_TEXTURE2 = GLenum(33986)
+ GLenum_GL_TEXTURE2_ARB = GLenum(33986)
+ GLenum_GL_TEXTURE3 = GLenum(33987)
+ GLenum_GL_TEXTURE3_ARB = GLenum(33987)
+ GLenum_GL_TEXTURE4 = GLenum(33988)
+ GLenum_GL_TEXTURE4_ARB = GLenum(33988)
+ GLenum_GL_TEXTURE5 = GLenum(33989)
+ GLenum_GL_TEXTURE5_ARB = GLenum(33989)
+ GLenum_GL_TEXTURE6 = GLenum(33990)
+ GLenum_GL_TEXTURE6_ARB = GLenum(33990)
+ GLenum_GL_TEXTURE7 = GLenum(33991)
+ GLenum_GL_TEXTURE7_ARB = GLenum(33991)
+ GLenum_GL_TEXTURE8 = GLenum(33992)
+ GLenum_GL_TEXTURE8_ARB = GLenum(33992)
+ GLenum_GL_TEXTURE9 = GLenum(33993)
+ GLenum_GL_TEXTURE9_ARB = GLenum(33993)
+ GLenum_GL_TEXTURE10 = GLenum(33994)
+ GLenum_GL_TEXTURE10_ARB = GLenum(33994)
+ GLenum_GL_TEXTURE11 = GLenum(33995)
+ GLenum_GL_TEXTURE11_ARB = GLenum(33995)
+ GLenum_GL_TEXTURE12 = GLenum(33996)
+ GLenum_GL_TEXTURE12_ARB = GLenum(33996)
+ GLenum_GL_TEXTURE13 = GLenum(33997)
+ GLenum_GL_TEXTURE13_ARB = GLenum(33997)
+ GLenum_GL_TEXTURE14 = GLenum(33998)
+ GLenum_GL_TEXTURE14_ARB = GLenum(33998)
+ GLenum_GL_TEXTURE15 = GLenum(33999)
+ GLenum_GL_TEXTURE15_ARB = GLenum(33999)
+ GLenum_GL_TEXTURE16 = GLenum(34000)
+ GLenum_GL_TEXTURE16_ARB = GLenum(34000)
+ GLenum_GL_TEXTURE17 = GLenum(34001)
+ GLenum_GL_TEXTURE17_ARB = GLenum(34001)
+ GLenum_GL_TEXTURE18 = GLenum(34002)
+ GLenum_GL_TEXTURE18_ARB = GLenum(34002)
+ GLenum_GL_TEXTURE19 = GLenum(34003)
+ GLenum_GL_TEXTURE19_ARB = GLenum(34003)
+ GLenum_GL_TEXTURE20 = GLenum(34004)
+ GLenum_GL_TEXTURE20_ARB = GLenum(34004)
+ GLenum_GL_TEXTURE21 = GLenum(34005)
+ GLenum_GL_TEXTURE21_ARB = GLenum(34005)
+ GLenum_GL_TEXTURE22 = GLenum(34006)
+ GLenum_GL_TEXTURE22_ARB = GLenum(34006)
+ GLenum_GL_TEXTURE23 = GLenum(34007)
+ GLenum_GL_TEXTURE23_ARB = GLenum(34007)
+ GLenum_GL_TEXTURE24 = GLenum(34008)
+ GLenum_GL_TEXTURE24_ARB = GLenum(34008)
+ GLenum_GL_TEXTURE25 = GLenum(34009)
+ GLenum_GL_TEXTURE25_ARB = GLenum(34009)
+ GLenum_GL_TEXTURE26 = GLenum(34010)
+ GLenum_GL_TEXTURE26_ARB = GLenum(34010)
+ GLenum_GL_TEXTURE27 = GLenum(34011)
+ GLenum_GL_TEXTURE27_ARB = GLenum(34011)
+ GLenum_GL_TEXTURE28 = GLenum(34012)
+ GLenum_GL_TEXTURE28_ARB = GLenum(34012)
+ GLenum_GL_TEXTURE29 = GLenum(34013)
+ GLenum_GL_TEXTURE29_ARB = GLenum(34013)
+ GLenum_GL_TEXTURE30 = GLenum(34014)
+ GLenum_GL_TEXTURE30_ARB = GLenum(34014)
+ GLenum_GL_TEXTURE31 = GLenum(34015)
+ GLenum_GL_TEXTURE31_ARB = GLenum(34015)
+ GLenum_GL_ACTIVE_TEXTURE = GLenum(34016)
+ GLenum_GL_ACTIVE_TEXTURE_ARB = GLenum(34016)
+ GLenum_GL_CLIENT_ACTIVE_TEXTURE = GLenum(34017)
+ GLenum_GL_CLIENT_ACTIVE_TEXTURE_ARB = GLenum(34017)
+ GLenum_GL_MAX_TEXTURE_UNITS = GLenum(34018)
+ GLenum_GL_MAX_TEXTURE_UNITS_ARB = GLenum(34018)
+ GLenum_GL_TRANSPOSE_MODELVIEW_MATRIX = GLenum(34019)
+ GLenum_GL_TRANSPOSE_MODELVIEW_MATRIX_ARB = GLenum(34019)
+ GLenum_GL_PATH_TRANSPOSE_MODELVIEW_MATRIX_NV = GLenum(34019)
+ GLenum_GL_TRANSPOSE_PROJECTION_MATRIX = GLenum(34020)
+ GLenum_GL_TRANSPOSE_PROJECTION_MATRIX_ARB = GLenum(34020)
+ GLenum_GL_PATH_TRANSPOSE_PROJECTION_MATRIX_NV = GLenum(34020)
+ GLenum_GL_TRANSPOSE_TEXTURE_MATRIX = GLenum(34021)
+ GLenum_GL_TRANSPOSE_TEXTURE_MATRIX_ARB = GLenum(34021)
+ GLenum_GL_TRANSPOSE_COLOR_MATRIX = GLenum(34022)
+ GLenum_GL_TRANSPOSE_COLOR_MATRIX_ARB = GLenum(34022)
+ GLenum_GL_SUBTRACT = GLenum(34023)
+ GLenum_GL_SUBTRACT_ARB = GLenum(34023)
+ GLenum_GL_MAX_RENDERBUFFER_SIZE = GLenum(34024)
+ GLenum_GL_MAX_RENDERBUFFER_SIZE_EXT = GLenum(34024)
+ GLenum_GL_MAX_RENDERBUFFER_SIZE_OES = GLenum(34024)
+ GLenum_GL_COMPRESSED_ALPHA = GLenum(34025)
+ GLenum_GL_COMPRESSED_ALPHA_ARB = GLenum(34025)
+ GLenum_GL_COMPRESSED_LUMINANCE = GLenum(34026)
+ GLenum_GL_COMPRESSED_LUMINANCE_ARB = GLenum(34026)
+ GLenum_GL_COMPRESSED_LUMINANCE_ALPHA = GLenum(34027)
+ GLenum_GL_COMPRESSED_LUMINANCE_ALPHA_ARB = GLenum(34027)
+ GLenum_GL_COMPRESSED_INTENSITY = GLenum(34028)
+ GLenum_GL_COMPRESSED_INTENSITY_ARB = GLenum(34028)
+ GLenum_GL_COMPRESSED_RGB = GLenum(34029)
+ GLenum_GL_COMPRESSED_RGB_ARB = GLenum(34029)
+ GLenum_GL_COMPRESSED_RGBA = GLenum(34030)
+ GLenum_GL_COMPRESSED_RGBA_ARB = GLenum(34030)
+ GLenum_GL_TEXTURE_COMPRESSION_HINT = GLenum(34031)
+ GLenum_GL_TEXTURE_COMPRESSION_HINT_ARB = GLenum(34031)
+ GLenum_GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER = GLenum(34032)
+ GLenum_GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER = GLenum(34033)
+ GLenum_GL_ALL_COMPLETED_NV = GLenum(34034)
+ GLenum_GL_FENCE_STATUS_NV = GLenum(34035)
+ GLenum_GL_FENCE_CONDITION_NV = GLenum(34036)
+ GLenum_GL_TEXTURE_RECTANGLE = GLenum(34037)
+ GLenum_GL_TEXTURE_RECTANGLE_ARB = GLenum(34037)
+ GLenum_GL_TEXTURE_RECTANGLE_NV = GLenum(34037)
+ GLenum_GL_TEXTURE_BINDING_RECTANGLE = GLenum(34038)
+ GLenum_GL_TEXTURE_BINDING_RECTANGLE_ARB = GLenum(34038)
+ GLenum_GL_TEXTURE_BINDING_RECTANGLE_NV = GLenum(34038)
+ GLenum_GL_PROXY_TEXTURE_RECTANGLE = GLenum(34039)
+ GLenum_GL_PROXY_TEXTURE_RECTANGLE_ARB = GLenum(34039)
+ GLenum_GL_PROXY_TEXTURE_RECTANGLE_NV = GLenum(34039)
+ GLenum_GL_MAX_RECTANGLE_TEXTURE_SIZE = GLenum(34040)
+ GLenum_GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB = GLenum(34040)
+ GLenum_GL_MAX_RECTANGLE_TEXTURE_SIZE_NV = GLenum(34040)
+ GLenum_GL_DEPTH_STENCIL = GLenum(34041)
+ GLenum_GL_DEPTH_STENCIL_EXT = GLenum(34041)
+ GLenum_GL_DEPTH_STENCIL_NV = GLenum(34041)
+ GLenum_GL_DEPTH_STENCIL_OES = GLenum(34041)
+ GLenum_GL_UNSIGNED_INT_24_8 = GLenum(34042)
+ GLenum_GL_UNSIGNED_INT_24_8_EXT = GLenum(34042)
+ GLenum_GL_UNSIGNED_INT_24_8_NV = GLenum(34042)
+ GLenum_GL_UNSIGNED_INT_24_8_OES = GLenum(34042)
+ GLenum_GL_MAX_TEXTURE_LOD_BIAS = GLenum(34045)
+ GLenum_GL_MAX_TEXTURE_LOD_BIAS_EXT = GLenum(34045)
+ GLenum_GL_TEXTURE_MAX_ANISOTROPY_EXT = GLenum(34046)
+ GLenum_GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT = GLenum(34047)
+ GLenum_GL_TEXTURE_FILTER_CONTROL = GLenum(34048)
+ GLenum_GL_TEXTURE_FILTER_CONTROL_EXT = GLenum(34048)
+ GLenum_GL_TEXTURE_LOD_BIAS = GLenum(34049)
+ GLenum_GL_TEXTURE_LOD_BIAS_EXT = GLenum(34049)
+ GLenum_GL_MODELVIEW1_STACK_DEPTH_EXT = GLenum(34050)
+ GLenum_GL_COMBINE4_NV = GLenum(34051)
+ GLenum_GL_MAX_SHININESS_NV = GLenum(34052)
+ GLenum_GL_MAX_SPOT_EXPONENT_NV = GLenum(34053)
+ GLenum_GL_MODELVIEW1_MATRIX_EXT = GLenum(34054)
+ GLenum_GL_INCR_WRAP = GLenum(34055)
+ GLenum_GL_INCR_WRAP_EXT = GLenum(34055)
+ GLenum_GL_INCR_WRAP_OES = GLenum(34055)
+ GLenum_GL_DECR_WRAP = GLenum(34056)
+ GLenum_GL_DECR_WRAP_EXT = GLenum(34056)
+ GLenum_GL_DECR_WRAP_OES = GLenum(34056)
+ GLenum_GL_VERTEX_WEIGHTING_EXT = GLenum(34057)
+ GLenum_GL_MODELVIEW1_ARB = GLenum(34058)
+ GLenum_GL_MODELVIEW1_EXT = GLenum(34058)
+ GLenum_GL_CURRENT_VERTEX_WEIGHT_EXT = GLenum(34059)
+ GLenum_GL_VERTEX_WEIGHT_ARRAY_EXT = GLenum(34060)
+ GLenum_GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT = GLenum(34061)
+ GLenum_GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT = GLenum(34062)
+ GLenum_GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT = GLenum(34063)
+ GLenum_GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT = GLenum(34064)
+ GLenum_GL_NORMAL_MAP = GLenum(34065)
+ GLenum_GL_NORMAL_MAP_ARB = GLenum(34065)
+ GLenum_GL_NORMAL_MAP_EXT = GLenum(34065)
+ GLenum_GL_NORMAL_MAP_NV = GLenum(34065)
+ GLenum_GL_NORMAL_MAP_OES = GLenum(34065)
+ GLenum_GL_REFLECTION_MAP = GLenum(34066)
+ GLenum_GL_REFLECTION_MAP_ARB = GLenum(34066)
+ GLenum_GL_REFLECTION_MAP_EXT = GLenum(34066)
+ GLenum_GL_REFLECTION_MAP_NV = GLenum(34066)
+ GLenum_GL_REFLECTION_MAP_OES = GLenum(34066)
+ GLenum_GL_TEXTURE_CUBE_MAP = GLenum(34067)
+ GLenum_GL_TEXTURE_CUBE_MAP_ARB = GLenum(34067)
+ GLenum_GL_TEXTURE_CUBE_MAP_EXT = GLenum(34067)
+ GLenum_GL_TEXTURE_CUBE_MAP_OES = GLenum(34067)
+ GLenum_GL_TEXTURE_BINDING_CUBE_MAP = GLenum(34068)
+ GLenum_GL_TEXTURE_BINDING_CUBE_MAP_ARB = GLenum(34068)
+ GLenum_GL_TEXTURE_BINDING_CUBE_MAP_EXT = GLenum(34068)
+ GLenum_GL_TEXTURE_BINDING_CUBE_MAP_OES = GLenum(34068)
+ GLenum_GL_TEXTURE_CUBE_MAP_POSITIVE_X = GLenum(34069)
+ GLenum_GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB = GLenum(34069)
+ GLenum_GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT = GLenum(34069)
+ GLenum_GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES = GLenum(34069)
+ GLenum_GL_TEXTURE_CUBE_MAP_NEGATIVE_X = GLenum(34070)
+ GLenum_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB = GLenum(34070)
+ GLenum_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT = GLenum(34070)
+ GLenum_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES = GLenum(34070)
+ GLenum_GL_TEXTURE_CUBE_MAP_POSITIVE_Y = GLenum(34071)
+ GLenum_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB = GLenum(34071)
+ GLenum_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT = GLenum(34071)
+ GLenum_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES = GLenum(34071)
+ GLenum_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y = GLenum(34072)
+ GLenum_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB = GLenum(34072)
+ GLenum_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT = GLenum(34072)
+ GLenum_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES = GLenum(34072)
+ GLenum_GL_TEXTURE_CUBE_MAP_POSITIVE_Z = GLenum(34073)
+ GLenum_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB = GLenum(34073)
+ GLenum_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT = GLenum(34073)
+ GLenum_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES = GLenum(34073)
+ GLenum_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z = GLenum(34074)
+ GLenum_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB = GLenum(34074)
+ GLenum_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT = GLenum(34074)
+ GLenum_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES = GLenum(34074)
+ GLenum_GL_PROXY_TEXTURE_CUBE_MAP = GLenum(34075)
+ GLenum_GL_PROXY_TEXTURE_CUBE_MAP_ARB = GLenum(34075)
+ GLenum_GL_PROXY_TEXTURE_CUBE_MAP_EXT = GLenum(34075)
+ GLenum_GL_MAX_CUBE_MAP_TEXTURE_SIZE = GLenum(34076)
+ GLenum_GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB = GLenum(34076)
+ GLenum_GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT = GLenum(34076)
+ GLenum_GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES = GLenum(34076)
+ GLenum_GL_VERTEX_ARRAY_RANGE_APPLE = GLenum(34077)
+ GLenum_GL_VERTEX_ARRAY_RANGE_NV = GLenum(34077)
+ GLenum_GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE = GLenum(34078)
+ GLenum_GL_VERTEX_ARRAY_RANGE_LENGTH_NV = GLenum(34078)
+ GLenum_GL_VERTEX_ARRAY_RANGE_VALID_NV = GLenum(34079)
+ GLenum_GL_VERTEX_ARRAY_STORAGE_HINT_APPLE = GLenum(34079)
+ GLenum_GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV = GLenum(34080)
+ GLenum_GL_VERTEX_ARRAY_RANGE_POINTER_APPLE = GLenum(34081)
+ GLenum_GL_VERTEX_ARRAY_RANGE_POINTER_NV = GLenum(34081)
+ GLenum_GL_REGISTER_COMBINERS_NV = GLenum(34082)
+ GLenum_GL_VARIABLE_A_NV = GLenum(34083)
+ GLenum_GL_VARIABLE_B_NV = GLenum(34084)
+ GLenum_GL_VARIABLE_C_NV = GLenum(34085)
+ GLenum_GL_VARIABLE_D_NV = GLenum(34086)
+ GLenum_GL_VARIABLE_E_NV = GLenum(34087)
+ GLenum_GL_VARIABLE_F_NV = GLenum(34088)
+ GLenum_GL_VARIABLE_G_NV = GLenum(34089)
+ GLenum_GL_CONSTANT_COLOR0_NV = GLenum(34090)
+ GLenum_GL_CONSTANT_COLOR1_NV = GLenum(34091)
+ GLenum_GL_PRIMARY_COLOR_NV = GLenum(34092)
+ GLenum_GL_SECONDARY_COLOR_NV = GLenum(34093)
+ GLenum_GL_SPARE0_NV = GLenum(34094)
+ GLenum_GL_SPARE1_NV = GLenum(34095)
+ GLenum_GL_DISCARD_NV = GLenum(34096)
+ GLenum_GL_E_TIMES_F_NV = GLenum(34097)
+ GLenum_GL_SPARE0_PLUS_SECONDARY_COLOR_NV = GLenum(34098)
+ GLenum_GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV = GLenum(34099)
+ GLenum_GL_MULTISAMPLE_FILTER_HINT_NV = GLenum(34100)
+ GLenum_GL_PER_STAGE_CONSTANTS_NV = GLenum(34101)
+ GLenum_GL_UNSIGNED_IDENTITY_NV = GLenum(34102)
+ GLenum_GL_UNSIGNED_INVERT_NV = GLenum(34103)
+ GLenum_GL_EXPAND_NORMAL_NV = GLenum(34104)
+ GLenum_GL_EXPAND_NEGATE_NV = GLenum(34105)
+ GLenum_GL_HALF_BIAS_NORMAL_NV = GLenum(34106)
+ GLenum_GL_HALF_BIAS_NEGATE_NV = GLenum(34107)
+ GLenum_GL_SIGNED_IDENTITY_NV = GLenum(34108)
+ GLenum_GL_SIGNED_NEGATE_NV = GLenum(34109)
+ GLenum_GL_SCALE_BY_TWO_NV = GLenum(34110)
+ GLenum_GL_SCALE_BY_FOUR_NV = GLenum(34111)
+ GLenum_GL_SCALE_BY_ONE_HALF_NV = GLenum(34112)
+ GLenum_GL_BIAS_BY_NEGATIVE_ONE_HALF_NV = GLenum(34113)
+ GLenum_GL_COMBINER_INPUT_NV = GLenum(34114)
+ GLenum_GL_COMBINER_MAPPING_NV = GLenum(34115)
+ GLenum_GL_COMBINER_COMPONENT_USAGE_NV = GLenum(34116)
+ GLenum_GL_COMBINER_AB_DOT_PRODUCT_NV = GLenum(34117)
+ GLenum_GL_COMBINER_CD_DOT_PRODUCT_NV = GLenum(34118)
+ GLenum_GL_COMBINER_MUX_SUM_NV = GLenum(34119)
+ GLenum_GL_COMBINER_SCALE_NV = GLenum(34120)
+ GLenum_GL_COMBINER_BIAS_NV = GLenum(34121)
+ GLenum_GL_COMBINER_AB_OUTPUT_NV = GLenum(34122)
+ GLenum_GL_COMBINER_CD_OUTPUT_NV = GLenum(34123)
+ GLenum_GL_COMBINER_SUM_OUTPUT_NV = GLenum(34124)
+ GLenum_GL_MAX_GENERAL_COMBINERS_NV = GLenum(34125)
+ GLenum_GL_NUM_GENERAL_COMBINERS_NV = GLenum(34126)
+ GLenum_GL_COLOR_SUM_CLAMP_NV = GLenum(34127)
+ GLenum_GL_COMBINER0_NV = GLenum(34128)
+ GLenum_GL_COMBINER1_NV = GLenum(34129)
+ GLenum_GL_COMBINER2_NV = GLenum(34130)
+ GLenum_GL_COMBINER3_NV = GLenum(34131)
+ GLenum_GL_COMBINER4_NV = GLenum(34132)
+ GLenum_GL_COMBINER5_NV = GLenum(34133)
+ GLenum_GL_COMBINER6_NV = GLenum(34134)
+ GLenum_GL_COMBINER7_NV = GLenum(34135)
+ GLenum_GL_PRIMITIVE_RESTART_NV = GLenum(34136)
+ GLenum_GL_PRIMITIVE_RESTART_INDEX_NV = GLenum(34137)
+ GLenum_GL_FOG_DISTANCE_MODE_NV = GLenum(34138)
+ GLenum_GL_EYE_RADIAL_NV = GLenum(34139)
+ GLenum_GL_EYE_PLANE_ABSOLUTE_NV = GLenum(34140)
+ GLenum_GL_EMBOSS_LIGHT_NV = GLenum(34141)
+ GLenum_GL_EMBOSS_CONSTANT_NV = GLenum(34142)
+ GLenum_GL_EMBOSS_MAP_NV = GLenum(34143)
+ GLenum_GL_RED_MIN_CLAMP_INGR = GLenum(34144)
+ GLenum_GL_GREEN_MIN_CLAMP_INGR = GLenum(34145)
+ GLenum_GL_BLUE_MIN_CLAMP_INGR = GLenum(34146)
+ GLenum_GL_ALPHA_MIN_CLAMP_INGR = GLenum(34147)
+ GLenum_GL_RED_MAX_CLAMP_INGR = GLenum(34148)
+ GLenum_GL_GREEN_MAX_CLAMP_INGR = GLenum(34149)
+ GLenum_GL_BLUE_MAX_CLAMP_INGR = GLenum(34150)
+ GLenum_GL_ALPHA_MAX_CLAMP_INGR = GLenum(34151)
+ GLenum_GL_INTERLACE_READ_INGR = GLenum(34152)
+ GLenum_GL_COMBINE = GLenum(34160)
+ GLenum_GL_COMBINE_ARB = GLenum(34160)
+ GLenum_GL_COMBINE_EXT = GLenum(34160)
+ GLenum_GL_COMBINE_RGB = GLenum(34161)
+ GLenum_GL_COMBINE_RGB_ARB = GLenum(34161)
+ GLenum_GL_COMBINE_RGB_EXT = GLenum(34161)
+ GLenum_GL_COMBINE_ALPHA = GLenum(34162)
+ GLenum_GL_COMBINE_ALPHA_ARB = GLenum(34162)
+ GLenum_GL_COMBINE_ALPHA_EXT = GLenum(34162)
+ GLenum_GL_RGB_SCALE = GLenum(34163)
+ GLenum_GL_RGB_SCALE_ARB = GLenum(34163)
+ GLenum_GL_RGB_SCALE_EXT = GLenum(34163)
+ GLenum_GL_ADD_SIGNED = GLenum(34164)
+ GLenum_GL_ADD_SIGNED_ARB = GLenum(34164)
+ GLenum_GL_ADD_SIGNED_EXT = GLenum(34164)
+ GLenum_GL_INTERPOLATE = GLenum(34165)
+ GLenum_GL_INTERPOLATE_ARB = GLenum(34165)
+ GLenum_GL_INTERPOLATE_EXT = GLenum(34165)
+ GLenum_GL_CONSTANT = GLenum(34166)
+ GLenum_GL_CONSTANT_ARB = GLenum(34166)
+ GLenum_GL_CONSTANT_EXT = GLenum(34166)
+ GLenum_GL_CONSTANT_NV = GLenum(34166)
+ GLenum_GL_PRIMARY_COLOR = GLenum(34167)
+ GLenum_GL_PRIMARY_COLOR_ARB = GLenum(34167)
+ GLenum_GL_PRIMARY_COLOR_EXT = GLenum(34167)
+ GLenum_GL_PREVIOUS = GLenum(34168)
+ GLenum_GL_PREVIOUS_ARB = GLenum(34168)
+ GLenum_GL_PREVIOUS_EXT = GLenum(34168)
+ GLenum_GL_SOURCE0_RGB = GLenum(34176)
+ GLenum_GL_SOURCE0_RGB_ARB = GLenum(34176)
+ GLenum_GL_SOURCE0_RGB_EXT = GLenum(34176)
+ GLenum_GL_SRC0_RGB = GLenum(34176)
+ GLenum_GL_SOURCE1_RGB = GLenum(34177)
+ GLenum_GL_SOURCE1_RGB_ARB = GLenum(34177)
+ GLenum_GL_SOURCE1_RGB_EXT = GLenum(34177)
+ GLenum_GL_SRC1_RGB = GLenum(34177)
+ GLenum_GL_SOURCE2_RGB = GLenum(34178)
+ GLenum_GL_SOURCE2_RGB_ARB = GLenum(34178)
+ GLenum_GL_SOURCE2_RGB_EXT = GLenum(34178)
+ GLenum_GL_SRC2_RGB = GLenum(34178)
+ GLenum_GL_SOURCE3_RGB_NV = GLenum(34179)
+ GLenum_GL_SOURCE0_ALPHA = GLenum(34184)
+ GLenum_GL_SOURCE0_ALPHA_ARB = GLenum(34184)
+ GLenum_GL_SOURCE0_ALPHA_EXT = GLenum(34184)
+ GLenum_GL_SRC0_ALPHA = GLenum(34184)
+ GLenum_GL_SOURCE1_ALPHA = GLenum(34185)
+ GLenum_GL_SOURCE1_ALPHA_ARB = GLenum(34185)
+ GLenum_GL_SOURCE1_ALPHA_EXT = GLenum(34185)
+ GLenum_GL_SRC1_ALPHA = GLenum(34185)
+ GLenum_GL_SRC1_ALPHA_EXT = GLenum(34185)
+ GLenum_GL_SOURCE2_ALPHA = GLenum(34186)
+ GLenum_GL_SOURCE2_ALPHA_ARB = GLenum(34186)
+ GLenum_GL_SOURCE2_ALPHA_EXT = GLenum(34186)
+ GLenum_GL_SRC2_ALPHA = GLenum(34186)
+ GLenum_GL_SOURCE3_ALPHA_NV = GLenum(34187)
+ GLenum_GL_OPERAND0_RGB = GLenum(34192)
+ GLenum_GL_OPERAND0_RGB_ARB = GLenum(34192)
+ GLenum_GL_OPERAND0_RGB_EXT = GLenum(34192)
+ GLenum_GL_OPERAND1_RGB = GLenum(34193)
+ GLenum_GL_OPERAND1_RGB_ARB = GLenum(34193)
+ GLenum_GL_OPERAND1_RGB_EXT = GLenum(34193)
+ GLenum_GL_OPERAND2_RGB = GLenum(34194)
+ GLenum_GL_OPERAND2_RGB_ARB = GLenum(34194)
+ GLenum_GL_OPERAND2_RGB_EXT = GLenum(34194)
+ GLenum_GL_OPERAND3_RGB_NV = GLenum(34195)
+ GLenum_GL_OPERAND0_ALPHA = GLenum(34200)
+ GLenum_GL_OPERAND0_ALPHA_ARB = GLenum(34200)
+ GLenum_GL_OPERAND0_ALPHA_EXT = GLenum(34200)
+ GLenum_GL_OPERAND1_ALPHA = GLenum(34201)
+ GLenum_GL_OPERAND1_ALPHA_ARB = GLenum(34201)
+ GLenum_GL_OPERAND1_ALPHA_EXT = GLenum(34201)
+ GLenum_GL_OPERAND2_ALPHA = GLenum(34202)
+ GLenum_GL_OPERAND2_ALPHA_ARB = GLenum(34202)
+ GLenum_GL_OPERAND2_ALPHA_EXT = GLenum(34202)
+ GLenum_GL_OPERAND3_ALPHA_NV = GLenum(34203)
+ GLenum_GL_PACK_SUBSAMPLE_RATE_SGIX = GLenum(34208)
+ GLenum_GL_UNPACK_SUBSAMPLE_RATE_SGIX = GLenum(34209)
+ GLenum_GL_PIXEL_SUBSAMPLE_4444_SGIX = GLenum(34210)
+ GLenum_GL_PIXEL_SUBSAMPLE_2424_SGIX = GLenum(34211)
+ GLenum_GL_PIXEL_SUBSAMPLE_4242_SGIX = GLenum(34212)
+ GLenum_GL_PERTURB_EXT = GLenum(34222)
+ GLenum_GL_TEXTURE_NORMAL_EXT = GLenum(34223)
+ GLenum_GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE = GLenum(34224)
+ GLenum_GL_TRANSFORM_HINT_APPLE = GLenum(34225)
+ GLenum_GL_UNPACK_CLIENT_STORAGE_APPLE = GLenum(34226)
+ GLenum_GL_BUFFER_OBJECT_APPLE = GLenum(34227)
+ GLenum_GL_STORAGE_CLIENT_APPLE = GLenum(34228)
+ GLenum_GL_VERTEX_ARRAY_BINDING = GLenum(34229)
+ GLenum_GL_VERTEX_ARRAY_BINDING_APPLE = GLenum(34229)
+ GLenum_GL_VERTEX_ARRAY_BINDING_OES = GLenum(34229)
+ GLenum_GL_TEXTURE_RANGE_LENGTH_APPLE = GLenum(34231)
+ GLenum_GL_TEXTURE_RANGE_POINTER_APPLE = GLenum(34232)
+ GLenum_GL_YCBCR_422_APPLE = GLenum(34233)
+ GLenum_GL_UNSIGNED_SHORT_8_8_APPLE = GLenum(34234)
+ GLenum_GL_UNSIGNED_SHORT_8_8_MESA = GLenum(34234)
+ GLenum_GL_UNSIGNED_SHORT_8_8_REV_APPLE = GLenum(34235)
+ GLenum_GL_UNSIGNED_SHORT_8_8_REV_MESA = GLenum(34235)
+ GLenum_GL_TEXTURE_STORAGE_HINT_APPLE = GLenum(34236)
+ GLenum_GL_STORAGE_PRIVATE_APPLE = GLenum(34237)
+ GLenum_GL_STORAGE_CACHED_APPLE = GLenum(34238)
+ GLenum_GL_STORAGE_SHARED_APPLE = GLenum(34239)
+ GLenum_GL_REPLACEMENT_CODE_ARRAY_SUN = GLenum(34240)
+ GLenum_GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN = GLenum(34241)
+ GLenum_GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN = GLenum(34242)
+ GLenum_GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN = GLenum(34243)
+ GLenum_GL_R1UI_V3F_SUN = GLenum(34244)
+ GLenum_GL_R1UI_C4UB_V3F_SUN = GLenum(34245)
+ GLenum_GL_R1UI_C3F_V3F_SUN = GLenum(34246)
+ GLenum_GL_R1UI_N3F_V3F_SUN = GLenum(34247)
+ GLenum_GL_R1UI_C4F_N3F_V3F_SUN = GLenum(34248)
+ GLenum_GL_R1UI_T2F_V3F_SUN = GLenum(34249)
+ GLenum_GL_R1UI_T2F_N3F_V3F_SUN = GLenum(34250)
+ GLenum_GL_R1UI_T2F_C4F_N3F_V3F_SUN = GLenum(34251)
+ GLenum_GL_SLICE_ACCUM_SUN = GLenum(34252)
+ GLenum_GL_QUAD_MESH_SUN = GLenum(34324)
+ GLenum_GL_TRIANGLE_MESH_SUN = GLenum(34325)
+ GLenum_GL_VERTEX_PROGRAM_ARB = GLenum(34336)
+ GLenum_GL_VERTEX_PROGRAM_NV = GLenum(34336)
+ GLenum_GL_VERTEX_STATE_PROGRAM_NV = GLenum(34337)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY_ENABLED = GLenum(34338)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB = GLenum(34338)
+ GLenum_GL_ATTRIB_ARRAY_SIZE_NV = GLenum(34339)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY_SIZE = GLenum(34339)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB = GLenum(34339)
+ GLenum_GL_ATTRIB_ARRAY_STRIDE_NV = GLenum(34340)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY_STRIDE = GLenum(34340)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB = GLenum(34340)
+ GLenum_GL_ATTRIB_ARRAY_TYPE_NV = GLenum(34341)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY_TYPE = GLenum(34341)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB = GLenum(34341)
+ GLenum_GL_CURRENT_ATTRIB_NV = GLenum(34342)
+ GLenum_GL_CURRENT_VERTEX_ATTRIB = GLenum(34342)
+ GLenum_GL_CURRENT_VERTEX_ATTRIB_ARB = GLenum(34342)
+ GLenum_GL_PROGRAM_LENGTH_ARB = GLenum(34343)
+ GLenum_GL_PROGRAM_LENGTH_NV = GLenum(34343)
+ GLenum_GL_PROGRAM_STRING_ARB = GLenum(34344)
+ GLenum_GL_PROGRAM_STRING_NV = GLenum(34344)
+ GLenum_GL_MODELVIEW_PROJECTION_NV = GLenum(34345)
+ GLenum_GL_IDENTITY_NV = GLenum(34346)
+ GLenum_GL_INVERSE_NV = GLenum(34347)
+ GLenum_GL_TRANSPOSE_NV = GLenum(34348)
+ GLenum_GL_INVERSE_TRANSPOSE_NV = GLenum(34349)
+ GLenum_GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB = GLenum(34350)
+ GLenum_GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV = GLenum(34350)
+ GLenum_GL_MAX_PROGRAM_MATRICES_ARB = GLenum(34351)
+ GLenum_GL_MAX_TRACK_MATRICES_NV = GLenum(34351)
+ GLenum_GL_MATRIX0_NV = GLenum(34352)
+ GLenum_GL_MATRIX1_NV = GLenum(34353)
+ GLenum_GL_MATRIX2_NV = GLenum(34354)
+ GLenum_GL_MATRIX3_NV = GLenum(34355)
+ GLenum_GL_MATRIX4_NV = GLenum(34356)
+ GLenum_GL_MATRIX5_NV = GLenum(34357)
+ GLenum_GL_MATRIX6_NV = GLenum(34358)
+ GLenum_GL_MATRIX7_NV = GLenum(34359)
+ GLenum_GL_CURRENT_MATRIX_STACK_DEPTH_ARB = GLenum(34368)
+ GLenum_GL_CURRENT_MATRIX_STACK_DEPTH_NV = GLenum(34368)
+ GLenum_GL_CURRENT_MATRIX_ARB = GLenum(34369)
+ GLenum_GL_CURRENT_MATRIX_NV = GLenum(34369)
+ GLenum_GL_VERTEX_PROGRAM_POINT_SIZE = GLenum(34370)
+ GLenum_GL_VERTEX_PROGRAM_POINT_SIZE_ARB = GLenum(34370)
+ GLenum_GL_VERTEX_PROGRAM_POINT_SIZE_NV = GLenum(34370)
+ GLenum_GL_PROGRAM_POINT_SIZE = GLenum(34370)
+ GLenum_GL_PROGRAM_POINT_SIZE_ARB = GLenum(34370)
+ GLenum_GL_PROGRAM_POINT_SIZE_EXT = GLenum(34370)
+ GLenum_GL_VERTEX_PROGRAM_TWO_SIDE = GLenum(34371)
+ GLenum_GL_VERTEX_PROGRAM_TWO_SIDE_ARB = GLenum(34371)
+ GLenum_GL_VERTEX_PROGRAM_TWO_SIDE_NV = GLenum(34371)
+ GLenum_GL_PROGRAM_PARAMETER_NV = GLenum(34372)
+ GLenum_GL_ATTRIB_ARRAY_POINTER_NV = GLenum(34373)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY_POINTER = GLenum(34373)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB = GLenum(34373)
+ GLenum_GL_PROGRAM_TARGET_NV = GLenum(34374)
+ GLenum_GL_PROGRAM_RESIDENT_NV = GLenum(34375)
+ GLenum_GL_TRACK_MATRIX_NV = GLenum(34376)
+ GLenum_GL_TRACK_MATRIX_TRANSFORM_NV = GLenum(34377)
+ GLenum_GL_VERTEX_PROGRAM_BINDING_NV = GLenum(34378)
+ GLenum_GL_PROGRAM_ERROR_POSITION_ARB = GLenum(34379)
+ GLenum_GL_PROGRAM_ERROR_POSITION_NV = GLenum(34379)
+ GLenum_GL_OFFSET_TEXTURE_RECTANGLE_NV = GLenum(34380)
+ GLenum_GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV = GLenum(34381)
+ GLenum_GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV = GLenum(34382)
+ GLenum_GL_DEPTH_CLAMP = GLenum(34383)
+ GLenum_GL_DEPTH_CLAMP_NV = GLenum(34383)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY0_NV = GLenum(34384)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY1_NV = GLenum(34385)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY2_NV = GLenum(34386)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY3_NV = GLenum(34387)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY4_NV = GLenum(34388)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY5_NV = GLenum(34389)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY6_NV = GLenum(34390)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY7_NV = GLenum(34391)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY8_NV = GLenum(34392)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY9_NV = GLenum(34393)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY10_NV = GLenum(34394)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY11_NV = GLenum(34395)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY12_NV = GLenum(34396)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY13_NV = GLenum(34397)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY14_NV = GLenum(34398)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY15_NV = GLenum(34399)
+ GLenum_GL_MAP1_VERTEX_ATTRIB0_4_NV = GLenum(34400)
+ GLenum_GL_MAP1_VERTEX_ATTRIB1_4_NV = GLenum(34401)
+ GLenum_GL_MAP1_VERTEX_ATTRIB2_4_NV = GLenum(34402)
+ GLenum_GL_MAP1_VERTEX_ATTRIB3_4_NV = GLenum(34403)
+ GLenum_GL_MAP1_VERTEX_ATTRIB4_4_NV = GLenum(34404)
+ GLenum_GL_MAP1_VERTEX_ATTRIB5_4_NV = GLenum(34405)
+ GLenum_GL_MAP1_VERTEX_ATTRIB6_4_NV = GLenum(34406)
+ GLenum_GL_MAP1_VERTEX_ATTRIB7_4_NV = GLenum(34407)
+ GLenum_GL_MAP1_VERTEX_ATTRIB8_4_NV = GLenum(34408)
+ GLenum_GL_MAP1_VERTEX_ATTRIB9_4_NV = GLenum(34409)
+ GLenum_GL_MAP1_VERTEX_ATTRIB10_4_NV = GLenum(34410)
+ GLenum_GL_MAP1_VERTEX_ATTRIB11_4_NV = GLenum(34411)
+ GLenum_GL_MAP1_VERTEX_ATTRIB12_4_NV = GLenum(34412)
+ GLenum_GL_MAP1_VERTEX_ATTRIB13_4_NV = GLenum(34413)
+ GLenum_GL_MAP1_VERTEX_ATTRIB14_4_NV = GLenum(34414)
+ GLenum_GL_MAP1_VERTEX_ATTRIB15_4_NV = GLenum(34415)
+ GLenum_GL_MAP2_VERTEX_ATTRIB0_4_NV = GLenum(34416)
+ GLenum_GL_MAP2_VERTEX_ATTRIB1_4_NV = GLenum(34417)
+ GLenum_GL_MAP2_VERTEX_ATTRIB2_4_NV = GLenum(34418)
+ GLenum_GL_MAP2_VERTEX_ATTRIB3_4_NV = GLenum(34419)
+ GLenum_GL_MAP2_VERTEX_ATTRIB4_4_NV = GLenum(34420)
+ GLenum_GL_MAP2_VERTEX_ATTRIB5_4_NV = GLenum(34421)
+ GLenum_GL_MAP2_VERTEX_ATTRIB6_4_NV = GLenum(34422)
+ GLenum_GL_MAP2_VERTEX_ATTRIB7_4_NV = GLenum(34423)
+ GLenum_GL_PROGRAM_BINDING_ARB = GLenum(34423)
+ GLenum_GL_MAP2_VERTEX_ATTRIB8_4_NV = GLenum(34424)
+ GLenum_GL_MAP2_VERTEX_ATTRIB9_4_NV = GLenum(34425)
+ GLenum_GL_MAP2_VERTEX_ATTRIB10_4_NV = GLenum(34426)
+ GLenum_GL_MAP2_VERTEX_ATTRIB11_4_NV = GLenum(34427)
+ GLenum_GL_MAP2_VERTEX_ATTRIB12_4_NV = GLenum(34428)
+ GLenum_GL_MAP2_VERTEX_ATTRIB13_4_NV = GLenum(34429)
+ GLenum_GL_MAP2_VERTEX_ATTRIB14_4_NV = GLenum(34430)
+ GLenum_GL_MAP2_VERTEX_ATTRIB15_4_NV = GLenum(34431)
+ GLenum_GL_TEXTURE_COMPRESSED_IMAGE_SIZE = GLenum(34464)
+ GLenum_GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB = GLenum(34464)
+ GLenum_GL_TEXTURE_COMPRESSED = GLenum(34465)
+ GLenum_GL_TEXTURE_COMPRESSED_ARB = GLenum(34465)
+ GLenum_GL_NUM_COMPRESSED_TEXTURE_FORMATS = GLenum(34466)
+ GLenum_GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB = GLenum(34466)
+ GLenum_GL_COMPRESSED_TEXTURE_FORMATS = GLenum(34467)
+ GLenum_GL_COMPRESSED_TEXTURE_FORMATS_ARB = GLenum(34467)
+ GLenum_GL_MAX_VERTEX_UNITS_ARB = GLenum(34468)
+ GLenum_GL_MAX_VERTEX_UNITS_OES = GLenum(34468)
+ GLenum_GL_ACTIVE_VERTEX_UNITS_ARB = GLenum(34469)
+ GLenum_GL_WEIGHT_SUM_UNITY_ARB = GLenum(34470)
+ GLenum_GL_VERTEX_BLEND_ARB = GLenum(34471)
+ GLenum_GL_CURRENT_WEIGHT_ARB = GLenum(34472)
+ GLenum_GL_WEIGHT_ARRAY_TYPE_ARB = GLenum(34473)
+ GLenum_GL_WEIGHT_ARRAY_TYPE_OES = GLenum(34473)
+ GLenum_GL_WEIGHT_ARRAY_STRIDE_ARB = GLenum(34474)
+ GLenum_GL_WEIGHT_ARRAY_STRIDE_OES = GLenum(34474)
+ GLenum_GL_WEIGHT_ARRAY_SIZE_ARB = GLenum(34475)
+ GLenum_GL_WEIGHT_ARRAY_SIZE_OES = GLenum(34475)
+ GLenum_GL_WEIGHT_ARRAY_POINTER_ARB = GLenum(34476)
+ GLenum_GL_WEIGHT_ARRAY_POINTER_OES = GLenum(34476)
+ GLenum_GL_WEIGHT_ARRAY_ARB = GLenum(34477)
+ GLenum_GL_WEIGHT_ARRAY_OES = GLenum(34477)
+ GLenum_GL_DOT3_RGB = GLenum(34478)
+ GLenum_GL_DOT3_RGB_ARB = GLenum(34478)
+ GLenum_GL_DOT3_RGBA = GLenum(34479)
+ GLenum_GL_DOT3_RGBA_ARB = GLenum(34479)
+ GLenum_GL_DOT3_RGBA_IMG = GLenum(34479)
+ GLenum_GL_COMPRESSED_RGB_FXT1_3DFX = GLenum(34480)
+ GLenum_GL_COMPRESSED_RGBA_FXT1_3DFX = GLenum(34481)
+ GLenum_GL_MULTISAMPLE_3DFX = GLenum(34482)
+ GLenum_GL_SAMPLE_BUFFERS_3DFX = GLenum(34483)
+ GLenum_GL_SAMPLES_3DFX = GLenum(34484)
+ GLenum_GL_EVAL_2D_NV = GLenum(34496)
+ GLenum_GL_EVAL_TRIANGULAR_2D_NV = GLenum(34497)
+ GLenum_GL_MAP_TESSELLATION_NV = GLenum(34498)
+ GLenum_GL_MAP_ATTRIB_U_ORDER_NV = GLenum(34499)
+ GLenum_GL_MAP_ATTRIB_V_ORDER_NV = GLenum(34500)
+ GLenum_GL_EVAL_FRACTIONAL_TESSELLATION_NV = GLenum(34501)
+ GLenum_GL_EVAL_VERTEX_ATTRIB0_NV = GLenum(34502)
+ GLenum_GL_EVAL_VERTEX_ATTRIB1_NV = GLenum(34503)
+ GLenum_GL_EVAL_VERTEX_ATTRIB2_NV = GLenum(34504)
+ GLenum_GL_EVAL_VERTEX_ATTRIB3_NV = GLenum(34505)
+ GLenum_GL_EVAL_VERTEX_ATTRIB4_NV = GLenum(34506)
+ GLenum_GL_EVAL_VERTEX_ATTRIB5_NV = GLenum(34507)
+ GLenum_GL_EVAL_VERTEX_ATTRIB6_NV = GLenum(34508)
+ GLenum_GL_EVAL_VERTEX_ATTRIB7_NV = GLenum(34509)
+ GLenum_GL_EVAL_VERTEX_ATTRIB8_NV = GLenum(34510)
+ GLenum_GL_EVAL_VERTEX_ATTRIB9_NV = GLenum(34511)
+ GLenum_GL_EVAL_VERTEX_ATTRIB10_NV = GLenum(34512)
+ GLenum_GL_EVAL_VERTEX_ATTRIB11_NV = GLenum(34513)
+ GLenum_GL_EVAL_VERTEX_ATTRIB12_NV = GLenum(34514)
+ GLenum_GL_EVAL_VERTEX_ATTRIB13_NV = GLenum(34515)
+ GLenum_GL_EVAL_VERTEX_ATTRIB14_NV = GLenum(34516)
+ GLenum_GL_EVAL_VERTEX_ATTRIB15_NV = GLenum(34517)
+ GLenum_GL_MAX_MAP_TESSELLATION_NV = GLenum(34518)
+ GLenum_GL_MAX_RATIONAL_EVAL_ORDER_NV = GLenum(34519)
+ GLenum_GL_MAX_PROGRAM_PATCH_ATTRIBS_NV = GLenum(34520)
+ GLenum_GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV = GLenum(34521)
+ GLenum_GL_UNSIGNED_INT_S8_S8_8_8_NV = GLenum(34522)
+ GLenum_GL_UNSIGNED_INT_8_8_S8_S8_REV_NV = GLenum(34523)
+ GLenum_GL_DSDT_MAG_INTENSITY_NV = GLenum(34524)
+ GLenum_GL_SHADER_CONSISTENT_NV = GLenum(34525)
+ GLenum_GL_TEXTURE_SHADER_NV = GLenum(34526)
+ GLenum_GL_SHADER_OPERATION_NV = GLenum(34527)
+ GLenum_GL_CULL_MODES_NV = GLenum(34528)
+ GLenum_GL_OFFSET_TEXTURE_MATRIX_NV = GLenum(34529)
+ GLenum_GL_OFFSET_TEXTURE_2D_MATRIX_NV = GLenum(34529)
+ GLenum_GL_OFFSET_TEXTURE_SCALE_NV = GLenum(34530)
+ GLenum_GL_OFFSET_TEXTURE_2D_SCALE_NV = GLenum(34530)
+ GLenum_GL_OFFSET_TEXTURE_BIAS_NV = GLenum(34531)
+ GLenum_GL_OFFSET_TEXTURE_2D_BIAS_NV = GLenum(34531)
+ GLenum_GL_PREVIOUS_TEXTURE_INPUT_NV = GLenum(34532)
+ GLenum_GL_CONST_EYE_NV = GLenum(34533)
+ GLenum_GL_PASS_THROUGH_NV = GLenum(34534)
+ GLenum_GL_CULL_FRAGMENT_NV = GLenum(34535)
+ GLenum_GL_OFFSET_TEXTURE_2D_NV = GLenum(34536)
+ GLenum_GL_DEPENDENT_AR_TEXTURE_2D_NV = GLenum(34537)
+ GLenum_GL_DEPENDENT_GB_TEXTURE_2D_NV = GLenum(34538)
+ GLenum_GL_SURFACE_STATE_NV = GLenum(34539)
+ GLenum_GL_DOT_PRODUCT_NV = GLenum(34540)
+ GLenum_GL_DOT_PRODUCT_DEPTH_REPLACE_NV = GLenum(34541)
+ GLenum_GL_DOT_PRODUCT_TEXTURE_2D_NV = GLenum(34542)
+ GLenum_GL_DOT_PRODUCT_TEXTURE_3D_NV = GLenum(34543)
+ GLenum_GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV = GLenum(34544)
+ GLenum_GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV = GLenum(34545)
+ GLenum_GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV = GLenum(34546)
+ GLenum_GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV = GLenum(34547)
+ GLenum_GL_HILO_NV = GLenum(34548)
+ GLenum_GL_DSDT_NV = GLenum(34549)
+ GLenum_GL_DSDT_MAG_NV = GLenum(34550)
+ GLenum_GL_DSDT_MAG_VIB_NV = GLenum(34551)
+ GLenum_GL_HILO16_NV = GLenum(34552)
+ GLenum_GL_SIGNED_HILO_NV = GLenum(34553)
+ GLenum_GL_SIGNED_HILO16_NV = GLenum(34554)
+ GLenum_GL_SIGNED_RGBA_NV = GLenum(34555)
+ GLenum_GL_SIGNED_RGBA8_NV = GLenum(34556)
+ GLenum_GL_SURFACE_REGISTERED_NV = GLenum(34557)
+ GLenum_GL_SIGNED_RGB_NV = GLenum(34558)
+ GLenum_GL_SIGNED_RGB8_NV = GLenum(34559)
+ GLenum_GL_SURFACE_MAPPED_NV = GLenum(34560)
+ GLenum_GL_SIGNED_LUMINANCE_NV = GLenum(34561)
+ GLenum_GL_SIGNED_LUMINANCE8_NV = GLenum(34562)
+ GLenum_GL_SIGNED_LUMINANCE_ALPHA_NV = GLenum(34563)
+ GLenum_GL_SIGNED_LUMINANCE8_ALPHA8_NV = GLenum(34564)
+ GLenum_GL_SIGNED_ALPHA_NV = GLenum(34565)
+ GLenum_GL_SIGNED_ALPHA8_NV = GLenum(34566)
+ GLenum_GL_SIGNED_INTENSITY_NV = GLenum(34567)
+ GLenum_GL_SIGNED_INTENSITY8_NV = GLenum(34568)
+ GLenum_GL_DSDT8_NV = GLenum(34569)
+ GLenum_GL_DSDT8_MAG8_NV = GLenum(34570)
+ GLenum_GL_DSDT8_MAG8_INTENSITY8_NV = GLenum(34571)
+ GLenum_GL_SIGNED_RGB_UNSIGNED_ALPHA_NV = GLenum(34572)
+ GLenum_GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV = GLenum(34573)
+ GLenum_GL_HI_SCALE_NV = GLenum(34574)
+ GLenum_GL_LO_SCALE_NV = GLenum(34575)
+ GLenum_GL_DS_SCALE_NV = GLenum(34576)
+ GLenum_GL_DT_SCALE_NV = GLenum(34577)
+ GLenum_GL_MAGNITUDE_SCALE_NV = GLenum(34578)
+ GLenum_GL_VIBRANCE_SCALE_NV = GLenum(34579)
+ GLenum_GL_HI_BIAS_NV = GLenum(34580)
+ GLenum_GL_LO_BIAS_NV = GLenum(34581)
+ GLenum_GL_DS_BIAS_NV = GLenum(34582)
+ GLenum_GL_DT_BIAS_NV = GLenum(34583)
+ GLenum_GL_MAGNITUDE_BIAS_NV = GLenum(34584)
+ GLenum_GL_VIBRANCE_BIAS_NV = GLenum(34585)
+ GLenum_GL_TEXTURE_BORDER_VALUES_NV = GLenum(34586)
+ GLenum_GL_TEXTURE_HI_SIZE_NV = GLenum(34587)
+ GLenum_GL_TEXTURE_LO_SIZE_NV = GLenum(34588)
+ GLenum_GL_TEXTURE_DS_SIZE_NV = GLenum(34589)
+ GLenum_GL_TEXTURE_DT_SIZE_NV = GLenum(34590)
+ GLenum_GL_TEXTURE_MAG_SIZE_NV = GLenum(34591)
+ GLenum_GL_MODELVIEW2_ARB = GLenum(34594)
+ GLenum_GL_MODELVIEW3_ARB = GLenum(34595)
+ GLenum_GL_MODELVIEW4_ARB = GLenum(34596)
+ GLenum_GL_MODELVIEW5_ARB = GLenum(34597)
+ GLenum_GL_MODELVIEW6_ARB = GLenum(34598)
+ GLenum_GL_MODELVIEW7_ARB = GLenum(34599)
+ GLenum_GL_MODELVIEW8_ARB = GLenum(34600)
+ GLenum_GL_MODELVIEW9_ARB = GLenum(34601)
+ GLenum_GL_MODELVIEW10_ARB = GLenum(34602)
+ GLenum_GL_MODELVIEW11_ARB = GLenum(34603)
+ GLenum_GL_MODELVIEW12_ARB = GLenum(34604)
+ GLenum_GL_MODELVIEW13_ARB = GLenum(34605)
+ GLenum_GL_MODELVIEW14_ARB = GLenum(34606)
+ GLenum_GL_MODELVIEW15_ARB = GLenum(34607)
+ GLenum_GL_MODELVIEW16_ARB = GLenum(34608)
+ GLenum_GL_MODELVIEW17_ARB = GLenum(34609)
+ GLenum_GL_MODELVIEW18_ARB = GLenum(34610)
+ GLenum_GL_MODELVIEW19_ARB = GLenum(34611)
+ GLenum_GL_MODELVIEW20_ARB = GLenum(34612)
+ GLenum_GL_MODELVIEW21_ARB = GLenum(34613)
+ GLenum_GL_MODELVIEW22_ARB = GLenum(34614)
+ GLenum_GL_MODELVIEW23_ARB = GLenum(34615)
+ GLenum_GL_MODELVIEW24_ARB = GLenum(34616)
+ GLenum_GL_MODELVIEW25_ARB = GLenum(34617)
+ GLenum_GL_MODELVIEW26_ARB = GLenum(34618)
+ GLenum_GL_MODELVIEW27_ARB = GLenum(34619)
+ GLenum_GL_MODELVIEW28_ARB = GLenum(34620)
+ GLenum_GL_MODELVIEW29_ARB = GLenum(34621)
+ GLenum_GL_MODELVIEW30_ARB = GLenum(34622)
+ GLenum_GL_MODELVIEW31_ARB = GLenum(34623)
+ GLenum_GL_DOT3_RGB_EXT = GLenum(34624)
+ GLenum_GL_Z400_BINARY_AMD = GLenum(34624)
+ GLenum_GL_DOT3_RGBA_EXT = GLenum(34625)
+ GLenum_GL_PROGRAM_BINARY_LENGTH_OES = GLenum(34625)
+ GLenum_GL_PROGRAM_BINARY_LENGTH = GLenum(34625)
+ GLenum_GL_MIRROR_CLAMP_ATI = GLenum(34626)
+ GLenum_GL_MIRROR_CLAMP_EXT = GLenum(34626)
+ GLenum_GL_MIRROR_CLAMP_TO_EDGE = GLenum(34627)
+ GLenum_GL_MIRROR_CLAMP_TO_EDGE_ATI = GLenum(34627)
+ GLenum_GL_MIRROR_CLAMP_TO_EDGE_EXT = GLenum(34627)
+ GLenum_GL_MODULATE_ADD_ATI = GLenum(34628)
+ GLenum_GL_MODULATE_SIGNED_ADD_ATI = GLenum(34629)
+ GLenum_GL_MODULATE_SUBTRACT_ATI = GLenum(34630)
+ GLenum_GL_SET_AMD = GLenum(34634)
+ GLenum_GL_REPLACE_VALUE_AMD = GLenum(34635)
+ GLenum_GL_STENCIL_OP_VALUE_AMD = GLenum(34636)
+ GLenum_GL_STENCIL_BACK_OP_VALUE_AMD = GLenum(34637)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY_LONG = GLenum(34638)
+ GLenum_GL_OCCLUSION_QUERY_EVENT_MASK_AMD = GLenum(34639)
+ GLenum_GL_DEPTH_STENCIL_MESA = GLenum(34640)
+ GLenum_GL_UNSIGNED_INT_24_8_MESA = GLenum(34641)
+ GLenum_GL_UNSIGNED_INT_8_24_REV_MESA = GLenum(34642)
+ GLenum_GL_UNSIGNED_SHORT_15_1_MESA = GLenum(34643)
+ GLenum_GL_UNSIGNED_SHORT_1_15_REV_MESA = GLenum(34644)
+ GLenum_GL_TRACE_MASK_MESA = GLenum(34645)
+ GLenum_GL_TRACE_NAME_MESA = GLenum(34646)
+ GLenum_GL_YCBCR_MESA = GLenum(34647)
+ GLenum_GL_PACK_INVERT_MESA = GLenum(34648)
+ GLenum_GL_DEBUG_OBJECT_MESA = GLenum(34649)
+ GLenum_GL_TEXTURE_1D_STACK_MESAX = GLenum(34649)
+ GLenum_GL_DEBUG_PRINT_MESA = GLenum(34650)
+ GLenum_GL_TEXTURE_2D_STACK_MESAX = GLenum(34650)
+ GLenum_GL_DEBUG_ASSERT_MESA = GLenum(34651)
+ GLenum_GL_PROXY_TEXTURE_1D_STACK_MESAX = GLenum(34651)
+ GLenum_GL_PROXY_TEXTURE_2D_STACK_MESAX = GLenum(34652)
+ GLenum_GL_TEXTURE_1D_STACK_BINDING_MESAX = GLenum(34653)
+ GLenum_GL_TEXTURE_2D_STACK_BINDING_MESAX = GLenum(34654)
+ GLenum_GL_STATIC_ATI = GLenum(34656)
+ GLenum_GL_DYNAMIC_ATI = GLenum(34657)
+ GLenum_GL_PRESERVE_ATI = GLenum(34658)
+ GLenum_GL_DISCARD_ATI = GLenum(34659)
+ GLenum_GL_BUFFER_SIZE = GLenum(34660)
+ GLenum_GL_BUFFER_SIZE_ARB = GLenum(34660)
+ GLenum_GL_OBJECT_BUFFER_SIZE_ATI = GLenum(34660)
+ GLenum_GL_BUFFER_USAGE = GLenum(34661)
+ GLenum_GL_BUFFER_USAGE_ARB = GLenum(34661)
+ GLenum_GL_OBJECT_BUFFER_USAGE_ATI = GLenum(34661)
+ GLenum_GL_ARRAY_OBJECT_BUFFER_ATI = GLenum(34662)
+ GLenum_GL_ARRAY_OBJECT_OFFSET_ATI = GLenum(34663)
+ GLenum_GL_ELEMENT_ARRAY_ATI = GLenum(34664)
+ GLenum_GL_ELEMENT_ARRAY_TYPE_ATI = GLenum(34665)
+ GLenum_GL_ELEMENT_ARRAY_POINTER_ATI = GLenum(34666)
+ GLenum_GL_MAX_VERTEX_STREAMS_ATI = GLenum(34667)
+ GLenum_GL_VERTEX_STREAM0_ATI = GLenum(34668)
+ GLenum_GL_VERTEX_STREAM1_ATI = GLenum(34669)
+ GLenum_GL_VERTEX_STREAM2_ATI = GLenum(34670)
+ GLenum_GL_VERTEX_STREAM3_ATI = GLenum(34671)
+ GLenum_GL_VERTEX_STREAM4_ATI = GLenum(34672)
+ GLenum_GL_VERTEX_STREAM5_ATI = GLenum(34673)
+ GLenum_GL_VERTEX_STREAM6_ATI = GLenum(34674)
+ GLenum_GL_VERTEX_STREAM7_ATI = GLenum(34675)
+ GLenum_GL_VERTEX_SOURCE_ATI = GLenum(34676)
+ GLenum_GL_BUMP_ROT_MATRIX_ATI = GLenum(34677)
+ GLenum_GL_BUMP_ROT_MATRIX_SIZE_ATI = GLenum(34678)
+ GLenum_GL_BUMP_NUM_TEX_UNITS_ATI = GLenum(34679)
+ GLenum_GL_BUMP_TEX_UNITS_ATI = GLenum(34680)
+ GLenum_GL_DUDV_ATI = GLenum(34681)
+ GLenum_GL_DU8DV8_ATI = GLenum(34682)
+ GLenum_GL_BUMP_ENVMAP_ATI = GLenum(34683)
+ GLenum_GL_BUMP_TARGET_ATI = GLenum(34684)
+ GLenum_GL_VERTEX_SHADER_EXT = GLenum(34688)
+ GLenum_GL_VERTEX_SHADER_BINDING_EXT = GLenum(34689)
+ GLenum_GL_OP_INDEX_EXT = GLenum(34690)
+ GLenum_GL_OP_NEGATE_EXT = GLenum(34691)
+ GLenum_GL_OP_DOT3_EXT = GLenum(34692)
+ GLenum_GL_OP_DOT4_EXT = GLenum(34693)
+ GLenum_GL_OP_MUL_EXT = GLenum(34694)
+ GLenum_GL_OP_ADD_EXT = GLenum(34695)
+ GLenum_GL_OP_MADD_EXT = GLenum(34696)
+ GLenum_GL_OP_FRAC_EXT = GLenum(34697)
+ GLenum_GL_OP_MAX_EXT = GLenum(34698)
+ GLenum_GL_OP_MIN_EXT = GLenum(34699)
+ GLenum_GL_OP_SET_GE_EXT = GLenum(34700)
+ GLenum_GL_OP_SET_LT_EXT = GLenum(34701)
+ GLenum_GL_OP_CLAMP_EXT = GLenum(34702)
+ GLenum_GL_OP_FLOOR_EXT = GLenum(34703)
+ GLenum_GL_OP_ROUND_EXT = GLenum(34704)
+ GLenum_GL_OP_EXP_BASE_2_EXT = GLenum(34705)
+ GLenum_GL_OP_LOG_BASE_2_EXT = GLenum(34706)
+ GLenum_GL_OP_POWER_EXT = GLenum(34707)
+ GLenum_GL_OP_RECIP_EXT = GLenum(34708)
+ GLenum_GL_OP_RECIP_SQRT_EXT = GLenum(34709)
+ GLenum_GL_OP_SUB_EXT = GLenum(34710)
+ GLenum_GL_OP_CROSS_PRODUCT_EXT = GLenum(34711)
+ GLenum_GL_OP_MULTIPLY_MATRIX_EXT = GLenum(34712)
+ GLenum_GL_OP_MOV_EXT = GLenum(34713)
+ GLenum_GL_OUTPUT_VERTEX_EXT = GLenum(34714)
+ GLenum_GL_OUTPUT_COLOR0_EXT = GLenum(34715)
+ GLenum_GL_OUTPUT_COLOR1_EXT = GLenum(34716)
+ GLenum_GL_OUTPUT_TEXTURE_COORD0_EXT = GLenum(34717)
+ GLenum_GL_OUTPUT_TEXTURE_COORD1_EXT = GLenum(34718)
+ GLenum_GL_OUTPUT_TEXTURE_COORD2_EXT = GLenum(34719)
+ GLenum_GL_OUTPUT_TEXTURE_COORD3_EXT = GLenum(34720)
+ GLenum_GL_OUTPUT_TEXTURE_COORD4_EXT = GLenum(34721)
+ GLenum_GL_OUTPUT_TEXTURE_COORD5_EXT = GLenum(34722)
+ GLenum_GL_OUTPUT_TEXTURE_COORD6_EXT = GLenum(34723)
+ GLenum_GL_OUTPUT_TEXTURE_COORD7_EXT = GLenum(34724)
+ GLenum_GL_OUTPUT_TEXTURE_COORD8_EXT = GLenum(34725)
+ GLenum_GL_OUTPUT_TEXTURE_COORD9_EXT = GLenum(34726)
+ GLenum_GL_OUTPUT_TEXTURE_COORD10_EXT = GLenum(34727)
+ GLenum_GL_OUTPUT_TEXTURE_COORD11_EXT = GLenum(34728)
+ GLenum_GL_OUTPUT_TEXTURE_COORD12_EXT = GLenum(34729)
+ GLenum_GL_OUTPUT_TEXTURE_COORD13_EXT = GLenum(34730)
+ GLenum_GL_OUTPUT_TEXTURE_COORD14_EXT = GLenum(34731)
+ GLenum_GL_OUTPUT_TEXTURE_COORD15_EXT = GLenum(34732)
+ GLenum_GL_OUTPUT_TEXTURE_COORD16_EXT = GLenum(34733)
+ GLenum_GL_OUTPUT_TEXTURE_COORD17_EXT = GLenum(34734)
+ GLenum_GL_OUTPUT_TEXTURE_COORD18_EXT = GLenum(34735)
+ GLenum_GL_OUTPUT_TEXTURE_COORD19_EXT = GLenum(34736)
+ GLenum_GL_OUTPUT_TEXTURE_COORD20_EXT = GLenum(34737)
+ GLenum_GL_OUTPUT_TEXTURE_COORD21_EXT = GLenum(34738)
+ GLenum_GL_OUTPUT_TEXTURE_COORD22_EXT = GLenum(34739)
+ GLenum_GL_OUTPUT_TEXTURE_COORD23_EXT = GLenum(34740)
+ GLenum_GL_OUTPUT_TEXTURE_COORD24_EXT = GLenum(34741)
+ GLenum_GL_OUTPUT_TEXTURE_COORD25_EXT = GLenum(34742)
+ GLenum_GL_OUTPUT_TEXTURE_COORD26_EXT = GLenum(34743)
+ GLenum_GL_OUTPUT_TEXTURE_COORD27_EXT = GLenum(34744)
+ GLenum_GL_OUTPUT_TEXTURE_COORD28_EXT = GLenum(34745)
+ GLenum_GL_OUTPUT_TEXTURE_COORD29_EXT = GLenum(34746)
+ GLenum_GL_OUTPUT_TEXTURE_COORD30_EXT = GLenum(34747)
+ GLenum_GL_OUTPUT_TEXTURE_COORD31_EXT = GLenum(34748)
+ GLenum_GL_OUTPUT_FOG_EXT = GLenum(34749)
+ GLenum_GL_SCALAR_EXT = GLenum(34750)
+ GLenum_GL_VECTOR_EXT = GLenum(34751)
+ GLenum_GL_MATRIX_EXT = GLenum(34752)
+ GLenum_GL_VARIANT_EXT = GLenum(34753)
+ GLenum_GL_INVARIANT_EXT = GLenum(34754)
+ GLenum_GL_LOCAL_CONSTANT_EXT = GLenum(34755)
+ GLenum_GL_LOCAL_EXT = GLenum(34756)
+ GLenum_GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT = GLenum(34757)
+ GLenum_GL_MAX_VERTEX_SHADER_VARIANTS_EXT = GLenum(34758)
+ GLenum_GL_MAX_VERTEX_SHADER_INVARIANTS_EXT = GLenum(34759)
+ GLenum_GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT = GLenum(34760)
+ GLenum_GL_MAX_VERTEX_SHADER_LOCALS_EXT = GLenum(34761)
+ GLenum_GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT = GLenum(34762)
+ GLenum_GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT = GLenum(34763)
+ GLenum_GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT = GLenum(34764)
+ GLenum_GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT = GLenum(34765)
+ GLenum_GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT = GLenum(34766)
+ GLenum_GL_VERTEX_SHADER_INSTRUCTIONS_EXT = GLenum(34767)
+ GLenum_GL_VERTEX_SHADER_VARIANTS_EXT = GLenum(34768)
+ GLenum_GL_VERTEX_SHADER_INVARIANTS_EXT = GLenum(34769)
+ GLenum_GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT = GLenum(34770)
+ GLenum_GL_VERTEX_SHADER_LOCALS_EXT = GLenum(34771)
+ GLenum_GL_VERTEX_SHADER_OPTIMIZED_EXT = GLenum(34772)
+ GLenum_GL_X_EXT = GLenum(34773)
+ GLenum_GL_Y_EXT = GLenum(34774)
+ GLenum_GL_Z_EXT = GLenum(34775)
+ GLenum_GL_W_EXT = GLenum(34776)
+ GLenum_GL_NEGATIVE_X_EXT = GLenum(34777)
+ GLenum_GL_NEGATIVE_Y_EXT = GLenum(34778)
+ GLenum_GL_NEGATIVE_Z_EXT = GLenum(34779)
+ GLenum_GL_NEGATIVE_W_EXT = GLenum(34780)
+ GLenum_GL_ZERO_EXT = GLenum(34781)
+ GLenum_GL_ONE_EXT = GLenum(34782)
+ GLenum_GL_NEGATIVE_ONE_EXT = GLenum(34783)
+ GLenum_GL_NORMALIZED_RANGE_EXT = GLenum(34784)
+ GLenum_GL_FULL_RANGE_EXT = GLenum(34785)
+ GLenum_GL_CURRENT_VERTEX_EXT = GLenum(34786)
+ GLenum_GL_MVP_MATRIX_EXT = GLenum(34787)
+ GLenum_GL_VARIANT_VALUE_EXT = GLenum(34788)
+ GLenum_GL_VARIANT_DATATYPE_EXT = GLenum(34789)
+ GLenum_GL_VARIANT_ARRAY_STRIDE_EXT = GLenum(34790)
+ GLenum_GL_VARIANT_ARRAY_TYPE_EXT = GLenum(34791)
+ GLenum_GL_VARIANT_ARRAY_EXT = GLenum(34792)
+ GLenum_GL_VARIANT_ARRAY_POINTER_EXT = GLenum(34793)
+ GLenum_GL_INVARIANT_VALUE_EXT = GLenum(34794)
+ GLenum_GL_INVARIANT_DATATYPE_EXT = GLenum(34795)
+ GLenum_GL_LOCAL_CONSTANT_VALUE_EXT = GLenum(34796)
+ GLenum_GL_LOCAL_CONSTANT_DATATYPE_EXT = GLenum(34797)
+ GLenum_GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD = GLenum(34798)
+ GLenum_GL_PN_TRIANGLES_ATI = GLenum(34800)
+ GLenum_GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI = GLenum(34801)
+ GLenum_GL_PN_TRIANGLES_POINT_MODE_ATI = GLenum(34802)
+ GLenum_GL_PN_TRIANGLES_NORMAL_MODE_ATI = GLenum(34803)
+ GLenum_GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI = GLenum(34804)
+ GLenum_GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI = GLenum(34805)
+ GLenum_GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI = GLenum(34806)
+ GLenum_GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI = GLenum(34807)
+ GLenum_GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI = GLenum(34808)
+ GLenum_GL_3DC_X_AMD = GLenum(34809)
+ GLenum_GL_3DC_XY_AMD = GLenum(34810)
+ GLenum_GL_VBO_FREE_MEMORY_ATI = GLenum(34811)
+ GLenum_GL_TEXTURE_FREE_MEMORY_ATI = GLenum(34812)
+ GLenum_GL_RENDERBUFFER_FREE_MEMORY_ATI = GLenum(34813)
+ GLenum_GL_NUM_PROGRAM_BINARY_FORMATS = GLenum(34814)
+ GLenum_GL_NUM_PROGRAM_BINARY_FORMATS_OES = GLenum(34814)
+ GLenum_GL_PROGRAM_BINARY_FORMATS = GLenum(34815)
+ GLenum_GL_PROGRAM_BINARY_FORMATS_OES = GLenum(34815)
+ GLenum_GL_STENCIL_BACK_FUNC = GLenum(34816)
+ GLenum_GL_STENCIL_BACK_FUNC_ATI = GLenum(34816)
+ GLenum_GL_STENCIL_BACK_FAIL = GLenum(34817)
+ GLenum_GL_STENCIL_BACK_FAIL_ATI = GLenum(34817)
+ GLenum_GL_STENCIL_BACK_PASS_DEPTH_FAIL = GLenum(34818)
+ GLenum_GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI = GLenum(34818)
+ GLenum_GL_STENCIL_BACK_PASS_DEPTH_PASS = GLenum(34819)
+ GLenum_GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI = GLenum(34819)
+ GLenum_GL_FRAGMENT_PROGRAM_ARB = GLenum(34820)
+ GLenum_GL_PROGRAM_ALU_INSTRUCTIONS_ARB = GLenum(34821)
+ GLenum_GL_PROGRAM_TEX_INSTRUCTIONS_ARB = GLenum(34822)
+ GLenum_GL_PROGRAM_TEX_INDIRECTIONS_ARB = GLenum(34823)
+ GLenum_GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB = GLenum(34824)
+ GLenum_GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB = GLenum(34825)
+ GLenum_GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB = GLenum(34826)
+ GLenum_GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB = GLenum(34827)
+ GLenum_GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB = GLenum(34828)
+ GLenum_GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB = GLenum(34829)
+ GLenum_GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB = GLenum(34830)
+ GLenum_GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB = GLenum(34831)
+ GLenum_GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB = GLenum(34832)
+ GLenum_GL_RGBA32F = GLenum(34836)
+ GLenum_GL_RGBA32F_ARB = GLenum(34836)
+ GLenum_GL_RGBA32F_EXT = GLenum(34836)
+ GLenum_GL_RGBA_FLOAT32_APPLE = GLenum(34836)
+ GLenum_GL_RGBA_FLOAT32_ATI = GLenum(34836)
+ GLenum_GL_RGB32F = GLenum(34837)
+ GLenum_GL_RGB32F_ARB = GLenum(34837)
+ GLenum_GL_RGB32F_EXT = GLenum(34837)
+ GLenum_GL_RGB_FLOAT32_APPLE = GLenum(34837)
+ GLenum_GL_RGB_FLOAT32_ATI = GLenum(34837)
+ GLenum_GL_ALPHA32F_ARB = GLenum(34838)
+ GLenum_GL_ALPHA32F_EXT = GLenum(34838)
+ GLenum_GL_ALPHA_FLOAT32_APPLE = GLenum(34838)
+ GLenum_GL_ALPHA_FLOAT32_ATI = GLenum(34838)
+ GLenum_GL_INTENSITY32F_ARB = GLenum(34839)
+ GLenum_GL_INTENSITY_FLOAT32_APPLE = GLenum(34839)
+ GLenum_GL_INTENSITY_FLOAT32_ATI = GLenum(34839)
+ GLenum_GL_LUMINANCE32F_ARB = GLenum(34840)
+ GLenum_GL_LUMINANCE32F_EXT = GLenum(34840)
+ GLenum_GL_LUMINANCE_FLOAT32_APPLE = GLenum(34840)
+ GLenum_GL_LUMINANCE_FLOAT32_ATI = GLenum(34840)
+ GLenum_GL_LUMINANCE_ALPHA32F_ARB = GLenum(34841)
+ GLenum_GL_LUMINANCE_ALPHA32F_EXT = GLenum(34841)
+ GLenum_GL_LUMINANCE_ALPHA_FLOAT32_APPLE = GLenum(34841)
+ GLenum_GL_LUMINANCE_ALPHA_FLOAT32_ATI = GLenum(34841)
+ GLenum_GL_RGBA16F = GLenum(34842)
+ GLenum_GL_RGBA16F_ARB = GLenum(34842)
+ GLenum_GL_RGBA16F_EXT = GLenum(34842)
+ GLenum_GL_RGBA_FLOAT16_APPLE = GLenum(34842)
+ GLenum_GL_RGBA_FLOAT16_ATI = GLenum(34842)
+ GLenum_GL_RGB16F = GLenum(34843)
+ GLenum_GL_RGB16F_ARB = GLenum(34843)
+ GLenum_GL_RGB16F_EXT = GLenum(34843)
+ GLenum_GL_RGB_FLOAT16_APPLE = GLenum(34843)
+ GLenum_GL_RGB_FLOAT16_ATI = GLenum(34843)
+ GLenum_GL_ALPHA16F_ARB = GLenum(34844)
+ GLenum_GL_ALPHA16F_EXT = GLenum(34844)
+ GLenum_GL_ALPHA_FLOAT16_APPLE = GLenum(34844)
+ GLenum_GL_ALPHA_FLOAT16_ATI = GLenum(34844)
+ GLenum_GL_INTENSITY16F_ARB = GLenum(34845)
+ GLenum_GL_INTENSITY_FLOAT16_APPLE = GLenum(34845)
+ GLenum_GL_INTENSITY_FLOAT16_ATI = GLenum(34845)
+ GLenum_GL_LUMINANCE16F_ARB = GLenum(34846)
+ GLenum_GL_LUMINANCE16F_EXT = GLenum(34846)
+ GLenum_GL_LUMINANCE_FLOAT16_APPLE = GLenum(34846)
+ GLenum_GL_LUMINANCE_FLOAT16_ATI = GLenum(34846)
+ GLenum_GL_LUMINANCE_ALPHA16F_ARB = GLenum(34847)
+ GLenum_GL_LUMINANCE_ALPHA16F_EXT = GLenum(34847)
+ GLenum_GL_LUMINANCE_ALPHA_FLOAT16_APPLE = GLenum(34847)
+ GLenum_GL_LUMINANCE_ALPHA_FLOAT16_ATI = GLenum(34847)
+ GLenum_GL_RGBA_FLOAT_MODE_ARB = GLenum(34848)
+ GLenum_GL_RGBA_FLOAT_MODE_ATI = GLenum(34848)
+ GLenum_GL_WRITEONLY_RENDERING_QCOM = GLenum(34851)
+ GLenum_GL_MAX_DRAW_BUFFERS = GLenum(34852)
+ GLenum_GL_MAX_DRAW_BUFFERS_ARB = GLenum(34852)
+ GLenum_GL_MAX_DRAW_BUFFERS_ATI = GLenum(34852)
+ GLenum_GL_MAX_DRAW_BUFFERS_EXT = GLenum(34852)
+ GLenum_GL_MAX_DRAW_BUFFERS_NV = GLenum(34852)
+ GLenum_GL_DRAW_BUFFER0 = GLenum(34853)
+ GLenum_GL_DRAW_BUFFER0_ARB = GLenum(34853)
+ GLenum_GL_DRAW_BUFFER0_ATI = GLenum(34853)
+ GLenum_GL_DRAW_BUFFER0_EXT = GLenum(34853)
+ GLenum_GL_DRAW_BUFFER0_NV = GLenum(34853)
+ GLenum_GL_DRAW_BUFFER1 = GLenum(34854)
+ GLenum_GL_DRAW_BUFFER1_ARB = GLenum(34854)
+ GLenum_GL_DRAW_BUFFER1_ATI = GLenum(34854)
+ GLenum_GL_DRAW_BUFFER1_EXT = GLenum(34854)
+ GLenum_GL_DRAW_BUFFER1_NV = GLenum(34854)
+ GLenum_GL_DRAW_BUFFER2 = GLenum(34855)
+ GLenum_GL_DRAW_BUFFER2_ARB = GLenum(34855)
+ GLenum_GL_DRAW_BUFFER2_ATI = GLenum(34855)
+ GLenum_GL_DRAW_BUFFER2_EXT = GLenum(34855)
+ GLenum_GL_DRAW_BUFFER2_NV = GLenum(34855)
+ GLenum_GL_DRAW_BUFFER3 = GLenum(34856)
+ GLenum_GL_DRAW_BUFFER3_ARB = GLenum(34856)
+ GLenum_GL_DRAW_BUFFER3_ATI = GLenum(34856)
+ GLenum_GL_DRAW_BUFFER3_EXT = GLenum(34856)
+ GLenum_GL_DRAW_BUFFER3_NV = GLenum(34856)
+ GLenum_GL_DRAW_BUFFER4 = GLenum(34857)
+ GLenum_GL_DRAW_BUFFER4_ARB = GLenum(34857)
+ GLenum_GL_DRAW_BUFFER4_ATI = GLenum(34857)
+ GLenum_GL_DRAW_BUFFER4_EXT = GLenum(34857)
+ GLenum_GL_DRAW_BUFFER4_NV = GLenum(34857)
+ GLenum_GL_DRAW_BUFFER5 = GLenum(34858)
+ GLenum_GL_DRAW_BUFFER5_ARB = GLenum(34858)
+ GLenum_GL_DRAW_BUFFER5_ATI = GLenum(34858)
+ GLenum_GL_DRAW_BUFFER5_EXT = GLenum(34858)
+ GLenum_GL_DRAW_BUFFER5_NV = GLenum(34858)
+ GLenum_GL_DRAW_BUFFER6 = GLenum(34859)
+ GLenum_GL_DRAW_BUFFER6_ARB = GLenum(34859)
+ GLenum_GL_DRAW_BUFFER6_ATI = GLenum(34859)
+ GLenum_GL_DRAW_BUFFER6_EXT = GLenum(34859)
+ GLenum_GL_DRAW_BUFFER6_NV = GLenum(34859)
+ GLenum_GL_DRAW_BUFFER7 = GLenum(34860)
+ GLenum_GL_DRAW_BUFFER7_ARB = GLenum(34860)
+ GLenum_GL_DRAW_BUFFER7_ATI = GLenum(34860)
+ GLenum_GL_DRAW_BUFFER7_EXT = GLenum(34860)
+ GLenum_GL_DRAW_BUFFER7_NV = GLenum(34860)
+ GLenum_GL_DRAW_BUFFER8 = GLenum(34861)
+ GLenum_GL_DRAW_BUFFER8_ARB = GLenum(34861)
+ GLenum_GL_DRAW_BUFFER8_ATI = GLenum(34861)
+ GLenum_GL_DRAW_BUFFER8_EXT = GLenum(34861)
+ GLenum_GL_DRAW_BUFFER8_NV = GLenum(34861)
+ GLenum_GL_DRAW_BUFFER9 = GLenum(34862)
+ GLenum_GL_DRAW_BUFFER9_ARB = GLenum(34862)
+ GLenum_GL_DRAW_BUFFER9_ATI = GLenum(34862)
+ GLenum_GL_DRAW_BUFFER9_EXT = GLenum(34862)
+ GLenum_GL_DRAW_BUFFER9_NV = GLenum(34862)
+ GLenum_GL_DRAW_BUFFER10 = GLenum(34863)
+ GLenum_GL_DRAW_BUFFER10_ARB = GLenum(34863)
+ GLenum_GL_DRAW_BUFFER10_ATI = GLenum(34863)
+ GLenum_GL_DRAW_BUFFER10_EXT = GLenum(34863)
+ GLenum_GL_DRAW_BUFFER10_NV = GLenum(34863)
+ GLenum_GL_DRAW_BUFFER11 = GLenum(34864)
+ GLenum_GL_DRAW_BUFFER11_ARB = GLenum(34864)
+ GLenum_GL_DRAW_BUFFER11_ATI = GLenum(34864)
+ GLenum_GL_DRAW_BUFFER11_EXT = GLenum(34864)
+ GLenum_GL_DRAW_BUFFER11_NV = GLenum(34864)
+ GLenum_GL_DRAW_BUFFER12 = GLenum(34865)
+ GLenum_GL_DRAW_BUFFER12_ARB = GLenum(34865)
+ GLenum_GL_DRAW_BUFFER12_ATI = GLenum(34865)
+ GLenum_GL_DRAW_BUFFER12_EXT = GLenum(34865)
+ GLenum_GL_DRAW_BUFFER12_NV = GLenum(34865)
+ GLenum_GL_DRAW_BUFFER13 = GLenum(34866)
+ GLenum_GL_DRAW_BUFFER13_ARB = GLenum(34866)
+ GLenum_GL_DRAW_BUFFER13_ATI = GLenum(34866)
+ GLenum_GL_DRAW_BUFFER13_EXT = GLenum(34866)
+ GLenum_GL_DRAW_BUFFER13_NV = GLenum(34866)
+ GLenum_GL_DRAW_BUFFER14 = GLenum(34867)
+ GLenum_GL_DRAW_BUFFER14_ARB = GLenum(34867)
+ GLenum_GL_DRAW_BUFFER14_ATI = GLenum(34867)
+ GLenum_GL_DRAW_BUFFER14_EXT = GLenum(34867)
+ GLenum_GL_DRAW_BUFFER14_NV = GLenum(34867)
+ GLenum_GL_DRAW_BUFFER15 = GLenum(34868)
+ GLenum_GL_DRAW_BUFFER15_ARB = GLenum(34868)
+ GLenum_GL_DRAW_BUFFER15_ATI = GLenum(34868)
+ GLenum_GL_DRAW_BUFFER15_EXT = GLenum(34868)
+ GLenum_GL_DRAW_BUFFER15_NV = GLenum(34868)
+ GLenum_GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI = GLenum(34869)
+ GLenum_GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI = GLenum(34871)
+ GLenum_GL_BLEND_EQUATION_ALPHA = GLenum(34877)
+ GLenum_GL_BLEND_EQUATION_ALPHA_EXT = GLenum(34877)
+ GLenum_GL_BLEND_EQUATION_ALPHA_OES = GLenum(34877)
+ GLenum_GL_SUBSAMPLE_DISTANCE_AMD = GLenum(34879)
+ GLenum_GL_MATRIX_PALETTE_ARB = GLenum(34880)
+ GLenum_GL_MATRIX_PALETTE_OES = GLenum(34880)
+ GLenum_GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB = GLenum(34881)
+ GLenum_GL_MAX_PALETTE_MATRICES_ARB = GLenum(34882)
+ GLenum_GL_MAX_PALETTE_MATRICES_OES = GLenum(34882)
+ GLenum_GL_CURRENT_PALETTE_MATRIX_ARB = GLenum(34883)
+ GLenum_GL_CURRENT_PALETTE_MATRIX_OES = GLenum(34883)
+ GLenum_GL_MATRIX_INDEX_ARRAY_ARB = GLenum(34884)
+ GLenum_GL_MATRIX_INDEX_ARRAY_OES = GLenum(34884)
+ GLenum_GL_CURRENT_MATRIX_INDEX_ARB = GLenum(34885)
+ GLenum_GL_MATRIX_INDEX_ARRAY_SIZE_ARB = GLenum(34886)
+ GLenum_GL_MATRIX_INDEX_ARRAY_SIZE_OES = GLenum(34886)
+ GLenum_GL_MATRIX_INDEX_ARRAY_TYPE_ARB = GLenum(34887)
+ GLenum_GL_MATRIX_INDEX_ARRAY_TYPE_OES = GLenum(34887)
+ GLenum_GL_MATRIX_INDEX_ARRAY_STRIDE_ARB = GLenum(34888)
+ GLenum_GL_MATRIX_INDEX_ARRAY_STRIDE_OES = GLenum(34888)
+ GLenum_GL_MATRIX_INDEX_ARRAY_POINTER_ARB = GLenum(34889)
+ GLenum_GL_MATRIX_INDEX_ARRAY_POINTER_OES = GLenum(34889)
+ GLenum_GL_TEXTURE_DEPTH_SIZE = GLenum(34890)
+ GLenum_GL_TEXTURE_DEPTH_SIZE_ARB = GLenum(34890)
+ GLenum_GL_DEPTH_TEXTURE_MODE = GLenum(34891)
+ GLenum_GL_DEPTH_TEXTURE_MODE_ARB = GLenum(34891)
+ GLenum_GL_TEXTURE_COMPARE_MODE = GLenum(34892)
+ GLenum_GL_TEXTURE_COMPARE_MODE_ARB = GLenum(34892)
+ GLenum_GL_TEXTURE_COMPARE_MODE_EXT = GLenum(34892)
+ GLenum_GL_TEXTURE_COMPARE_FUNC = GLenum(34893)
+ GLenum_GL_TEXTURE_COMPARE_FUNC_ARB = GLenum(34893)
+ GLenum_GL_TEXTURE_COMPARE_FUNC_EXT = GLenum(34893)
+ GLenum_GL_COMPARE_R_TO_TEXTURE = GLenum(34894)
+ GLenum_GL_COMPARE_R_TO_TEXTURE_ARB = GLenum(34894)
+ GLenum_GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT = GLenum(34894)
+ GLenum_GL_COMPARE_REF_TO_TEXTURE = GLenum(34894)
+ GLenum_GL_COMPARE_REF_TO_TEXTURE_EXT = GLenum(34894)
+ GLenum_GL_TEXTURE_CUBE_MAP_SEAMLESS = GLenum(34895)
+ GLenum_GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV = GLenum(34896)
+ GLenum_GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV = GLenum(34897)
+ GLenum_GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV = GLenum(34898)
+ GLenum_GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV = GLenum(34899)
+ GLenum_GL_OFFSET_HILO_TEXTURE_2D_NV = GLenum(34900)
+ GLenum_GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV = GLenum(34901)
+ GLenum_GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV = GLenum(34902)
+ GLenum_GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV = GLenum(34903)
+ GLenum_GL_DEPENDENT_HILO_TEXTURE_2D_NV = GLenum(34904)
+ GLenum_GL_DEPENDENT_RGB_TEXTURE_3D_NV = GLenum(34905)
+ GLenum_GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV = GLenum(34906)
+ GLenum_GL_DOT_PRODUCT_PASS_THROUGH_NV = GLenum(34907)
+ GLenum_GL_DOT_PRODUCT_TEXTURE_1D_NV = GLenum(34908)
+ GLenum_GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV = GLenum(34909)
+ GLenum_GL_HILO8_NV = GLenum(34910)
+ GLenum_GL_SIGNED_HILO8_NV = GLenum(34911)
+ GLenum_GL_FORCE_BLUE_TO_ONE_NV = GLenum(34912)
+ GLenum_GL_POINT_SPRITE = GLenum(34913)
+ GLenum_GL_POINT_SPRITE_ARB = GLenum(34913)
+ GLenum_GL_POINT_SPRITE_NV = GLenum(34913)
+ GLenum_GL_POINT_SPRITE_OES = GLenum(34913)
+ GLenum_GL_COORD_REPLACE = GLenum(34914)
+ GLenum_GL_COORD_REPLACE_ARB = GLenum(34914)
+ GLenum_GL_COORD_REPLACE_NV = GLenum(34914)
+ GLenum_GL_COORD_REPLACE_OES = GLenum(34914)
+ GLenum_GL_POINT_SPRITE_R_MODE_NV = GLenum(34915)
+ GLenum_GL_PIXEL_COUNTER_BITS_NV = GLenum(34916)
+ GLenum_GL_QUERY_COUNTER_BITS = GLenum(34916)
+ GLenum_GL_QUERY_COUNTER_BITS_ARB = GLenum(34916)
+ GLenum_GL_QUERY_COUNTER_BITS_EXT = GLenum(34916)
+ GLenum_GL_CURRENT_OCCLUSION_QUERY_ID_NV = GLenum(34917)
+ GLenum_GL_CURRENT_QUERY = GLenum(34917)
+ GLenum_GL_CURRENT_QUERY_ARB = GLenum(34917)
+ GLenum_GL_CURRENT_QUERY_EXT = GLenum(34917)
+ GLenum_GL_PIXEL_COUNT_NV = GLenum(34918)
+ GLenum_GL_QUERY_RESULT = GLenum(34918)
+ GLenum_GL_QUERY_RESULT_ARB = GLenum(34918)
+ GLenum_GL_QUERY_RESULT_EXT = GLenum(34918)
+ GLenum_GL_PIXEL_COUNT_AVAILABLE_NV = GLenum(34919)
+ GLenum_GL_QUERY_RESULT_AVAILABLE = GLenum(34919)
+ GLenum_GL_QUERY_RESULT_AVAILABLE_ARB = GLenum(34919)
+ GLenum_GL_QUERY_RESULT_AVAILABLE_EXT = GLenum(34919)
+ GLenum_GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV = GLenum(34920)
+ GLenum_GL_MAX_VERTEX_ATTRIBS = GLenum(34921)
+ GLenum_GL_MAX_VERTEX_ATTRIBS_ARB = GLenum(34921)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY_NORMALIZED = GLenum(34922)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB = GLenum(34922)
+ GLenum_GL_MAX_TESS_CONTROL_INPUT_COMPONENTS = GLenum(34924)
+ GLenum_GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_EXT = GLenum(34924)
+ GLenum_GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_OES = GLenum(34924)
+ GLenum_GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS = GLenum(34925)
+ GLenum_GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_EXT = GLenum(34925)
+ GLenum_GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_OES = GLenum(34925)
+ GLenum_GL_DEPTH_STENCIL_TO_RGBA_NV = GLenum(34926)
+ GLenum_GL_DEPTH_STENCIL_TO_BGRA_NV = GLenum(34927)
+ GLenum_GL_FRAGMENT_PROGRAM_NV = GLenum(34928)
+ GLenum_GL_MAX_TEXTURE_COORDS = GLenum(34929)
+ GLenum_GL_MAX_TEXTURE_COORDS_ARB = GLenum(34929)
+ GLenum_GL_MAX_TEXTURE_COORDS_NV = GLenum(34929)
+ GLenum_GL_MAX_TEXTURE_IMAGE_UNITS = GLenum(34930)
+ GLenum_GL_MAX_TEXTURE_IMAGE_UNITS_ARB = GLenum(34930)
+ GLenum_GL_MAX_TEXTURE_IMAGE_UNITS_NV = GLenum(34930)
+ GLenum_GL_FRAGMENT_PROGRAM_BINDING_NV = GLenum(34931)
+ GLenum_GL_PROGRAM_ERROR_STRING_ARB = GLenum(34932)
+ GLenum_GL_PROGRAM_ERROR_STRING_NV = GLenum(34932)
+ GLenum_GL_PROGRAM_FORMAT_ASCII_ARB = GLenum(34933)
+ GLenum_GL_PROGRAM_FORMAT_ARB = GLenum(34934)
+ GLenum_GL_WRITE_PIXEL_DATA_RANGE_NV = GLenum(34936)
+ GLenum_GL_READ_PIXEL_DATA_RANGE_NV = GLenum(34937)
+ GLenum_GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV = GLenum(34938)
+ GLenum_GL_READ_PIXEL_DATA_RANGE_LENGTH_NV = GLenum(34939)
+ GLenum_GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV = GLenum(34940)
+ GLenum_GL_READ_PIXEL_DATA_RANGE_POINTER_NV = GLenum(34941)
+ GLenum_GL_GEOMETRY_SHADER_INVOCATIONS = GLenum(34943)
+ GLenum_GL_GEOMETRY_SHADER_INVOCATIONS_EXT = GLenum(34943)
+ GLenum_GL_GEOMETRY_SHADER_INVOCATIONS_OES = GLenum(34943)
+ GLenum_GL_FLOAT_R_NV = GLenum(34944)
+ GLenum_GL_FLOAT_RG_NV = GLenum(34945)
+ GLenum_GL_FLOAT_RGB_NV = GLenum(34946)
+ GLenum_GL_FLOAT_RGBA_NV = GLenum(34947)
+ GLenum_GL_FLOAT_R16_NV = GLenum(34948)
+ GLenum_GL_FLOAT_R32_NV = GLenum(34949)
+ GLenum_GL_FLOAT_RG16_NV = GLenum(34950)
+ GLenum_GL_FLOAT_RG32_NV = GLenum(34951)
+ GLenum_GL_FLOAT_RGB16_NV = GLenum(34952)
+ GLenum_GL_FLOAT_RGB32_NV = GLenum(34953)
+ GLenum_GL_FLOAT_RGBA16_NV = GLenum(34954)
+ GLenum_GL_FLOAT_RGBA32_NV = GLenum(34955)
+ GLenum_GL_TEXTURE_FLOAT_COMPONENTS_NV = GLenum(34956)
+ GLenum_GL_FLOAT_CLEAR_COLOR_VALUE_NV = GLenum(34957)
+ GLenum_GL_FLOAT_RGBA_MODE_NV = GLenum(34958)
+ GLenum_GL_TEXTURE_UNSIGNED_REMAP_MODE_NV = GLenum(34959)
+ GLenum_GL_DEPTH_BOUNDS_TEST_EXT = GLenum(34960)
+ GLenum_GL_DEPTH_BOUNDS_EXT = GLenum(34961)
+ GLenum_GL_ARRAY_BUFFER = GLenum(34962)
+ GLenum_GL_ARRAY_BUFFER_ARB = GLenum(34962)
+ GLenum_GL_ELEMENT_ARRAY_BUFFER = GLenum(34963)
+ GLenum_GL_ELEMENT_ARRAY_BUFFER_ARB = GLenum(34963)
+ GLenum_GL_ARRAY_BUFFER_BINDING = GLenum(34964)
+ GLenum_GL_ARRAY_BUFFER_BINDING_ARB = GLenum(34964)
+ GLenum_GL_ELEMENT_ARRAY_BUFFER_BINDING = GLenum(34965)
+ GLenum_GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB = GLenum(34965)
+ GLenum_GL_VERTEX_ARRAY_BUFFER_BINDING = GLenum(34966)
+ GLenum_GL_VERTEX_ARRAY_BUFFER_BINDING_ARB = GLenum(34966)
+ GLenum_GL_NORMAL_ARRAY_BUFFER_BINDING = GLenum(34967)
+ GLenum_GL_NORMAL_ARRAY_BUFFER_BINDING_ARB = GLenum(34967)
+ GLenum_GL_COLOR_ARRAY_BUFFER_BINDING = GLenum(34968)
+ GLenum_GL_COLOR_ARRAY_BUFFER_BINDING_ARB = GLenum(34968)
+ GLenum_GL_INDEX_ARRAY_BUFFER_BINDING = GLenum(34969)
+ GLenum_GL_INDEX_ARRAY_BUFFER_BINDING_ARB = GLenum(34969)
+ GLenum_GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING = GLenum(34970)
+ GLenum_GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB = GLenum(34970)
+ GLenum_GL_EDGE_FLAG_ARRAY_BUFFER_BINDING = GLenum(34971)
+ GLenum_GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB = GLenum(34971)
+ GLenum_GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING = GLenum(34972)
+ GLenum_GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB = GLenum(34972)
+ GLenum_GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB = GLenum(34973)
+ GLenum_GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING = GLenum(34973)
+ GLenum_GL_FOG_COORD_ARRAY_BUFFER_BINDING = GLenum(34973)
+ GLenum_GL_WEIGHT_ARRAY_BUFFER_BINDING = GLenum(34974)
+ GLenum_GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB = GLenum(34974)
+ GLenum_GL_WEIGHT_ARRAY_BUFFER_BINDING_OES = GLenum(34974)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = GLenum(34975)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB = GLenum(34975)
+ GLenum_GL_PROGRAM_INSTRUCTIONS_ARB = GLenum(34976)
+ GLenum_GL_MAX_PROGRAM_INSTRUCTIONS_ARB = GLenum(34977)
+ GLenum_GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB = GLenum(34978)
+ GLenum_GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB = GLenum(34979)
+ GLenum_GL_PROGRAM_TEMPORARIES_ARB = GLenum(34980)
+ GLenum_GL_MAX_PROGRAM_TEMPORARIES_ARB = GLenum(34981)
+ GLenum_GL_PROGRAM_NATIVE_TEMPORARIES_ARB = GLenum(34982)
+ GLenum_GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB = GLenum(34983)
+ GLenum_GL_PROGRAM_PARAMETERS_ARB = GLenum(34984)
+ GLenum_GL_MAX_PROGRAM_PARAMETERS_ARB = GLenum(34985)
+ GLenum_GL_PROGRAM_NATIVE_PARAMETERS_ARB = GLenum(34986)
+ GLenum_GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB = GLenum(34987)
+ GLenum_GL_PROGRAM_ATTRIBS_ARB = GLenum(34988)
+ GLenum_GL_MAX_PROGRAM_ATTRIBS_ARB = GLenum(34989)
+ GLenum_GL_PROGRAM_NATIVE_ATTRIBS_ARB = GLenum(34990)
+ GLenum_GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB = GLenum(34991)
+ GLenum_GL_PROGRAM_ADDRESS_REGISTERS_ARB = GLenum(34992)
+ GLenum_GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB = GLenum(34993)
+ GLenum_GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB = GLenum(34994)
+ GLenum_GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB = GLenum(34995)
+ GLenum_GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB = GLenum(34996)
+ GLenum_GL_MAX_PROGRAM_ENV_PARAMETERS_ARB = GLenum(34997)
+ GLenum_GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB = GLenum(34998)
+ GLenum_GL_TRANSPOSE_CURRENT_MATRIX_ARB = GLenum(34999)
+ GLenum_GL_READ_ONLY = GLenum(35000)
+ GLenum_GL_READ_ONLY_ARB = GLenum(35000)
+ GLenum_GL_WRITE_ONLY = GLenum(35001)
+ GLenum_GL_WRITE_ONLY_ARB = GLenum(35001)
+ GLenum_GL_WRITE_ONLY_OES = GLenum(35001)
+ GLenum_GL_READ_WRITE = GLenum(35002)
+ GLenum_GL_READ_WRITE_ARB = GLenum(35002)
+ GLenum_GL_BUFFER_ACCESS = GLenum(35003)
+ GLenum_GL_BUFFER_ACCESS_ARB = GLenum(35003)
+ GLenum_GL_BUFFER_ACCESS_OES = GLenum(35003)
+ GLenum_GL_BUFFER_MAPPED = GLenum(35004)
+ GLenum_GL_BUFFER_MAPPED_ARB = GLenum(35004)
+ GLenum_GL_BUFFER_MAPPED_OES = GLenum(35004)
+ GLenum_GL_BUFFER_MAP_POINTER = GLenum(35005)
+ GLenum_GL_BUFFER_MAP_POINTER_ARB = GLenum(35005)
+ GLenum_GL_BUFFER_MAP_POINTER_OES = GLenum(35005)
+ GLenum_GL_WRITE_DISCARD_NV = GLenum(35006)
+ GLenum_GL_TIME_ELAPSED = GLenum(35007)
+ GLenum_GL_TIME_ELAPSED_EXT = GLenum(35007)
+ GLenum_GL_MATRIX0_ARB = GLenum(35008)
+ GLenum_GL_MATRIX1_ARB = GLenum(35009)
+ GLenum_GL_MATRIX2_ARB = GLenum(35010)
+ GLenum_GL_MATRIX3_ARB = GLenum(35011)
+ GLenum_GL_MATRIX4_ARB = GLenum(35012)
+ GLenum_GL_MATRIX5_ARB = GLenum(35013)
+ GLenum_GL_MATRIX6_ARB = GLenum(35014)
+ GLenum_GL_MATRIX7_ARB = GLenum(35015)
+ GLenum_GL_MATRIX8_ARB = GLenum(35016)
+ GLenum_GL_MATRIX9_ARB = GLenum(35017)
+ GLenum_GL_MATRIX10_ARB = GLenum(35018)
+ GLenum_GL_MATRIX11_ARB = GLenum(35019)
+ GLenum_GL_MATRIX12_ARB = GLenum(35020)
+ GLenum_GL_MATRIX13_ARB = GLenum(35021)
+ GLenum_GL_MATRIX14_ARB = GLenum(35022)
+ GLenum_GL_MATRIX15_ARB = GLenum(35023)
+ GLenum_GL_MATRIX16_ARB = GLenum(35024)
+ GLenum_GL_MATRIX17_ARB = GLenum(35025)
+ GLenum_GL_MATRIX18_ARB = GLenum(35026)
+ GLenum_GL_MATRIX19_ARB = GLenum(35027)
+ GLenum_GL_MATRIX20_ARB = GLenum(35028)
+ GLenum_GL_MATRIX21_ARB = GLenum(35029)
+ GLenum_GL_MATRIX22_ARB = GLenum(35030)
+ GLenum_GL_MATRIX23_ARB = GLenum(35031)
+ GLenum_GL_MATRIX24_ARB = GLenum(35032)
+ GLenum_GL_MATRIX25_ARB = GLenum(35033)
+ GLenum_GL_MATRIX26_ARB = GLenum(35034)
+ GLenum_GL_MATRIX27_ARB = GLenum(35035)
+ GLenum_GL_MATRIX28_ARB = GLenum(35036)
+ GLenum_GL_MATRIX29_ARB = GLenum(35037)
+ GLenum_GL_MATRIX30_ARB = GLenum(35038)
+ GLenum_GL_MATRIX31_ARB = GLenum(35039)
+ GLenum_GL_STREAM_DRAW = GLenum(35040)
+ GLenum_GL_STREAM_DRAW_ARB = GLenum(35040)
+ GLenum_GL_STREAM_READ = GLenum(35041)
+ GLenum_GL_STREAM_READ_ARB = GLenum(35041)
+ GLenum_GL_STREAM_COPY = GLenum(35042)
+ GLenum_GL_STREAM_COPY_ARB = GLenum(35042)
+ GLenum_GL_STATIC_DRAW = GLenum(35044)
+ GLenum_GL_STATIC_DRAW_ARB = GLenum(35044)
+ GLenum_GL_STATIC_READ = GLenum(35045)
+ GLenum_GL_STATIC_READ_ARB = GLenum(35045)
+ GLenum_GL_STATIC_COPY = GLenum(35046)
+ GLenum_GL_STATIC_COPY_ARB = GLenum(35046)
+ GLenum_GL_DYNAMIC_DRAW = GLenum(35048)
+ GLenum_GL_DYNAMIC_DRAW_ARB = GLenum(35048)
+ GLenum_GL_DYNAMIC_READ = GLenum(35049)
+ GLenum_GL_DYNAMIC_READ_ARB = GLenum(35049)
+ GLenum_GL_DYNAMIC_COPY = GLenum(35050)
+ GLenum_GL_DYNAMIC_COPY_ARB = GLenum(35050)
+ GLenum_GL_PIXEL_PACK_BUFFER = GLenum(35051)
+ GLenum_GL_PIXEL_PACK_BUFFER_ARB = GLenum(35051)
+ GLenum_GL_PIXEL_PACK_BUFFER_EXT = GLenum(35051)
+ GLenum_GL_PIXEL_UNPACK_BUFFER = GLenum(35052)
+ GLenum_GL_PIXEL_UNPACK_BUFFER_ARB = GLenum(35052)
+ GLenum_GL_PIXEL_UNPACK_BUFFER_EXT = GLenum(35052)
+ GLenum_GL_PIXEL_PACK_BUFFER_BINDING = GLenum(35053)
+ GLenum_GL_PIXEL_PACK_BUFFER_BINDING_ARB = GLenum(35053)
+ GLenum_GL_PIXEL_PACK_BUFFER_BINDING_EXT = GLenum(35053)
+ GLenum_GL_ETC1_SRGB8_NV = GLenum(35054)
+ GLenum_GL_PIXEL_UNPACK_BUFFER_BINDING = GLenum(35055)
+ GLenum_GL_PIXEL_UNPACK_BUFFER_BINDING_ARB = GLenum(35055)
+ GLenum_GL_PIXEL_UNPACK_BUFFER_BINDING_EXT = GLenum(35055)
+ GLenum_GL_DEPTH24_STENCIL8 = GLenum(35056)
+ GLenum_GL_DEPTH24_STENCIL8_EXT = GLenum(35056)
+ GLenum_GL_DEPTH24_STENCIL8_OES = GLenum(35056)
+ GLenum_GL_TEXTURE_STENCIL_SIZE = GLenum(35057)
+ GLenum_GL_TEXTURE_STENCIL_SIZE_EXT = GLenum(35057)
+ GLenum_GL_STENCIL_TAG_BITS_EXT = GLenum(35058)
+ GLenum_GL_STENCIL_CLEAR_TAG_VALUE_EXT = GLenum(35059)
+ GLenum_GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV = GLenum(35060)
+ GLenum_GL_MAX_PROGRAM_CALL_DEPTH_NV = GLenum(35061)
+ GLenum_GL_MAX_PROGRAM_IF_DEPTH_NV = GLenum(35062)
+ GLenum_GL_MAX_PROGRAM_LOOP_DEPTH_NV = GLenum(35063)
+ GLenum_GL_MAX_PROGRAM_LOOP_COUNT_NV = GLenum(35064)
+ GLenum_GL_SRC1_COLOR = GLenum(35065)
+ GLenum_GL_SRC1_COLOR_EXT = GLenum(35065)
+ GLenum_GL_ONE_MINUS_SRC1_COLOR = GLenum(35066)
+ GLenum_GL_ONE_MINUS_SRC1_COLOR_EXT = GLenum(35066)
+ GLenum_GL_ONE_MINUS_SRC1_ALPHA = GLenum(35067)
+ GLenum_GL_ONE_MINUS_SRC1_ALPHA_EXT = GLenum(35067)
+ GLenum_GL_MAX_DUAL_SOURCE_DRAW_BUFFERS = GLenum(35068)
+ GLenum_GL_MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT = GLenum(35068)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY_INTEGER = GLenum(35069)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT = GLenum(35069)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV = GLenum(35069)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY_DIVISOR = GLenum(35070)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE = GLenum(35070)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB = GLenum(35070)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY_DIVISOR_EXT = GLenum(35070)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY_DIVISOR_NV = GLenum(35070)
+ GLenum_GL_MAX_ARRAY_TEXTURE_LAYERS = GLenum(35071)
+ GLenum_GL_MAX_ARRAY_TEXTURE_LAYERS_EXT = GLenum(35071)
+ GLenum_GL_MIN_PROGRAM_TEXEL_OFFSET = GLenum(35076)
+ GLenum_GL_MIN_PROGRAM_TEXEL_OFFSET_EXT = GLenum(35076)
+ GLenum_GL_MIN_PROGRAM_TEXEL_OFFSET_NV = GLenum(35076)
+ GLenum_GL_MAX_PROGRAM_TEXEL_OFFSET = GLenum(35077)
+ GLenum_GL_MAX_PROGRAM_TEXEL_OFFSET_EXT = GLenum(35077)
+ GLenum_GL_MAX_PROGRAM_TEXEL_OFFSET_NV = GLenum(35077)
+ GLenum_GL_PROGRAM_ATTRIB_COMPONENTS_NV = GLenum(35078)
+ GLenum_GL_PROGRAM_RESULT_COMPONENTS_NV = GLenum(35079)
+ GLenum_GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV = GLenum(35080)
+ GLenum_GL_MAX_PROGRAM_RESULT_COMPONENTS_NV = GLenum(35081)
+ GLenum_GL_STENCIL_TEST_TWO_SIDE_EXT = GLenum(35088)
+ GLenum_GL_ACTIVE_STENCIL_FACE_EXT = GLenum(35089)
+ GLenum_GL_MIRROR_CLAMP_TO_BORDER_EXT = GLenum(35090)
+ GLenum_GL_SAMPLES_PASSED = GLenum(35092)
+ GLenum_GL_SAMPLES_PASSED_ARB = GLenum(35092)
+ GLenum_GL_GEOMETRY_VERTICES_OUT = GLenum(35094)
+ GLenum_GL_GEOMETRY_LINKED_VERTICES_OUT_EXT = GLenum(35094)
+ GLenum_GL_GEOMETRY_LINKED_VERTICES_OUT_OES = GLenum(35094)
+ GLenum_GL_GEOMETRY_INPUT_TYPE = GLenum(35095)
+ GLenum_GL_GEOMETRY_LINKED_INPUT_TYPE_EXT = GLenum(35095)
+ GLenum_GL_GEOMETRY_LINKED_INPUT_TYPE_OES = GLenum(35095)
+ GLenum_GL_GEOMETRY_OUTPUT_TYPE = GLenum(35096)
+ GLenum_GL_GEOMETRY_LINKED_OUTPUT_TYPE_EXT = GLenum(35096)
+ GLenum_GL_GEOMETRY_LINKED_OUTPUT_TYPE_OES = GLenum(35096)
+ GLenum_GL_SAMPLER_BINDING = GLenum(35097)
+ GLenum_GL_CLAMP_VERTEX_COLOR = GLenum(35098)
+ GLenum_GL_CLAMP_VERTEX_COLOR_ARB = GLenum(35098)
+ GLenum_GL_CLAMP_FRAGMENT_COLOR = GLenum(35099)
+ GLenum_GL_CLAMP_FRAGMENT_COLOR_ARB = GLenum(35099)
+ GLenum_GL_CLAMP_READ_COLOR = GLenum(35100)
+ GLenum_GL_CLAMP_READ_COLOR_ARB = GLenum(35100)
+ GLenum_GL_FIXED_ONLY = GLenum(35101)
+ GLenum_GL_FIXED_ONLY_ARB = GLenum(35101)
+ GLenum_GL_TESS_CONTROL_PROGRAM_NV = GLenum(35102)
+ GLenum_GL_TESS_EVALUATION_PROGRAM_NV = GLenum(35103)
+ GLenum_GL_FRAGMENT_SHADER_ATI = GLenum(35104)
+ GLenum_GL_REG_0_ATI = GLenum(35105)
+ GLenum_GL_REG_1_ATI = GLenum(35106)
+ GLenum_GL_REG_2_ATI = GLenum(35107)
+ GLenum_GL_REG_3_ATI = GLenum(35108)
+ GLenum_GL_REG_4_ATI = GLenum(35109)
+ GLenum_GL_REG_5_ATI = GLenum(35110)
+ GLenum_GL_REG_6_ATI = GLenum(35111)
+ GLenum_GL_REG_7_ATI = GLenum(35112)
+ GLenum_GL_REG_8_ATI = GLenum(35113)
+ GLenum_GL_REG_9_ATI = GLenum(35114)
+ GLenum_GL_REG_10_ATI = GLenum(35115)
+ GLenum_GL_REG_11_ATI = GLenum(35116)
+ GLenum_GL_REG_12_ATI = GLenum(35117)
+ GLenum_GL_REG_13_ATI = GLenum(35118)
+ GLenum_GL_REG_14_ATI = GLenum(35119)
+ GLenum_GL_REG_15_ATI = GLenum(35120)
+ GLenum_GL_REG_16_ATI = GLenum(35121)
+ GLenum_GL_REG_17_ATI = GLenum(35122)
+ GLenum_GL_REG_18_ATI = GLenum(35123)
+ GLenum_GL_REG_19_ATI = GLenum(35124)
+ GLenum_GL_REG_20_ATI = GLenum(35125)
+ GLenum_GL_REG_21_ATI = GLenum(35126)
+ GLenum_GL_REG_22_ATI = GLenum(35127)
+ GLenum_GL_REG_23_ATI = GLenum(35128)
+ GLenum_GL_REG_24_ATI = GLenum(35129)
+ GLenum_GL_REG_25_ATI = GLenum(35130)
+ GLenum_GL_REG_26_ATI = GLenum(35131)
+ GLenum_GL_REG_27_ATI = GLenum(35132)
+ GLenum_GL_REG_28_ATI = GLenum(35133)
+ GLenum_GL_REG_29_ATI = GLenum(35134)
+ GLenum_GL_REG_30_ATI = GLenum(35135)
+ GLenum_GL_REG_31_ATI = GLenum(35136)
+ GLenum_GL_CON_0_ATI = GLenum(35137)
+ GLenum_GL_CON_1_ATI = GLenum(35138)
+ GLenum_GL_CON_2_ATI = GLenum(35139)
+ GLenum_GL_CON_3_ATI = GLenum(35140)
+ GLenum_GL_CON_4_ATI = GLenum(35141)
+ GLenum_GL_CON_5_ATI = GLenum(35142)
+ GLenum_GL_CON_6_ATI = GLenum(35143)
+ GLenum_GL_CON_7_ATI = GLenum(35144)
+ GLenum_GL_CON_8_ATI = GLenum(35145)
+ GLenum_GL_CON_9_ATI = GLenum(35146)
+ GLenum_GL_CON_10_ATI = GLenum(35147)
+ GLenum_GL_CON_11_ATI = GLenum(35148)
+ GLenum_GL_CON_12_ATI = GLenum(35149)
+ GLenum_GL_CON_13_ATI = GLenum(35150)
+ GLenum_GL_CON_14_ATI = GLenum(35151)
+ GLenum_GL_CON_15_ATI = GLenum(35152)
+ GLenum_GL_CON_16_ATI = GLenum(35153)
+ GLenum_GL_CON_17_ATI = GLenum(35154)
+ GLenum_GL_CON_18_ATI = GLenum(35155)
+ GLenum_GL_CON_19_ATI = GLenum(35156)
+ GLenum_GL_CON_20_ATI = GLenum(35157)
+ GLenum_GL_CON_21_ATI = GLenum(35158)
+ GLenum_GL_CON_22_ATI = GLenum(35159)
+ GLenum_GL_CON_23_ATI = GLenum(35160)
+ GLenum_GL_CON_24_ATI = GLenum(35161)
+ GLenum_GL_CON_25_ATI = GLenum(35162)
+ GLenum_GL_CON_26_ATI = GLenum(35163)
+ GLenum_GL_CON_27_ATI = GLenum(35164)
+ GLenum_GL_CON_28_ATI = GLenum(35165)
+ GLenum_GL_CON_29_ATI = GLenum(35166)
+ GLenum_GL_CON_30_ATI = GLenum(35167)
+ GLenum_GL_CON_31_ATI = GLenum(35168)
+ GLenum_GL_MOV_ATI = GLenum(35169)
+ GLenum_GL_ADD_ATI = GLenum(35171)
+ GLenum_GL_MUL_ATI = GLenum(35172)
+ GLenum_GL_SUB_ATI = GLenum(35173)
+ GLenum_GL_DOT3_ATI = GLenum(35174)
+ GLenum_GL_DOT4_ATI = GLenum(35175)
+ GLenum_GL_MAD_ATI = GLenum(35176)
+ GLenum_GL_LERP_ATI = GLenum(35177)
+ GLenum_GL_CND_ATI = GLenum(35178)
+ GLenum_GL_CND0_ATI = GLenum(35179)
+ GLenum_GL_DOT2_ADD_ATI = GLenum(35180)
+ GLenum_GL_SECONDARY_INTERPOLATOR_ATI = GLenum(35181)
+ GLenum_GL_NUM_FRAGMENT_REGISTERS_ATI = GLenum(35182)
+ GLenum_GL_NUM_FRAGMENT_CONSTANTS_ATI = GLenum(35183)
+ GLenum_GL_NUM_PASSES_ATI = GLenum(35184)
+ GLenum_GL_NUM_INSTRUCTIONS_PER_PASS_ATI = GLenum(35185)
+ GLenum_GL_NUM_INSTRUCTIONS_TOTAL_ATI = GLenum(35186)
+ GLenum_GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI = GLenum(35187)
+ GLenum_GL_NUM_LOOPBACK_COMPONENTS_ATI = GLenum(35188)
+ GLenum_GL_COLOR_ALPHA_PAIRING_ATI = GLenum(35189)
+ GLenum_GL_SWIZZLE_STR_ATI = GLenum(35190)
+ GLenum_GL_SWIZZLE_STQ_ATI = GLenum(35191)
+ GLenum_GL_SWIZZLE_STR_DR_ATI = GLenum(35192)
+ GLenum_GL_SWIZZLE_STQ_DQ_ATI = GLenum(35193)
+ GLenum_GL_SWIZZLE_STRQ_ATI = GLenum(35194)
+ GLenum_GL_SWIZZLE_STRQ_DQ_ATI = GLenum(35195)
+ GLenum_GL_INTERLACE_OML = GLenum(35200)
+ GLenum_GL_INTERLACE_READ_OML = GLenum(35201)
+ GLenum_GL_FORMAT_SUBSAMPLE_24_24_OML = GLenum(35202)
+ GLenum_GL_FORMAT_SUBSAMPLE_244_244_OML = GLenum(35203)
+ GLenum_GL_PACK_RESAMPLE_OML = GLenum(35204)
+ GLenum_GL_UNPACK_RESAMPLE_OML = GLenum(35205)
+ GLenum_GL_RESAMPLE_REPLICATE_OML = GLenum(35206)
+ GLenum_GL_RESAMPLE_ZERO_FILL_OML = GLenum(35207)
+ GLenum_GL_RESAMPLE_AVERAGE_OML = GLenum(35208)
+ GLenum_GL_RESAMPLE_DECIMATE_OML = GLenum(35209)
+ GLenum_GL_POINT_SIZE_ARRAY_TYPE_OES = GLenum(35210)
+ GLenum_GL_POINT_SIZE_ARRAY_STRIDE_OES = GLenum(35211)
+ GLenum_GL_POINT_SIZE_ARRAY_POINTER_OES = GLenum(35212)
+ GLenum_GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES = GLenum(35213)
+ GLenum_GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES = GLenum(35214)
+ GLenum_GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES = GLenum(35215)
+ GLenum_GL_VERTEX_ATTRIB_MAP1_APPLE = GLenum(35328)
+ GLenum_GL_VERTEX_ATTRIB_MAP2_APPLE = GLenum(35329)
+ GLenum_GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE = GLenum(35330)
+ GLenum_GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE = GLenum(35331)
+ GLenum_GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE = GLenum(35332)
+ GLenum_GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE = GLenum(35333)
+ GLenum_GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE = GLenum(35334)
+ GLenum_GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE = GLenum(35335)
+ GLenum_GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE = GLenum(35336)
+ GLenum_GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE = GLenum(35337)
+ GLenum_GL_DRAW_PIXELS_APPLE = GLenum(35338)
+ GLenum_GL_FENCE_APPLE = GLenum(35339)
+ GLenum_GL_ELEMENT_ARRAY_APPLE = GLenum(35340)
+ GLenum_GL_ELEMENT_ARRAY_TYPE_APPLE = GLenum(35341)
+ GLenum_GL_ELEMENT_ARRAY_POINTER_APPLE = GLenum(35342)
+ GLenum_GL_COLOR_FLOAT_APPLE = GLenum(35343)
+ GLenum_GL_UNIFORM_BUFFER = GLenum(35345)
+ GLenum_GL_BUFFER_SERIALIZED_MODIFY_APPLE = GLenum(35346)
+ GLenum_GL_BUFFER_FLUSHING_UNMAP_APPLE = GLenum(35347)
+ GLenum_GL_AUX_DEPTH_STENCIL_APPLE = GLenum(35348)
+ GLenum_GL_PACK_ROW_BYTES_APPLE = GLenum(35349)
+ GLenum_GL_UNPACK_ROW_BYTES_APPLE = GLenum(35350)
+ GLenum_GL_RELEASED_APPLE = GLenum(35353)
+ GLenum_GL_VOLATILE_APPLE = GLenum(35354)
+ GLenum_GL_RETAINED_APPLE = GLenum(35355)
+ GLenum_GL_UNDEFINED_APPLE = GLenum(35356)
+ GLenum_GL_PURGEABLE_APPLE = GLenum(35357)
+ GLenum_GL_RGB_422_APPLE = GLenum(35359)
+ GLenum_GL_UNIFORM_BUFFER_BINDING = GLenum(35368)
+ GLenum_GL_UNIFORM_BUFFER_START = GLenum(35369)
+ GLenum_GL_UNIFORM_BUFFER_SIZE = GLenum(35370)
+ GLenum_GL_MAX_VERTEX_UNIFORM_BLOCKS = GLenum(35371)
+ GLenum_GL_MAX_GEOMETRY_UNIFORM_BLOCKS = GLenum(35372)
+ GLenum_GL_MAX_GEOMETRY_UNIFORM_BLOCKS_EXT = GLenum(35372)
+ GLenum_GL_MAX_GEOMETRY_UNIFORM_BLOCKS_OES = GLenum(35372)
+ GLenum_GL_MAX_FRAGMENT_UNIFORM_BLOCKS = GLenum(35373)
+ GLenum_GL_MAX_COMBINED_UNIFORM_BLOCKS = GLenum(35374)
+ GLenum_GL_MAX_UNIFORM_BUFFER_BINDINGS = GLenum(35375)
+ GLenum_GL_MAX_UNIFORM_BLOCK_SIZE = GLenum(35376)
+ GLenum_GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = GLenum(35377)
+ GLenum_GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS = GLenum(35378)
+ GLenum_GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT = GLenum(35378)
+ GLenum_GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_OES = GLenum(35378)
+ GLenum_GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = GLenum(35379)
+ GLenum_GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT = GLenum(35380)
+ GLenum_GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH = GLenum(35381)
+ GLenum_GL_ACTIVE_UNIFORM_BLOCKS = GLenum(35382)
+ GLenum_GL_UNIFORM_TYPE = GLenum(35383)
+ GLenum_GL_UNIFORM_SIZE = GLenum(35384)
+ GLenum_GL_UNIFORM_NAME_LENGTH = GLenum(35385)
+ GLenum_GL_UNIFORM_BLOCK_INDEX = GLenum(35386)
+ GLenum_GL_UNIFORM_OFFSET = GLenum(35387)
+ GLenum_GL_UNIFORM_ARRAY_STRIDE = GLenum(35388)
+ GLenum_GL_UNIFORM_MATRIX_STRIDE = GLenum(35389)
+ GLenum_GL_UNIFORM_IS_ROW_MAJOR = GLenum(35390)
+ GLenum_GL_UNIFORM_BLOCK_BINDING = GLenum(35391)
+ GLenum_GL_UNIFORM_BLOCK_DATA_SIZE = GLenum(35392)
+ GLenum_GL_UNIFORM_BLOCK_NAME_LENGTH = GLenum(35393)
+ GLenum_GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS = GLenum(35394)
+ GLenum_GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = GLenum(35395)
+ GLenum_GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = GLenum(35396)
+ GLenum_GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER = GLenum(35397)
+ GLenum_GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = GLenum(35398)
+ GLenum_GL_TEXTURE_SRGB_DECODE_EXT = GLenum(35400)
+ GLenum_GL_DECODE_EXT = GLenum(35401)
+ GLenum_GL_SKIP_DECODE_EXT = GLenum(35402)
+ GLenum_GL_PROGRAM_PIPELINE_OBJECT_EXT = GLenum(35407)
+ GLenum_GL_RGB_RAW_422_APPLE = GLenum(35409)
+ GLenum_GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT = GLenum(35410)
+ GLenum_GL_SYNC_OBJECT_APPLE = GLenum(35411)
+ GLenum_GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT = GLenum(35412)
+ GLenum_GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT = GLenum(35413)
+ GLenum_GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT = GLenum(35414)
+ GLenum_GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT = GLenum(35415)
+ GLenum_GL_FRAGMENT_SHADER = GLenum(35632)
+ GLenum_GL_FRAGMENT_SHADER_ARB = GLenum(35632)
+ GLenum_GL_VERTEX_SHADER = GLenum(35633)
+ GLenum_GL_VERTEX_SHADER_ARB = GLenum(35633)
+ GLenum_GL_PROGRAM_OBJECT_ARB = GLenum(35648)
+ GLenum_GL_PROGRAM_OBJECT_EXT = GLenum(35648)
+ GLenum_GL_SHADER_OBJECT_ARB = GLenum(35656)
+ GLenum_GL_SHADER_OBJECT_EXT = GLenum(35656)
+ GLenum_GL_MAX_FRAGMENT_UNIFORM_COMPONENTS = GLenum(35657)
+ GLenum_GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB = GLenum(35657)
+ GLenum_GL_MAX_VERTEX_UNIFORM_COMPONENTS = GLenum(35658)
+ GLenum_GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB = GLenum(35658)
+ GLenum_GL_MAX_VARYING_FLOATS = GLenum(35659)
+ GLenum_GL_MAX_VARYING_COMPONENTS = GLenum(35659)
+ GLenum_GL_MAX_VARYING_COMPONENTS_EXT = GLenum(35659)
+ GLenum_GL_MAX_VARYING_FLOATS_ARB = GLenum(35659)
+ GLenum_GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS = GLenum(35660)
+ GLenum_GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB = GLenum(35660)
+ GLenum_GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS = GLenum(35661)
+ GLenum_GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB = GLenum(35661)
+ GLenum_GL_OBJECT_TYPE_ARB = GLenum(35662)
+ GLenum_GL_SHADER_TYPE = GLenum(35663)
+ GLenum_GL_OBJECT_SUBTYPE_ARB = GLenum(35663)
+ GLenum_GL_FLOAT_VEC2 = GLenum(35664)
+ GLenum_GL_FLOAT_VEC2_ARB = GLenum(35664)
+ GLenum_GL_FLOAT_VEC3 = GLenum(35665)
+ GLenum_GL_FLOAT_VEC3_ARB = GLenum(35665)
+ GLenum_GL_FLOAT_VEC4 = GLenum(35666)
+ GLenum_GL_FLOAT_VEC4_ARB = GLenum(35666)
+ GLenum_GL_INT_VEC2 = GLenum(35667)
+ GLenum_GL_INT_VEC2_ARB = GLenum(35667)
+ GLenum_GL_INT_VEC3 = GLenum(35668)
+ GLenum_GL_INT_VEC3_ARB = GLenum(35668)
+ GLenum_GL_INT_VEC4 = GLenum(35669)
+ GLenum_GL_INT_VEC4_ARB = GLenum(35669)
+ GLenum_GL_BOOL = GLenum(35670)
+ GLenum_GL_BOOL_ARB = GLenum(35670)
+ GLenum_GL_BOOL_VEC2 = GLenum(35671)
+ GLenum_GL_BOOL_VEC2_ARB = GLenum(35671)
+ GLenum_GL_BOOL_VEC3 = GLenum(35672)
+ GLenum_GL_BOOL_VEC3_ARB = GLenum(35672)
+ GLenum_GL_BOOL_VEC4 = GLenum(35673)
+ GLenum_GL_BOOL_VEC4_ARB = GLenum(35673)
+ GLenum_GL_FLOAT_MAT2 = GLenum(35674)
+ GLenum_GL_FLOAT_MAT2_ARB = GLenum(35674)
+ GLenum_GL_FLOAT_MAT3 = GLenum(35675)
+ GLenum_GL_FLOAT_MAT3_ARB = GLenum(35675)
+ GLenum_GL_FLOAT_MAT4 = GLenum(35676)
+ GLenum_GL_FLOAT_MAT4_ARB = GLenum(35676)
+ GLenum_GL_SAMPLER_1D = GLenum(35677)
+ GLenum_GL_SAMPLER_1D_ARB = GLenum(35677)
+ GLenum_GL_SAMPLER_2D = GLenum(35678)
+ GLenum_GL_SAMPLER_2D_ARB = GLenum(35678)
+ GLenum_GL_SAMPLER_3D = GLenum(35679)
+ GLenum_GL_SAMPLER_3D_ARB = GLenum(35679)
+ GLenum_GL_SAMPLER_3D_OES = GLenum(35679)
+ GLenum_GL_SAMPLER_CUBE = GLenum(35680)
+ GLenum_GL_SAMPLER_CUBE_ARB = GLenum(35680)
+ GLenum_GL_SAMPLER_1D_SHADOW = GLenum(35681)
+ GLenum_GL_SAMPLER_1D_SHADOW_ARB = GLenum(35681)
+ GLenum_GL_SAMPLER_2D_SHADOW = GLenum(35682)
+ GLenum_GL_SAMPLER_2D_SHADOW_ARB = GLenum(35682)
+ GLenum_GL_SAMPLER_2D_SHADOW_EXT = GLenum(35682)
+ GLenum_GL_SAMPLER_2D_RECT = GLenum(35683)
+ GLenum_GL_SAMPLER_2D_RECT_ARB = GLenum(35683)
+ GLenum_GL_SAMPLER_2D_RECT_SHADOW = GLenum(35684)
+ GLenum_GL_SAMPLER_2D_RECT_SHADOW_ARB = GLenum(35684)
+ GLenum_GL_FLOAT_MAT2x3 = GLenum(35685)
+ GLenum_GL_FLOAT_MAT2x3_NV = GLenum(35685)
+ GLenum_GL_FLOAT_MAT2x4 = GLenum(35686)
+ GLenum_GL_FLOAT_MAT2x4_NV = GLenum(35686)
+ GLenum_GL_FLOAT_MAT3x2 = GLenum(35687)
+ GLenum_GL_FLOAT_MAT3x2_NV = GLenum(35687)
+ GLenum_GL_FLOAT_MAT3x4 = GLenum(35688)
+ GLenum_GL_FLOAT_MAT3x4_NV = GLenum(35688)
+ GLenum_GL_FLOAT_MAT4x2 = GLenum(35689)
+ GLenum_GL_FLOAT_MAT4x2_NV = GLenum(35689)
+ GLenum_GL_FLOAT_MAT4x3 = GLenum(35690)
+ GLenum_GL_FLOAT_MAT4x3_NV = GLenum(35690)
+ GLenum_GL_DELETE_STATUS = GLenum(35712)
+ GLenum_GL_OBJECT_DELETE_STATUS_ARB = GLenum(35712)
+ GLenum_GL_COMPILE_STATUS = GLenum(35713)
+ GLenum_GL_OBJECT_COMPILE_STATUS_ARB = GLenum(35713)
+ GLenum_GL_LINK_STATUS = GLenum(35714)
+ GLenum_GL_OBJECT_LINK_STATUS_ARB = GLenum(35714)
+ GLenum_GL_VALIDATE_STATUS = GLenum(35715)
+ GLenum_GL_OBJECT_VALIDATE_STATUS_ARB = GLenum(35715)
+ GLenum_GL_INFO_LOG_LENGTH = GLenum(35716)
+ GLenum_GL_OBJECT_INFO_LOG_LENGTH_ARB = GLenum(35716)
+ GLenum_GL_ATTACHED_SHADERS = GLenum(35717)
+ GLenum_GL_OBJECT_ATTACHED_OBJECTS_ARB = GLenum(35717)
+ GLenum_GL_ACTIVE_UNIFORMS = GLenum(35718)
+ GLenum_GL_OBJECT_ACTIVE_UNIFORMS_ARB = GLenum(35718)
+ GLenum_GL_ACTIVE_UNIFORM_MAX_LENGTH = GLenum(35719)
+ GLenum_GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB = GLenum(35719)
+ GLenum_GL_SHADER_SOURCE_LENGTH = GLenum(35720)
+ GLenum_GL_OBJECT_SHADER_SOURCE_LENGTH_ARB = GLenum(35720)
+ GLenum_GL_ACTIVE_ATTRIBUTES = GLenum(35721)
+ GLenum_GL_OBJECT_ACTIVE_ATTRIBUTES_ARB = GLenum(35721)
+ GLenum_GL_ACTIVE_ATTRIBUTE_MAX_LENGTH = GLenum(35722)
+ GLenum_GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB = GLenum(35722)
+ GLenum_GL_FRAGMENT_SHADER_DERIVATIVE_HINT = GLenum(35723)
+ GLenum_GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB = GLenum(35723)
+ GLenum_GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES = GLenum(35723)
+ GLenum_GL_SHADING_LANGUAGE_VERSION = GLenum(35724)
+ GLenum_GL_SHADING_LANGUAGE_VERSION_ARB = GLenum(35724)
+ GLenum_GL_CURRENT_PROGRAM = GLenum(35725)
+ GLenum_GL_PALETTE4_RGB8_OES = GLenum(35728)
+ GLenum_GL_PALETTE4_RGBA8_OES = GLenum(35729)
+ GLenum_GL_PALETTE4_R5_G6_B5_OES = GLenum(35730)
+ GLenum_GL_PALETTE4_RGBA4_OES = GLenum(35731)
+ GLenum_GL_PALETTE4_RGB5_A1_OES = GLenum(35732)
+ GLenum_GL_PALETTE8_RGB8_OES = GLenum(35733)
+ GLenum_GL_PALETTE8_RGBA8_OES = GLenum(35734)
+ GLenum_GL_PALETTE8_R5_G6_B5_OES = GLenum(35735)
+ GLenum_GL_PALETTE8_RGBA4_OES = GLenum(35736)
+ GLenum_GL_PALETTE8_RGB5_A1_OES = GLenum(35737)
+ GLenum_GL_IMPLEMENTATION_COLOR_READ_TYPE = GLenum(35738)
+ GLenum_GL_IMPLEMENTATION_COLOR_READ_TYPE_OES = GLenum(35738)
+ GLenum_GL_IMPLEMENTATION_COLOR_READ_FORMAT = GLenum(35739)
+ GLenum_GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES = GLenum(35739)
+ GLenum_GL_POINT_SIZE_ARRAY_OES = GLenum(35740)
+ GLenum_GL_TEXTURE_CROP_RECT_OES = GLenum(35741)
+ GLenum_GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES = GLenum(35742)
+ GLenum_GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES = GLenum(35743)
+ GLenum_GL_FRAGMENT_PROGRAM_POSITION_MESA = GLenum(35760)
+ GLenum_GL_FRAGMENT_PROGRAM_CALLBACK_MESA = GLenum(35761)
+ GLenum_GL_FRAGMENT_PROGRAM_CALLBACK_FUNC_MESA = GLenum(35762)
+ GLenum_GL_FRAGMENT_PROGRAM_CALLBACK_DATA_MESA = GLenum(35763)
+ GLenum_GL_VERTEX_PROGRAM_POSITION_MESA = GLenum(35764)
+ GLenum_GL_VERTEX_PROGRAM_CALLBACK_MESA = GLenum(35765)
+ GLenum_GL_VERTEX_PROGRAM_CALLBACK_FUNC_MESA = GLenum(35766)
+ GLenum_GL_VERTEX_PROGRAM_CALLBACK_DATA_MESA = GLenum(35767)
+ GLenum_GL_COUNTER_TYPE_AMD = GLenum(35776)
+ GLenum_GL_COUNTER_RANGE_AMD = GLenum(35777)
+ GLenum_GL_UNSIGNED_INT64_AMD = GLenum(35778)
+ GLenum_GL_PERCENTAGE_AMD = GLenum(35779)
+ GLenum_GL_PERFMON_RESULT_AVAILABLE_AMD = GLenum(35780)
+ GLenum_GL_PERFMON_RESULT_SIZE_AMD = GLenum(35781)
+ GLenum_GL_PERFMON_RESULT_AMD = GLenum(35782)
+ GLenum_GL_TEXTURE_WIDTH_QCOM = GLenum(35794)
+ GLenum_GL_TEXTURE_HEIGHT_QCOM = GLenum(35795)
+ GLenum_GL_TEXTURE_DEPTH_QCOM = GLenum(35796)
+ GLenum_GL_TEXTURE_INTERNAL_FORMAT_QCOM = GLenum(35797)
+ GLenum_GL_TEXTURE_FORMAT_QCOM = GLenum(35798)
+ GLenum_GL_TEXTURE_TYPE_QCOM = GLenum(35799)
+ GLenum_GL_TEXTURE_IMAGE_VALID_QCOM = GLenum(35800)
+ GLenum_GL_TEXTURE_NUM_LEVELS_QCOM = GLenum(35801)
+ GLenum_GL_TEXTURE_TARGET_QCOM = GLenum(35802)
+ GLenum_GL_TEXTURE_OBJECT_VALID_QCOM = GLenum(35803)
+ GLenum_GL_STATE_RESTORE = GLenum(35804)
+ GLenum_GL_SAMPLER_EXTERNAL_2D_Y2Y_EXT = GLenum(35815)
+ GLenum_GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG = GLenum(35840)
+ GLenum_GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG = GLenum(35841)
+ GLenum_GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = GLenum(35842)
+ GLenum_GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = GLenum(35843)
+ GLenum_GL_MODULATE_COLOR_IMG = GLenum(35844)
+ GLenum_GL_RECIP_ADD_SIGNED_ALPHA_IMG = GLenum(35845)
+ GLenum_GL_TEXTURE_ALPHA_MODULATE_IMG = GLenum(35846)
+ GLenum_GL_FACTOR_ALPHA_MODULATE_IMG = GLenum(35847)
+ GLenum_GL_FRAGMENT_ALPHA_MODULATE_IMG = GLenum(35848)
+ GLenum_GL_ADD_BLEND_IMG = GLenum(35849)
+ GLenum_GL_SGX_BINARY_IMG = GLenum(35850)
+ GLenum_GL_TEXTURE_RED_TYPE = GLenum(35856)
+ GLenum_GL_TEXTURE_RED_TYPE_ARB = GLenum(35856)
+ GLenum_GL_TEXTURE_GREEN_TYPE = GLenum(35857)
+ GLenum_GL_TEXTURE_GREEN_TYPE_ARB = GLenum(35857)
+ GLenum_GL_TEXTURE_BLUE_TYPE = GLenum(35858)
+ GLenum_GL_TEXTURE_BLUE_TYPE_ARB = GLenum(35858)
+ GLenum_GL_TEXTURE_ALPHA_TYPE = GLenum(35859)
+ GLenum_GL_TEXTURE_ALPHA_TYPE_ARB = GLenum(35859)
+ GLenum_GL_TEXTURE_LUMINANCE_TYPE = GLenum(35860)
+ GLenum_GL_TEXTURE_LUMINANCE_TYPE_ARB = GLenum(35860)
+ GLenum_GL_TEXTURE_INTENSITY_TYPE = GLenum(35861)
+ GLenum_GL_TEXTURE_INTENSITY_TYPE_ARB = GLenum(35861)
+ GLenum_GL_TEXTURE_DEPTH_TYPE = GLenum(35862)
+ GLenum_GL_TEXTURE_DEPTH_TYPE_ARB = GLenum(35862)
+ GLenum_GL_UNSIGNED_NORMALIZED = GLenum(35863)
+ GLenum_GL_UNSIGNED_NORMALIZED_ARB = GLenum(35863)
+ GLenum_GL_UNSIGNED_NORMALIZED_EXT = GLenum(35863)
+ GLenum_GL_TEXTURE_1D_ARRAY = GLenum(35864)
+ GLenum_GL_TEXTURE_1D_ARRAY_EXT = GLenum(35864)
+ GLenum_GL_PROXY_TEXTURE_1D_ARRAY = GLenum(35865)
+ GLenum_GL_PROXY_TEXTURE_1D_ARRAY_EXT = GLenum(35865)
+ GLenum_GL_TEXTURE_2D_ARRAY = GLenum(35866)
+ GLenum_GL_TEXTURE_2D_ARRAY_EXT = GLenum(35866)
+ GLenum_GL_PROXY_TEXTURE_2D_ARRAY = GLenum(35867)
+ GLenum_GL_PROXY_TEXTURE_2D_ARRAY_EXT = GLenum(35867)
+ GLenum_GL_TEXTURE_BINDING_1D_ARRAY = GLenum(35868)
+ GLenum_GL_TEXTURE_BINDING_1D_ARRAY_EXT = GLenum(35868)
+ GLenum_GL_TEXTURE_BINDING_2D_ARRAY = GLenum(35869)
+ GLenum_GL_TEXTURE_BINDING_2D_ARRAY_EXT = GLenum(35869)
+ GLenum_GL_GEOMETRY_PROGRAM_NV = GLenum(35878)
+ GLenum_GL_MAX_PROGRAM_OUTPUT_VERTICES_NV = GLenum(35879)
+ GLenum_GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV = GLenum(35880)
+ GLenum_GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS = GLenum(35881)
+ GLenum_GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB = GLenum(35881)
+ GLenum_GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT = GLenum(35881)
+ GLenum_GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_OES = GLenum(35881)
+ GLenum_GL_TEXTURE_BUFFER = GLenum(35882)
+ GLenum_GL_TEXTURE_BUFFER_ARB = GLenum(35882)
+ GLenum_GL_TEXTURE_BUFFER_EXT = GLenum(35882)
+ GLenum_GL_TEXTURE_BUFFER_OES = GLenum(35882)
+ GLenum_GL_TEXTURE_BUFFER_BINDING = GLenum(35882)
+ GLenum_GL_TEXTURE_BUFFER_BINDING_EXT = GLenum(35882)
+ GLenum_GL_TEXTURE_BUFFER_BINDING_OES = GLenum(35882)
+ GLenum_GL_MAX_TEXTURE_BUFFER_SIZE = GLenum(35883)
+ GLenum_GL_MAX_TEXTURE_BUFFER_SIZE_ARB = GLenum(35883)
+ GLenum_GL_MAX_TEXTURE_BUFFER_SIZE_EXT = GLenum(35883)
+ GLenum_GL_MAX_TEXTURE_BUFFER_SIZE_OES = GLenum(35883)
+ GLenum_GL_TEXTURE_BINDING_BUFFER = GLenum(35884)
+ GLenum_GL_TEXTURE_BINDING_BUFFER_ARB = GLenum(35884)
+ GLenum_GL_TEXTURE_BINDING_BUFFER_EXT = GLenum(35884)
+ GLenum_GL_TEXTURE_BINDING_BUFFER_OES = GLenum(35884)
+ GLenum_GL_TEXTURE_BUFFER_DATA_STORE_BINDING = GLenum(35885)
+ GLenum_GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB = GLenum(35885)
+ GLenum_GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT = GLenum(35885)
+ GLenum_GL_TEXTURE_BUFFER_DATA_STORE_BINDING_OES = GLenum(35885)
+ GLenum_GL_TEXTURE_BUFFER_FORMAT_ARB = GLenum(35886)
+ GLenum_GL_TEXTURE_BUFFER_FORMAT_EXT = GLenum(35886)
+ GLenum_GL_ANY_SAMPLES_PASSED = GLenum(35887)
+ GLenum_GL_ANY_SAMPLES_PASSED_EXT = GLenum(35887)
+ GLenum_GL_SAMPLE_SHADING = GLenum(35894)
+ GLenum_GL_SAMPLE_SHADING_ARB = GLenum(35894)
+ GLenum_GL_SAMPLE_SHADING_OES = GLenum(35894)
+ GLenum_GL_MIN_SAMPLE_SHADING_VALUE = GLenum(35895)
+ GLenum_GL_MIN_SAMPLE_SHADING_VALUE_ARB = GLenum(35895)
+ GLenum_GL_MIN_SAMPLE_SHADING_VALUE_OES = GLenum(35895)
+ GLenum_GL_R11F_G11F_B10F = GLenum(35898)
+ GLenum_GL_R11F_G11F_B10F_APPLE = GLenum(35898)
+ GLenum_GL_R11F_G11F_B10F_EXT = GLenum(35898)
+ GLenum_GL_UNSIGNED_INT_10F_11F_11F_REV = GLenum(35899)
+ GLenum_GL_UNSIGNED_INT_10F_11F_11F_REV_APPLE = GLenum(35899)
+ GLenum_GL_UNSIGNED_INT_10F_11F_11F_REV_EXT = GLenum(35899)
+ GLenum_GL_RGBA_SIGNED_COMPONENTS_EXT = GLenum(35900)
+ GLenum_GL_RGB9_E5 = GLenum(35901)
+ GLenum_GL_RGB9_E5_APPLE = GLenum(35901)
+ GLenum_GL_RGB9_E5_EXT = GLenum(35901)
+ GLenum_GL_UNSIGNED_INT_5_9_9_9_REV = GLenum(35902)
+ GLenum_GL_UNSIGNED_INT_5_9_9_9_REV_APPLE = GLenum(35902)
+ GLenum_GL_UNSIGNED_INT_5_9_9_9_REV_EXT = GLenum(35902)
+ GLenum_GL_TEXTURE_SHARED_SIZE = GLenum(35903)
+ GLenum_GL_TEXTURE_SHARED_SIZE_EXT = GLenum(35903)
+ GLenum_GL_SRGB = GLenum(35904)
+ GLenum_GL_SRGB_EXT = GLenum(35904)
+ GLenum_GL_SRGB8 = GLenum(35905)
+ GLenum_GL_SRGB8_EXT = GLenum(35905)
+ GLenum_GL_SRGB8_NV = GLenum(35905)
+ GLenum_GL_SRGB_ALPHA = GLenum(35906)
+ GLenum_GL_SRGB_ALPHA_EXT = GLenum(35906)
+ GLenum_GL_SRGB8_ALPHA8 = GLenum(35907)
+ GLenum_GL_SRGB8_ALPHA8_EXT = GLenum(35907)
+ GLenum_GL_SLUMINANCE_ALPHA = GLenum(35908)
+ GLenum_GL_SLUMINANCE_ALPHA_EXT = GLenum(35908)
+ GLenum_GL_SLUMINANCE_ALPHA_NV = GLenum(35908)
+ GLenum_GL_SLUMINANCE8_ALPHA8 = GLenum(35909)
+ GLenum_GL_SLUMINANCE8_ALPHA8_EXT = GLenum(35909)
+ GLenum_GL_SLUMINANCE8_ALPHA8_NV = GLenum(35909)
+ GLenum_GL_SLUMINANCE = GLenum(35910)
+ GLenum_GL_SLUMINANCE_EXT = GLenum(35910)
+ GLenum_GL_SLUMINANCE_NV = GLenum(35910)
+ GLenum_GL_SLUMINANCE8 = GLenum(35911)
+ GLenum_GL_SLUMINANCE8_EXT = GLenum(35911)
+ GLenum_GL_SLUMINANCE8_NV = GLenum(35911)
+ GLenum_GL_COMPRESSED_SRGB = GLenum(35912)
+ GLenum_GL_COMPRESSED_SRGB_EXT = GLenum(35912)
+ GLenum_GL_COMPRESSED_SRGB_ALPHA = GLenum(35913)
+ GLenum_GL_COMPRESSED_SRGB_ALPHA_EXT = GLenum(35913)
+ GLenum_GL_COMPRESSED_SLUMINANCE = GLenum(35914)
+ GLenum_GL_COMPRESSED_SLUMINANCE_EXT = GLenum(35914)
+ GLenum_GL_COMPRESSED_SLUMINANCE_ALPHA = GLenum(35915)
+ GLenum_GL_COMPRESSED_SLUMINANCE_ALPHA_EXT = GLenum(35915)
+ GLenum_GL_COMPRESSED_SRGB_S3TC_DXT1_EXT = GLenum(35916)
+ GLenum_GL_COMPRESSED_SRGB_S3TC_DXT1_NV = GLenum(35916)
+ GLenum_GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT = GLenum(35917)
+ GLenum_GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV = GLenum(35917)
+ GLenum_GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT = GLenum(35918)
+ GLenum_GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV = GLenum(35918)
+ GLenum_GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT = GLenum(35919)
+ GLenum_GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV = GLenum(35919)
+ GLenum_GL_COMPRESSED_LUMINANCE_LATC1_EXT = GLenum(35952)
+ GLenum_GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT = GLenum(35953)
+ GLenum_GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT = GLenum(35954)
+ GLenum_GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT = GLenum(35955)
+ GLenum_GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV = GLenum(35956)
+ GLenum_GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV = GLenum(35957)
+ GLenum_GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH = GLenum(35958)
+ GLenum_GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT = GLenum(35958)
+ GLenum_GL_BACK_PRIMARY_COLOR_NV = GLenum(35959)
+ GLenum_GL_BACK_SECONDARY_COLOR_NV = GLenum(35960)
+ GLenum_GL_TEXTURE_COORD_NV = GLenum(35961)
+ GLenum_GL_CLIP_DISTANCE_NV = GLenum(35962)
+ GLenum_GL_VERTEX_ID_NV = GLenum(35963)
+ GLenum_GL_PRIMITIVE_ID_NV = GLenum(35964)
+ GLenum_GL_GENERIC_ATTRIB_NV = GLenum(35965)
+ GLenum_GL_TRANSFORM_FEEDBACK_ATTRIBS_NV = GLenum(35966)
+ GLenum_GL_TRANSFORM_FEEDBACK_BUFFER_MODE = GLenum(35967)
+ GLenum_GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT = GLenum(35967)
+ GLenum_GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV = GLenum(35967)
+ GLenum_GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = GLenum(35968)
+ GLenum_GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT = GLenum(35968)
+ GLenum_GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV = GLenum(35968)
+ GLenum_GL_ACTIVE_VARYINGS_NV = GLenum(35969)
+ GLenum_GL_ACTIVE_VARYING_MAX_LENGTH_NV = GLenum(35970)
+ GLenum_GL_TRANSFORM_FEEDBACK_VARYINGS = GLenum(35971)
+ GLenum_GL_TRANSFORM_FEEDBACK_VARYINGS_EXT = GLenum(35971)
+ GLenum_GL_TRANSFORM_FEEDBACK_VARYINGS_NV = GLenum(35971)
+ GLenum_GL_TRANSFORM_FEEDBACK_BUFFER_START = GLenum(35972)
+ GLenum_GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT = GLenum(35972)
+ GLenum_GL_TRANSFORM_FEEDBACK_BUFFER_START_NV = GLenum(35972)
+ GLenum_GL_TRANSFORM_FEEDBACK_BUFFER_SIZE = GLenum(35973)
+ GLenum_GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT = GLenum(35973)
+ GLenum_GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV = GLenum(35973)
+ GLenum_GL_TRANSFORM_FEEDBACK_RECORD_NV = GLenum(35974)
+ GLenum_GL_PRIMITIVES_GENERATED = GLenum(35975)
+ GLenum_GL_PRIMITIVES_GENERATED_EXT = GLenum(35975)
+ GLenum_GL_PRIMITIVES_GENERATED_NV = GLenum(35975)
+ GLenum_GL_PRIMITIVES_GENERATED_OES = GLenum(35975)
+ GLenum_GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = GLenum(35976)
+ GLenum_GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT = GLenum(35976)
+ GLenum_GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV = GLenum(35976)
+ GLenum_GL_RASTERIZER_DISCARD = GLenum(35977)
+ GLenum_GL_RASTERIZER_DISCARD_EXT = GLenum(35977)
+ GLenum_GL_RASTERIZER_DISCARD_NV = GLenum(35977)
+ GLenum_GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = GLenum(35978)
+ GLenum_GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT = GLenum(35978)
+ GLenum_GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV = GLenum(35978)
+ GLenum_GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = GLenum(35979)
+ GLenum_GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT = GLenum(35979)
+ GLenum_GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV = GLenum(35979)
+ GLenum_GL_INTERLEAVED_ATTRIBS = GLenum(35980)
+ GLenum_GL_INTERLEAVED_ATTRIBS_EXT = GLenum(35980)
+ GLenum_GL_INTERLEAVED_ATTRIBS_NV = GLenum(35980)
+ GLenum_GL_SEPARATE_ATTRIBS = GLenum(35981)
+ GLenum_GL_SEPARATE_ATTRIBS_EXT = GLenum(35981)
+ GLenum_GL_SEPARATE_ATTRIBS_NV = GLenum(35981)
+ GLenum_GL_TRANSFORM_FEEDBACK_BUFFER = GLenum(35982)
+ GLenum_GL_TRANSFORM_FEEDBACK_BUFFER_EXT = GLenum(35982)
+ GLenum_GL_TRANSFORM_FEEDBACK_BUFFER_NV = GLenum(35982)
+ GLenum_GL_TRANSFORM_FEEDBACK_BUFFER_BINDING = GLenum(35983)
+ GLenum_GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT = GLenum(35983)
+ GLenum_GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV = GLenum(35983)
+ GLenum_GL_ATC_RGB_AMD = GLenum(35986)
+ GLenum_GL_ATC_RGBA_EXPLICIT_ALPHA_AMD = GLenum(35987)
+ GLenum_GL_POINT_SPRITE_COORD_ORIGIN = GLenum(36000)
+ GLenum_GL_LOWER_LEFT = GLenum(36001)
+ GLenum_GL_UPPER_LEFT = GLenum(36002)
+ GLenum_GL_STENCIL_BACK_REF = GLenum(36003)
+ GLenum_GL_STENCIL_BACK_VALUE_MASK = GLenum(36004)
+ GLenum_GL_STENCIL_BACK_WRITEMASK = GLenum(36005)
+ GLenum_GL_DRAW_FRAMEBUFFER_BINDING = GLenum(36006)
+ GLenum_GL_DRAW_FRAMEBUFFER_BINDING_ANGLE = GLenum(36006)
+ GLenum_GL_DRAW_FRAMEBUFFER_BINDING_APPLE = GLenum(36006)
+ GLenum_GL_DRAW_FRAMEBUFFER_BINDING_EXT = GLenum(36006)
+ GLenum_GL_DRAW_FRAMEBUFFER_BINDING_NV = GLenum(36006)
+ GLenum_GL_FRAMEBUFFER_BINDING = GLenum(36006)
+ GLenum_GL_FRAMEBUFFER_BINDING_ANGLE = GLenum(36006)
+ GLenum_GL_FRAMEBUFFER_BINDING_EXT = GLenum(36006)
+ GLenum_GL_FRAMEBUFFER_BINDING_OES = GLenum(36006)
+ GLenum_GL_RENDERBUFFER_BINDING = GLenum(36007)
+ GLenum_GL_RENDERBUFFER_BINDING_ANGLE = GLenum(36007)
+ GLenum_GL_RENDERBUFFER_BINDING_EXT = GLenum(36007)
+ GLenum_GL_RENDERBUFFER_BINDING_OES = GLenum(36007)
+ GLenum_GL_READ_FRAMEBUFFER = GLenum(36008)
+ GLenum_GL_READ_FRAMEBUFFER_ANGLE = GLenum(36008)
+ GLenum_GL_READ_FRAMEBUFFER_APPLE = GLenum(36008)
+ GLenum_GL_READ_FRAMEBUFFER_EXT = GLenum(36008)
+ GLenum_GL_READ_FRAMEBUFFER_NV = GLenum(36008)
+ GLenum_GL_DRAW_FRAMEBUFFER = GLenum(36009)
+ GLenum_GL_DRAW_FRAMEBUFFER_ANGLE = GLenum(36009)
+ GLenum_GL_DRAW_FRAMEBUFFER_APPLE = GLenum(36009)
+ GLenum_GL_DRAW_FRAMEBUFFER_EXT = GLenum(36009)
+ GLenum_GL_DRAW_FRAMEBUFFER_NV = GLenum(36009)
+ GLenum_GL_READ_FRAMEBUFFER_BINDING = GLenum(36010)
+ GLenum_GL_READ_FRAMEBUFFER_BINDING_ANGLE = GLenum(36010)
+ GLenum_GL_READ_FRAMEBUFFER_BINDING_APPLE = GLenum(36010)
+ GLenum_GL_READ_FRAMEBUFFER_BINDING_EXT = GLenum(36010)
+ GLenum_GL_READ_FRAMEBUFFER_BINDING_NV = GLenum(36010)
+ GLenum_GL_RENDERBUFFER_COVERAGE_SAMPLES_NV = GLenum(36011)
+ GLenum_GL_RENDERBUFFER_SAMPLES = GLenum(36011)
+ GLenum_GL_RENDERBUFFER_SAMPLES_ANGLE = GLenum(36011)
+ GLenum_GL_RENDERBUFFER_SAMPLES_APPLE = GLenum(36011)
+ GLenum_GL_RENDERBUFFER_SAMPLES_EXT = GLenum(36011)
+ GLenum_GL_RENDERBUFFER_SAMPLES_NV = GLenum(36011)
+ GLenum_GL_DEPTH_COMPONENT32F = GLenum(36012)
+ GLenum_GL_DEPTH32F_STENCIL8 = GLenum(36013)
+ GLenum_GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = GLenum(36048)
+ GLenum_GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT = GLenum(36048)
+ GLenum_GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES = GLenum(36048)
+ GLenum_GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = GLenum(36049)
+ GLenum_GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT = GLenum(36049)
+ GLenum_GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES = GLenum(36049)
+ GLenum_GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = GLenum(36050)
+ GLenum_GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT = GLenum(36050)
+ GLenum_GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES = GLenum(36050)
+ GLenum_GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = GLenum(36051)
+ GLenum_GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT = GLenum(36051)
+ GLenum_GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES = GLenum(36051)
+ GLenum_GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT = GLenum(36052)
+ GLenum_GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES = GLenum(36052)
+ GLenum_GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER = GLenum(36052)
+ GLenum_GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT = GLenum(36052)
+ GLenum_GL_FRAMEBUFFER_COMPLETE = GLenum(36053)
+ GLenum_GL_FRAMEBUFFER_COMPLETE_EXT = GLenum(36053)
+ GLenum_GL_FRAMEBUFFER_COMPLETE_OES = GLenum(36053)
+ GLenum_GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT = GLenum(36054)
+ GLenum_GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT = GLenum(36054)
+ GLenum_GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES = GLenum(36054)
+ GLenum_GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = GLenum(36055)
+ GLenum_GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT = GLenum(36055)
+ GLenum_GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES = GLenum(36055)
+ GLenum_GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS = GLenum(36057)
+ GLenum_GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT = GLenum(36057)
+ GLenum_GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES = GLenum(36057)
+ GLenum_GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT = GLenum(36058)
+ GLenum_GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES = GLenum(36058)
+ GLenum_GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER = GLenum(36059)
+ GLenum_GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT = GLenum(36059)
+ GLenum_GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES = GLenum(36059)
+ GLenum_GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER = GLenum(36060)
+ GLenum_GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT = GLenum(36060)
+ GLenum_GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES = GLenum(36060)
+ GLenum_GL_FRAMEBUFFER_UNSUPPORTED = GLenum(36061)
+ GLenum_GL_FRAMEBUFFER_UNSUPPORTED_EXT = GLenum(36061)
+ GLenum_GL_FRAMEBUFFER_UNSUPPORTED_OES = GLenum(36061)
+ GLenum_GL_MAX_COLOR_ATTACHMENTS = GLenum(36063)
+ GLenum_GL_MAX_COLOR_ATTACHMENTS_EXT = GLenum(36063)
+ GLenum_GL_MAX_COLOR_ATTACHMENTS_NV = GLenum(36063)
+ GLenum_GL_COLOR_ATTACHMENT0 = GLenum(36064)
+ GLenum_GL_COLOR_ATTACHMENT0_EXT = GLenum(36064)
+ GLenum_GL_COLOR_ATTACHMENT0_NV = GLenum(36064)
+ GLenum_GL_COLOR_ATTACHMENT0_OES = GLenum(36064)
+ GLenum_GL_COLOR_ATTACHMENT1 = GLenum(36065)
+ GLenum_GL_COLOR_ATTACHMENT1_EXT = GLenum(36065)
+ GLenum_GL_COLOR_ATTACHMENT1_NV = GLenum(36065)
+ GLenum_GL_COLOR_ATTACHMENT2 = GLenum(36066)
+ GLenum_GL_COLOR_ATTACHMENT2_EXT = GLenum(36066)
+ GLenum_GL_COLOR_ATTACHMENT2_NV = GLenum(36066)
+ GLenum_GL_COLOR_ATTACHMENT3 = GLenum(36067)
+ GLenum_GL_COLOR_ATTACHMENT3_EXT = GLenum(36067)
+ GLenum_GL_COLOR_ATTACHMENT3_NV = GLenum(36067)
+ GLenum_GL_COLOR_ATTACHMENT4 = GLenum(36068)
+ GLenum_GL_COLOR_ATTACHMENT4_EXT = GLenum(36068)
+ GLenum_GL_COLOR_ATTACHMENT4_NV = GLenum(36068)
+ GLenum_GL_COLOR_ATTACHMENT5 = GLenum(36069)
+ GLenum_GL_COLOR_ATTACHMENT5_EXT = GLenum(36069)
+ GLenum_GL_COLOR_ATTACHMENT5_NV = GLenum(36069)
+ GLenum_GL_COLOR_ATTACHMENT6 = GLenum(36070)
+ GLenum_GL_COLOR_ATTACHMENT6_EXT = GLenum(36070)
+ GLenum_GL_COLOR_ATTACHMENT6_NV = GLenum(36070)
+ GLenum_GL_COLOR_ATTACHMENT7 = GLenum(36071)
+ GLenum_GL_COLOR_ATTACHMENT7_EXT = GLenum(36071)
+ GLenum_GL_COLOR_ATTACHMENT7_NV = GLenum(36071)
+ GLenum_GL_COLOR_ATTACHMENT8 = GLenum(36072)
+ GLenum_GL_COLOR_ATTACHMENT8_EXT = GLenum(36072)
+ GLenum_GL_COLOR_ATTACHMENT8_NV = GLenum(36072)
+ GLenum_GL_COLOR_ATTACHMENT9 = GLenum(36073)
+ GLenum_GL_COLOR_ATTACHMENT9_EXT = GLenum(36073)
+ GLenum_GL_COLOR_ATTACHMENT9_NV = GLenum(36073)
+ GLenum_GL_COLOR_ATTACHMENT10 = GLenum(36074)
+ GLenum_GL_COLOR_ATTACHMENT10_EXT = GLenum(36074)
+ GLenum_GL_COLOR_ATTACHMENT10_NV = GLenum(36074)
+ GLenum_GL_COLOR_ATTACHMENT11 = GLenum(36075)
+ GLenum_GL_COLOR_ATTACHMENT11_EXT = GLenum(36075)
+ GLenum_GL_COLOR_ATTACHMENT11_NV = GLenum(36075)
+ GLenum_GL_COLOR_ATTACHMENT12 = GLenum(36076)
+ GLenum_GL_COLOR_ATTACHMENT12_EXT = GLenum(36076)
+ GLenum_GL_COLOR_ATTACHMENT12_NV = GLenum(36076)
+ GLenum_GL_COLOR_ATTACHMENT13 = GLenum(36077)
+ GLenum_GL_COLOR_ATTACHMENT13_EXT = GLenum(36077)
+ GLenum_GL_COLOR_ATTACHMENT13_NV = GLenum(36077)
+ GLenum_GL_COLOR_ATTACHMENT14 = GLenum(36078)
+ GLenum_GL_COLOR_ATTACHMENT14_EXT = GLenum(36078)
+ GLenum_GL_COLOR_ATTACHMENT14_NV = GLenum(36078)
+ GLenum_GL_COLOR_ATTACHMENT15 = GLenum(36079)
+ GLenum_GL_COLOR_ATTACHMENT15_EXT = GLenum(36079)
+ GLenum_GL_COLOR_ATTACHMENT15_NV = GLenum(36079)
+ GLenum_GL_COLOR_ATTACHMENT16 = GLenum(36080)
+ GLenum_GL_COLOR_ATTACHMENT17 = GLenum(36081)
+ GLenum_GL_COLOR_ATTACHMENT18 = GLenum(36082)
+ GLenum_GL_COLOR_ATTACHMENT19 = GLenum(36083)
+ GLenum_GL_COLOR_ATTACHMENT20 = GLenum(36084)
+ GLenum_GL_COLOR_ATTACHMENT21 = GLenum(36085)
+ GLenum_GL_COLOR_ATTACHMENT22 = GLenum(36086)
+ GLenum_GL_COLOR_ATTACHMENT23 = GLenum(36087)
+ GLenum_GL_COLOR_ATTACHMENT24 = GLenum(36088)
+ GLenum_GL_COLOR_ATTACHMENT25 = GLenum(36089)
+ GLenum_GL_COLOR_ATTACHMENT26 = GLenum(36090)
+ GLenum_GL_COLOR_ATTACHMENT27 = GLenum(36091)
+ GLenum_GL_COLOR_ATTACHMENT28 = GLenum(36092)
+ GLenum_GL_COLOR_ATTACHMENT29 = GLenum(36093)
+ GLenum_GL_COLOR_ATTACHMENT30 = GLenum(36094)
+ GLenum_GL_COLOR_ATTACHMENT31 = GLenum(36095)
+ GLenum_GL_DEPTH_ATTACHMENT = GLenum(36096)
+ GLenum_GL_DEPTH_ATTACHMENT_EXT = GLenum(36096)
+ GLenum_GL_DEPTH_ATTACHMENT_OES = GLenum(36096)
+ GLenum_GL_STENCIL_ATTACHMENT = GLenum(36128)
+ GLenum_GL_STENCIL_ATTACHMENT_EXT = GLenum(36128)
+ GLenum_GL_STENCIL_ATTACHMENT_OES = GLenum(36128)
+ GLenum_GL_FRAMEBUFFER = GLenum(36160)
+ GLenum_GL_FRAMEBUFFER_EXT = GLenum(36160)
+ GLenum_GL_FRAMEBUFFER_OES = GLenum(36160)
+ GLenum_GL_RENDERBUFFER = GLenum(36161)
+ GLenum_GL_RENDERBUFFER_EXT = GLenum(36161)
+ GLenum_GL_RENDERBUFFER_OES = GLenum(36161)
+ GLenum_GL_RENDERBUFFER_WIDTH = GLenum(36162)
+ GLenum_GL_RENDERBUFFER_WIDTH_EXT = GLenum(36162)
+ GLenum_GL_RENDERBUFFER_WIDTH_OES = GLenum(36162)
+ GLenum_GL_RENDERBUFFER_HEIGHT = GLenum(36163)
+ GLenum_GL_RENDERBUFFER_HEIGHT_EXT = GLenum(36163)
+ GLenum_GL_RENDERBUFFER_HEIGHT_OES = GLenum(36163)
+ GLenum_GL_RENDERBUFFER_INTERNAL_FORMAT = GLenum(36164)
+ GLenum_GL_RENDERBUFFER_INTERNAL_FORMAT_EXT = GLenum(36164)
+ GLenum_GL_RENDERBUFFER_INTERNAL_FORMAT_OES = GLenum(36164)
+ GLenum_GL_STENCIL_INDEX1 = GLenum(36166)
+ GLenum_GL_STENCIL_INDEX1_EXT = GLenum(36166)
+ GLenum_GL_STENCIL_INDEX1_OES = GLenum(36166)
+ GLenum_GL_STENCIL_INDEX4 = GLenum(36167)
+ GLenum_GL_STENCIL_INDEX4_EXT = GLenum(36167)
+ GLenum_GL_STENCIL_INDEX4_OES = GLenum(36167)
+ GLenum_GL_STENCIL_INDEX8 = GLenum(36168)
+ GLenum_GL_STENCIL_INDEX8_EXT = GLenum(36168)
+ GLenum_GL_STENCIL_INDEX8_OES = GLenum(36168)
+ GLenum_GL_STENCIL_INDEX16 = GLenum(36169)
+ GLenum_GL_STENCIL_INDEX16_EXT = GLenum(36169)
+ GLenum_GL_RENDERBUFFER_RED_SIZE = GLenum(36176)
+ GLenum_GL_RENDERBUFFER_RED_SIZE_EXT = GLenum(36176)
+ GLenum_GL_RENDERBUFFER_RED_SIZE_OES = GLenum(36176)
+ GLenum_GL_RENDERBUFFER_GREEN_SIZE = GLenum(36177)
+ GLenum_GL_RENDERBUFFER_GREEN_SIZE_EXT = GLenum(36177)
+ GLenum_GL_RENDERBUFFER_GREEN_SIZE_OES = GLenum(36177)
+ GLenum_GL_RENDERBUFFER_BLUE_SIZE = GLenum(36178)
+ GLenum_GL_RENDERBUFFER_BLUE_SIZE_EXT = GLenum(36178)
+ GLenum_GL_RENDERBUFFER_BLUE_SIZE_OES = GLenum(36178)
+ GLenum_GL_RENDERBUFFER_ALPHA_SIZE = GLenum(36179)
+ GLenum_GL_RENDERBUFFER_ALPHA_SIZE_EXT = GLenum(36179)
+ GLenum_GL_RENDERBUFFER_ALPHA_SIZE_OES = GLenum(36179)
+ GLenum_GL_RENDERBUFFER_DEPTH_SIZE = GLenum(36180)
+ GLenum_GL_RENDERBUFFER_DEPTH_SIZE_EXT = GLenum(36180)
+ GLenum_GL_RENDERBUFFER_DEPTH_SIZE_OES = GLenum(36180)
+ GLenum_GL_RENDERBUFFER_STENCIL_SIZE = GLenum(36181)
+ GLenum_GL_RENDERBUFFER_STENCIL_SIZE_EXT = GLenum(36181)
+ GLenum_GL_RENDERBUFFER_STENCIL_SIZE_OES = GLenum(36181)
+ GLenum_GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = GLenum(36182)
+ GLenum_GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE = GLenum(36182)
+ GLenum_GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE = GLenum(36182)
+ GLenum_GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT = GLenum(36182)
+ GLenum_GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV = GLenum(36182)
+ GLenum_GL_MAX_SAMPLES = GLenum(36183)
+ GLenum_GL_MAX_SAMPLES_ANGLE = GLenum(36183)
+ GLenum_GL_MAX_SAMPLES_APPLE = GLenum(36183)
+ GLenum_GL_MAX_SAMPLES_EXT = GLenum(36183)
+ GLenum_GL_MAX_SAMPLES_NV = GLenum(36183)
+ GLenum_GL_TEXTURE_GEN_STR_OES = GLenum(36192)
+ GLenum_GL_HALF_FLOAT_OES = GLenum(36193)
+ GLenum_GL_RGB565_OES = GLenum(36194)
+ GLenum_GL_RGB565 = GLenum(36194)
+ GLenum_GL_ETC1_RGB8_OES = GLenum(36196)
+ GLenum_GL_TEXTURE_EXTERNAL_OES = GLenum(36197)
+ GLenum_GL_SAMPLER_EXTERNAL_OES = GLenum(36198)
+ GLenum_GL_TEXTURE_BINDING_EXTERNAL_OES = GLenum(36199)
+ GLenum_GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES = GLenum(36200)
+ GLenum_GL_PRIMITIVE_RESTART_FIXED_INDEX = GLenum(36201)
+ GLenum_GL_ANY_SAMPLES_PASSED_CONSERVATIVE = GLenum(36202)
+ GLenum_GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT = GLenum(36202)
+ GLenum_GL_MAX_ELEMENT_INDEX = GLenum(36203)
+ GLenum_GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT = GLenum(36204)
+ GLenum_GL_RGBA32UI = GLenum(36208)
+ GLenum_GL_RGBA32UI_EXT = GLenum(36208)
+ GLenum_GL_RGB32UI = GLenum(36209)
+ GLenum_GL_RGB32UI_EXT = GLenum(36209)
+ GLenum_GL_ALPHA32UI_EXT = GLenum(36210)
+ GLenum_GL_INTENSITY32UI_EXT = GLenum(36211)
+ GLenum_GL_LUMINANCE32UI_EXT = GLenum(36212)
+ GLenum_GL_LUMINANCE_ALPHA32UI_EXT = GLenum(36213)
+ GLenum_GL_RGBA16UI = GLenum(36214)
+ GLenum_GL_RGBA16UI_EXT = GLenum(36214)
+ GLenum_GL_RGB16UI = GLenum(36215)
+ GLenum_GL_RGB16UI_EXT = GLenum(36215)
+ GLenum_GL_ALPHA16UI_EXT = GLenum(36216)
+ GLenum_GL_INTENSITY16UI_EXT = GLenum(36217)
+ GLenum_GL_LUMINANCE16UI_EXT = GLenum(36218)
+ GLenum_GL_LUMINANCE_ALPHA16UI_EXT = GLenum(36219)
+ GLenum_GL_RGBA8UI = GLenum(36220)
+ GLenum_GL_RGBA8UI_EXT = GLenum(36220)
+ GLenum_GL_RGB8UI = GLenum(36221)
+ GLenum_GL_RGB8UI_EXT = GLenum(36221)
+ GLenum_GL_ALPHA8UI_EXT = GLenum(36222)
+ GLenum_GL_INTENSITY8UI_EXT = GLenum(36223)
+ GLenum_GL_LUMINANCE8UI_EXT = GLenum(36224)
+ GLenum_GL_LUMINANCE_ALPHA8UI_EXT = GLenum(36225)
+ GLenum_GL_RGBA32I = GLenum(36226)
+ GLenum_GL_RGBA32I_EXT = GLenum(36226)
+ GLenum_GL_RGB32I = GLenum(36227)
+ GLenum_GL_RGB32I_EXT = GLenum(36227)
+ GLenum_GL_ALPHA32I_EXT = GLenum(36228)
+ GLenum_GL_INTENSITY32I_EXT = GLenum(36229)
+ GLenum_GL_LUMINANCE32I_EXT = GLenum(36230)
+ GLenum_GL_LUMINANCE_ALPHA32I_EXT = GLenum(36231)
+ GLenum_GL_RGBA16I = GLenum(36232)
+ GLenum_GL_RGBA16I_EXT = GLenum(36232)
+ GLenum_GL_RGB16I = GLenum(36233)
+ GLenum_GL_RGB16I_EXT = GLenum(36233)
+ GLenum_GL_ALPHA16I_EXT = GLenum(36234)
+ GLenum_GL_INTENSITY16I_EXT = GLenum(36235)
+ GLenum_GL_LUMINANCE16I_EXT = GLenum(36236)
+ GLenum_GL_LUMINANCE_ALPHA16I_EXT = GLenum(36237)
+ GLenum_GL_RGBA8I = GLenum(36238)
+ GLenum_GL_RGBA8I_EXT = GLenum(36238)
+ GLenum_GL_RGB8I = GLenum(36239)
+ GLenum_GL_RGB8I_EXT = GLenum(36239)
+ GLenum_GL_ALPHA8I_EXT = GLenum(36240)
+ GLenum_GL_INTENSITY8I_EXT = GLenum(36241)
+ GLenum_GL_LUMINANCE8I_EXT = GLenum(36242)
+ GLenum_GL_LUMINANCE_ALPHA8I_EXT = GLenum(36243)
+ GLenum_GL_RED_INTEGER = GLenum(36244)
+ GLenum_GL_RED_INTEGER_EXT = GLenum(36244)
+ GLenum_GL_GREEN_INTEGER = GLenum(36245)
+ GLenum_GL_GREEN_INTEGER_EXT = GLenum(36245)
+ GLenum_GL_BLUE_INTEGER = GLenum(36246)
+ GLenum_GL_BLUE_INTEGER_EXT = GLenum(36246)
+ GLenum_GL_ALPHA_INTEGER = GLenum(36247)
+ GLenum_GL_ALPHA_INTEGER_EXT = GLenum(36247)
+ GLenum_GL_RGB_INTEGER = GLenum(36248)
+ GLenum_GL_RGB_INTEGER_EXT = GLenum(36248)
+ GLenum_GL_RGBA_INTEGER = GLenum(36249)
+ GLenum_GL_RGBA_INTEGER_EXT = GLenum(36249)
+ GLenum_GL_BGR_INTEGER = GLenum(36250)
+ GLenum_GL_BGR_INTEGER_EXT = GLenum(36250)
+ GLenum_GL_BGRA_INTEGER = GLenum(36251)
+ GLenum_GL_BGRA_INTEGER_EXT = GLenum(36251)
+ GLenum_GL_LUMINANCE_INTEGER_EXT = GLenum(36252)
+ GLenum_GL_LUMINANCE_ALPHA_INTEGER_EXT = GLenum(36253)
+ GLenum_GL_RGBA_INTEGER_MODE_EXT = GLenum(36254)
+ GLenum_GL_INT_2_10_10_10_REV = GLenum(36255)
+ GLenum_GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV = GLenum(36256)
+ GLenum_GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV = GLenum(36257)
+ GLenum_GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV = GLenum(36258)
+ GLenum_GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV = GLenum(36259)
+ GLenum_GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV = GLenum(36260)
+ GLenum_GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV = GLenum(36261)
+ GLenum_GL_MAX_PROGRAM_GENERIC_RESULTS_NV = GLenum(36262)
+ GLenum_GL_FRAMEBUFFER_ATTACHMENT_LAYERED = GLenum(36263)
+ GLenum_GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB = GLenum(36263)
+ GLenum_GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT = GLenum(36263)
+ GLenum_GL_FRAMEBUFFER_ATTACHMENT_LAYERED_OES = GLenum(36263)
+ GLenum_GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS = GLenum(36264)
+ GLenum_GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB = GLenum(36264)
+ GLenum_GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT = GLenum(36264)
+ GLenum_GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_OES = GLenum(36264)
+ GLenum_GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB = GLenum(36265)
+ GLenum_GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT = GLenum(36265)
+ GLenum_GL_LAYER_NV = GLenum(36266)
+ GLenum_GL_DEPTH_COMPONENT32F_NV = GLenum(36267)
+ GLenum_GL_DEPTH32F_STENCIL8_NV = GLenum(36268)
+ GLenum_GL_FLOAT_32_UNSIGNED_INT_24_8_REV = GLenum(36269)
+ GLenum_GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV = GLenum(36269)
+ GLenum_GL_SHADER_INCLUDE_ARB = GLenum(36270)
+ GLenum_GL_DEPTH_BUFFER_FLOAT_MODE_NV = GLenum(36271)
+ GLenum_GL_FRAMEBUFFER_SRGB = GLenum(36281)
+ GLenum_GL_FRAMEBUFFER_SRGB_EXT = GLenum(36281)
+ GLenum_GL_FRAMEBUFFER_SRGB_CAPABLE_EXT = GLenum(36282)
+ GLenum_GL_COMPRESSED_RED_RGTC1 = GLenum(36283)
+ GLenum_GL_COMPRESSED_RED_RGTC1_EXT = GLenum(36283)
+ GLenum_GL_COMPRESSED_SIGNED_RED_RGTC1 = GLenum(36284)
+ GLenum_GL_COMPRESSED_SIGNED_RED_RGTC1_EXT = GLenum(36284)
+ GLenum_GL_COMPRESSED_RED_GREEN_RGTC2_EXT = GLenum(36285)
+ GLenum_GL_COMPRESSED_RG_RGTC2 = GLenum(36285)
+ GLenum_GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT = GLenum(36286)
+ GLenum_GL_COMPRESSED_SIGNED_RG_RGTC2 = GLenum(36286)
+ GLenum_GL_SAMPLER_1D_ARRAY = GLenum(36288)
+ GLenum_GL_SAMPLER_1D_ARRAY_EXT = GLenum(36288)
+ GLenum_GL_SAMPLER_2D_ARRAY = GLenum(36289)
+ GLenum_GL_SAMPLER_2D_ARRAY_EXT = GLenum(36289)
+ GLenum_GL_SAMPLER_BUFFER = GLenum(36290)
+ GLenum_GL_SAMPLER_BUFFER_EXT = GLenum(36290)
+ GLenum_GL_SAMPLER_BUFFER_OES = GLenum(36290)
+ GLenum_GL_SAMPLER_1D_ARRAY_SHADOW = GLenum(36291)
+ GLenum_GL_SAMPLER_1D_ARRAY_SHADOW_EXT = GLenum(36291)
+ GLenum_GL_SAMPLER_2D_ARRAY_SHADOW = GLenum(36292)
+ GLenum_GL_SAMPLER_2D_ARRAY_SHADOW_EXT = GLenum(36292)
+ GLenum_GL_SAMPLER_2D_ARRAY_SHADOW_NV = GLenum(36292)
+ GLenum_GL_SAMPLER_CUBE_SHADOW = GLenum(36293)
+ GLenum_GL_SAMPLER_CUBE_SHADOW_EXT = GLenum(36293)
+ GLenum_GL_SAMPLER_CUBE_SHADOW_NV = GLenum(36293)
+ GLenum_GL_UNSIGNED_INT_VEC2 = GLenum(36294)
+ GLenum_GL_UNSIGNED_INT_VEC2_EXT = GLenum(36294)
+ GLenum_GL_UNSIGNED_INT_VEC3 = GLenum(36295)
+ GLenum_GL_UNSIGNED_INT_VEC3_EXT = GLenum(36295)
+ GLenum_GL_UNSIGNED_INT_VEC4 = GLenum(36296)
+ GLenum_GL_UNSIGNED_INT_VEC4_EXT = GLenum(36296)
+ GLenum_GL_INT_SAMPLER_1D = GLenum(36297)
+ GLenum_GL_INT_SAMPLER_1D_EXT = GLenum(36297)
+ GLenum_GL_INT_SAMPLER_2D = GLenum(36298)
+ GLenum_GL_INT_SAMPLER_2D_EXT = GLenum(36298)
+ GLenum_GL_INT_SAMPLER_3D = GLenum(36299)
+ GLenum_GL_INT_SAMPLER_3D_EXT = GLenum(36299)
+ GLenum_GL_INT_SAMPLER_CUBE = GLenum(36300)
+ GLenum_GL_INT_SAMPLER_CUBE_EXT = GLenum(36300)
+ GLenum_GL_INT_SAMPLER_2D_RECT = GLenum(36301)
+ GLenum_GL_INT_SAMPLER_2D_RECT_EXT = GLenum(36301)
+ GLenum_GL_INT_SAMPLER_1D_ARRAY = GLenum(36302)
+ GLenum_GL_INT_SAMPLER_1D_ARRAY_EXT = GLenum(36302)
+ GLenum_GL_INT_SAMPLER_2D_ARRAY = GLenum(36303)
+ GLenum_GL_INT_SAMPLER_2D_ARRAY_EXT = GLenum(36303)
+ GLenum_GL_INT_SAMPLER_BUFFER = GLenum(36304)
+ GLenum_GL_INT_SAMPLER_BUFFER_EXT = GLenum(36304)
+ GLenum_GL_INT_SAMPLER_BUFFER_OES = GLenum(36304)
+ GLenum_GL_UNSIGNED_INT_SAMPLER_1D = GLenum(36305)
+ GLenum_GL_UNSIGNED_INT_SAMPLER_1D_EXT = GLenum(36305)
+ GLenum_GL_UNSIGNED_INT_SAMPLER_2D = GLenum(36306)
+ GLenum_GL_UNSIGNED_INT_SAMPLER_2D_EXT = GLenum(36306)
+ GLenum_GL_UNSIGNED_INT_SAMPLER_3D = GLenum(36307)
+ GLenum_GL_UNSIGNED_INT_SAMPLER_3D_EXT = GLenum(36307)
+ GLenum_GL_UNSIGNED_INT_SAMPLER_CUBE = GLenum(36308)
+ GLenum_GL_UNSIGNED_INT_SAMPLER_CUBE_EXT = GLenum(36308)
+ GLenum_GL_UNSIGNED_INT_SAMPLER_2D_RECT = GLenum(36309)
+ GLenum_GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT = GLenum(36309)
+ GLenum_GL_UNSIGNED_INT_SAMPLER_1D_ARRAY = GLenum(36310)
+ GLenum_GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT = GLenum(36310)
+ GLenum_GL_UNSIGNED_INT_SAMPLER_2D_ARRAY = GLenum(36311)
+ GLenum_GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT = GLenum(36311)
+ GLenum_GL_UNSIGNED_INT_SAMPLER_BUFFER = GLenum(36312)
+ GLenum_GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT = GLenum(36312)
+ GLenum_GL_UNSIGNED_INT_SAMPLER_BUFFER_OES = GLenum(36312)
+ GLenum_GL_GEOMETRY_SHADER = GLenum(36313)
+ GLenum_GL_GEOMETRY_SHADER_ARB = GLenum(36313)
+ GLenum_GL_GEOMETRY_SHADER_EXT = GLenum(36313)
+ GLenum_GL_GEOMETRY_SHADER_OES = GLenum(36313)
+ GLenum_GL_GEOMETRY_VERTICES_OUT_ARB = GLenum(36314)
+ GLenum_GL_GEOMETRY_VERTICES_OUT_EXT = GLenum(36314)
+ GLenum_GL_GEOMETRY_INPUT_TYPE_ARB = GLenum(36315)
+ GLenum_GL_GEOMETRY_INPUT_TYPE_EXT = GLenum(36315)
+ GLenum_GL_GEOMETRY_OUTPUT_TYPE_ARB = GLenum(36316)
+ GLenum_GL_GEOMETRY_OUTPUT_TYPE_EXT = GLenum(36316)
+ GLenum_GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB = GLenum(36317)
+ GLenum_GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT = GLenum(36317)
+ GLenum_GL_MAX_VERTEX_VARYING_COMPONENTS_ARB = GLenum(36318)
+ GLenum_GL_MAX_VERTEX_VARYING_COMPONENTS_EXT = GLenum(36318)
+ GLenum_GL_MAX_GEOMETRY_UNIFORM_COMPONENTS = GLenum(36319)
+ GLenum_GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB = GLenum(36319)
+ GLenum_GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT = GLenum(36319)
+ GLenum_GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_OES = GLenum(36319)
+ GLenum_GL_MAX_GEOMETRY_OUTPUT_VERTICES = GLenum(36320)
+ GLenum_GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB = GLenum(36320)
+ GLenum_GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT = GLenum(36320)
+ GLenum_GL_MAX_GEOMETRY_OUTPUT_VERTICES_OES = GLenum(36320)
+ GLenum_GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS = GLenum(36321)
+ GLenum_GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB = GLenum(36321)
+ GLenum_GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT = GLenum(36321)
+ GLenum_GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_OES = GLenum(36321)
+ GLenum_GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT = GLenum(36322)
+ GLenum_GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT = GLenum(36323)
+ GLenum_GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT = GLenum(36324)
+ GLenum_GL_ACTIVE_SUBROUTINES = GLenum(36325)
+ GLenum_GL_ACTIVE_SUBROUTINE_UNIFORMS = GLenum(36326)
+ GLenum_GL_MAX_SUBROUTINES = GLenum(36327)
+ GLenum_GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS = GLenum(36328)
+ GLenum_GL_NAMED_STRING_LENGTH_ARB = GLenum(36329)
+ GLenum_GL_NAMED_STRING_TYPE_ARB = GLenum(36330)
+ GLenum_GL_MAX_BINDABLE_UNIFORM_SIZE_EXT = GLenum(36333)
+ GLenum_GL_UNIFORM_BUFFER_EXT = GLenum(36334)
+ GLenum_GL_UNIFORM_BUFFER_BINDING_EXT = GLenum(36335)
+ GLenum_GL_LOW_FLOAT = GLenum(36336)
+ GLenum_GL_MEDIUM_FLOAT = GLenum(36337)
+ GLenum_GL_HIGH_FLOAT = GLenum(36338)
+ GLenum_GL_LOW_INT = GLenum(36339)
+ GLenum_GL_MEDIUM_INT = GLenum(36340)
+ GLenum_GL_HIGH_INT = GLenum(36341)
+ GLenum_GL_UNSIGNED_INT_10_10_10_2_OES = GLenum(36342)
+ GLenum_GL_INT_10_10_10_2_OES = GLenum(36343)
+ GLenum_GL_SHADER_BINARY_FORMATS = GLenum(36344)
+ GLenum_GL_NUM_SHADER_BINARY_FORMATS = GLenum(36345)
+ GLenum_GL_SHADER_COMPILER = GLenum(36346)
+ GLenum_GL_MAX_VERTEX_UNIFORM_VECTORS = GLenum(36347)
+ GLenum_GL_MAX_VARYING_VECTORS = GLenum(36348)
+ GLenum_GL_MAX_FRAGMENT_UNIFORM_VECTORS = GLenum(36349)
+ GLenum_GL_RENDERBUFFER_COLOR_SAMPLES_NV = GLenum(36368)
+ GLenum_GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV = GLenum(36369)
+ GLenum_GL_MULTISAMPLE_COVERAGE_MODES_NV = GLenum(36370)
+ GLenum_GL_QUERY_WAIT = GLenum(36371)
+ GLenum_GL_QUERY_WAIT_NV = GLenum(36371)
+ GLenum_GL_QUERY_NO_WAIT = GLenum(36372)
+ GLenum_GL_QUERY_NO_WAIT_NV = GLenum(36372)
+ GLenum_GL_QUERY_BY_REGION_WAIT = GLenum(36373)
+ GLenum_GL_QUERY_BY_REGION_WAIT_NV = GLenum(36373)
+ GLenum_GL_QUERY_BY_REGION_NO_WAIT = GLenum(36374)
+ GLenum_GL_QUERY_BY_REGION_NO_WAIT_NV = GLenum(36374)
+ GLenum_GL_QUERY_WAIT_INVERTED = GLenum(36375)
+ GLenum_GL_QUERY_NO_WAIT_INVERTED = GLenum(36376)
+ GLenum_GL_QUERY_BY_REGION_WAIT_INVERTED = GLenum(36377)
+ GLenum_GL_QUERY_BY_REGION_NO_WAIT_INVERTED = GLenum(36378)
+ GLenum_GL_POLYGON_OFFSET_CLAMP_EXT = GLenum(36379)
+ GLenum_GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS = GLenum(36382)
+ GLenum_GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT = GLenum(36382)
+ GLenum_GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_OES = GLenum(36382)
+ GLenum_GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS = GLenum(36383)
+ GLenum_GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT = GLenum(36383)
+ GLenum_GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_OES = GLenum(36383)
+ GLenum_GL_COLOR_SAMPLES_NV = GLenum(36384)
+ GLenum_GL_TRANSFORM_FEEDBACK = GLenum(36386)
+ GLenum_GL_TRANSFORM_FEEDBACK_NV = GLenum(36386)
+ GLenum_GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED = GLenum(36387)
+ GLenum_GL_TRANSFORM_FEEDBACK_PAUSED = GLenum(36387)
+ GLenum_GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV = GLenum(36387)
+ GLenum_GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE = GLenum(36388)
+ GLenum_GL_TRANSFORM_FEEDBACK_ACTIVE = GLenum(36388)
+ GLenum_GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV = GLenum(36388)
+ GLenum_GL_TRANSFORM_FEEDBACK_BINDING = GLenum(36389)
+ GLenum_GL_TRANSFORM_FEEDBACK_BINDING_NV = GLenum(36389)
+ GLenum_GL_FRAME_NV = GLenum(36390)
+ GLenum_GL_FIELDS_NV = GLenum(36391)
+ GLenum_GL_CURRENT_TIME_NV = GLenum(36392)
+ GLenum_GL_TIMESTAMP = GLenum(36392)
+ GLenum_GL_TIMESTAMP_EXT = GLenum(36392)
+ GLenum_GL_NUM_FILL_STREAMS_NV = GLenum(36393)
+ GLenum_GL_PRESENT_TIME_NV = GLenum(36394)
+ GLenum_GL_PRESENT_DURATION_NV = GLenum(36395)
+ GLenum_GL_DEPTH_COMPONENT16_NONLINEAR_NV = GLenum(36396)
+ GLenum_GL_PROGRAM_MATRIX_EXT = GLenum(36397)
+ GLenum_GL_TRANSPOSE_PROGRAM_MATRIX_EXT = GLenum(36398)
+ GLenum_GL_PROGRAM_MATRIX_STACK_DEPTH_EXT = GLenum(36399)
+ GLenum_GL_TEXTURE_SWIZZLE_R = GLenum(36418)
+ GLenum_GL_TEXTURE_SWIZZLE_R_EXT = GLenum(36418)
+ GLenum_GL_TEXTURE_SWIZZLE_G = GLenum(36419)
+ GLenum_GL_TEXTURE_SWIZZLE_G_EXT = GLenum(36419)
+ GLenum_GL_TEXTURE_SWIZZLE_B = GLenum(36420)
+ GLenum_GL_TEXTURE_SWIZZLE_B_EXT = GLenum(36420)
+ GLenum_GL_TEXTURE_SWIZZLE_A = GLenum(36421)
+ GLenum_GL_TEXTURE_SWIZZLE_A_EXT = GLenum(36421)
+ GLenum_GL_TEXTURE_SWIZZLE_RGBA = GLenum(36422)
+ GLenum_GL_TEXTURE_SWIZZLE_RGBA_EXT = GLenum(36422)
+ GLenum_GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS = GLenum(36423)
+ GLenum_GL_ACTIVE_SUBROUTINE_MAX_LENGTH = GLenum(36424)
+ GLenum_GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH = GLenum(36425)
+ GLenum_GL_NUM_COMPATIBLE_SUBROUTINES = GLenum(36426)
+ GLenum_GL_COMPATIBLE_SUBROUTINES = GLenum(36427)
+ GLenum_GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION = GLenum(36428)
+ GLenum_GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT = GLenum(36428)
+ GLenum_GL_FIRST_VERTEX_CONVENTION = GLenum(36429)
+ GLenum_GL_FIRST_VERTEX_CONVENTION_EXT = GLenum(36429)
+ GLenum_GL_FIRST_VERTEX_CONVENTION_OES = GLenum(36429)
+ GLenum_GL_LAST_VERTEX_CONVENTION = GLenum(36430)
+ GLenum_GL_LAST_VERTEX_CONVENTION_EXT = GLenum(36430)
+ GLenum_GL_LAST_VERTEX_CONVENTION_OES = GLenum(36430)
+ GLenum_GL_PROVOKING_VERTEX = GLenum(36431)
+ GLenum_GL_PROVOKING_VERTEX_EXT = GLenum(36431)
+ GLenum_GL_SAMPLE_POSITION = GLenum(36432)
+ GLenum_GL_SAMPLE_POSITION_NV = GLenum(36432)
+ GLenum_GL_SAMPLE_LOCATION_ARB = GLenum(36432)
+ GLenum_GL_SAMPLE_LOCATION_NV = GLenum(36432)
+ GLenum_GL_SAMPLE_MASK = GLenum(36433)
+ GLenum_GL_SAMPLE_MASK_NV = GLenum(36433)
+ GLenum_GL_SAMPLE_MASK_VALUE = GLenum(36434)
+ GLenum_GL_SAMPLE_MASK_VALUE_NV = GLenum(36434)
+ GLenum_GL_TEXTURE_BINDING_RENDERBUFFER_NV = GLenum(36435)
+ GLenum_GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV = GLenum(36436)
+ GLenum_GL_TEXTURE_RENDERBUFFER_NV = GLenum(36437)
+ GLenum_GL_SAMPLER_RENDERBUFFER_NV = GLenum(36438)
+ GLenum_GL_INT_SAMPLER_RENDERBUFFER_NV = GLenum(36439)
+ GLenum_GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV = GLenum(36440)
+ GLenum_GL_MAX_SAMPLE_MASK_WORDS = GLenum(36441)
+ GLenum_GL_MAX_SAMPLE_MASK_WORDS_NV = GLenum(36441)
+ GLenum_GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV = GLenum(36442)
+ GLenum_GL_MAX_GEOMETRY_SHADER_INVOCATIONS = GLenum(36442)
+ GLenum_GL_MAX_GEOMETRY_SHADER_INVOCATIONS_EXT = GLenum(36442)
+ GLenum_GL_MAX_GEOMETRY_SHADER_INVOCATIONS_OES = GLenum(36442)
+ GLenum_GL_MIN_FRAGMENT_INTERPOLATION_OFFSET = GLenum(36443)
+ GLenum_GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_OES = GLenum(36443)
+ GLenum_GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV = GLenum(36443)
+ GLenum_GL_MAX_FRAGMENT_INTERPOLATION_OFFSET = GLenum(36444)
+ GLenum_GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_OES = GLenum(36444)
+ GLenum_GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV = GLenum(36444)
+ GLenum_GL_FRAGMENT_INTERPOLATION_OFFSET_BITS = GLenum(36445)
+ GLenum_GL_FRAGMENT_INTERPOLATION_OFFSET_BITS_OES = GLenum(36445)
+ GLenum_GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV = GLenum(36445)
+ GLenum_GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET = GLenum(36446)
+ GLenum_GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB = GLenum(36446)
+ GLenum_GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV = GLenum(36446)
+ GLenum_GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET = GLenum(36447)
+ GLenum_GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB = GLenum(36447)
+ GLenum_GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV = GLenum(36447)
+ GLenum_GL_MAX_TRANSFORM_FEEDBACK_BUFFERS = GLenum(36464)
+ GLenum_GL_MAX_VERTEX_STREAMS = GLenum(36465)
+ GLenum_GL_PATCH_VERTICES = GLenum(36466)
+ GLenum_GL_PATCH_VERTICES_EXT = GLenum(36466)
+ GLenum_GL_PATCH_VERTICES_OES = GLenum(36466)
+ GLenum_GL_PATCH_DEFAULT_INNER_LEVEL = GLenum(36467)
+ GLenum_GL_PATCH_DEFAULT_INNER_LEVEL_EXT = GLenum(36467)
+ GLenum_GL_PATCH_DEFAULT_OUTER_LEVEL = GLenum(36468)
+ GLenum_GL_PATCH_DEFAULT_OUTER_LEVEL_EXT = GLenum(36468)
+ GLenum_GL_TESS_CONTROL_OUTPUT_VERTICES = GLenum(36469)
+ GLenum_GL_TESS_CONTROL_OUTPUT_VERTICES_EXT = GLenum(36469)
+ GLenum_GL_TESS_CONTROL_OUTPUT_VERTICES_OES = GLenum(36469)
+ GLenum_GL_TESS_GEN_MODE = GLenum(36470)
+ GLenum_GL_TESS_GEN_MODE_EXT = GLenum(36470)
+ GLenum_GL_TESS_GEN_MODE_OES = GLenum(36470)
+ GLenum_GL_TESS_GEN_SPACING = GLenum(36471)
+ GLenum_GL_TESS_GEN_SPACING_EXT = GLenum(36471)
+ GLenum_GL_TESS_GEN_SPACING_OES = GLenum(36471)
+ GLenum_GL_TESS_GEN_VERTEX_ORDER = GLenum(36472)
+ GLenum_GL_TESS_GEN_VERTEX_ORDER_EXT = GLenum(36472)
+ GLenum_GL_TESS_GEN_VERTEX_ORDER_OES = GLenum(36472)
+ GLenum_GL_TESS_GEN_POINT_MODE = GLenum(36473)
+ GLenum_GL_TESS_GEN_POINT_MODE_EXT = GLenum(36473)
+ GLenum_GL_TESS_GEN_POINT_MODE_OES = GLenum(36473)
+ GLenum_GL_ISOLINES = GLenum(36474)
+ GLenum_GL_ISOLINES_EXT = GLenum(36474)
+ GLenum_GL_ISOLINES_OES = GLenum(36474)
+ GLenum_GL_FRACTIONAL_ODD = GLenum(36475)
+ GLenum_GL_FRACTIONAL_ODD_EXT = GLenum(36475)
+ GLenum_GL_FRACTIONAL_ODD_OES = GLenum(36475)
+ GLenum_GL_FRACTIONAL_EVEN = GLenum(36476)
+ GLenum_GL_FRACTIONAL_EVEN_EXT = GLenum(36476)
+ GLenum_GL_FRACTIONAL_EVEN_OES = GLenum(36476)
+ GLenum_GL_MAX_PATCH_VERTICES = GLenum(36477)
+ GLenum_GL_MAX_PATCH_VERTICES_EXT = GLenum(36477)
+ GLenum_GL_MAX_PATCH_VERTICES_OES = GLenum(36477)
+ GLenum_GL_MAX_TESS_GEN_LEVEL = GLenum(36478)
+ GLenum_GL_MAX_TESS_GEN_LEVEL_EXT = GLenum(36478)
+ GLenum_GL_MAX_TESS_GEN_LEVEL_OES = GLenum(36478)
+ GLenum_GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS = GLenum(36479)
+ GLenum_GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_EXT = GLenum(36479)
+ GLenum_GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_OES = GLenum(36479)
+ GLenum_GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS = GLenum(36480)
+ GLenum_GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT = GLenum(36480)
+ GLenum_GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_OES = GLenum(36480)
+ GLenum_GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS = GLenum(36481)
+ GLenum_GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_EXT = GLenum(36481)
+ GLenum_GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_OES = GLenum(36481)
+ GLenum_GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS = GLenum(36482)
+ GLenum_GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_EXT = GLenum(36482)
+ GLenum_GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_OES = GLenum(36482)
+ GLenum_GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS = GLenum(36483)
+ GLenum_GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_EXT = GLenum(36483)
+ GLenum_GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_OES = GLenum(36483)
+ GLenum_GL_MAX_TESS_PATCH_COMPONENTS = GLenum(36484)
+ GLenum_GL_MAX_TESS_PATCH_COMPONENTS_EXT = GLenum(36484)
+ GLenum_GL_MAX_TESS_PATCH_COMPONENTS_OES = GLenum(36484)
+ GLenum_GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS = GLenum(36485)
+ GLenum_GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_EXT = GLenum(36485)
+ GLenum_GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_OES = GLenum(36485)
+ GLenum_GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS = GLenum(36486)
+ GLenum_GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_EXT = GLenum(36486)
+ GLenum_GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_OES = GLenum(36486)
+ GLenum_GL_TESS_EVALUATION_SHADER = GLenum(36487)
+ GLenum_GL_TESS_EVALUATION_SHADER_EXT = GLenum(36487)
+ GLenum_GL_TESS_EVALUATION_SHADER_OES = GLenum(36487)
+ GLenum_GL_TESS_CONTROL_SHADER = GLenum(36488)
+ GLenum_GL_TESS_CONTROL_SHADER_EXT = GLenum(36488)
+ GLenum_GL_TESS_CONTROL_SHADER_OES = GLenum(36488)
+ GLenum_GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS = GLenum(36489)
+ GLenum_GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_EXT = GLenum(36489)
+ GLenum_GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_OES = GLenum(36489)
+ GLenum_GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS = GLenum(36490)
+ GLenum_GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_EXT = GLenum(36490)
+ GLenum_GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_OES = GLenum(36490)
+ GLenum_GL_COMPRESSED_RGBA_BPTC_UNORM = GLenum(36492)
+ GLenum_GL_COMPRESSED_RGBA_BPTC_UNORM_ARB = GLenum(36492)
+ GLenum_GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM = GLenum(36493)
+ GLenum_GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB = GLenum(36493)
+ GLenum_GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT = GLenum(36494)
+ GLenum_GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB = GLenum(36494)
+ GLenum_GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT = GLenum(36495)
+ GLenum_GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB = GLenum(36495)
+ GLenum_GL_COVERAGE_COMPONENT_NV = GLenum(36560)
+ GLenum_GL_COVERAGE_COMPONENT4_NV = GLenum(36561)
+ GLenum_GL_COVERAGE_ATTACHMENT_NV = GLenum(36562)
+ GLenum_GL_COVERAGE_BUFFERS_NV = GLenum(36563)
+ GLenum_GL_COVERAGE_SAMPLES_NV = GLenum(36564)
+ GLenum_GL_COVERAGE_ALL_FRAGMENTS_NV = GLenum(36565)
+ GLenum_GL_COVERAGE_EDGE_FRAGMENTS_NV = GLenum(36566)
+ GLenum_GL_COVERAGE_AUTOMATIC_NV = GLenum(36567)
+ GLenum_GL_BUFFER_GPU_ADDRESS_NV = GLenum(36637)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV = GLenum(36638)
+ GLenum_GL_ELEMENT_ARRAY_UNIFIED_NV = GLenum(36639)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV = GLenum(36640)
+ GLenum_GL_VERTEX_ARRAY_ADDRESS_NV = GLenum(36641)
+ GLenum_GL_NORMAL_ARRAY_ADDRESS_NV = GLenum(36642)
+ GLenum_GL_COLOR_ARRAY_ADDRESS_NV = GLenum(36643)
+ GLenum_GL_INDEX_ARRAY_ADDRESS_NV = GLenum(36644)
+ GLenum_GL_TEXTURE_COORD_ARRAY_ADDRESS_NV = GLenum(36645)
+ GLenum_GL_EDGE_FLAG_ARRAY_ADDRESS_NV = GLenum(36646)
+ GLenum_GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV = GLenum(36647)
+ GLenum_GL_FOG_COORD_ARRAY_ADDRESS_NV = GLenum(36648)
+ GLenum_GL_ELEMENT_ARRAY_ADDRESS_NV = GLenum(36649)
+ GLenum_GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV = GLenum(36650)
+ GLenum_GL_VERTEX_ARRAY_LENGTH_NV = GLenum(36651)
+ GLenum_GL_NORMAL_ARRAY_LENGTH_NV = GLenum(36652)
+ GLenum_GL_COLOR_ARRAY_LENGTH_NV = GLenum(36653)
+ GLenum_GL_INDEX_ARRAY_LENGTH_NV = GLenum(36654)
+ GLenum_GL_TEXTURE_COORD_ARRAY_LENGTH_NV = GLenum(36655)
+ GLenum_GL_EDGE_FLAG_ARRAY_LENGTH_NV = GLenum(36656)
+ GLenum_GL_SECONDARY_COLOR_ARRAY_LENGTH_NV = GLenum(36657)
+ GLenum_GL_FOG_COORD_ARRAY_LENGTH_NV = GLenum(36658)
+ GLenum_GL_ELEMENT_ARRAY_LENGTH_NV = GLenum(36659)
+ GLenum_GL_GPU_ADDRESS_NV = GLenum(36660)
+ GLenum_GL_MAX_SHADER_BUFFER_ADDRESS_NV = GLenum(36661)
+ GLenum_GL_COPY_READ_BUFFER = GLenum(36662)
+ GLenum_GL_COPY_READ_BUFFER_NV = GLenum(36662)
+ GLenum_GL_COPY_READ_BUFFER_BINDING = GLenum(36662)
+ GLenum_GL_COPY_WRITE_BUFFER = GLenum(36663)
+ GLenum_GL_COPY_WRITE_BUFFER_NV = GLenum(36663)
+ GLenum_GL_COPY_WRITE_BUFFER_BINDING = GLenum(36663)
+ GLenum_GL_MAX_IMAGE_UNITS = GLenum(36664)
+ GLenum_GL_MAX_IMAGE_UNITS_EXT = GLenum(36664)
+ GLenum_GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS = GLenum(36665)
+ GLenum_GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT = GLenum(36665)
+ GLenum_GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES = GLenum(36665)
+ GLenum_GL_IMAGE_BINDING_NAME = GLenum(36666)
+ GLenum_GL_IMAGE_BINDING_NAME_EXT = GLenum(36666)
+ GLenum_GL_IMAGE_BINDING_LEVEL = GLenum(36667)
+ GLenum_GL_IMAGE_BINDING_LEVEL_EXT = GLenum(36667)
+ GLenum_GL_IMAGE_BINDING_LAYERED = GLenum(36668)
+ GLenum_GL_IMAGE_BINDING_LAYERED_EXT = GLenum(36668)
+ GLenum_GL_IMAGE_BINDING_LAYER = GLenum(36669)
+ GLenum_GL_IMAGE_BINDING_LAYER_EXT = GLenum(36669)
+ GLenum_GL_IMAGE_BINDING_ACCESS = GLenum(36670)
+ GLenum_GL_IMAGE_BINDING_ACCESS_EXT = GLenum(36670)
+ GLenum_GL_DRAW_INDIRECT_BUFFER = GLenum(36671)
+ GLenum_GL_DRAW_INDIRECT_UNIFIED_NV = GLenum(36672)
+ GLenum_GL_DRAW_INDIRECT_ADDRESS_NV = GLenum(36673)
+ GLenum_GL_DRAW_INDIRECT_LENGTH_NV = GLenum(36674)
+ GLenum_GL_DRAW_INDIRECT_BUFFER_BINDING = GLenum(36675)
+ GLenum_GL_MAX_PROGRAM_SUBROUTINE_PARAMETERS_NV = GLenum(36676)
+ GLenum_GL_MAX_PROGRAM_SUBROUTINE_NUM_NV = GLenum(36677)
+ GLenum_GL_DOUBLE_MAT2 = GLenum(36678)
+ GLenum_GL_DOUBLE_MAT2_EXT = GLenum(36678)
+ GLenum_GL_DOUBLE_MAT3 = GLenum(36679)
+ GLenum_GL_DOUBLE_MAT3_EXT = GLenum(36679)
+ GLenum_GL_DOUBLE_MAT4 = GLenum(36680)
+ GLenum_GL_DOUBLE_MAT4_EXT = GLenum(36680)
+ GLenum_GL_DOUBLE_MAT2x3 = GLenum(36681)
+ GLenum_GL_DOUBLE_MAT2x3_EXT = GLenum(36681)
+ GLenum_GL_DOUBLE_MAT2x4 = GLenum(36682)
+ GLenum_GL_DOUBLE_MAT2x4_EXT = GLenum(36682)
+ GLenum_GL_DOUBLE_MAT3x2 = GLenum(36683)
+ GLenum_GL_DOUBLE_MAT3x2_EXT = GLenum(36683)
+ GLenum_GL_DOUBLE_MAT3x4 = GLenum(36684)
+ GLenum_GL_DOUBLE_MAT3x4_EXT = GLenum(36684)
+ GLenum_GL_DOUBLE_MAT4x2 = GLenum(36685)
+ GLenum_GL_DOUBLE_MAT4x2_EXT = GLenum(36685)
+ GLenum_GL_DOUBLE_MAT4x3 = GLenum(36686)
+ GLenum_GL_DOUBLE_MAT4x3_EXT = GLenum(36686)
+ GLenum_GL_VERTEX_BINDING_BUFFER = GLenum(36687)
+ GLenum_GL_MALI_SHADER_BINARY_ARM = GLenum(36704)
+ GLenum_GL_MALI_PROGRAM_BINARY_ARM = GLenum(36705)
+ GLenum_GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT = GLenum(36707)
+ GLenum_GL_SHADER_PIXEL_LOCAL_STORAGE_EXT = GLenum(36708)
+ GLenum_GL_FETCH_PER_SAMPLE_ARM = GLenum(36709)
+ GLenum_GL_FRAGMENT_SHADER_FRAMEBUFFER_FETCH_MRT_ARM = GLenum(36710)
+ GLenum_GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_SIZE_EXT = GLenum(36711)
+ GLenum_GL_RED_SNORM = GLenum(36752)
+ GLenum_GL_RG_SNORM = GLenum(36753)
+ GLenum_GL_RGB_SNORM = GLenum(36754)
+ GLenum_GL_RGBA_SNORM = GLenum(36755)
+ GLenum_GL_R8_SNORM = GLenum(36756)
+ GLenum_GL_RG8_SNORM = GLenum(36757)
+ GLenum_GL_RGB8_SNORM = GLenum(36758)
+ GLenum_GL_RGBA8_SNORM = GLenum(36759)
+ GLenum_GL_R16_SNORM = GLenum(36760)
+ GLenum_GL_R16_SNORM_EXT = GLenum(36760)
+ GLenum_GL_RG16_SNORM = GLenum(36761)
+ GLenum_GL_RG16_SNORM_EXT = GLenum(36761)
+ GLenum_GL_RGB16_SNORM = GLenum(36762)
+ GLenum_GL_RGB16_SNORM_EXT = GLenum(36762)
+ GLenum_GL_RGBA16_SNORM = GLenum(36763)
+ GLenum_GL_RGBA16_SNORM_EXT = GLenum(36763)
+ GLenum_GL_SIGNED_NORMALIZED = GLenum(36764)
+ GLenum_GL_PRIMITIVE_RESTART = GLenum(36765)
+ GLenum_GL_PRIMITIVE_RESTART_INDEX = GLenum(36766)
+ GLenum_GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB = GLenum(36767)
+ GLenum_GL_PERFMON_GLOBAL_MODE_QCOM = GLenum(36768)
+ GLenum_GL_BINNING_CONTROL_HINT_QCOM = GLenum(36784)
+ GLenum_GL_CPU_OPTIMIZED_QCOM = GLenum(36785)
+ GLenum_GL_GPU_OPTIMIZED_QCOM = GLenum(36786)
+ GLenum_GL_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM = GLenum(36787)
+ GLenum_GL_GPU_DISJOINT_EXT = GLenum(36795)
+ GLenum_GL_SR8_EXT = GLenum(36797)
+ GLenum_GL_SRG8_EXT = GLenum(36798)
+ GLenum_GL_SHADER_BINARY_VIV = GLenum(36804)
+ GLenum_GL_INT8_NV = GLenum(36832)
+ GLenum_GL_INT8_VEC2_NV = GLenum(36833)
+ GLenum_GL_INT8_VEC3_NV = GLenum(36834)
+ GLenum_GL_INT8_VEC4_NV = GLenum(36835)
+ GLenum_GL_INT16_NV = GLenum(36836)
+ GLenum_GL_INT16_VEC2_NV = GLenum(36837)
+ GLenum_GL_INT16_VEC3_NV = GLenum(36838)
+ GLenum_GL_INT16_VEC4_NV = GLenum(36839)
+ GLenum_GL_INT64_VEC2_ARB = GLenum(36841)
+ GLenum_GL_INT64_VEC2_NV = GLenum(36841)
+ GLenum_GL_INT64_VEC3_ARB = GLenum(36842)
+ GLenum_GL_INT64_VEC3_NV = GLenum(36842)
+ GLenum_GL_INT64_VEC4_ARB = GLenum(36843)
+ GLenum_GL_INT64_VEC4_NV = GLenum(36843)
+ GLenum_GL_UNSIGNED_INT8_NV = GLenum(36844)
+ GLenum_GL_UNSIGNED_INT8_VEC2_NV = GLenum(36845)
+ GLenum_GL_UNSIGNED_INT8_VEC3_NV = GLenum(36846)
+ GLenum_GL_UNSIGNED_INT8_VEC4_NV = GLenum(36847)
+ GLenum_GL_UNSIGNED_INT16_NV = GLenum(36848)
+ GLenum_GL_UNSIGNED_INT16_VEC2_NV = GLenum(36849)
+ GLenum_GL_UNSIGNED_INT16_VEC3_NV = GLenum(36850)
+ GLenum_GL_UNSIGNED_INT16_VEC4_NV = GLenum(36851)
+ GLenum_GL_UNSIGNED_INT64_VEC2_ARB = GLenum(36853)
+ GLenum_GL_UNSIGNED_INT64_VEC2_NV = GLenum(36853)
+ GLenum_GL_UNSIGNED_INT64_VEC3_ARB = GLenum(36854)
+ GLenum_GL_UNSIGNED_INT64_VEC3_NV = GLenum(36854)
+ GLenum_GL_UNSIGNED_INT64_VEC4_ARB = GLenum(36855)
+ GLenum_GL_UNSIGNED_INT64_VEC4_NV = GLenum(36855)
+ GLenum_GL_FLOAT16_NV = GLenum(36856)
+ GLenum_GL_FLOAT16_VEC2_NV = GLenum(36857)
+ GLenum_GL_FLOAT16_VEC3_NV = GLenum(36858)
+ GLenum_GL_FLOAT16_VEC4_NV = GLenum(36859)
+ GLenum_GL_DOUBLE_VEC2 = GLenum(36860)
+ GLenum_GL_DOUBLE_VEC2_EXT = GLenum(36860)
+ GLenum_GL_DOUBLE_VEC3 = GLenum(36861)
+ GLenum_GL_DOUBLE_VEC3_EXT = GLenum(36861)
+ GLenum_GL_DOUBLE_VEC4 = GLenum(36862)
+ GLenum_GL_DOUBLE_VEC4_EXT = GLenum(36862)
+ GLenum_GL_SAMPLER_BUFFER_AMD = GLenum(36865)
+ GLenum_GL_INT_SAMPLER_BUFFER_AMD = GLenum(36866)
+ GLenum_GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD = GLenum(36867)
+ GLenum_GL_TESSELLATION_MODE_AMD = GLenum(36868)
+ GLenum_GL_TESSELLATION_FACTOR_AMD = GLenum(36869)
+ GLenum_GL_DISCRETE_AMD = GLenum(36870)
+ GLenum_GL_CONTINUOUS_AMD = GLenum(36871)
+ GLenum_GL_TEXTURE_CUBE_MAP_ARRAY = GLenum(36873)
+ GLenum_GL_TEXTURE_CUBE_MAP_ARRAY_ARB = GLenum(36873)
+ GLenum_GL_TEXTURE_CUBE_MAP_ARRAY_EXT = GLenum(36873)
+ GLenum_GL_TEXTURE_CUBE_MAP_ARRAY_OES = GLenum(36873)
+ GLenum_GL_TEXTURE_BINDING_CUBE_MAP_ARRAY = GLenum(36874)
+ GLenum_GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB = GLenum(36874)
+ GLenum_GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_EXT = GLenum(36874)
+ GLenum_GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_OES = GLenum(36874)
+ GLenum_GL_PROXY_TEXTURE_CUBE_MAP_ARRAY = GLenum(36875)
+ GLenum_GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB = GLenum(36875)
+ GLenum_GL_SAMPLER_CUBE_MAP_ARRAY = GLenum(36876)
+ GLenum_GL_SAMPLER_CUBE_MAP_ARRAY_ARB = GLenum(36876)
+ GLenum_GL_SAMPLER_CUBE_MAP_ARRAY_EXT = GLenum(36876)
+ GLenum_GL_SAMPLER_CUBE_MAP_ARRAY_OES = GLenum(36876)
+ GLenum_GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW = GLenum(36877)
+ GLenum_GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB = GLenum(36877)
+ GLenum_GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_EXT = GLenum(36877)
+ GLenum_GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_OES = GLenum(36877)
+ GLenum_GL_INT_SAMPLER_CUBE_MAP_ARRAY = GLenum(36878)
+ GLenum_GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB = GLenum(36878)
+ GLenum_GL_INT_SAMPLER_CUBE_MAP_ARRAY_EXT = GLenum(36878)
+ GLenum_GL_INT_SAMPLER_CUBE_MAP_ARRAY_OES = GLenum(36878)
+ GLenum_GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY = GLenum(36879)
+ GLenum_GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB = GLenum(36879)
+ GLenum_GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_EXT = GLenum(36879)
+ GLenum_GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_OES = GLenum(36879)
+ GLenum_GL_ALPHA_SNORM = GLenum(36880)
+ GLenum_GL_LUMINANCE_SNORM = GLenum(36881)
+ GLenum_GL_LUMINANCE_ALPHA_SNORM = GLenum(36882)
+ GLenum_GL_INTENSITY_SNORM = GLenum(36883)
+ GLenum_GL_ALPHA8_SNORM = GLenum(36884)
+ GLenum_GL_LUMINANCE8_SNORM = GLenum(36885)
+ GLenum_GL_LUMINANCE8_ALPHA8_SNORM = GLenum(36886)
+ GLenum_GL_INTENSITY8_SNORM = GLenum(36887)
+ GLenum_GL_ALPHA16_SNORM = GLenum(36888)
+ GLenum_GL_LUMINANCE16_SNORM = GLenum(36889)
+ GLenum_GL_LUMINANCE16_ALPHA16_SNORM = GLenum(36890)
+ GLenum_GL_INTENSITY16_SNORM = GLenum(36891)
+ GLenum_GL_FACTOR_MIN_AMD = GLenum(36892)
+ GLenum_GL_FACTOR_MAX_AMD = GLenum(36893)
+ GLenum_GL_DEPTH_CLAMP_NEAR_AMD = GLenum(36894)
+ GLenum_GL_DEPTH_CLAMP_FAR_AMD = GLenum(36895)
+ GLenum_GL_VIDEO_BUFFER_NV = GLenum(36896)
+ GLenum_GL_VIDEO_BUFFER_BINDING_NV = GLenum(36897)
+ GLenum_GL_FIELD_UPPER_NV = GLenum(36898)
+ GLenum_GL_FIELD_LOWER_NV = GLenum(36899)
+ GLenum_GL_NUM_VIDEO_CAPTURE_STREAMS_NV = GLenum(36900)
+ GLenum_GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV = GLenum(36901)
+ GLenum_GL_VIDEO_CAPTURE_TO_422_SUPPORTED_NV = GLenum(36902)
+ GLenum_GL_LAST_VIDEO_CAPTURE_STATUS_NV = GLenum(36903)
+ GLenum_GL_VIDEO_BUFFER_PITCH_NV = GLenum(36904)
+ GLenum_GL_VIDEO_COLOR_CONVERSION_MATRIX_NV = GLenum(36905)
+ GLenum_GL_VIDEO_COLOR_CONVERSION_MAX_NV = GLenum(36906)
+ GLenum_GL_VIDEO_COLOR_CONVERSION_MIN_NV = GLenum(36907)
+ GLenum_GL_VIDEO_COLOR_CONVERSION_OFFSET_NV = GLenum(36908)
+ GLenum_GL_VIDEO_BUFFER_INTERNAL_FORMAT_NV = GLenum(36909)
+ GLenum_GL_PARTIAL_SUCCESS_NV = GLenum(36910)
+ GLenum_GL_SUCCESS_NV = GLenum(36911)
+ GLenum_GL_FAILURE_NV = GLenum(36912)
+ GLenum_GL_YCBYCR8_422_NV = GLenum(36913)
+ GLenum_GL_YCBAYCR8A_4224_NV = GLenum(36914)
+ GLenum_GL_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV = GLenum(36915)
+ GLenum_GL_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV = GLenum(36916)
+ GLenum_GL_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV = GLenum(36917)
+ GLenum_GL_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV = GLenum(36918)
+ GLenum_GL_Z4Y12Z4CB12Z4CR12_444_NV = GLenum(36919)
+ GLenum_GL_VIDEO_CAPTURE_FRAME_WIDTH_NV = GLenum(36920)
+ GLenum_GL_VIDEO_CAPTURE_FRAME_HEIGHT_NV = GLenum(36921)
+ GLenum_GL_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV = GLenum(36922)
+ GLenum_GL_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV = GLenum(36923)
+ GLenum_GL_VIDEO_CAPTURE_SURFACE_ORIGIN_NV = GLenum(36924)
+ GLenum_GL_TEXTURE_COVERAGE_SAMPLES_NV = GLenum(36933)
+ GLenum_GL_TEXTURE_COLOR_SAMPLES_NV = GLenum(36934)
+ GLenum_GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX = GLenum(36935)
+ GLenum_GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX = GLenum(36936)
+ GLenum_GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX = GLenum(36937)
+ GLenum_GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX = GLenum(36938)
+ GLenum_GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX = GLenum(36939)
+ GLenum_GL_IMAGE_1D = GLenum(36940)
+ GLenum_GL_IMAGE_1D_EXT = GLenum(36940)
+ GLenum_GL_IMAGE_2D = GLenum(36941)
+ GLenum_GL_IMAGE_2D_EXT = GLenum(36941)
+ GLenum_GL_IMAGE_3D = GLenum(36942)
+ GLenum_GL_IMAGE_3D_EXT = GLenum(36942)
+ GLenum_GL_IMAGE_2D_RECT = GLenum(36943)
+ GLenum_GL_IMAGE_2D_RECT_EXT = GLenum(36943)
+ GLenum_GL_IMAGE_CUBE = GLenum(36944)
+ GLenum_GL_IMAGE_CUBE_EXT = GLenum(36944)
+ GLenum_GL_IMAGE_BUFFER = GLenum(36945)
+ GLenum_GL_IMAGE_BUFFER_EXT = GLenum(36945)
+ GLenum_GL_IMAGE_BUFFER_OES = GLenum(36945)
+ GLenum_GL_IMAGE_1D_ARRAY = GLenum(36946)
+ GLenum_GL_IMAGE_1D_ARRAY_EXT = GLenum(36946)
+ GLenum_GL_IMAGE_2D_ARRAY = GLenum(36947)
+ GLenum_GL_IMAGE_2D_ARRAY_EXT = GLenum(36947)
+ GLenum_GL_IMAGE_CUBE_MAP_ARRAY = GLenum(36948)
+ GLenum_GL_IMAGE_CUBE_MAP_ARRAY_EXT = GLenum(36948)
+ GLenum_GL_IMAGE_CUBE_MAP_ARRAY_OES = GLenum(36948)
+ GLenum_GL_IMAGE_2D_MULTISAMPLE = GLenum(36949)
+ GLenum_GL_IMAGE_2D_MULTISAMPLE_EXT = GLenum(36949)
+ GLenum_GL_IMAGE_2D_MULTISAMPLE_ARRAY = GLenum(36950)
+ GLenum_GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT = GLenum(36950)
+ GLenum_GL_INT_IMAGE_1D = GLenum(36951)
+ GLenum_GL_INT_IMAGE_1D_EXT = GLenum(36951)
+ GLenum_GL_INT_IMAGE_2D = GLenum(36952)
+ GLenum_GL_INT_IMAGE_2D_EXT = GLenum(36952)
+ GLenum_GL_INT_IMAGE_3D = GLenum(36953)
+ GLenum_GL_INT_IMAGE_3D_EXT = GLenum(36953)
+ GLenum_GL_INT_IMAGE_2D_RECT = GLenum(36954)
+ GLenum_GL_INT_IMAGE_2D_RECT_EXT = GLenum(36954)
+ GLenum_GL_INT_IMAGE_CUBE = GLenum(36955)
+ GLenum_GL_INT_IMAGE_CUBE_EXT = GLenum(36955)
+ GLenum_GL_INT_IMAGE_BUFFER = GLenum(36956)
+ GLenum_GL_INT_IMAGE_BUFFER_EXT = GLenum(36956)
+ GLenum_GL_INT_IMAGE_BUFFER_OES = GLenum(36956)
+ GLenum_GL_INT_IMAGE_1D_ARRAY = GLenum(36957)
+ GLenum_GL_INT_IMAGE_1D_ARRAY_EXT = GLenum(36957)
+ GLenum_GL_INT_IMAGE_2D_ARRAY = GLenum(36958)
+ GLenum_GL_INT_IMAGE_2D_ARRAY_EXT = GLenum(36958)
+ GLenum_GL_INT_IMAGE_CUBE_MAP_ARRAY = GLenum(36959)
+ GLenum_GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT = GLenum(36959)
+ GLenum_GL_INT_IMAGE_CUBE_MAP_ARRAY_OES = GLenum(36959)
+ GLenum_GL_INT_IMAGE_2D_MULTISAMPLE = GLenum(36960)
+ GLenum_GL_INT_IMAGE_2D_MULTISAMPLE_EXT = GLenum(36960)
+ GLenum_GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY = GLenum(36961)
+ GLenum_GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT = GLenum(36961)
+ GLenum_GL_UNSIGNED_INT_IMAGE_1D = GLenum(36962)
+ GLenum_GL_UNSIGNED_INT_IMAGE_1D_EXT = GLenum(36962)
+ GLenum_GL_UNSIGNED_INT_IMAGE_2D = GLenum(36963)
+ GLenum_GL_UNSIGNED_INT_IMAGE_2D_EXT = GLenum(36963)
+ GLenum_GL_UNSIGNED_INT_IMAGE_3D = GLenum(36964)
+ GLenum_GL_UNSIGNED_INT_IMAGE_3D_EXT = GLenum(36964)
+ GLenum_GL_UNSIGNED_INT_IMAGE_2D_RECT = GLenum(36965)
+ GLenum_GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT = GLenum(36965)
+ GLenum_GL_UNSIGNED_INT_IMAGE_CUBE = GLenum(36966)
+ GLenum_GL_UNSIGNED_INT_IMAGE_CUBE_EXT = GLenum(36966)
+ GLenum_GL_UNSIGNED_INT_IMAGE_BUFFER = GLenum(36967)
+ GLenum_GL_UNSIGNED_INT_IMAGE_BUFFER_EXT = GLenum(36967)
+ GLenum_GL_UNSIGNED_INT_IMAGE_BUFFER_OES = GLenum(36967)
+ GLenum_GL_UNSIGNED_INT_IMAGE_1D_ARRAY = GLenum(36968)
+ GLenum_GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT = GLenum(36968)
+ GLenum_GL_UNSIGNED_INT_IMAGE_2D_ARRAY = GLenum(36969)
+ GLenum_GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT = GLenum(36969)
+ GLenum_GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY = GLenum(36970)
+ GLenum_GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT = GLenum(36970)
+ GLenum_GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_OES = GLenum(36970)
+ GLenum_GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE = GLenum(36971)
+ GLenum_GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT = GLenum(36971)
+ GLenum_GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY = GLenum(36972)
+ GLenum_GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT = GLenum(36972)
+ GLenum_GL_MAX_IMAGE_SAMPLES = GLenum(36973)
+ GLenum_GL_MAX_IMAGE_SAMPLES_EXT = GLenum(36973)
+ GLenum_GL_IMAGE_BINDING_FORMAT = GLenum(36974)
+ GLenum_GL_IMAGE_BINDING_FORMAT_EXT = GLenum(36974)
+ GLenum_GL_RGB10_A2UI = GLenum(36975)
+ GLenum_GL_PATH_FORMAT_SVG_NV = GLenum(36976)
+ GLenum_GL_PATH_FORMAT_PS_NV = GLenum(36977)
+ GLenum_GL_STANDARD_FONT_NAME_NV = GLenum(36978)
+ GLenum_GL_SYSTEM_FONT_NAME_NV = GLenum(36979)
+ GLenum_GL_FILE_NAME_NV = GLenum(36980)
+ GLenum_GL_PATH_STROKE_WIDTH_NV = GLenum(36981)
+ GLenum_GL_PATH_END_CAPS_NV = GLenum(36982)
+ GLenum_GL_PATH_INITIAL_END_CAP_NV = GLenum(36983)
+ GLenum_GL_PATH_TERMINAL_END_CAP_NV = GLenum(36984)
+ GLenum_GL_PATH_JOIN_STYLE_NV = GLenum(36985)
+ GLenum_GL_PATH_MITER_LIMIT_NV = GLenum(36986)
+ GLenum_GL_PATH_DASH_CAPS_NV = GLenum(36987)
+ GLenum_GL_PATH_INITIAL_DASH_CAP_NV = GLenum(36988)
+ GLenum_GL_PATH_TERMINAL_DASH_CAP_NV = GLenum(36989)
+ GLenum_GL_PATH_DASH_OFFSET_NV = GLenum(36990)
+ GLenum_GL_PATH_CLIENT_LENGTH_NV = GLenum(36991)
+ GLenum_GL_PATH_FILL_MODE_NV = GLenum(36992)
+ GLenum_GL_PATH_FILL_MASK_NV = GLenum(36993)
+ GLenum_GL_PATH_FILL_COVER_MODE_NV = GLenum(36994)
+ GLenum_GL_PATH_STROKE_COVER_MODE_NV = GLenum(36995)
+ GLenum_GL_PATH_STROKE_MASK_NV = GLenum(36996)
+ GLenum_GL_COUNT_UP_NV = GLenum(37000)
+ GLenum_GL_COUNT_DOWN_NV = GLenum(37001)
+ GLenum_GL_PATH_OBJECT_BOUNDING_BOX_NV = GLenum(37002)
+ GLenum_GL_CONVEX_HULL_NV = GLenum(37003)
+ GLenum_GL_BOUNDING_BOX_NV = GLenum(37005)
+ GLenum_GL_TRANSLATE_X_NV = GLenum(37006)
+ GLenum_GL_TRANSLATE_Y_NV = GLenum(37007)
+ GLenum_GL_TRANSLATE_2D_NV = GLenum(37008)
+ GLenum_GL_TRANSLATE_3D_NV = GLenum(37009)
+ GLenum_GL_AFFINE_2D_NV = GLenum(37010)
+ GLenum_GL_AFFINE_3D_NV = GLenum(37012)
+ GLenum_GL_TRANSPOSE_AFFINE_2D_NV = GLenum(37014)
+ GLenum_GL_TRANSPOSE_AFFINE_3D_NV = GLenum(37016)
+ GLenum_GL_UTF8_NV = GLenum(37018)
+ GLenum_GL_UTF16_NV = GLenum(37019)
+ GLenum_GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV = GLenum(37020)
+ GLenum_GL_PATH_COMMAND_COUNT_NV = GLenum(37021)
+ GLenum_GL_PATH_COORD_COUNT_NV = GLenum(37022)
+ GLenum_GL_PATH_DASH_ARRAY_COUNT_NV = GLenum(37023)
+ GLenum_GL_PATH_COMPUTED_LENGTH_NV = GLenum(37024)
+ GLenum_GL_PATH_FILL_BOUNDING_BOX_NV = GLenum(37025)
+ GLenum_GL_PATH_STROKE_BOUNDING_BOX_NV = GLenum(37026)
+ GLenum_GL_SQUARE_NV = GLenum(37027)
+ GLenum_GL_ROUND_NV = GLenum(37028)
+ GLenum_GL_TRIANGULAR_NV = GLenum(37029)
+ GLenum_GL_BEVEL_NV = GLenum(37030)
+ GLenum_GL_MITER_REVERT_NV = GLenum(37031)
+ GLenum_GL_MITER_TRUNCATE_NV = GLenum(37032)
+ GLenum_GL_SKIP_MISSING_GLYPH_NV = GLenum(37033)
+ GLenum_GL_USE_MISSING_GLYPH_NV = GLenum(37034)
+ GLenum_GL_PATH_ERROR_POSITION_NV = GLenum(37035)
+ GLenum_GL_PATH_FOG_GEN_MODE_NV = GLenum(37036)
+ GLenum_GL_ACCUM_ADJACENT_PAIRS_NV = GLenum(37037)
+ GLenum_GL_ADJACENT_PAIRS_NV = GLenum(37038)
+ GLenum_GL_FIRST_TO_REST_NV = GLenum(37039)
+ GLenum_GL_PATH_GEN_MODE_NV = GLenum(37040)
+ GLenum_GL_PATH_GEN_COEFF_NV = GLenum(37041)
+ GLenum_GL_PATH_GEN_COLOR_FORMAT_NV = GLenum(37042)
+ GLenum_GL_PATH_GEN_COMPONENTS_NV = GLenum(37043)
+ GLenum_GL_PATH_DASH_OFFSET_RESET_NV = GLenum(37044)
+ GLenum_GL_MOVE_TO_RESETS_NV = GLenum(37045)
+ GLenum_GL_MOVE_TO_CONTINUES_NV = GLenum(37046)
+ GLenum_GL_PATH_STENCIL_FUNC_NV = GLenum(37047)
+ GLenum_GL_PATH_STENCIL_REF_NV = GLenum(37048)
+ GLenum_GL_PATH_STENCIL_VALUE_MASK_NV = GLenum(37049)
+ GLenum_GL_SCALED_RESOLVE_FASTEST_EXT = GLenum(37050)
+ GLenum_GL_SCALED_RESOLVE_NICEST_EXT = GLenum(37051)
+ GLenum_GL_MIN_MAP_BUFFER_ALIGNMENT = GLenum(37052)
+ GLenum_GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV = GLenum(37053)
+ GLenum_GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV = GLenum(37054)
+ GLenum_GL_PATH_COVER_DEPTH_FUNC_NV = GLenum(37055)
+ GLenum_GL_IMAGE_FORMAT_COMPATIBILITY_TYPE = GLenum(37063)
+ GLenum_GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE = GLenum(37064)
+ GLenum_GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS = GLenum(37065)
+ GLenum_GL_MAX_VERTEX_IMAGE_UNIFORMS = GLenum(37066)
+ GLenum_GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS = GLenum(37067)
+ GLenum_GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_EXT = GLenum(37067)
+ GLenum_GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_OES = GLenum(37067)
+ GLenum_GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS = GLenum(37068)
+ GLenum_GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_EXT = GLenum(37068)
+ GLenum_GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_OES = GLenum(37068)
+ GLenum_GL_MAX_GEOMETRY_IMAGE_UNIFORMS = GLenum(37069)
+ GLenum_GL_MAX_GEOMETRY_IMAGE_UNIFORMS_EXT = GLenum(37069)
+ GLenum_GL_MAX_GEOMETRY_IMAGE_UNIFORMS_OES = GLenum(37069)
+ GLenum_GL_MAX_FRAGMENT_IMAGE_UNIFORMS = GLenum(37070)
+ GLenum_GL_MAX_COMBINED_IMAGE_UNIFORMS = GLenum(37071)
+ GLenum_GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV = GLenum(37072)
+ GLenum_GL_MAX_DEEP_3D_TEXTURE_DEPTH_NV = GLenum(37073)
+ GLenum_GL_SHADER_STORAGE_BUFFER = GLenum(37074)
+ GLenum_GL_SHADER_STORAGE_BUFFER_BINDING = GLenum(37075)
+ GLenum_GL_SHADER_STORAGE_BUFFER_START = GLenum(37076)
+ GLenum_GL_SHADER_STORAGE_BUFFER_SIZE = GLenum(37077)
+ GLenum_GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS = GLenum(37078)
+ GLenum_GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS = GLenum(37079)
+ GLenum_GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT = GLenum(37079)
+ GLenum_GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_OES = GLenum(37079)
+ GLenum_GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS = GLenum(37080)
+ GLenum_GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_EXT = GLenum(37080)
+ GLenum_GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_OES = GLenum(37080)
+ GLenum_GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS = GLenum(37081)
+ GLenum_GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_EXT = GLenum(37081)
+ GLenum_GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_OES = GLenum(37081)
+ GLenum_GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS = GLenum(37082)
+ GLenum_GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS = GLenum(37083)
+ GLenum_GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS = GLenum(37084)
+ GLenum_GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS = GLenum(37085)
+ GLenum_GL_MAX_SHADER_STORAGE_BLOCK_SIZE = GLenum(37086)
+ GLenum_GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT = GLenum(37087)
+ GLenum_GL_SYNC_X11_FENCE_EXT = GLenum(37089)
+ GLenum_GL_DEPTH_STENCIL_TEXTURE_MODE = GLenum(37098)
+ GLenum_GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS = GLenum(37099)
+ GLenum_GL_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB = GLenum(37099)
+ GLenum_GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER = GLenum(37100)
+ GLenum_GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER = GLenum(37101)
+ GLenum_GL_DISPATCH_INDIRECT_BUFFER = GLenum(37102)
+ GLenum_GL_DISPATCH_INDIRECT_BUFFER_BINDING = GLenum(37103)
+ GLenum_GL_COLOR_ATTACHMENT_EXT = GLenum(37104)
+ GLenum_GL_MULTIVIEW_EXT = GLenum(37105)
+ GLenum_GL_MAX_MULTIVIEW_BUFFERS_EXT = GLenum(37106)
+ GLenum_GL_CONTEXT_ROBUST_ACCESS = GLenum(37107)
+ GLenum_GL_CONTEXT_ROBUST_ACCESS_EXT = GLenum(37107)
+ GLenum_GL_CONTEXT_ROBUST_ACCESS_KHR = GLenum(37107)
+ GLenum_GL_COMPUTE_PROGRAM_NV = GLenum(37115)
+ GLenum_GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV = GLenum(37116)
+ GLenum_GL_TEXTURE_2D_MULTISAMPLE = GLenum(37120)
+ GLenum_GL_PROXY_TEXTURE_2D_MULTISAMPLE = GLenum(37121)
+ GLenum_GL_TEXTURE_2D_MULTISAMPLE_ARRAY = GLenum(37122)
+ GLenum_GL_TEXTURE_2D_MULTISAMPLE_ARRAY_OES = GLenum(37122)
+ GLenum_GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY = GLenum(37123)
+ GLenum_GL_TEXTURE_BINDING_2D_MULTISAMPLE = GLenum(37124)
+ GLenum_GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY = GLenum(37125)
+ GLenum_GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY_OES = GLenum(37125)
+ GLenum_GL_TEXTURE_SAMPLES = GLenum(37126)
+ GLenum_GL_TEXTURE_FIXED_SAMPLE_LOCATIONS = GLenum(37127)
+ GLenum_GL_SAMPLER_2D_MULTISAMPLE = GLenum(37128)
+ GLenum_GL_INT_SAMPLER_2D_MULTISAMPLE = GLenum(37129)
+ GLenum_GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE = GLenum(37130)
+ GLenum_GL_SAMPLER_2D_MULTISAMPLE_ARRAY = GLenum(37131)
+ GLenum_GL_SAMPLER_2D_MULTISAMPLE_ARRAY_OES = GLenum(37131)
+ GLenum_GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = GLenum(37132)
+ GLenum_GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES = GLenum(37132)
+ GLenum_GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = GLenum(37133)
+ GLenum_GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES = GLenum(37133)
+ GLenum_GL_MAX_COLOR_TEXTURE_SAMPLES = GLenum(37134)
+ GLenum_GL_MAX_DEPTH_TEXTURE_SAMPLES = GLenum(37135)
+ GLenum_GL_MAX_INTEGER_SAMPLES = GLenum(37136)
+ GLenum_GL_MAX_SERVER_WAIT_TIMEOUT = GLenum(37137)
+ GLenum_GL_MAX_SERVER_WAIT_TIMEOUT_APPLE = GLenum(37137)
+ GLenum_GL_OBJECT_TYPE = GLenum(37138)
+ GLenum_GL_OBJECT_TYPE_APPLE = GLenum(37138)
+ GLenum_GL_SYNC_CONDITION = GLenum(37139)
+ GLenum_GL_SYNC_CONDITION_APPLE = GLenum(37139)
+ GLenum_GL_SYNC_STATUS = GLenum(37140)
+ GLenum_GL_SYNC_STATUS_APPLE = GLenum(37140)
+ GLenum_GL_SYNC_FLAGS = GLenum(37141)
+ GLenum_GL_SYNC_FLAGS_APPLE = GLenum(37141)
+ GLenum_GL_SYNC_FENCE = GLenum(37142)
+ GLenum_GL_SYNC_FENCE_APPLE = GLenum(37142)
+ GLenum_GL_SYNC_GPU_COMMANDS_COMPLETE = GLenum(37143)
+ GLenum_GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE = GLenum(37143)
+ GLenum_GL_UNSIGNALED = GLenum(37144)
+ GLenum_GL_UNSIGNALED_APPLE = GLenum(37144)
+ GLenum_GL_SIGNALED = GLenum(37145)
+ GLenum_GL_SIGNALED_APPLE = GLenum(37145)
+ GLenum_GL_ALREADY_SIGNALED = GLenum(37146)
+ GLenum_GL_ALREADY_SIGNALED_APPLE = GLenum(37146)
+ GLenum_GL_TIMEOUT_EXPIRED = GLenum(37147)
+ GLenum_GL_TIMEOUT_EXPIRED_APPLE = GLenum(37147)
+ GLenum_GL_CONDITION_SATISFIED = GLenum(37148)
+ GLenum_GL_CONDITION_SATISFIED_APPLE = GLenum(37148)
+ GLenum_GL_WAIT_FAILED = GLenum(37149)
+ GLenum_GL_WAIT_FAILED_APPLE = GLenum(37149)
+ GLenum_GL_BUFFER_ACCESS_FLAGS = GLenum(37151)
+ GLenum_GL_BUFFER_MAP_LENGTH = GLenum(37152)
+ GLenum_GL_BUFFER_MAP_OFFSET = GLenum(37153)
+ GLenum_GL_MAX_VERTEX_OUTPUT_COMPONENTS = GLenum(37154)
+ GLenum_GL_MAX_GEOMETRY_INPUT_COMPONENTS = GLenum(37155)
+ GLenum_GL_MAX_GEOMETRY_INPUT_COMPONENTS_EXT = GLenum(37155)
+ GLenum_GL_MAX_GEOMETRY_INPUT_COMPONENTS_OES = GLenum(37155)
+ GLenum_GL_MAX_GEOMETRY_OUTPUT_COMPONENTS = GLenum(37156)
+ GLenum_GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT = GLenum(37156)
+ GLenum_GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_OES = GLenum(37156)
+ GLenum_GL_MAX_FRAGMENT_INPUT_COMPONENTS = GLenum(37157)
+ GLenum_GL_CONTEXT_PROFILE_MASK = GLenum(37158)
+ GLenum_GL_UNPACK_COMPRESSED_BLOCK_WIDTH = GLenum(37159)
+ GLenum_GL_UNPACK_COMPRESSED_BLOCK_HEIGHT = GLenum(37160)
+ GLenum_GL_UNPACK_COMPRESSED_BLOCK_DEPTH = GLenum(37161)
+ GLenum_GL_UNPACK_COMPRESSED_BLOCK_SIZE = GLenum(37162)
+ GLenum_GL_PACK_COMPRESSED_BLOCK_WIDTH = GLenum(37163)
+ GLenum_GL_PACK_COMPRESSED_BLOCK_HEIGHT = GLenum(37164)
+ GLenum_GL_PACK_COMPRESSED_BLOCK_DEPTH = GLenum(37165)
+ GLenum_GL_PACK_COMPRESSED_BLOCK_SIZE = GLenum(37166)
+ GLenum_GL_TEXTURE_IMMUTABLE_FORMAT = GLenum(37167)
+ GLenum_GL_TEXTURE_IMMUTABLE_FORMAT_EXT = GLenum(37167)
+ GLenum_GL_SGX_PROGRAM_BINARY_IMG = GLenum(37168)
+ GLenum_GL_RENDERBUFFER_SAMPLES_IMG = GLenum(37171)
+ GLenum_GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG = GLenum(37172)
+ GLenum_GL_MAX_SAMPLES_IMG = GLenum(37173)
+ GLenum_GL_TEXTURE_SAMPLES_IMG = GLenum(37174)
+ GLenum_GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG = GLenum(37175)
+ GLenum_GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG = GLenum(37176)
+ GLenum_GL_MAX_DEBUG_MESSAGE_LENGTH = GLenum(37187)
+ GLenum_GL_MAX_DEBUG_MESSAGE_LENGTH_AMD = GLenum(37187)
+ GLenum_GL_MAX_DEBUG_MESSAGE_LENGTH_ARB = GLenum(37187)
+ GLenum_GL_MAX_DEBUG_MESSAGE_LENGTH_KHR = GLenum(37187)
+ GLenum_GL_MAX_DEBUG_LOGGED_MESSAGES = GLenum(37188)
+ GLenum_GL_MAX_DEBUG_LOGGED_MESSAGES_AMD = GLenum(37188)
+ GLenum_GL_MAX_DEBUG_LOGGED_MESSAGES_ARB = GLenum(37188)
+ GLenum_GL_MAX_DEBUG_LOGGED_MESSAGES_KHR = GLenum(37188)
+ GLenum_GL_DEBUG_LOGGED_MESSAGES = GLenum(37189)
+ GLenum_GL_DEBUG_LOGGED_MESSAGES_AMD = GLenum(37189)
+ GLenum_GL_DEBUG_LOGGED_MESSAGES_ARB = GLenum(37189)
+ GLenum_GL_DEBUG_LOGGED_MESSAGES_KHR = GLenum(37189)
+ GLenum_GL_DEBUG_SEVERITY_HIGH = GLenum(37190)
+ GLenum_GL_DEBUG_SEVERITY_HIGH_AMD = GLenum(37190)
+ GLenum_GL_DEBUG_SEVERITY_HIGH_ARB = GLenum(37190)
+ GLenum_GL_DEBUG_SEVERITY_HIGH_KHR = GLenum(37190)
+ GLenum_GL_DEBUG_SEVERITY_MEDIUM = GLenum(37191)
+ GLenum_GL_DEBUG_SEVERITY_MEDIUM_AMD = GLenum(37191)
+ GLenum_GL_DEBUG_SEVERITY_MEDIUM_ARB = GLenum(37191)
+ GLenum_GL_DEBUG_SEVERITY_MEDIUM_KHR = GLenum(37191)
+ GLenum_GL_DEBUG_SEVERITY_LOW = GLenum(37192)
+ GLenum_GL_DEBUG_SEVERITY_LOW_AMD = GLenum(37192)
+ GLenum_GL_DEBUG_SEVERITY_LOW_ARB = GLenum(37192)
+ GLenum_GL_DEBUG_SEVERITY_LOW_KHR = GLenum(37192)
+ GLenum_GL_DEBUG_CATEGORY_API_ERROR_AMD = GLenum(37193)
+ GLenum_GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD = GLenum(37194)
+ GLenum_GL_DEBUG_CATEGORY_DEPRECATION_AMD = GLenum(37195)
+ GLenum_GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD = GLenum(37196)
+ GLenum_GL_DEBUG_CATEGORY_PERFORMANCE_AMD = GLenum(37197)
+ GLenum_GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD = GLenum(37198)
+ GLenum_GL_DEBUG_CATEGORY_APPLICATION_AMD = GLenum(37199)
+ GLenum_GL_DEBUG_CATEGORY_OTHER_AMD = GLenum(37200)
+ GLenum_GL_BUFFER_OBJECT_EXT = GLenum(37201)
+ GLenum_GL_DATA_BUFFER_AMD = GLenum(37201)
+ GLenum_GL_PERFORMANCE_MONITOR_AMD = GLenum(37202)
+ GLenum_GL_QUERY_OBJECT_AMD = GLenum(37203)
+ GLenum_GL_QUERY_OBJECT_EXT = GLenum(37203)
+ GLenum_GL_VERTEX_ARRAY_OBJECT_AMD = GLenum(37204)
+ GLenum_GL_VERTEX_ARRAY_OBJECT_EXT = GLenum(37204)
+ GLenum_GL_SAMPLER_OBJECT_AMD = GLenum(37205)
+ GLenum_GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD = GLenum(37216)
+ GLenum_GL_QUERY_BUFFER = GLenum(37266)
+ GLenum_GL_QUERY_BUFFER_AMD = GLenum(37266)
+ GLenum_GL_QUERY_BUFFER_BINDING = GLenum(37267)
+ GLenum_GL_QUERY_BUFFER_BINDING_AMD = GLenum(37267)
+ GLenum_GL_QUERY_RESULT_NO_WAIT = GLenum(37268)
+ GLenum_GL_QUERY_RESULT_NO_WAIT_AMD = GLenum(37268)
+ GLenum_GL_VIRTUAL_PAGE_SIZE_X_ARB = GLenum(37269)
+ GLenum_GL_VIRTUAL_PAGE_SIZE_X_EXT = GLenum(37269)
+ GLenum_GL_VIRTUAL_PAGE_SIZE_X_AMD = GLenum(37269)
+ GLenum_GL_VIRTUAL_PAGE_SIZE_Y_ARB = GLenum(37270)
+ GLenum_GL_VIRTUAL_PAGE_SIZE_Y_EXT = GLenum(37270)
+ GLenum_GL_VIRTUAL_PAGE_SIZE_Y_AMD = GLenum(37270)
+ GLenum_GL_VIRTUAL_PAGE_SIZE_Z_ARB = GLenum(37271)
+ GLenum_GL_VIRTUAL_PAGE_SIZE_Z_EXT = GLenum(37271)
+ GLenum_GL_VIRTUAL_PAGE_SIZE_Z_AMD = GLenum(37271)
+ GLenum_GL_MAX_SPARSE_TEXTURE_SIZE_ARB = GLenum(37272)
+ GLenum_GL_MAX_SPARSE_TEXTURE_SIZE_EXT = GLenum(37272)
+ GLenum_GL_MAX_SPARSE_TEXTURE_SIZE_AMD = GLenum(37272)
+ GLenum_GL_MAX_SPARSE_3D_TEXTURE_SIZE_ARB = GLenum(37273)
+ GLenum_GL_MAX_SPARSE_3D_TEXTURE_SIZE_EXT = GLenum(37273)
+ GLenum_GL_MAX_SPARSE_3D_TEXTURE_SIZE_AMD = GLenum(37273)
+ GLenum_GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS = GLenum(37274)
+ GLenum_GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB = GLenum(37274)
+ GLenum_GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_EXT = GLenum(37274)
+ GLenum_GL_MIN_SPARSE_LEVEL_AMD = GLenum(37275)
+ GLenum_GL_MIN_LOD_WARNING_AMD = GLenum(37276)
+ GLenum_GL_TEXTURE_BUFFER_OFFSET = GLenum(37277)
+ GLenum_GL_TEXTURE_BUFFER_OFFSET_EXT = GLenum(37277)
+ GLenum_GL_TEXTURE_BUFFER_OFFSET_OES = GLenum(37277)
+ GLenum_GL_TEXTURE_BUFFER_SIZE = GLenum(37278)
+ GLenum_GL_TEXTURE_BUFFER_SIZE_EXT = GLenum(37278)
+ GLenum_GL_TEXTURE_BUFFER_SIZE_OES = GLenum(37278)
+ GLenum_GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT = GLenum(37279)
+ GLenum_GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_EXT = GLenum(37279)
+ GLenum_GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_OES = GLenum(37279)
+ GLenum_GL_STREAM_RASTERIZATION_AMD = GLenum(37280)
+ GLenum_GL_VERTEX_ELEMENT_SWIZZLE_AMD = GLenum(37284)
+ GLenum_GL_VERTEX_ID_SWIZZLE_AMD = GLenum(37285)
+ GLenum_GL_TEXTURE_SPARSE_ARB = GLenum(37286)
+ GLenum_GL_TEXTURE_SPARSE_EXT = GLenum(37286)
+ GLenum_GL_VIRTUAL_PAGE_SIZE_INDEX_ARB = GLenum(37287)
+ GLenum_GL_VIRTUAL_PAGE_SIZE_INDEX_EXT = GLenum(37287)
+ GLenum_GL_NUM_VIRTUAL_PAGE_SIZES_ARB = GLenum(37288)
+ GLenum_GL_NUM_VIRTUAL_PAGE_SIZES_EXT = GLenum(37288)
+ GLenum_GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB = GLenum(37289)
+ GLenum_GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_EXT = GLenum(37289)
+ GLenum_GL_NUM_SPARSE_LEVELS_ARB = GLenum(37290)
+ GLenum_GL_NUM_SPARSE_LEVELS_EXT = GLenum(37290)
+ GLenum_GL_MAX_SHADER_COMPILER_THREADS_ARB = GLenum(37296)
+ GLenum_GL_COMPLETION_STATUS_ARB = GLenum(37297)
+ GLenum_GL_COMPUTE_SHADER = GLenum(37305)
+ GLenum_GL_MAX_COMPUTE_UNIFORM_BLOCKS = GLenum(37307)
+ GLenum_GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS = GLenum(37308)
+ GLenum_GL_MAX_COMPUTE_IMAGE_UNIFORMS = GLenum(37309)
+ GLenum_GL_MAX_COMPUTE_WORK_GROUP_COUNT = GLenum(37310)
+ GLenum_GL_MAX_COMPUTE_WORK_GROUP_SIZE = GLenum(37311)
+ GLenum_GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB = GLenum(37311)
+ GLenum_GL_UNPACK_FLIP_Y_WEBGL = GLenum(37440)
+ GLenum_GL_UNPACK_PREMULTIPLY_ALPHA_WEBGL = GLenum(37441)
+ GLenum_GL_CONTEXT_LOST_WEBGL = GLenum(37442)
+ GLenum_GL_UNPACK_COLORSPACE_CONVERSION_WEBGL = GLenum(37443)
+ GLenum_GL_BROWSER_DEFAULT_WEBGL = GLenum(37444)
+ GLenum_GL_SHADER_BINARY_DMP = GLenum(37456)
+ GLenum_GL_SMAPHS30_PROGRAM_BINARY_DMP = GLenum(37457)
+ GLenum_GL_SMAPHS_PROGRAM_BINARY_DMP = GLenum(37458)
+ GLenum_GL_DMP_PROGRAM_BINARY_DMP = GLenum(37459)
+ GLenum_GL_GCCSO_SHADER_BINARY_FJ = GLenum(37472)
+ GLenum_GL_COMPRESSED_R11_EAC = GLenum(37488)
+ GLenum_GL_COMPRESSED_R11_EAC_OES = GLenum(37488)
+ GLenum_GL_COMPRESSED_SIGNED_R11_EAC = GLenum(37489)
+ GLenum_GL_COMPRESSED_SIGNED_R11_EAC_OES = GLenum(37489)
+ GLenum_GL_COMPRESSED_RG11_EAC = GLenum(37490)
+ GLenum_GL_COMPRESSED_RG11_EAC_OES = GLenum(37490)
+ GLenum_GL_COMPRESSED_SIGNED_RG11_EAC = GLenum(37491)
+ GLenum_GL_COMPRESSED_SIGNED_RG11_EAC_OES = GLenum(37491)
+ GLenum_GL_COMPRESSED_RGB8_ETC2 = GLenum(37492)
+ GLenum_GL_COMPRESSED_RGB8_ETC2_OES = GLenum(37492)
+ GLenum_GL_COMPRESSED_SRGB8_ETC2 = GLenum(37493)
+ GLenum_GL_COMPRESSED_SRGB8_ETC2_OES = GLenum(37493)
+ GLenum_GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 = GLenum(37494)
+ GLenum_GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2_OES = GLenum(37494)
+ GLenum_GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = GLenum(37495)
+ GLenum_GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2_OES = GLenum(37495)
+ GLenum_GL_COMPRESSED_RGBA8_ETC2_EAC = GLenum(37496)
+ GLenum_GL_COMPRESSED_RGBA8_ETC2_EAC_OES = GLenum(37496)
+ GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC = GLenum(37497)
+ GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC_OES = GLenum(37497)
+ GLenum_GL_BLEND_PREMULTIPLIED_SRC_NV = GLenum(37504)
+ GLenum_GL_BLEND_OVERLAP_NV = GLenum(37505)
+ GLenum_GL_UNCORRELATED_NV = GLenum(37506)
+ GLenum_GL_DISJOINT_NV = GLenum(37507)
+ GLenum_GL_CONJOINT_NV = GLenum(37508)
+ GLenum_GL_BLEND_ADVANCED_COHERENT_KHR = GLenum(37509)
+ GLenum_GL_BLEND_ADVANCED_COHERENT_NV = GLenum(37509)
+ GLenum_GL_SRC_NV = GLenum(37510)
+ GLenum_GL_DST_NV = GLenum(37511)
+ GLenum_GL_SRC_OVER_NV = GLenum(37512)
+ GLenum_GL_DST_OVER_NV = GLenum(37513)
+ GLenum_GL_SRC_IN_NV = GLenum(37514)
+ GLenum_GL_DST_IN_NV = GLenum(37515)
+ GLenum_GL_SRC_OUT_NV = GLenum(37516)
+ GLenum_GL_DST_OUT_NV = GLenum(37517)
+ GLenum_GL_SRC_ATOP_NV = GLenum(37518)
+ GLenum_GL_DST_ATOP_NV = GLenum(37519)
+ GLenum_GL_PLUS_NV = GLenum(37521)
+ GLenum_GL_PLUS_DARKER_NV = GLenum(37522)
+ GLenum_GL_MULTIPLY = GLenum(37524)
+ GLenum_GL_MULTIPLY_KHR = GLenum(37524)
+ GLenum_GL_MULTIPLY_NV = GLenum(37524)
+ GLenum_GL_SCREEN = GLenum(37525)
+ GLenum_GL_SCREEN_KHR = GLenum(37525)
+ GLenum_GL_SCREEN_NV = GLenum(37525)
+ GLenum_GL_OVERLAY = GLenum(37526)
+ GLenum_GL_OVERLAY_KHR = GLenum(37526)
+ GLenum_GL_OVERLAY_NV = GLenum(37526)
+ GLenum_GL_DARKEN = GLenum(37527)
+ GLenum_GL_DARKEN_KHR = GLenum(37527)
+ GLenum_GL_DARKEN_NV = GLenum(37527)
+ GLenum_GL_LIGHTEN = GLenum(37528)
+ GLenum_GL_LIGHTEN_KHR = GLenum(37528)
+ GLenum_GL_LIGHTEN_NV = GLenum(37528)
+ GLenum_GL_COLORDODGE = GLenum(37529)
+ GLenum_GL_COLORDODGE_KHR = GLenum(37529)
+ GLenum_GL_COLORDODGE_NV = GLenum(37529)
+ GLenum_GL_COLORBURN = GLenum(37530)
+ GLenum_GL_COLORBURN_KHR = GLenum(37530)
+ GLenum_GL_COLORBURN_NV = GLenum(37530)
+ GLenum_GL_HARDLIGHT = GLenum(37531)
+ GLenum_GL_HARDLIGHT_KHR = GLenum(37531)
+ GLenum_GL_HARDLIGHT_NV = GLenum(37531)
+ GLenum_GL_SOFTLIGHT = GLenum(37532)
+ GLenum_GL_SOFTLIGHT_KHR = GLenum(37532)
+ GLenum_GL_SOFTLIGHT_NV = GLenum(37532)
+ GLenum_GL_DIFFERENCE = GLenum(37534)
+ GLenum_GL_DIFFERENCE_KHR = GLenum(37534)
+ GLenum_GL_DIFFERENCE_NV = GLenum(37534)
+ GLenum_GL_MINUS_NV = GLenum(37535)
+ GLenum_GL_EXCLUSION = GLenum(37536)
+ GLenum_GL_EXCLUSION_KHR = GLenum(37536)
+ GLenum_GL_EXCLUSION_NV = GLenum(37536)
+ GLenum_GL_CONTRAST_NV = GLenum(37537)
+ GLenum_GL_INVERT_RGB_NV = GLenum(37539)
+ GLenum_GL_LINEARDODGE_NV = GLenum(37540)
+ GLenum_GL_LINEARBURN_NV = GLenum(37541)
+ GLenum_GL_VIVIDLIGHT_NV = GLenum(37542)
+ GLenum_GL_LINEARLIGHT_NV = GLenum(37543)
+ GLenum_GL_PINLIGHT_NV = GLenum(37544)
+ GLenum_GL_HARDMIX_NV = GLenum(37545)
+ GLenum_GL_HSL_HUE = GLenum(37549)
+ GLenum_GL_HSL_HUE_KHR = GLenum(37549)
+ GLenum_GL_HSL_HUE_NV = GLenum(37549)
+ GLenum_GL_HSL_SATURATION = GLenum(37550)
+ GLenum_GL_HSL_SATURATION_KHR = GLenum(37550)
+ GLenum_GL_HSL_SATURATION_NV = GLenum(37550)
+ GLenum_GL_HSL_COLOR = GLenum(37551)
+ GLenum_GL_HSL_COLOR_KHR = GLenum(37551)
+ GLenum_GL_HSL_COLOR_NV = GLenum(37551)
+ GLenum_GL_HSL_LUMINOSITY = GLenum(37552)
+ GLenum_GL_HSL_LUMINOSITY_KHR = GLenum(37552)
+ GLenum_GL_HSL_LUMINOSITY_NV = GLenum(37552)
+ GLenum_GL_PLUS_CLAMPED_NV = GLenum(37553)
+ GLenum_GL_PLUS_CLAMPED_ALPHA_NV = GLenum(37554)
+ GLenum_GL_MINUS_CLAMPED_NV = GLenum(37555)
+ GLenum_GL_INVERT_OVG_NV = GLenum(37556)
+ GLenum_GL_PRIMITIVE_BOUNDING_BOX_ARB = GLenum(37566)
+ GLenum_GL_PRIMITIVE_BOUNDING_BOX = GLenum(37566)
+ GLenum_GL_PRIMITIVE_BOUNDING_BOX_EXT = GLenum(37566)
+ GLenum_GL_PRIMITIVE_BOUNDING_BOX_OES = GLenum(37566)
+ GLenum_GL_ATOMIC_COUNTER_BUFFER = GLenum(37568)
+ GLenum_GL_ATOMIC_COUNTER_BUFFER_BINDING = GLenum(37569)
+ GLenum_GL_ATOMIC_COUNTER_BUFFER_START = GLenum(37570)
+ GLenum_GL_ATOMIC_COUNTER_BUFFER_SIZE = GLenum(37571)
+ GLenum_GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE = GLenum(37572)
+ GLenum_GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS = GLenum(37573)
+ GLenum_GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES = GLenum(37574)
+ GLenum_GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER = GLenum(37575)
+ GLenum_GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER = GLenum(37576)
+ GLenum_GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER = GLenum(37577)
+ GLenum_GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER = GLenum(37578)
+ GLenum_GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER = GLenum(37579)
+ GLenum_GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS = GLenum(37580)
+ GLenum_GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS = GLenum(37581)
+ GLenum_GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_EXT = GLenum(37581)
+ GLenum_GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_OES = GLenum(37581)
+ GLenum_GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS = GLenum(37582)
+ GLenum_GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_EXT = GLenum(37582)
+ GLenum_GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_OES = GLenum(37582)
+ GLenum_GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS = GLenum(37583)
+ GLenum_GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT = GLenum(37583)
+ GLenum_GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_OES = GLenum(37583)
+ GLenum_GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS = GLenum(37584)
+ GLenum_GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS = GLenum(37585)
+ GLenum_GL_MAX_VERTEX_ATOMIC_COUNTERS = GLenum(37586)
+ GLenum_GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS = GLenum(37587)
+ GLenum_GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_EXT = GLenum(37587)
+ GLenum_GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_OES = GLenum(37587)
+ GLenum_GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS = GLenum(37588)
+ GLenum_GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_EXT = GLenum(37588)
+ GLenum_GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_OES = GLenum(37588)
+ GLenum_GL_MAX_GEOMETRY_ATOMIC_COUNTERS = GLenum(37589)
+ GLenum_GL_MAX_GEOMETRY_ATOMIC_COUNTERS_EXT = GLenum(37589)
+ GLenum_GL_MAX_GEOMETRY_ATOMIC_COUNTERS_OES = GLenum(37589)
+ GLenum_GL_MAX_FRAGMENT_ATOMIC_COUNTERS = GLenum(37590)
+ GLenum_GL_MAX_COMBINED_ATOMIC_COUNTERS = GLenum(37591)
+ GLenum_GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE = GLenum(37592)
+ GLenum_GL_ACTIVE_ATOMIC_COUNTER_BUFFERS = GLenum(37593)
+ GLenum_GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX = GLenum(37594)
+ GLenum_GL_UNSIGNED_INT_ATOMIC_COUNTER = GLenum(37595)
+ GLenum_GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS = GLenum(37596)
+ GLenum_GL_FRAGMENT_COVERAGE_TO_COLOR_NV = GLenum(37597)
+ GLenum_GL_FRAGMENT_COVERAGE_COLOR_NV = GLenum(37598)
+ GLenum_GL_DEBUG_OUTPUT = GLenum(37600)
+ GLenum_GL_DEBUG_OUTPUT_KHR = GLenum(37600)
+ GLenum_GL_UNIFORM = GLenum(37601)
+ GLenum_GL_UNIFORM_BLOCK = GLenum(37602)
+ GLenum_GL_PROGRAM_INPUT = GLenum(37603)
+ GLenum_GL_PROGRAM_OUTPUT = GLenum(37604)
+ GLenum_GL_BUFFER_VARIABLE = GLenum(37605)
+ GLenum_GL_SHADER_STORAGE_BLOCK = GLenum(37606)
+ GLenum_GL_IS_PER_PATCH = GLenum(37607)
+ GLenum_GL_IS_PER_PATCH_EXT = GLenum(37607)
+ GLenum_GL_IS_PER_PATCH_OES = GLenum(37607)
+ GLenum_GL_VERTEX_SUBROUTINE = GLenum(37608)
+ GLenum_GL_TESS_CONTROL_SUBROUTINE = GLenum(37609)
+ GLenum_GL_TESS_EVALUATION_SUBROUTINE = GLenum(37610)
+ GLenum_GL_GEOMETRY_SUBROUTINE = GLenum(37611)
+ GLenum_GL_FRAGMENT_SUBROUTINE = GLenum(37612)
+ GLenum_GL_COMPUTE_SUBROUTINE = GLenum(37613)
+ GLenum_GL_VERTEX_SUBROUTINE_UNIFORM = GLenum(37614)
+ GLenum_GL_TESS_CONTROL_SUBROUTINE_UNIFORM = GLenum(37615)
+ GLenum_GL_TESS_EVALUATION_SUBROUTINE_UNIFORM = GLenum(37616)
+ GLenum_GL_GEOMETRY_SUBROUTINE_UNIFORM = GLenum(37617)
+ GLenum_GL_FRAGMENT_SUBROUTINE_UNIFORM = GLenum(37618)
+ GLenum_GL_COMPUTE_SUBROUTINE_UNIFORM = GLenum(37619)
+ GLenum_GL_TRANSFORM_FEEDBACK_VARYING = GLenum(37620)
+ GLenum_GL_ACTIVE_RESOURCES = GLenum(37621)
+ GLenum_GL_MAX_NAME_LENGTH = GLenum(37622)
+ GLenum_GL_MAX_NUM_ACTIVE_VARIABLES = GLenum(37623)
+ GLenum_GL_MAX_NUM_COMPATIBLE_SUBROUTINES = GLenum(37624)
+ GLenum_GL_NAME_LENGTH = GLenum(37625)
+ GLenum_GL_TYPE = GLenum(37626)
+ GLenum_GL_ARRAY_SIZE = GLenum(37627)
+ GLenum_GL_OFFSET = GLenum(37628)
+ GLenum_GL_BLOCK_INDEX = GLenum(37629)
+ GLenum_GL_ARRAY_STRIDE = GLenum(37630)
+ GLenum_GL_MATRIX_STRIDE = GLenum(37631)
+ GLenum_GL_IS_ROW_MAJOR = GLenum(37632)
+ GLenum_GL_ATOMIC_COUNTER_BUFFER_INDEX = GLenum(37633)
+ GLenum_GL_BUFFER_BINDING = GLenum(37634)
+ GLenum_GL_BUFFER_DATA_SIZE = GLenum(37635)
+ GLenum_GL_NUM_ACTIVE_VARIABLES = GLenum(37636)
+ GLenum_GL_ACTIVE_VARIABLES = GLenum(37637)
+ GLenum_GL_REFERENCED_BY_VERTEX_SHADER = GLenum(37638)
+ GLenum_GL_REFERENCED_BY_TESS_CONTROL_SHADER = GLenum(37639)
+ GLenum_GL_REFERENCED_BY_TESS_CONTROL_SHADER_EXT = GLenum(37639)
+ GLenum_GL_REFERENCED_BY_TESS_CONTROL_SHADER_OES = GLenum(37639)
+ GLenum_GL_REFERENCED_BY_TESS_EVALUATION_SHADER = GLenum(37640)
+ GLenum_GL_REFERENCED_BY_TESS_EVALUATION_SHADER_EXT = GLenum(37640)
+ GLenum_GL_REFERENCED_BY_TESS_EVALUATION_SHADER_OES = GLenum(37640)
+ GLenum_GL_REFERENCED_BY_GEOMETRY_SHADER = GLenum(37641)
+ GLenum_GL_REFERENCED_BY_GEOMETRY_SHADER_EXT = GLenum(37641)
+ GLenum_GL_REFERENCED_BY_GEOMETRY_SHADER_OES = GLenum(37641)
+ GLenum_GL_REFERENCED_BY_FRAGMENT_SHADER = GLenum(37642)
+ GLenum_GL_REFERENCED_BY_COMPUTE_SHADER = GLenum(37643)
+ GLenum_GL_TOP_LEVEL_ARRAY_SIZE = GLenum(37644)
+ GLenum_GL_TOP_LEVEL_ARRAY_STRIDE = GLenum(37645)
+ GLenum_GL_LOCATION = GLenum(37646)
+ GLenum_GL_LOCATION_INDEX = GLenum(37647)
+ GLenum_GL_LOCATION_INDEX_EXT = GLenum(37647)
+ GLenum_GL_FRAMEBUFFER_DEFAULT_WIDTH = GLenum(37648)
+ GLenum_GL_FRAMEBUFFER_DEFAULT_HEIGHT = GLenum(37649)
+ GLenum_GL_FRAMEBUFFER_DEFAULT_LAYERS = GLenum(37650)
+ GLenum_GL_FRAMEBUFFER_DEFAULT_LAYERS_EXT = GLenum(37650)
+ GLenum_GL_FRAMEBUFFER_DEFAULT_LAYERS_OES = GLenum(37650)
+ GLenum_GL_FRAMEBUFFER_DEFAULT_SAMPLES = GLenum(37651)
+ GLenum_GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS = GLenum(37652)
+ GLenum_GL_MAX_FRAMEBUFFER_WIDTH = GLenum(37653)
+ GLenum_GL_MAX_FRAMEBUFFER_HEIGHT = GLenum(37654)
+ GLenum_GL_MAX_FRAMEBUFFER_LAYERS = GLenum(37655)
+ GLenum_GL_MAX_FRAMEBUFFER_LAYERS_EXT = GLenum(37655)
+ GLenum_GL_MAX_FRAMEBUFFER_LAYERS_OES = GLenum(37655)
+ GLenum_GL_MAX_FRAMEBUFFER_SAMPLES = GLenum(37656)
+ GLenum_GL_RASTER_MULTISAMPLE_EXT = GLenum(37671)
+ GLenum_GL_RASTER_SAMPLES_EXT = GLenum(37672)
+ GLenum_GL_MAX_RASTER_SAMPLES_EXT = GLenum(37673)
+ GLenum_GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT = GLenum(37674)
+ GLenum_GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT = GLenum(37675)
+ GLenum_GL_EFFECTIVE_RASTER_SAMPLES_EXT = GLenum(37676)
+ GLenum_GL_DEPTH_SAMPLES_NV = GLenum(37677)
+ GLenum_GL_STENCIL_SAMPLES_NV = GLenum(37678)
+ GLenum_GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV = GLenum(37679)
+ GLenum_GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV = GLenum(37680)
+ GLenum_GL_COVERAGE_MODULATION_TABLE_NV = GLenum(37681)
+ GLenum_GL_COVERAGE_MODULATION_NV = GLenum(37682)
+ GLenum_GL_COVERAGE_MODULATION_TABLE_SIZE_NV = GLenum(37683)
+ GLenum_GL_WARP_SIZE_NV = GLenum(37689)
+ GLenum_GL_WARPS_PER_SM_NV = GLenum(37690)
+ GLenum_GL_SM_COUNT_NV = GLenum(37691)
+ GLenum_GL_FILL_RECTANGLE_NV = GLenum(37692)
+ GLenum_GL_SAMPLE_LOCATION_SUBPIXEL_BITS_ARB = GLenum(37693)
+ GLenum_GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV = GLenum(37693)
+ GLenum_GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_ARB = GLenum(37694)
+ GLenum_GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV = GLenum(37694)
+ GLenum_GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_ARB = GLenum(37695)
+ GLenum_GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV = GLenum(37695)
+ GLenum_GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_ARB = GLenum(37696)
+ GLenum_GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV = GLenum(37696)
+ GLenum_GL_PROGRAMMABLE_SAMPLE_LOCATION_ARB = GLenum(37697)
+ GLenum_GL_PROGRAMMABLE_SAMPLE_LOCATION_NV = GLenum(37697)
+ GLenum_GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_ARB = GLenum(37698)
+ GLenum_GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV = GLenum(37698)
+ GLenum_GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_ARB = GLenum(37699)
+ GLenum_GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV = GLenum(37699)
+ GLenum_GL_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB = GLenum(37700)
+ GLenum_GL_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB = GLenum(37701)
+ GLenum_GL_CONSERVATIVE_RASTERIZATION_NV = GLenum(37702)
+ GLenum_GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV = GLenum(37703)
+ GLenum_GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV = GLenum(37704)
+ GLenum_GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV = GLenum(37705)
+ GLenum_GL_LOCATION_COMPONENT = GLenum(37706)
+ GLenum_GL_TRANSFORM_FEEDBACK_BUFFER_INDEX = GLenum(37707)
+ GLenum_GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE = GLenum(37708)
+ GLenum_GL_CLIP_ORIGIN = GLenum(37724)
+ GLenum_GL_CLIP_DEPTH_MODE = GLenum(37725)
+ GLenum_GL_NEGATIVE_ONE_TO_ONE = GLenum(37726)
+ GLenum_GL_ZERO_TO_ONE = GLenum(37727)
+ GLenum_GL_CLEAR_TEXTURE = GLenum(37733)
+ GLenum_GL_TEXTURE_REDUCTION_MODE_ARB = GLenum(37734)
+ GLenum_GL_WEIGHTED_AVERAGE_ARB = GLenum(37735)
+ GLenum_GL_FONT_GLYPHS_AVAILABLE_NV = GLenum(37736)
+ GLenum_GL_FONT_TARGET_UNAVAILABLE_NV = GLenum(37737)
+ GLenum_GL_FONT_UNAVAILABLE_NV = GLenum(37738)
+ GLenum_GL_FONT_UNINTELLIGIBLE_NV = GLenum(37739)
+ GLenum_GL_STANDARD_FONT_FORMAT_NV = GLenum(37740)
+ GLenum_GL_FRAGMENT_INPUT_NV = GLenum(37741)
+ GLenum_GL_UNIFORM_BUFFER_UNIFIED_NV = GLenum(37742)
+ GLenum_GL_UNIFORM_BUFFER_ADDRESS_NV = GLenum(37743)
+ GLenum_GL_UNIFORM_BUFFER_LENGTH_NV = GLenum(37744)
+ GLenum_GL_MULTISAMPLES_NV = GLenum(37745)
+ GLenum_GL_SUPERSAMPLE_SCALE_X_NV = GLenum(37746)
+ GLenum_GL_SUPERSAMPLE_SCALE_Y_NV = GLenum(37747)
+ GLenum_GL_CONFORMANT_NV = GLenum(37748)
+ GLenum_GL_CONSERVATIVE_RASTER_DILATE_NV = GLenum(37753)
+ GLenum_GL_CONSERVATIVE_RASTER_DILATE_RANGE_NV = GLenum(37754)
+ GLenum_GL_CONSERVATIVE_RASTER_DILATE_GRANULARITY_NV = GLenum(37755)
+ GLenum_GL_NUM_SAMPLE_COUNTS = GLenum(37760)
+ GLenum_GL_MULTISAMPLE_LINE_WIDTH_RANGE_ARB = GLenum(37761)
+ GLenum_GL_MULTISAMPLE_LINE_WIDTH_RANGE = GLenum(37761)
+ GLenum_GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY_ARB = GLenum(37762)
+ GLenum_GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY = GLenum(37762)
+ GLenum_GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE = GLenum(37792)
+ GLenum_GL_BGRA8_EXT = GLenum(37793)
+ GLenum_GL_TEXTURE_USAGE_ANGLE = GLenum(37794)
+ GLenum_GL_FRAMEBUFFER_ATTACHMENT_ANGLE = GLenum(37795)
+ GLenum_GL_PACK_REVERSE_ROW_ORDER_ANGLE = GLenum(37796)
+ GLenum_GL_PROGRAM_BINARY_ANGLE = GLenum(37798)
+ GLenum_GL_COMPRESSED_RGBA_ASTC_4x4 = GLenum(37808)
+ GLenum_GL_COMPRESSED_RGBA_ASTC_4x4_KHR = GLenum(37808)
+ GLenum_GL_COMPRESSED_RGBA_ASTC_5x4 = GLenum(37809)
+ GLenum_GL_COMPRESSED_RGBA_ASTC_5x4_KHR = GLenum(37809)
+ GLenum_GL_COMPRESSED_RGBA_ASTC_5x5 = GLenum(37810)
+ GLenum_GL_COMPRESSED_RGBA_ASTC_5x5_KHR = GLenum(37810)
+ GLenum_GL_COMPRESSED_RGBA_ASTC_6x5 = GLenum(37811)
+ GLenum_GL_COMPRESSED_RGBA_ASTC_6x5_KHR = GLenum(37811)
+ GLenum_GL_COMPRESSED_RGBA_ASTC_6x6 = GLenum(37812)
+ GLenum_GL_COMPRESSED_RGBA_ASTC_6x6_KHR = GLenum(37812)
+ GLenum_GL_COMPRESSED_RGBA_ASTC_8x5 = GLenum(37813)
+ GLenum_GL_COMPRESSED_RGBA_ASTC_8x5_KHR = GLenum(37813)
+ GLenum_GL_COMPRESSED_RGBA_ASTC_8x6 = GLenum(37814)
+ GLenum_GL_COMPRESSED_RGBA_ASTC_8x6_KHR = GLenum(37814)
+ GLenum_GL_COMPRESSED_RGBA_ASTC_8x8 = GLenum(37815)
+ GLenum_GL_COMPRESSED_RGBA_ASTC_8x8_KHR = GLenum(37815)
+ GLenum_GL_COMPRESSED_RGBA_ASTC_10x5 = GLenum(37816)
+ GLenum_GL_COMPRESSED_RGBA_ASTC_10x5_KHR = GLenum(37816)
+ GLenum_GL_COMPRESSED_RGBA_ASTC_10x6 = GLenum(37817)
+ GLenum_GL_COMPRESSED_RGBA_ASTC_10x6_KHR = GLenum(37817)
+ GLenum_GL_COMPRESSED_RGBA_ASTC_10x8 = GLenum(37818)
+ GLenum_GL_COMPRESSED_RGBA_ASTC_10x8_KHR = GLenum(37818)
+ GLenum_GL_COMPRESSED_RGBA_ASTC_10x10 = GLenum(37819)
+ GLenum_GL_COMPRESSED_RGBA_ASTC_10x10_KHR = GLenum(37819)
+ GLenum_GL_COMPRESSED_RGBA_ASTC_12x10 = GLenum(37820)
+ GLenum_GL_COMPRESSED_RGBA_ASTC_12x10_KHR = GLenum(37820)
+ GLenum_GL_COMPRESSED_RGBA_ASTC_12x12 = GLenum(37821)
+ GLenum_GL_COMPRESSED_RGBA_ASTC_12x12_KHR = GLenum(37821)
+ GLenum_GL_COMPRESSED_RGBA_ASTC_3x3x3_OES = GLenum(37824)
+ GLenum_GL_COMPRESSED_RGBA_ASTC_4x3x3_OES = GLenum(37825)
+ GLenum_GL_COMPRESSED_RGBA_ASTC_4x4x3_OES = GLenum(37826)
+ GLenum_GL_COMPRESSED_RGBA_ASTC_4x4x4_OES = GLenum(37827)
+ GLenum_GL_COMPRESSED_RGBA_ASTC_5x4x4_OES = GLenum(37828)
+ GLenum_GL_COMPRESSED_RGBA_ASTC_5x5x4_OES = GLenum(37829)
+ GLenum_GL_COMPRESSED_RGBA_ASTC_5x5x5_OES = GLenum(37830)
+ GLenum_GL_COMPRESSED_RGBA_ASTC_6x5x5_OES = GLenum(37831)
+ GLenum_GL_COMPRESSED_RGBA_ASTC_6x6x5_OES = GLenum(37832)
+ GLenum_GL_COMPRESSED_RGBA_ASTC_6x6x6_OES = GLenum(37833)
+ GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4 = GLenum(37840)
+ GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR = GLenum(37840)
+ GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4 = GLenum(37841)
+ GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR = GLenum(37841)
+ GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5 = GLenum(37842)
+ GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR = GLenum(37842)
+ GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5 = GLenum(37843)
+ GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR = GLenum(37843)
+ GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6 = GLenum(37844)
+ GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR = GLenum(37844)
+ GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5 = GLenum(37845)
+ GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR = GLenum(37845)
+ GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6 = GLenum(37846)
+ GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR = GLenum(37846)
+ GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8 = GLenum(37847)
+ GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR = GLenum(37847)
+ GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5 = GLenum(37848)
+ GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR = GLenum(37848)
+ GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6 = GLenum(37849)
+ GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR = GLenum(37849)
+ GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8 = GLenum(37850)
+ GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR = GLenum(37850)
+ GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10 = GLenum(37851)
+ GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR = GLenum(37851)
+ GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10 = GLenum(37852)
+ GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR = GLenum(37852)
+ GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12 = GLenum(37853)
+ GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR = GLenum(37853)
+ GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES = GLenum(37856)
+ GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES = GLenum(37857)
+ GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES = GLenum(37858)
+ GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES = GLenum(37859)
+ GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES = GLenum(37860)
+ GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES = GLenum(37861)
+ GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES = GLenum(37862)
+ GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES = GLenum(37863)
+ GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES = GLenum(37864)
+ GLenum_GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES = GLenum(37865)
+ GLenum_GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG = GLenum(37872)
+ GLenum_GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG = GLenum(37873)
+ GLenum_GL_PERFQUERY_COUNTER_EVENT_INTEL = GLenum(38128)
+ GLenum_GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL = GLenum(38129)
+ GLenum_GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL = GLenum(38130)
+ GLenum_GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL = GLenum(38131)
+ GLenum_GL_PERFQUERY_COUNTER_RAW_INTEL = GLenum(38132)
+ GLenum_GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL = GLenum(38133)
+ GLenum_GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL = GLenum(38136)
+ GLenum_GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL = GLenum(38137)
+ GLenum_GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL = GLenum(38138)
+ GLenum_GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL = GLenum(38139)
+ GLenum_GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL = GLenum(38140)
+ GLenum_GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL = GLenum(38141)
+ GLenum_GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL = GLenum(38142)
+ GLenum_GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL = GLenum(38143)
+ GLenum_GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL = GLenum(38144)
+ GLenum_GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR = GLenum(38448)
+ GLenum_GL_MAX_VIEWS_OVR = GLenum(38449)
+ GLenum_GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR = GLenum(38450)
+ GLenum_GL_GS_SHADER_BINARY_MTK = GLenum(38464)
+ GLenum_GL_GS_PROGRAM_BINARY_MTK = GLenum(38465)
+ GLenum_GL_RASTER_POSITION_UNCLIPPED_IBM = GLenum(103010)
+ GLenum_GL_CULL_VERTEX_IBM = GLenum(103050)
+ GLenum_GL_ALL_STATIC_DATA_IBM = GLenum(103060)
+ GLenum_GL_STATIC_VERTEX_ARRAY_IBM = GLenum(103061)
+ GLenum_GL_VERTEX_ARRAY_LIST_IBM = GLenum(103070)
+ GLenum_GL_NORMAL_ARRAY_LIST_IBM = GLenum(103071)
+ GLenum_GL_COLOR_ARRAY_LIST_IBM = GLenum(103072)
+ GLenum_GL_INDEX_ARRAY_LIST_IBM = GLenum(103073)
+ GLenum_GL_TEXTURE_COORD_ARRAY_LIST_IBM = GLenum(103074)
+ GLenum_GL_EDGE_FLAG_ARRAY_LIST_IBM = GLenum(103075)
+ GLenum_GL_FOG_COORDINATE_ARRAY_LIST_IBM = GLenum(103076)
+ GLenum_GL_SECONDARY_COLOR_ARRAY_LIST_IBM = GLenum(103077)
+ GLenum_GL_VERTEX_ARRAY_LIST_STRIDE_IBM = GLenum(103080)
+ GLenum_GL_NORMAL_ARRAY_LIST_STRIDE_IBM = GLenum(103081)
+ GLenum_GL_COLOR_ARRAY_LIST_STRIDE_IBM = GLenum(103082)
+ GLenum_GL_INDEX_ARRAY_LIST_STRIDE_IBM = GLenum(103083)
+ GLenum_GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM = GLenum(103084)
+ GLenum_GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM = GLenum(103085)
+ GLenum_GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM = GLenum(103086)
+ GLenum_GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM = GLenum(103087)
+ GLenum_GL_PREFER_DOUBLEBUFFER_HINT_PGI = GLenum(107000)
+ GLenum_GL_CONSERVE_MEMORY_HINT_PGI = GLenum(107005)
+ GLenum_GL_RECLAIM_MEMORY_HINT_PGI = GLenum(107006)
+ GLenum_GL_NATIVE_GRAPHICS_HANDLE_PGI = GLenum(107010)
+ GLenum_GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI = GLenum(107011)
+ GLenum_GL_NATIVE_GRAPHICS_END_HINT_PGI = GLenum(107012)
+ GLenum_GL_ALWAYS_FAST_HINT_PGI = GLenum(107020)
+ GLenum_GL_ALWAYS_SOFT_HINT_PGI = GLenum(107021)
+ GLenum_GL_ALLOW_DRAW_OBJ_HINT_PGI = GLenum(107022)
+ GLenum_GL_ALLOW_DRAW_WIN_HINT_PGI = GLenum(107023)
+ GLenum_GL_ALLOW_DRAW_FRG_HINT_PGI = GLenum(107024)
+ GLenum_GL_ALLOW_DRAW_MEM_HINT_PGI = GLenum(107025)
+ GLenum_GL_STRICT_DEPTHFUNC_HINT_PGI = GLenum(107030)
+ GLenum_GL_STRICT_LIGHTING_HINT_PGI = GLenum(107031)
+ GLenum_GL_STRICT_SCISSOR_HINT_PGI = GLenum(107032)
+ GLenum_GL_FULL_STIPPLE_HINT_PGI = GLenum(107033)
+ GLenum_GL_CLIP_NEAR_HINT_PGI = GLenum(107040)
+ GLenum_GL_CLIP_FAR_HINT_PGI = GLenum(107041)
+ GLenum_GL_WIDE_LINE_HINT_PGI = GLenum(107042)
+ GLenum_GL_BACK_NORMALS_HINT_PGI = GLenum(107043)
+ GLenum_GL_VERTEX_DATA_HINT_PGI = GLenum(107050)
+ GLenum_GL_VERTEX_CONSISTENT_HINT_PGI = GLenum(107051)
+ GLenum_GL_MATERIAL_SIDE_HINT_PGI = GLenum(107052)
+ GLenum_GL_MAX_VERTEX_HINT_PGI = GLenum(107053)
+ GLenum_GL_NUM_WINDOW_RECTANGLES_EXT = GLenum(36629)
+ GLenum_GL_FLOAT16_MAT4_AMD = GLenum(37319)
+ GLenum_GL_VIEWPORT_INDEX_PROVOKING_VERTEX_OES = GLenum(33375)
+ GLenum_GL_VIEWPORT_POSITION_W_SCALE_NV = GLenum(37756)
+ GLenum_GL_MAX_VIEWPORTS_OES = GLenum(33371)
+ GLenum_GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_AND_DOWNSAMPLE_IMG = GLenum(37180)
+ GLenum_GL_VIEWPORT_SWIZZLE_POSITIVE_W_NV = GLenum(37718)
+ GLenum_GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SCALE_IMG = GLenum(37183)
+ GLenum_GL_VIEWPORT_POSITION_W_SCALE_X_COEFF_NV = GLenum(37757)
+ GLenum_GL_VIEWPORT_SWIZZLE_Y_NV = GLenum(37721)
+ GLenum_GL_CUBIC_MIPMAP_NEAREST_IMG = GLenum(37178)
+ GLenum_GL_FLOAT16_MAT2_AMD = GLenum(37317)
+ GLenum_GL_CUBIC_IMG = GLenum(37177)
+ GLenum_GL_DOWNSAMPLE_SCALES_IMG = GLenum(37182)
+ GLenum_GL_NUM_DOWNSAMPLE_SCALES_IMG = GLenum(37181)
+ GLenum_GL_PIXELS_PER_SAMPLE_PATTERN_X_AMD = GLenum(37294)
+ GLenum_GL_FLOAT16_MAT4x3_AMD = GLenum(37325)
+ GLenum_GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES_EXT = GLenum(33530)
+ GLenum_GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_FAST_SIZE_EXT = GLenum(38480)
+ GLenum_GL_FLOAT16_MAT2x3_AMD = GLenum(37320)
+ GLenum_GL_CONSERVATIVE_RASTERIZATION_INTEL = GLenum(33790)
+ GLenum_GL_VIEWPORT_SWIZZLE_POSITIVE_Z_NV = GLenum(37716)
+ GLenum_GL_VIEWPORT_SWIZZLE_W_NV = GLenum(37723)
+ GLenum_GL_MAX_WINDOW_RECTANGLES_EXT = GLenum(36628)
+ GLenum_GL_EXCLUSIVE_EXT = GLenum(36625)
+ GLenum_GL_WINDOW_RECTANGLE_EXT = GLenum(36626)
+ GLenum_GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR = GLenum(38451)
+ GLenum_GL_CLIP_DISTANCE1_EXT = GLenum(12289)
+ GLenum_GL_FLOAT16_MAT4x2_AMD = GLenum(37324)
+ GLenum_GL_CONSERVATIVE_RASTER_MODE_NV = GLenum(38221)
+ GLenum_GL_CLIP_DISTANCE7_EXT = GLenum(12295)
+ GLenum_GL_VIEWPORT_SWIZZLE_Z_NV = GLenum(37722)
+ GLenum_GL_VIEWPORT_SWIZZLE_NEGATIVE_Y_NV = GLenum(37715)
+ GLenum_GL_PURGED_CONTEXT_RESET_NV = GLenum(37563)
+ GLenum_GL_CONSERVATIVE_RASTER_MODE_POST_SNAP_NV = GLenum(38222)
+ GLenum_GL_FLOAT16_MAT2x4_AMD = GLenum(37321)
+ GLenum_GL_CUBIC_MIPMAP_LINEAR_IMG = GLenum(37179)
+ GLenum_GL_ALL_PIXELS_AMD = GLenum(4294967295)
+ GLenum_GL_CLIP_DISTANCE5_EXT = GLenum(12293)
+ GLenum_GL_VIEWPORT_SWIZZLE_POSITIVE_Y_NV = GLenum(37714)
+ GLenum_GL_CLIP_DISTANCE4_EXT = GLenum(12292)
+ GLenum_GL_PIXELS_PER_SAMPLE_PATTERN_Y_AMD = GLenum(37295)
+ GLenum_GL_VIEWPORT_SUBPIXEL_BITS_OES = GLenum(33372)
+ GLenum_GL_VIEWPORT_SWIZZLE_NEGATIVE_Z_NV = GLenum(37717)
+ GLenum_GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV = GLenum(38223)
+ GLenum_GL_FLOAT16_MAT3_AMD = GLenum(37318)
+ GLenum_GL_VIEWPORT_SWIZZLE_NEGATIVE_W_NV = GLenum(37719)
+ GLenum_GL_CLIP_DISTANCE3_EXT = GLenum(12291)
+ GLenum_GL_FLOAT16_MAT3x4_AMD = GLenum(37323)
+ GLenum_GL_VIEWPORT_BOUNDS_RANGE_OES = GLenum(33373)
+ GLenum_GL_MAX_CULL_DISTANCES_EXT = GLenum(33529)
+ GLenum_GL_VIEWPORT_SWIZZLE_X_NV = GLenum(37720)
+ GLenum_GL_MAX_CLIP_DISTANCES_EXT = GLenum(3378)
+ GLenum_GL_CLIP_DISTANCE2_EXT = GLenum(12290)
+ GLenum_GL_VIEWPORT_SWIZZLE_NEGATIVE_X_NV = GLenum(37713)
+ GLenum_GL_FLOAT16_MAT3x2_AMD = GLenum(37322)
+ GLenum_GL_FRAMEBUFFER_INCOMPLETE_INSUFFICIENT_SHADER_COMBINED_LOCAL_STORAGE_EXT = GLenum(38482)
+ GLenum_GL_VIEWPORT_POSITION_W_SCALE_Y_COEFF_NV = GLenum(37758)
+ GLenum_GL_WINDOW_RECTANGLE_MODE_EXT = GLenum(36627)
+ GLenum_GL_INCLUSIVE_EXT = GLenum(36624)
+ GLenum_GL_VIEWPORT_SWIZZLE_POSITIVE_X_NV = GLenum(37712)
+ GLenum_GL_TEXTURE_PROTECTED_EXT = GLenum(35834)
+ GLenum_GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_SIZE_EXT = GLenum(38481)
+ GLenum_GL_CLIP_DISTANCE6_EXT = GLenum(12294)
+ GLenum_GL_CLIP_DISTANCE0_EXT = GLenum(12288)
)
var _GLenum_map = map[GLenum]string{}
@@ -11600,6 +11767,71 @@
{Name: "GL_VERTEX_CONSISTENT_HINT_PGI", Value: uint32(107051)},
{Name: "GL_MATERIAL_SIDE_HINT_PGI", Value: uint32(107052)},
{Name: "GL_MAX_VERTEX_HINT_PGI", Value: uint32(107053)},
+ {Name: "GL_NUM_WINDOW_RECTANGLES_EXT", Value: uint32(36629)},
+ {Name: "GL_FLOAT16_MAT4_AMD", Value: uint32(37319)},
+ {Name: "GL_VIEWPORT_INDEX_PROVOKING_VERTEX_OES", Value: uint32(33375)},
+ {Name: "GL_VIEWPORT_POSITION_W_SCALE_NV", Value: uint32(37756)},
+ {Name: "GL_MAX_VIEWPORTS_OES", Value: uint32(33371)},
+ {Name: "GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_AND_DOWNSAMPLE_IMG", Value: uint32(37180)},
+ {Name: "GL_VIEWPORT_SWIZZLE_POSITIVE_W_NV", Value: uint32(37718)},
+ {Name: "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SCALE_IMG", Value: uint32(37183)},
+ {Name: "GL_VIEWPORT_POSITION_W_SCALE_X_COEFF_NV", Value: uint32(37757)},
+ {Name: "GL_VIEWPORT_SWIZZLE_Y_NV", Value: uint32(37721)},
+ {Name: "GL_CUBIC_MIPMAP_NEAREST_IMG", Value: uint32(37178)},
+ {Name: "GL_FLOAT16_MAT2_AMD", Value: uint32(37317)},
+ {Name: "GL_CUBIC_IMG", Value: uint32(37177)},
+ {Name: "GL_DOWNSAMPLE_SCALES_IMG", Value: uint32(37182)},
+ {Name: "GL_NUM_DOWNSAMPLE_SCALES_IMG", Value: uint32(37181)},
+ {Name: "GL_PIXELS_PER_SAMPLE_PATTERN_X_AMD", Value: uint32(37294)},
+ {Name: "GL_FLOAT16_MAT4x3_AMD", Value: uint32(37325)},
+ {Name: "GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES_EXT", Value: uint32(33530)},
+ {Name: "GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_FAST_SIZE_EXT", Value: uint32(38480)},
+ {Name: "GL_FLOAT16_MAT2x3_AMD", Value: uint32(37320)},
+ {Name: "GL_CONSERVATIVE_RASTERIZATION_INTEL", Value: uint32(33790)},
+ {Name: "GL_VIEWPORT_SWIZZLE_POSITIVE_Z_NV", Value: uint32(37716)},
+ {Name: "GL_VIEWPORT_SWIZZLE_W_NV", Value: uint32(37723)},
+ {Name: "GL_MAX_WINDOW_RECTANGLES_EXT", Value: uint32(36628)},
+ {Name: "GL_EXCLUSIVE_EXT", Value: uint32(36625)},
+ {Name: "GL_WINDOW_RECTANGLE_EXT", Value: uint32(36626)},
+ {Name: "GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR", Value: uint32(38451)},
+ {Name: "GL_CLIP_DISTANCE1_EXT", Value: uint32(12289)},
+ {Name: "GL_FLOAT16_MAT4x2_AMD", Value: uint32(37324)},
+ {Name: "GL_CONSERVATIVE_RASTER_MODE_NV", Value: uint32(38221)},
+ {Name: "GL_CLIP_DISTANCE7_EXT", Value: uint32(12295)},
+ {Name: "GL_VIEWPORT_SWIZZLE_Z_NV", Value: uint32(37722)},
+ {Name: "GL_VIEWPORT_SWIZZLE_NEGATIVE_Y_NV", Value: uint32(37715)},
+ {Name: "GL_PURGED_CONTEXT_RESET_NV", Value: uint32(37563)},
+ {Name: "GL_CONSERVATIVE_RASTER_MODE_POST_SNAP_NV", Value: uint32(38222)},
+ {Name: "GL_FLOAT16_MAT2x4_AMD", Value: uint32(37321)},
+ {Name: "GL_CUBIC_MIPMAP_LINEAR_IMG", Value: uint32(37179)},
+ {Name: "GL_ALL_PIXELS_AMD", Value: uint32(4294967295)},
+ {Name: "GL_CLIP_DISTANCE5_EXT", Value: uint32(12293)},
+ {Name: "GL_VIEWPORT_SWIZZLE_POSITIVE_Y_NV", Value: uint32(37714)},
+ {Name: "GL_CLIP_DISTANCE4_EXT", Value: uint32(12292)},
+ {Name: "GL_PIXELS_PER_SAMPLE_PATTERN_Y_AMD", Value: uint32(37295)},
+ {Name: "GL_VIEWPORT_SUBPIXEL_BITS_OES", Value: uint32(33372)},
+ {Name: "GL_VIEWPORT_SWIZZLE_NEGATIVE_Z_NV", Value: uint32(37717)},
+ {Name: "GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV", Value: uint32(38223)},
+ {Name: "GL_FLOAT16_MAT3_AMD", Value: uint32(37318)},
+ {Name: "GL_VIEWPORT_SWIZZLE_NEGATIVE_W_NV", Value: uint32(37719)},
+ {Name: "GL_CLIP_DISTANCE3_EXT", Value: uint32(12291)},
+ {Name: "GL_FLOAT16_MAT3x4_AMD", Value: uint32(37323)},
+ {Name: "GL_VIEWPORT_BOUNDS_RANGE_OES", Value: uint32(33373)},
+ {Name: "GL_MAX_CULL_DISTANCES_EXT", Value: uint32(33529)},
+ {Name: "GL_VIEWPORT_SWIZZLE_X_NV", Value: uint32(37720)},
+ {Name: "GL_MAX_CLIP_DISTANCES_EXT", Value: uint32(3378)},
+ {Name: "GL_CLIP_DISTANCE2_EXT", Value: uint32(12290)},
+ {Name: "GL_VIEWPORT_SWIZZLE_NEGATIVE_X_NV", Value: uint32(37713)},
+ {Name: "GL_FLOAT16_MAT3x2_AMD", Value: uint32(37322)},
+ {Name: "GL_FRAMEBUFFER_INCOMPLETE_INSUFFICIENT_SHADER_COMBINED_LOCAL_STORAGE_EXT", Value: uint32(38482)},
+ {Name: "GL_VIEWPORT_POSITION_W_SCALE_Y_COEFF_NV", Value: uint32(37758)},
+ {Name: "GL_WINDOW_RECTANGLE_MODE_EXT", Value: uint32(36627)},
+ {Name: "GL_INCLUSIVE_EXT", Value: uint32(36624)},
+ {Name: "GL_VIEWPORT_SWIZZLE_POSITIVE_X_NV", Value: uint32(37712)},
+ {Name: "GL_TEXTURE_PROTECTED_EXT", Value: uint32(35834)},
+ {Name: "GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_SIZE_EXT", Value: uint32(38481)},
+ {Name: "GL_CLIP_DISTANCE6_EXT", Value: uint32(12294)},
+ {Name: "GL_CLIP_DISTANCE0_EXT", Value: uint32(12288)},
},
}
ConstantValues = append(ConstantValues, _GLenum_cs)
@@ -11621,121 +11853,134 @@
type ExtensionId uint32
const (
- ExtensionId_GL_AMD_compressed_ATC_texture = ExtensionId(1)
- ExtensionId_GL_AMD_performance_monitor = ExtensionId(2)
- ExtensionId_GL_ANGLE_framebuffer_blit = ExtensionId(3)
- ExtensionId_GL_ANGLE_framebuffer_multisample = ExtensionId(4)
- ExtensionId_GL_ANGLE_instanced_arrays = ExtensionId(5)
- ExtensionId_GL_ANGLE_translated_shader_source = ExtensionId(6)
- ExtensionId_GL_APPLE_copy_texture_levels = ExtensionId(7)
- ExtensionId_GL_APPLE_framebuffer_multisample = ExtensionId(8)
- ExtensionId_GL_APPLE_sync = ExtensionId(9)
- ExtensionId_GL_EXT_base_instance = ExtensionId(10)
- ExtensionId_GL_EXT_blend_func_extended = ExtensionId(11)
- ExtensionId_GL_EXT_buffer_storage = ExtensionId(12)
- ExtensionId_GL_EXT_copy_image = ExtensionId(13)
- ExtensionId_GL_EXT_debug_label = ExtensionId(14)
- ExtensionId_GL_EXT_debug_marker = ExtensionId(15)
- ExtensionId_GL_EXT_discard_framebuffer = ExtensionId(16)
- ExtensionId_GL_EXT_disjoint_timer_query = ExtensionId(17)
- ExtensionId_GL_EXT_draw_buffers = ExtensionId(18)
- ExtensionId_GL_EXT_draw_buffers_indexed = ExtensionId(19)
- ExtensionId_GL_EXT_draw_elements_base_vertex = ExtensionId(20)
- ExtensionId_GL_EXT_draw_instanced = ExtensionId(21)
- ExtensionId_GL_EXT_geometry_shader = ExtensionId(22)
- ExtensionId_GL_EXT_instanced_arrays = ExtensionId(23)
- ExtensionId_GL_EXT_map_buffer_range = ExtensionId(24)
- ExtensionId_GL_EXT_multi_draw_arrays = ExtensionId(25)
- ExtensionId_GL_EXT_multi_draw_indirect = ExtensionId(26)
- ExtensionId_GL_EXT_multisampled_render_to_texture = ExtensionId(27)
- ExtensionId_GL_EXT_multiview_draw_buffers = ExtensionId(28)
- ExtensionId_GL_EXT_occlusion_query_boolean = ExtensionId(29)
- ExtensionId_GL_EXT_primitive_bounding_box = ExtensionId(30)
- ExtensionId_GL_EXT_raster_multisample = ExtensionId(31)
- ExtensionId_GL_EXT_robustness = ExtensionId(32)
- ExtensionId_GL_EXT_separate_shader_objects = ExtensionId(33)
- ExtensionId_GL_EXT_sparse_texture = ExtensionId(34)
- ExtensionId_GL_EXT_tessellation_shader = ExtensionId(35)
- ExtensionId_GL_EXT_texture_border_clamp = ExtensionId(36)
- ExtensionId_GL_EXT_texture_buffer = ExtensionId(37)
- ExtensionId_GL_EXT_texture_filter_minmax = ExtensionId(38)
- ExtensionId_GL_EXT_texture_storage = ExtensionId(39)
- ExtensionId_GL_EXT_texture_view = ExtensionId(40)
- ExtensionId_GL_IMG_multisampled_render_to_texture = ExtensionId(41)
- ExtensionId_GL_IMG_user_clip_plane = ExtensionId(42)
- ExtensionId_GL_INTEL_framebuffer_CMAA = ExtensionId(43)
- ExtensionId_GL_INTEL_performance_query = ExtensionId(44)
- ExtensionId_GL_KHR_blend_equation_advanced = ExtensionId(45)
- ExtensionId_GL_KHR_debug = ExtensionId(46)
- ExtensionId_GL_KHR_robustness = ExtensionId(47)
- ExtensionId_GL_NV_bindless_texture = ExtensionId(48)
- ExtensionId_GL_NV_blend_equation_advanced = ExtensionId(49)
- ExtensionId_GL_NV_conditional_render = ExtensionId(50)
- ExtensionId_GL_NV_conservative_raster = ExtensionId(51)
- ExtensionId_GL_NV_copy_buffer = ExtensionId(52)
- ExtensionId_GL_NV_coverage_sample = ExtensionId(53)
- ExtensionId_GL_NV_draw_buffers = ExtensionId(54)
- ExtensionId_GL_NV_draw_instanced = ExtensionId(55)
- ExtensionId_GL_NV_fence = ExtensionId(56)
- ExtensionId_GL_NV_fragment_coverage_to_color = ExtensionId(57)
- ExtensionId_GL_NV_framebuffer_blit = ExtensionId(58)
- ExtensionId_GL_NV_framebuffer_mixed_samples = ExtensionId(59)
- ExtensionId_GL_NV_framebuffer_multisample = ExtensionId(60)
- ExtensionId_GL_NV_instanced_arrays = ExtensionId(61)
- ExtensionId_GL_NV_internalformat_sample_query = ExtensionId(62)
- ExtensionId_GL_NV_non_square_matrices = ExtensionId(63)
- ExtensionId_GL_NV_path_rendering = ExtensionId(64)
- ExtensionId_GL_NV_polygon_mode = ExtensionId(65)
- ExtensionId_GL_NV_read_buffer = ExtensionId(66)
- ExtensionId_GL_NV_sample_locations = ExtensionId(67)
- ExtensionId_GL_NV_viewport_array = ExtensionId(68)
- ExtensionId_GL_OES_blend_equation_separate = ExtensionId(69)
- ExtensionId_GL_OES_blend_func_separate = ExtensionId(70)
- ExtensionId_GL_OES_blend_subtract = ExtensionId(71)
- ExtensionId_GL_OES_copy_image = ExtensionId(72)
- ExtensionId_GL_OES_draw_buffers_indexed = ExtensionId(73)
- ExtensionId_GL_OES_draw_elements_base_vertex = ExtensionId(74)
- ExtensionId_GL_OES_draw_texture = ExtensionId(75)
- ExtensionId_GL_OES_EGL_image = ExtensionId(76)
- ExtensionId_GL_OES_fixed_point = ExtensionId(77)
- ExtensionId_GL_OES_framebuffer_object = ExtensionId(78)
- ExtensionId_GL_OES_geometry_shader = ExtensionId(79)
- ExtensionId_GL_OES_get_program_binary = ExtensionId(80)
- ExtensionId_GL_OES_mapbuffer = ExtensionId(81)
- ExtensionId_GL_OES_matrix_palette = ExtensionId(82)
- ExtensionId_GL_OES_point_size_array = ExtensionId(83)
- ExtensionId_GL_OES_primitive_bounding_box = ExtensionId(84)
- ExtensionId_GL_OES_query_matrix = ExtensionId(85)
- ExtensionId_GL_OES_sample_shading = ExtensionId(86)
- ExtensionId_GL_OES_single_precision = ExtensionId(87)
- ExtensionId_GL_OES_tessellation_shader = ExtensionId(88)
- ExtensionId_GL_OES_texture_3D = ExtensionId(89)
- ExtensionId_GL_OES_texture_border_clamp = ExtensionId(90)
- ExtensionId_GL_OES_texture_buffer = ExtensionId(91)
- ExtensionId_GL_OES_texture_cube_map = ExtensionId(92)
- ExtensionId_GL_OES_texture_half_float = ExtensionId(93)
- ExtensionId_GL_OES_texture_storage_multisample_2d_array = ExtensionId(94)
- ExtensionId_GL_OES_texture_view = ExtensionId(95)
- ExtensionId_GL_OES_vertex_array_object = ExtensionId(96)
- ExtensionId_GL_OES_vertex_half_float = ExtensionId(97)
- ExtensionId_GL_OVR_multiview = ExtensionId(98)
- ExtensionId_GL_QCOM_alpha_test = ExtensionId(99)
- ExtensionId_GL_QCOM_driver_control = ExtensionId(100)
- ExtensionId_GL_QCOM_extended_get = ExtensionId(101)
- ExtensionId_GL_QCOM_extended_get2 = ExtensionId(102)
- ExtensionId_GL_QCOM_tiled_rendering = ExtensionId(103)
- ExtensionId_GL_OES_compressed_ETC1_RGB8_texture = ExtensionId(104)
- ExtensionId_GL_EXT_texture_filter_anisotropic = ExtensionId(105)
- ExtensionId_GL_EXT_texture_norm16 = ExtensionId(106)
- ExtensionId_GL_EXT_texture_sRGB_decode = ExtensionId(107)
- ExtensionId_GL_OES_depth_texture = ExtensionId(108)
- ExtensionId_GL_EXT_sRGB_write_control = ExtensionId(109)
- ExtensionId_GL_EXT_texture_rg = ExtensionId(110)
- ExtensionId_GL_EXT_texture_compression_s3tc = ExtensionId(111)
- ExtensionId_GL_OES_packed_depth_stencil = ExtensionId(112)
- ExtensionId_GL_EXT_texture_format_BGRA8888 = ExtensionId(113)
- ExtensionId_EGL_KHR_image_base = ExtensionId(400)
- ExtensionId_ANDROID_image_native_buffer = ExtensionId(500)
+ ExtensionId_GL_AMD_compressed_ATC_texture = ExtensionId(1)
+ ExtensionId_GL_AMD_performance_monitor = ExtensionId(2)
+ ExtensionId_GL_ANGLE_framebuffer_blit = ExtensionId(3)
+ ExtensionId_GL_ANGLE_framebuffer_multisample = ExtensionId(4)
+ ExtensionId_GL_ANGLE_instanced_arrays = ExtensionId(5)
+ ExtensionId_GL_ANGLE_translated_shader_source = ExtensionId(6)
+ ExtensionId_GL_APPLE_copy_texture_levels = ExtensionId(7)
+ ExtensionId_GL_APPLE_framebuffer_multisample = ExtensionId(8)
+ ExtensionId_GL_APPLE_sync = ExtensionId(9)
+ ExtensionId_GL_EXT_base_instance = ExtensionId(10)
+ ExtensionId_GL_EXT_blend_func_extended = ExtensionId(11)
+ ExtensionId_GL_EXT_buffer_storage = ExtensionId(12)
+ ExtensionId_GL_EXT_copy_image = ExtensionId(13)
+ ExtensionId_GL_EXT_debug_label = ExtensionId(14)
+ ExtensionId_GL_EXT_debug_marker = ExtensionId(15)
+ ExtensionId_GL_EXT_discard_framebuffer = ExtensionId(16)
+ ExtensionId_GL_EXT_disjoint_timer_query = ExtensionId(17)
+ ExtensionId_GL_EXT_draw_buffers = ExtensionId(18)
+ ExtensionId_GL_EXT_draw_buffers_indexed = ExtensionId(19)
+ ExtensionId_GL_EXT_draw_elements_base_vertex = ExtensionId(20)
+ ExtensionId_GL_EXT_draw_instanced = ExtensionId(21)
+ ExtensionId_GL_EXT_geometry_shader = ExtensionId(22)
+ ExtensionId_GL_EXT_instanced_arrays = ExtensionId(23)
+ ExtensionId_GL_EXT_map_buffer_range = ExtensionId(24)
+ ExtensionId_GL_EXT_multi_draw_arrays = ExtensionId(25)
+ ExtensionId_GL_EXT_multi_draw_indirect = ExtensionId(26)
+ ExtensionId_GL_EXT_multisampled_render_to_texture = ExtensionId(27)
+ ExtensionId_GL_EXT_multiview_draw_buffers = ExtensionId(28)
+ ExtensionId_GL_EXT_occlusion_query_boolean = ExtensionId(29)
+ ExtensionId_GL_EXT_primitive_bounding_box = ExtensionId(30)
+ ExtensionId_GL_EXT_raster_multisample = ExtensionId(31)
+ ExtensionId_GL_EXT_robustness = ExtensionId(32)
+ ExtensionId_GL_EXT_separate_shader_objects = ExtensionId(33)
+ ExtensionId_GL_EXT_sparse_texture = ExtensionId(34)
+ ExtensionId_GL_EXT_tessellation_shader = ExtensionId(35)
+ ExtensionId_GL_EXT_texture_border_clamp = ExtensionId(36)
+ ExtensionId_GL_EXT_texture_buffer = ExtensionId(37)
+ ExtensionId_GL_EXT_texture_filter_minmax = ExtensionId(38)
+ ExtensionId_GL_EXT_texture_storage = ExtensionId(39)
+ ExtensionId_GL_EXT_texture_view = ExtensionId(40)
+ ExtensionId_GL_IMG_multisampled_render_to_texture = ExtensionId(41)
+ ExtensionId_GL_IMG_user_clip_plane = ExtensionId(42)
+ ExtensionId_GL_INTEL_framebuffer_CMAA = ExtensionId(43)
+ ExtensionId_GL_INTEL_performance_query = ExtensionId(44)
+ ExtensionId_GL_KHR_blend_equation_advanced = ExtensionId(45)
+ ExtensionId_GL_KHR_debug = ExtensionId(46)
+ ExtensionId_GL_KHR_robustness = ExtensionId(47)
+ ExtensionId_GL_NV_bindless_texture = ExtensionId(48)
+ ExtensionId_GL_NV_blend_equation_advanced = ExtensionId(49)
+ ExtensionId_GL_NV_conditional_render = ExtensionId(50)
+ ExtensionId_GL_NV_conservative_raster = ExtensionId(51)
+ ExtensionId_GL_NV_copy_buffer = ExtensionId(52)
+ ExtensionId_GL_NV_coverage_sample = ExtensionId(53)
+ ExtensionId_GL_NV_draw_buffers = ExtensionId(54)
+ ExtensionId_GL_NV_draw_instanced = ExtensionId(55)
+ ExtensionId_GL_NV_fence = ExtensionId(56)
+ ExtensionId_GL_NV_fragment_coverage_to_color = ExtensionId(57)
+ ExtensionId_GL_NV_framebuffer_blit = ExtensionId(58)
+ ExtensionId_GL_NV_framebuffer_mixed_samples = ExtensionId(59)
+ ExtensionId_GL_NV_framebuffer_multisample = ExtensionId(60)
+ ExtensionId_GL_NV_instanced_arrays = ExtensionId(61)
+ ExtensionId_GL_NV_internalformat_sample_query = ExtensionId(62)
+ ExtensionId_GL_NV_non_square_matrices = ExtensionId(63)
+ ExtensionId_GL_NV_path_rendering = ExtensionId(64)
+ ExtensionId_GL_NV_polygon_mode = ExtensionId(65)
+ ExtensionId_GL_NV_read_buffer = ExtensionId(66)
+ ExtensionId_GL_NV_sample_locations = ExtensionId(67)
+ ExtensionId_GL_NV_viewport_array = ExtensionId(68)
+ ExtensionId_GL_OES_blend_equation_separate = ExtensionId(69)
+ ExtensionId_GL_OES_blend_func_separate = ExtensionId(70)
+ ExtensionId_GL_OES_blend_subtract = ExtensionId(71)
+ ExtensionId_GL_OES_copy_image = ExtensionId(72)
+ ExtensionId_GL_OES_draw_buffers_indexed = ExtensionId(73)
+ ExtensionId_GL_OES_draw_elements_base_vertex = ExtensionId(74)
+ ExtensionId_GL_OES_draw_texture = ExtensionId(75)
+ ExtensionId_GL_OES_EGL_image = ExtensionId(76)
+ ExtensionId_GL_OES_fixed_point = ExtensionId(77)
+ ExtensionId_GL_OES_framebuffer_object = ExtensionId(78)
+ ExtensionId_GL_OES_geometry_shader = ExtensionId(79)
+ ExtensionId_GL_OES_get_program_binary = ExtensionId(80)
+ ExtensionId_GL_OES_mapbuffer = ExtensionId(81)
+ ExtensionId_GL_OES_matrix_palette = ExtensionId(82)
+ ExtensionId_GL_OES_point_size_array = ExtensionId(83)
+ ExtensionId_GL_OES_primitive_bounding_box = ExtensionId(84)
+ ExtensionId_GL_OES_query_matrix = ExtensionId(85)
+ ExtensionId_GL_OES_sample_shading = ExtensionId(86)
+ ExtensionId_GL_OES_single_precision = ExtensionId(87)
+ ExtensionId_GL_OES_tessellation_shader = ExtensionId(88)
+ ExtensionId_GL_OES_texture_3D = ExtensionId(89)
+ ExtensionId_GL_OES_texture_border_clamp = ExtensionId(90)
+ ExtensionId_GL_OES_texture_buffer = ExtensionId(91)
+ ExtensionId_GL_OES_texture_cube_map = ExtensionId(92)
+ ExtensionId_GL_OES_texture_half_float = ExtensionId(93)
+ ExtensionId_GL_OES_texture_storage_multisample_2d_array = ExtensionId(94)
+ ExtensionId_GL_OES_texture_view = ExtensionId(95)
+ ExtensionId_GL_OES_vertex_array_object = ExtensionId(96)
+ ExtensionId_GL_OES_vertex_half_float = ExtensionId(97)
+ ExtensionId_GL_OVR_multiview = ExtensionId(98)
+ ExtensionId_GL_QCOM_alpha_test = ExtensionId(99)
+ ExtensionId_GL_QCOM_driver_control = ExtensionId(100)
+ ExtensionId_GL_QCOM_extended_get = ExtensionId(101)
+ ExtensionId_GL_QCOM_extended_get2 = ExtensionId(102)
+ ExtensionId_GL_QCOM_tiled_rendering = ExtensionId(103)
+ ExtensionId_GL_OES_compressed_ETC1_RGB8_texture = ExtensionId(104)
+ ExtensionId_GL_EXT_texture_filter_anisotropic = ExtensionId(105)
+ ExtensionId_GL_EXT_texture_norm16 = ExtensionId(106)
+ ExtensionId_GL_EXT_texture_sRGB_decode = ExtensionId(107)
+ ExtensionId_GL_OES_depth_texture = ExtensionId(108)
+ ExtensionId_GL_EXT_sRGB_write_control = ExtensionId(109)
+ ExtensionId_GL_EXT_texture_rg = ExtensionId(110)
+ ExtensionId_GL_EXT_texture_compression_s3tc = ExtensionId(111)
+ ExtensionId_GL_OES_packed_depth_stencil = ExtensionId(112)
+ ExtensionId_GL_EXT_texture_format_BGRA8888 = ExtensionId(113)
+ ExtensionId_GL_OES_viewport_array = ExtensionId(114)
+ ExtensionId_GL_EXT_shader_pixel_local_storage2 = ExtensionId(115)
+ ExtensionId_GL_EXT_clear_texture = ExtensionId(116)
+ ExtensionId_GL_NV_conservative_raster_pre_snap_triangles = ExtensionId(118)
+ ExtensionId_GL_EXT_draw_transform_feedback = ExtensionId(119)
+ ExtensionId_GL_IMG_framebuffer_downsample = ExtensionId(123)
+ ExtensionId_GL_OVR_multiview_multisampled_render_to_texture = ExtensionId(124)
+ ExtensionId_GL_IMG_bindless_texture = ExtensionId(125)
+ ExtensionId_GL_NV_gpu_shader5 = ExtensionId(126)
+ ExtensionId_GL_EXT_polygon_offset_clamp = ExtensionId(127)
+ ExtensionId_GL_NV_viewport_swizzle = ExtensionId(128)
+ ExtensionId_GL_EXT_window_rectangles = ExtensionId(129)
+ ExtensionId_EGL_KHR_image_base = ExtensionId(400)
+ ExtensionId_EGL_ANDROID_create_native_client_buffer = ExtensionId(401)
+ ExtensionId_ANDROID_image_native_buffer = ExtensionId(500)
)
var _ExtensionId_map = map[ExtensionId]string{}
@@ -11857,7 +12102,20 @@
{Name: "GL_EXT_texture_compression_s3tc", Value: uint32(111)},
{Name: "GL_OES_packed_depth_stencil", Value: uint32(112)},
{Name: "GL_EXT_texture_format_BGRA8888", Value: uint32(113)},
+ {Name: "GL_OES_viewport_array", Value: uint32(114)},
+ {Name: "GL_EXT_shader_pixel_local_storage2", Value: uint32(115)},
+ {Name: "GL_EXT_clear_texture", Value: uint32(116)},
+ {Name: "GL_NV_conservative_raster_pre_snap_triangles", Value: uint32(118)},
+ {Name: "GL_EXT_draw_transform_feedback", Value: uint32(119)},
+ {Name: "GL_IMG_framebuffer_downsample", Value: uint32(123)},
+ {Name: "GL_OVR_multiview_multisampled_render_to_texture", Value: uint32(124)},
+ {Name: "GL_IMG_bindless_texture", Value: uint32(125)},
+ {Name: "GL_NV_gpu_shader5", Value: uint32(126)},
+ {Name: "GL_EXT_polygon_offset_clamp", Value: uint32(127)},
+ {Name: "GL_NV_viewport_swizzle", Value: uint32(128)},
+ {Name: "GL_EXT_window_rectangles", Value: uint32(129)},
{Name: "EGL_KHR_image_base", Value: uint32(400)},
+ {Name: "EGL_ANDROID_create_native_client_buffer", Value: uint32(401)},
{Name: "ANDROID_image_native_buffer", Value: uint32(500)},
},
}
diff --git a/gapid/gfxapi/gles/externs.go b/gapid/gfxapi/gles/externs.go
index 715657b..74659bc 100644
--- a/gapid/gfxapi/gles/externs.go
+++ b/gapid/gfxapi/gles/externs.go
@@ -63,6 +63,10 @@
return FindDynamicContextState(e.a.Extras())
}
+func (e externs) GetAndroidNativeBufferExtra(Voidᵖ) *AndroidNativeBufferExtra {
+ return FindAndroidNativeBufferExtra(e.a.Extras())
+}
+
func (e externs) elSize(ty GLenum) uint64 {
return uint64(DataTypeSize(ty))
}
diff --git a/gapid/gfxapi/gles/extras.go b/gapid/gfxapi/gles/extras.go
index 255ccff..6e91ff9 100644
--- a/gapid/gfxapi/gles/extras.go
+++ b/gapid/gfxapi/gles/extras.go
@@ -82,3 +82,14 @@
}
return nil
}
+
+// FindAndroidNativeBufferExtra searches for the AndroidNativeBufferExtra in the extras,
+// returning the AndroidNativeBufferExtra if found, otherwise nil.
+func FindAndroidNativeBufferExtra(extras *atom.Extras) *AndroidNativeBufferExtra {
+ for _, e := range extras.All() {
+ if di, ok := e.(*AndroidNativeBufferExtra); ok {
+ return di
+ }
+ }
+ return nil
+}
diff --git a/gapid/gfxapi/gles/gles.api b/gapid/gfxapi/gles/gles.api
index 622d7f2..381a342 100644
--- a/gapid/gfxapi/gles/gles.api
+++ b/gapid/gfxapi/gles/gles.api
@@ -15,6 +15,7 @@
api_index 1
import "api/android_extension_pack.api"
+import "api/android_native.api"
import "api/asynchronous_queries.api"
import "api/buffer_objects.api"
import "api/constants.api"
@@ -102,121 +103,134 @@
}
enum ExtensionId {
- GL_AMD_compressed_ATC_texture = 1,
- GL_AMD_performance_monitor = 2,
- GL_ANGLE_framebuffer_blit = 3,
- GL_ANGLE_framebuffer_multisample = 4,
- GL_ANGLE_instanced_arrays = 5,
- GL_ANGLE_translated_shader_source = 6,
- GL_APPLE_copy_texture_levels = 7,
- GL_APPLE_framebuffer_multisample = 8,
- GL_APPLE_sync = 9,
- GL_EXT_base_instance = 10,
- GL_EXT_blend_func_extended = 11,
- GL_EXT_buffer_storage = 12,
- GL_EXT_copy_image = 13,
- GL_EXT_debug_label = 14,
- GL_EXT_debug_marker = 15,
- GL_EXT_discard_framebuffer = 16,
- GL_EXT_disjoint_timer_query = 17,
- GL_EXT_draw_buffers = 18,
- GL_EXT_draw_buffers_indexed = 19,
- GL_EXT_draw_elements_base_vertex = 20,
- GL_EXT_draw_instanced = 21,
- GL_EXT_geometry_shader = 22,
- GL_EXT_instanced_arrays = 23,
- GL_EXT_map_buffer_range = 24,
- GL_EXT_multi_draw_arrays = 25,
- GL_EXT_multi_draw_indirect = 26,
- GL_EXT_multisampled_render_to_texture = 27,
- GL_EXT_multiview_draw_buffers = 28,
- GL_EXT_occlusion_query_boolean = 29,
- GL_EXT_primitive_bounding_box = 30,
- GL_EXT_raster_multisample = 31,
- GL_EXT_robustness = 32,
- GL_EXT_separate_shader_objects = 33,
- GL_EXT_sparse_texture = 34,
- GL_EXT_tessellation_shader = 35,
- GL_EXT_texture_border_clamp = 36,
- GL_EXT_texture_buffer = 37,
- GL_EXT_texture_filter_minmax = 38,
- GL_EXT_texture_storage = 39,
- GL_EXT_texture_view = 40,
- GL_IMG_multisampled_render_to_texture = 41,
- GL_IMG_user_clip_plane = 42,
- GL_INTEL_framebuffer_CMAA = 43,
- GL_INTEL_performance_query = 44,
- GL_KHR_blend_equation_advanced = 45,
- GL_KHR_debug = 46,
- GL_KHR_robustness = 47,
- GL_NV_bindless_texture = 48,
- GL_NV_blend_equation_advanced = 49,
- GL_NV_conditional_render = 50,
- GL_NV_conservative_raster = 51,
- GL_NV_copy_buffer = 52,
- GL_NV_coverage_sample = 53,
- GL_NV_draw_buffers = 54,
- GL_NV_draw_instanced = 55,
- GL_NV_fence = 56,
- GL_NV_fragment_coverage_to_color = 57,
- GL_NV_framebuffer_blit = 58,
- GL_NV_framebuffer_mixed_samples = 59,
- GL_NV_framebuffer_multisample = 60,
- GL_NV_instanced_arrays = 61,
- GL_NV_internalformat_sample_query = 62,
- GL_NV_non_square_matrices = 63,
- GL_NV_path_rendering = 64,
- GL_NV_polygon_mode = 65,
- GL_NV_read_buffer = 66,
- GL_NV_sample_locations = 67,
- GL_NV_viewport_array = 68,
- GL_OES_blend_equation_separate = 69,
- GL_OES_blend_func_separate = 70,
- GL_OES_blend_subtract = 71,
- GL_OES_copy_image = 72,
- GL_OES_draw_buffers_indexed = 73,
- GL_OES_draw_elements_base_vertex = 74,
- GL_OES_draw_texture = 75,
- GL_OES_EGL_image = 76,
- GL_OES_fixed_point = 77,
- GL_OES_framebuffer_object = 78,
- GL_OES_geometry_shader = 79,
- GL_OES_get_program_binary = 80,
- GL_OES_mapbuffer = 81,
- GL_OES_matrix_palette = 82,
- GL_OES_point_size_array = 83,
- GL_OES_primitive_bounding_box = 84,
- GL_OES_query_matrix = 85,
- GL_OES_sample_shading = 86,
- GL_OES_single_precision = 87,
- GL_OES_tessellation_shader = 88,
- GL_OES_texture_3D = 89,
- GL_OES_texture_border_clamp = 90,
- GL_OES_texture_buffer = 91,
- GL_OES_texture_cube_map = 92,
- GL_OES_texture_half_float = 93,
- GL_OES_texture_storage_multisample_2d_array = 94,
- GL_OES_texture_view = 95,
- GL_OES_vertex_array_object = 96,
- GL_OES_vertex_half_float = 97,
- GL_OVR_multiview = 98,
- GL_QCOM_alpha_test = 99,
- GL_QCOM_driver_control = 100,
- GL_QCOM_extended_get = 101,
- GL_QCOM_extended_get2 = 102,
- GL_QCOM_tiled_rendering = 103,
- GL_OES_compressed_ETC1_RGB8_texture = 104,
- GL_EXT_texture_filter_anisotropic = 105,
- GL_EXT_texture_norm16 = 106,
- GL_EXT_texture_sRGB_decode = 107,
- GL_OES_depth_texture = 108,
- GL_EXT_sRGB_write_control = 109,
- GL_EXT_texture_rg = 110,
- GL_EXT_texture_compression_s3tc = 111,
- GL_OES_packed_depth_stencil = 112,
- GL_EXT_texture_format_BGRA8888 = 113,
+ GL_AMD_compressed_ATC_texture = 1,
+ GL_AMD_performance_monitor = 2,
+ GL_ANGLE_framebuffer_blit = 3,
+ GL_ANGLE_framebuffer_multisample = 4,
+ GL_ANGLE_instanced_arrays = 5,
+ GL_ANGLE_translated_shader_source = 6,
+ GL_APPLE_copy_texture_levels = 7,
+ GL_APPLE_framebuffer_multisample = 8,
+ GL_APPLE_sync = 9,
+ GL_EXT_base_instance = 10,
+ GL_EXT_blend_func_extended = 11,
+ GL_EXT_buffer_storage = 12,
+ GL_EXT_copy_image = 13,
+ GL_EXT_debug_label = 14,
+ GL_EXT_debug_marker = 15,
+ GL_EXT_discard_framebuffer = 16,
+ GL_EXT_disjoint_timer_query = 17,
+ GL_EXT_draw_buffers = 18,
+ GL_EXT_draw_buffers_indexed = 19,
+ GL_EXT_draw_elements_base_vertex = 20,
+ GL_EXT_draw_instanced = 21,
+ GL_EXT_geometry_shader = 22,
+ GL_EXT_instanced_arrays = 23,
+ GL_EXT_map_buffer_range = 24,
+ GL_EXT_multi_draw_arrays = 25,
+ GL_EXT_multi_draw_indirect = 26,
+ GL_EXT_multisampled_render_to_texture = 27,
+ GL_EXT_multiview_draw_buffers = 28,
+ GL_EXT_occlusion_query_boolean = 29,
+ GL_EXT_primitive_bounding_box = 30,
+ GL_EXT_raster_multisample = 31,
+ GL_EXT_robustness = 32,
+ GL_EXT_separate_shader_objects = 33,
+ GL_EXT_sparse_texture = 34,
+ GL_EXT_tessellation_shader = 35,
+ GL_EXT_texture_border_clamp = 36,
+ GL_EXT_texture_buffer = 37,
+ GL_EXT_texture_filter_minmax = 38,
+ GL_EXT_texture_storage = 39,
+ GL_EXT_texture_view = 40,
+ GL_IMG_multisampled_render_to_texture = 41,
+ GL_IMG_user_clip_plane = 42,
+ GL_INTEL_framebuffer_CMAA = 43,
+ GL_INTEL_performance_query = 44,
+ GL_KHR_blend_equation_advanced = 45,
+ GL_KHR_debug = 46,
+ GL_KHR_robustness = 47,
+ GL_NV_bindless_texture = 48,
+ GL_NV_blend_equation_advanced = 49,
+ GL_NV_conditional_render = 50,
+ GL_NV_conservative_raster = 51,
+ GL_NV_copy_buffer = 52,
+ GL_NV_coverage_sample = 53,
+ GL_NV_draw_buffers = 54,
+ GL_NV_draw_instanced = 55,
+ GL_NV_fence = 56,
+ GL_NV_fragment_coverage_to_color = 57,
+ GL_NV_framebuffer_blit = 58,
+ GL_NV_framebuffer_mixed_samples = 59,
+ GL_NV_framebuffer_multisample = 60,
+ GL_NV_instanced_arrays = 61,
+ GL_NV_internalformat_sample_query = 62,
+ GL_NV_non_square_matrices = 63,
+ GL_NV_path_rendering = 64,
+ GL_NV_polygon_mode = 65,
+ GL_NV_read_buffer = 66,
+ GL_NV_sample_locations = 67,
+ GL_NV_viewport_array = 68,
+ GL_OES_blend_equation_separate = 69,
+ GL_OES_blend_func_separate = 70,
+ GL_OES_blend_subtract = 71,
+ GL_OES_copy_image = 72,
+ GL_OES_draw_buffers_indexed = 73,
+ GL_OES_draw_elements_base_vertex = 74,
+ GL_OES_draw_texture = 75,
+ GL_OES_EGL_image = 76,
+ GL_OES_fixed_point = 77,
+ GL_OES_framebuffer_object = 78,
+ GL_OES_geometry_shader = 79,
+ GL_OES_get_program_binary = 80,
+ GL_OES_mapbuffer = 81,
+ GL_OES_matrix_palette = 82,
+ GL_OES_point_size_array = 83,
+ GL_OES_primitive_bounding_box = 84,
+ GL_OES_query_matrix = 85,
+ GL_OES_sample_shading = 86,
+ GL_OES_single_precision = 87,
+ GL_OES_tessellation_shader = 88,
+ GL_OES_texture_3D = 89,
+ GL_OES_texture_border_clamp = 90,
+ GL_OES_texture_buffer = 91,
+ GL_OES_texture_cube_map = 92,
+ GL_OES_texture_half_float = 93,
+ GL_OES_texture_storage_multisample_2d_array = 94,
+ GL_OES_texture_view = 95,
+ GL_OES_vertex_array_object = 96,
+ GL_OES_vertex_half_float = 97,
+ GL_OVR_multiview = 98,
+ GL_QCOM_alpha_test = 99,
+ GL_QCOM_driver_control = 100,
+ GL_QCOM_extended_get = 101,
+ GL_QCOM_extended_get2 = 102,
+ GL_QCOM_tiled_rendering = 103,
+ GL_OES_compressed_ETC1_RGB8_texture = 104,
+ GL_EXT_texture_filter_anisotropic = 105,
+ GL_EXT_texture_norm16 = 106,
+ GL_EXT_texture_sRGB_decode = 107,
+ GL_OES_depth_texture = 108,
+ GL_EXT_sRGB_write_control = 109,
+ GL_EXT_texture_rg = 110,
+ GL_EXT_texture_compression_s3tc = 111,
+ GL_OES_packed_depth_stencil = 112,
+ GL_EXT_texture_format_BGRA8888 = 113,
+ GL_OES_viewport_array = 114,
+ GL_EXT_shader_pixel_local_storage2 = 115,
+ GL_EXT_clear_texture = 116,
+ GL_NV_conservative_raster_pre_snap_triangles = 118,
+ GL_EXT_draw_transform_feedback = 119,
+ GL_IMG_framebuffer_downsample = 123,
+ GL_OVR_multiview_multisampled_render_to_texture = 124,
+ GL_IMG_bindless_texture = 125,
+ GL_NV_gpu_shader5 = 126,
+ GL_EXT_polygon_offset_clamp = 127,
+ GL_NV_viewport_swizzle = 128,
+ GL_EXT_window_rectangles = 129,
EGL_KHR_image_base = 400,
+ EGL_ANDROID_create_native_client_buffer = 401,
ANDROID_image_native_buffer = 500,
}
diff --git a/gapid/gfxapi/gles/gles_binary.go b/gapid/gfxapi/gles/gles_binary.go
index 18782fe..bbd8726 100644
--- a/gapid/gfxapi/gles/gles_binary.go
+++ b/gapid/gfxapi/gles/gles_binary.go
@@ -22,7 +22,10 @@
const (
ixǁActiveAttribute = iota
ixǁActiveUniform
+ ixǁAndroidNativeBufferExtra
ixǁBlendState
+ ixǁBoolˢ
+ ixǁBoolᵖ
ixǁVec4f
ixǁBoundingBox
ixǁU8ˢ
@@ -82,6 +85,7 @@
ixǁRenderbuffer
ixǁImage
ixǁCubemapLevel
+ ixǁGLeglImageOES
ixǁTexture
ixǁDefaultTextureObjects
ixǁFramebufferAttachment
@@ -155,6 +159,7 @@
ixǁEglCopyBuffers
ixǁEglCreateContext
ixǁEglCreateImageKHR
+ ixǁEglCreateNativeClientBufferANDROID
ixǁEglCreatePbufferFromClientBuffer
ixǁEglCreatePbufferSurface
ixǁEglCreatePixmapSurface
@@ -206,7 +211,6 @@
ixǁGLcharᶜᵖˢ
ixǁGLcharᶜᵖᵖ
ixǁGLcharᶜᵖᶜᵖ
- ixǁGLeglImageOES
ixǁGLenumˢ
ixǁGLenumᶜᵖ
ixǁGLfixedˢ
@@ -218,6 +222,9 @@
ixǁGLfloatˢ
ixǁGLfloatᵖ
ixǁGLfloatᶜᵖ
+ ixǁGLint64EXTˢ
+ ixǁGLint64EXTᵖ
+ ixǁGLint64EXTᶜᵖ
ixǁGLint64ˢ
ixǁGLint64ᵖ
ixǁGLintː1ᵃ
@@ -234,6 +241,9 @@
ixǁGLubyteˢ
ixǁGLubyteᵖ
ixǁGLubyteᶜᵖ
+ ixǁGLuint64EXTˢ
+ ixǁGLuint64EXTᵖ
+ ixǁGLuint64EXTᶜᵖ
ixǁGLuint64ˢ
ixǁGLuint64ᵖ
ixǁGLuint64ᶜᵖ
@@ -324,7 +334,10 @@
ixǁGlClearDepthfOES
ixǁGlClearDepthx
ixǁGlClearDepthxOES
+ ixǁGlClearPixelLocalStorageuiEXT
ixǁGlClearStencil
+ ixǁGlClearTexImageEXT
+ ixǁGlClearTexSubImageEXT
ixǁGlClientActiveTexture
ixǁGlClientWaitSync
ixǁGlClientWaitSyncAPPLE
@@ -352,6 +365,7 @@
ixǁGlCompressedTexSubImage2D
ixǁGlCompressedTexSubImage3D
ixǁGlCompressedTexSubImage3DOES
+ ixǁGlConservativeRasterParameteriNV
ixǁGlCopyBufferSubData
ixǁGlCopyBufferSubDataNV
ixǁGlCopyImageSubData
@@ -416,7 +430,9 @@
ixǁGlDepthFunc
ixǁGlDepthMask
ixǁGlDepthRangeArrayfvNV
+ ixǁGlDepthRangeArrayfvOES
ixǁGlDepthRangeIndexedfNV
+ ixǁGlDepthRangeIndexedfOES
ixǁGlDepthRangef
ixǁGlDepthRangefOES
ixǁGlDepthRangex
@@ -471,6 +487,8 @@
ixǁGlDrawTexsvOES
ixǁGlDrawTexxOES
ixǁGlDrawTexxvOES
+ ixǁGlDrawTransformFeedbackEXT
+ ixǁGlDrawTransformFeedbackInstancedEXT
ixǁGlEGLImageTargetRenderbufferStorageOES
ixǁGlEGLImageTargetTexture2DOES
ixǁGlEnable
@@ -520,17 +538,21 @@
ixǁGlFogxvOES
ixǁGlFragmentCoverageColorNV
ixǁGlFramebufferParameteri
+ ixǁGlFramebufferPixelLocalStorageSizeEXT
ixǁGlFramebufferRenderbuffer
ixǁGlFramebufferRenderbufferOES
ixǁGlFramebufferSampleLocationsfvNV
ixǁGlFramebufferTexture
ixǁGlFramebufferTexture2D
+ ixǁGlFramebufferTexture2DDownsampleIMG
ixǁGlFramebufferTexture2DMultisampleEXT
ixǁGlFramebufferTexture2DMultisampleIMG
ixǁGlFramebufferTexture2DOES
ixǁGlFramebufferTexture3DOES
ixǁGlFramebufferTextureEXT
ixǁGlFramebufferTextureLayer
+ ixǁGlFramebufferTextureLayerDownsampleIMG
+ ixǁGlFramebufferTextureMultisampleMultiviewOVR
ixǁGlFramebufferTextureMultiviewOVR
ixǁGlFramebufferTextureOES
ixǁGlFrontFace
@@ -591,12 +613,14 @@
ixǁGlGetFixedv
ixǁGlGetFixedvOES
ixǁGlGetFloati_vNV
+ ixǁGlGetFloati_vOES
ixǁGlGetFloatv
ixǁGlGetFragDataIndexEXT
ixǁGlGetFragDataLocation
ixǁGlGetFramebufferAttachmentParameteriv
ixǁGlGetFramebufferAttachmentParameterivOES
ixǁGlGetFramebufferParameteriv
+ ixǁGlGetFramebufferPixelLocalStorageSizeEXT
ixǁGlGetGraphicsResetStatus
ixǁGlGetGraphicsResetStatusEXT
ixǁGlGetGraphicsResetStatusKHR
@@ -706,7 +730,9 @@
ixǁGlGetTexParameteriv
ixǁGlGetTexParameterxv
ixǁGlGetTexParameterxvOES
+ ixǁGlGetTextureHandleIMG
ixǁGlGetTextureHandleNV
+ ixǁGlGetTextureSamplerHandleIMG
ixǁGlGetTextureSamplerHandleNV
ixǁGlGetTransformFeedbackVarying
ixǁGlGetTranslatedShaderSourceANGLE
@@ -715,6 +741,7 @@
ixǁGlGetUniformIndices
ixǁGlGetUniformLocation
ixǁGlGetUniformfv
+ ixǁGlGetUniformi64vNV
ixǁGlGetUniformiv
ixǁGlGetUniformuiv
ixǁGlGetVertexAttribIiv
@@ -878,6 +905,7 @@
ixǁGlPointSizexOES
ixǁGlPolygonModeNV
ixǁGlPolygonOffset
+ ixǁGlPolygonOffsetClampEXT
ixǁGlPolygonOffsetx
ixǁGlPolygonOffsetxOES
ixǁGlPopDebugGroup
@@ -897,10 +925,14 @@
ixǁGlProgramUniform1fv
ixǁGlProgramUniform1fvEXT
ixǁGlProgramUniform1i
+ ixǁGlProgramUniform1i64NV
+ ixǁGlProgramUniform1i64vNV
ixǁGlProgramUniform1iEXT
ixǁGlProgramUniform1iv
ixǁGlProgramUniform1ivEXT
ixǁGlProgramUniform1ui
+ ixǁGlProgramUniform1ui64NV
+ ixǁGlProgramUniform1ui64vNV
ixǁGlProgramUniform1uiEXT
ixǁGlProgramUniform1uiv
ixǁGlProgramUniform1uivEXT
@@ -909,10 +941,14 @@
ixǁGlProgramUniform2fv
ixǁGlProgramUniform2fvEXT
ixǁGlProgramUniform2i
+ ixǁGlProgramUniform2i64NV
+ ixǁGlProgramUniform2i64vNV
ixǁGlProgramUniform2iEXT
ixǁGlProgramUniform2iv
ixǁGlProgramUniform2ivEXT
ixǁGlProgramUniform2ui
+ ixǁGlProgramUniform2ui64NV
+ ixǁGlProgramUniform2ui64vNV
ixǁGlProgramUniform2uiEXT
ixǁGlProgramUniform2uiv
ixǁGlProgramUniform2uivEXT
@@ -921,10 +957,14 @@
ixǁGlProgramUniform3fv
ixǁGlProgramUniform3fvEXT
ixǁGlProgramUniform3i
+ ixǁGlProgramUniform3i64NV
+ ixǁGlProgramUniform3i64vNV
ixǁGlProgramUniform3iEXT
ixǁGlProgramUniform3iv
ixǁGlProgramUniform3ivEXT
ixǁGlProgramUniform3ui
+ ixǁGlProgramUniform3ui64NV
+ ixǁGlProgramUniform3ui64vNV
ixǁGlProgramUniform3uiEXT
ixǁGlProgramUniform3uiv
ixǁGlProgramUniform3uivEXT
@@ -933,14 +973,20 @@
ixǁGlProgramUniform4fv
ixǁGlProgramUniform4fvEXT
ixǁGlProgramUniform4i
+ ixǁGlProgramUniform4i64NV
+ ixǁGlProgramUniform4i64vNV
ixǁGlProgramUniform4iEXT
ixǁGlProgramUniform4iv
ixǁGlProgramUniform4ivEXT
ixǁGlProgramUniform4ui
+ ixǁGlProgramUniform4ui64NV
+ ixǁGlProgramUniform4ui64vNV
ixǁGlProgramUniform4uiEXT
ixǁGlProgramUniform4uiv
ixǁGlProgramUniform4uivEXT
+ ixǁGlProgramUniformHandleui64IMG
ixǁGlProgramUniformHandleui64NV
+ ixǁGlProgramUniformHandleui64vIMG
ixǁGlProgramUniformHandleui64vNV
ixǁGlProgramUniformMatrix2fv
ixǁGlProgramUniformMatrix2fvEXT
@@ -1008,8 +1054,11 @@
ixǁGlScalexOES
ixǁGlScissor
ixǁGlScissorArrayvNV
+ ixǁGlScissorArrayvOES
ixǁGlScissorIndexedNV
+ ixǁGlScissorIndexedOES
ixǁGlScissorIndexedvNV
+ ixǁGlScissorIndexedvOES
ixǁGlSelectPerfMonitorCountersAMD
ixǁGlSetFenceNV
ixǁGlShadeModel
@@ -1098,29 +1147,47 @@
ixǁGlUniform1f
ixǁGlUniform1fv
ixǁGlUniform1i
+ ixǁGlUniform1i64NV
+ ixǁGlUniform1i64vNV
ixǁGlUniform1iv
ixǁGlUniform1ui
+ ixǁGlUniform1ui64NV
+ ixǁGlUniform1ui64vNV
ixǁGlUniform1uiv
ixǁGlUniform2f
ixǁGlUniform2fv
ixǁGlUniform2i
+ ixǁGlUniform2i64NV
+ ixǁGlUniform2i64vNV
ixǁGlUniform2iv
ixǁGlUniform2ui
+ ixǁGlUniform2ui64NV
+ ixǁGlUniform2ui64vNV
ixǁGlUniform2uiv
ixǁGlUniform3f
ixǁGlUniform3fv
ixǁGlUniform3i
+ ixǁGlUniform3i64NV
+ ixǁGlUniform3i64vNV
ixǁGlUniform3iv
ixǁGlUniform3ui
+ ixǁGlUniform3ui64NV
+ ixǁGlUniform3ui64vNV
ixǁGlUniform3uiv
ixǁGlUniform4f
ixǁGlUniform4fv
ixǁGlUniform4i
+ ixǁGlUniform4i64NV
+ ixǁGlUniform4i64vNV
ixǁGlUniform4iv
ixǁGlUniform4ui
+ ixǁGlUniform4ui64NV
+ ixǁGlUniform4ui64vNV
ixǁGlUniform4uiv
ixǁGlUniformBlockBinding
+ ixǁGlUniformHandleui64IMG
ixǁGlUniformHandleui64NV
+ ixǁGlUniformHandleui64vIMG
ixǁGlUniformHandleui64vNV
ixǁGlUniformMatrix2fv
ixǁGlUniformMatrix2x3fv
@@ -1171,13 +1238,18 @@
ixǁGlVertexPointerBounds
ixǁGlViewport
ixǁGlViewportArrayvNV
+ ixǁGlViewportArrayvOES
ixǁGlViewportIndexedfNV
+ ixǁGlViewportIndexedfOES
ixǁGlViewportIndexedfvNV
+ ixǁGlViewportIndexedfvOES
+ ixǁGlViewportSwizzleNV
ixǁGlWaitSync
ixǁGlWaitSyncAPPLE
ixǁGlWeightPathsNV
ixǁGlWeightPointerOES
ixǁGlWeightPointerOESBounds
+ ixǁGlWindowRectanglesEXT
ixǁGlXCreateContext
ixǁGlXCreateNewContext
ixǁGlXMakeContextCurrent
@@ -1286,7 +1358,7 @@
ixǁu32Limits
)
-var entities [1264]binary.Entity
+var entities [1336]binary.Entity
var Namespace = registry.NewNamespace()
@@ -1294,7 +1366,10 @@
registry.Global.AddFallbacks(Namespace)
Namespace.AddClassOf((*ActiveAttribute)(nil))
Namespace.AddClassOf((*ActiveUniform)(nil))
+ Namespace.AddClassOf((*AndroidNativeBufferExtra)(nil))
Namespace.AddClassOf((*BlendState)(nil))
+ Namespace.AddClassOf((*Boolˢ)(nil))
+ Namespace.AddClassOf((*Boolᵖ)(nil))
Namespace.AddClassOf((*Vec4f)(nil))
Namespace.AddClassOf((*BoundingBox)(nil))
Namespace.AddClassOf((*U8ˢ)(nil))
@@ -1354,6 +1429,7 @@
Namespace.AddClassOf((*Renderbuffer)(nil))
Namespace.AddClassOf((*Image)(nil))
Namespace.AddClassOf((*CubemapLevel)(nil))
+ Namespace.AddClassOf((*GLeglImageOES)(nil))
Namespace.AddClassOf((*Texture)(nil))
Namespace.AddClassOf((*DefaultTextureObjects)(nil))
Namespace.AddClassOf((*FramebufferAttachment)(nil))
@@ -1427,6 +1503,7 @@
Namespace.AddClassOf((*EglCopyBuffers)(nil))
Namespace.AddClassOf((*EglCreateContext)(nil))
Namespace.AddClassOf((*EglCreateImageKHR)(nil))
+ Namespace.AddClassOf((*EglCreateNativeClientBufferANDROID)(nil))
Namespace.AddClassOf((*EglCreatePbufferFromClientBuffer)(nil))
Namespace.AddClassOf((*EglCreatePbufferSurface)(nil))
Namespace.AddClassOf((*EglCreatePixmapSurface)(nil))
@@ -1478,7 +1555,6 @@
Namespace.AddClassOf((*GLcharᶜᵖˢ)(nil))
Namespace.AddClassOf((*GLcharᶜᵖᵖ)(nil))
Namespace.AddClassOf((*GLcharᶜᵖᶜᵖ)(nil))
- Namespace.AddClassOf((*GLeglImageOES)(nil))
Namespace.AddClassOf((*GLenumˢ)(nil))
Namespace.AddClassOf((*GLenumᶜᵖ)(nil))
Namespace.AddClassOf((*GLfixedˢ)(nil))
@@ -1490,6 +1566,9 @@
Namespace.AddClassOf((*GLfloatˢ)(nil))
Namespace.AddClassOf((*GLfloatᵖ)(nil))
Namespace.AddClassOf((*GLfloatᶜᵖ)(nil))
+ Namespace.AddClassOf((*GLint64EXTˢ)(nil))
+ Namespace.AddClassOf((*GLint64EXTᵖ)(nil))
+ Namespace.AddClassOf((*GLint64EXTᶜᵖ)(nil))
Namespace.AddClassOf((*GLint64ˢ)(nil))
Namespace.AddClassOf((*GLint64ᵖ)(nil))
Namespace.AddClassOf((*GLintː1ᵃ)(nil))
@@ -1506,6 +1585,9 @@
Namespace.AddClassOf((*GLubyteˢ)(nil))
Namespace.AddClassOf((*GLubyteᵖ)(nil))
Namespace.AddClassOf((*GLubyteᶜᵖ)(nil))
+ Namespace.AddClassOf((*GLuint64EXTˢ)(nil))
+ Namespace.AddClassOf((*GLuint64EXTᵖ)(nil))
+ Namespace.AddClassOf((*GLuint64EXTᶜᵖ)(nil))
Namespace.AddClassOf((*GLuint64ˢ)(nil))
Namespace.AddClassOf((*GLuint64ᵖ)(nil))
Namespace.AddClassOf((*GLuint64ᶜᵖ)(nil))
@@ -1596,7 +1678,10 @@
Namespace.AddClassOf((*GlClearDepthfOES)(nil))
Namespace.AddClassOf((*GlClearDepthx)(nil))
Namespace.AddClassOf((*GlClearDepthxOES)(nil))
+ Namespace.AddClassOf((*GlClearPixelLocalStorageuiEXT)(nil))
Namespace.AddClassOf((*GlClearStencil)(nil))
+ Namespace.AddClassOf((*GlClearTexImageEXT)(nil))
+ Namespace.AddClassOf((*GlClearTexSubImageEXT)(nil))
Namespace.AddClassOf((*GlClientActiveTexture)(nil))
Namespace.AddClassOf((*GlClientWaitSync)(nil))
Namespace.AddClassOf((*GlClientWaitSyncAPPLE)(nil))
@@ -1624,6 +1709,7 @@
Namespace.AddClassOf((*GlCompressedTexSubImage2D)(nil))
Namespace.AddClassOf((*GlCompressedTexSubImage3D)(nil))
Namespace.AddClassOf((*GlCompressedTexSubImage3DOES)(nil))
+ Namespace.AddClassOf((*GlConservativeRasterParameteriNV)(nil))
Namespace.AddClassOf((*GlCopyBufferSubData)(nil))
Namespace.AddClassOf((*GlCopyBufferSubDataNV)(nil))
Namespace.AddClassOf((*GlCopyImageSubData)(nil))
@@ -1688,7 +1774,9 @@
Namespace.AddClassOf((*GlDepthFunc)(nil))
Namespace.AddClassOf((*GlDepthMask)(nil))
Namespace.AddClassOf((*GlDepthRangeArrayfvNV)(nil))
+ Namespace.AddClassOf((*GlDepthRangeArrayfvOES)(nil))
Namespace.AddClassOf((*GlDepthRangeIndexedfNV)(nil))
+ Namespace.AddClassOf((*GlDepthRangeIndexedfOES)(nil))
Namespace.AddClassOf((*GlDepthRangef)(nil))
Namespace.AddClassOf((*GlDepthRangefOES)(nil))
Namespace.AddClassOf((*GlDepthRangex)(nil))
@@ -1743,6 +1831,8 @@
Namespace.AddClassOf((*GlDrawTexsvOES)(nil))
Namespace.AddClassOf((*GlDrawTexxOES)(nil))
Namespace.AddClassOf((*GlDrawTexxvOES)(nil))
+ Namespace.AddClassOf((*GlDrawTransformFeedbackEXT)(nil))
+ Namespace.AddClassOf((*GlDrawTransformFeedbackInstancedEXT)(nil))
Namespace.AddClassOf((*GlEGLImageTargetRenderbufferStorageOES)(nil))
Namespace.AddClassOf((*GlEGLImageTargetTexture2DOES)(nil))
Namespace.AddClassOf((*GlEnable)(nil))
@@ -1792,17 +1882,21 @@
Namespace.AddClassOf((*GlFogxvOES)(nil))
Namespace.AddClassOf((*GlFragmentCoverageColorNV)(nil))
Namespace.AddClassOf((*GlFramebufferParameteri)(nil))
+ Namespace.AddClassOf((*GlFramebufferPixelLocalStorageSizeEXT)(nil))
Namespace.AddClassOf((*GlFramebufferRenderbuffer)(nil))
Namespace.AddClassOf((*GlFramebufferRenderbufferOES)(nil))
Namespace.AddClassOf((*GlFramebufferSampleLocationsfvNV)(nil))
Namespace.AddClassOf((*GlFramebufferTexture)(nil))
Namespace.AddClassOf((*GlFramebufferTexture2D)(nil))
+ Namespace.AddClassOf((*GlFramebufferTexture2DDownsampleIMG)(nil))
Namespace.AddClassOf((*GlFramebufferTexture2DMultisampleEXT)(nil))
Namespace.AddClassOf((*GlFramebufferTexture2DMultisampleIMG)(nil))
Namespace.AddClassOf((*GlFramebufferTexture2DOES)(nil))
Namespace.AddClassOf((*GlFramebufferTexture3DOES)(nil))
Namespace.AddClassOf((*GlFramebufferTextureEXT)(nil))
Namespace.AddClassOf((*GlFramebufferTextureLayer)(nil))
+ Namespace.AddClassOf((*GlFramebufferTextureLayerDownsampleIMG)(nil))
+ Namespace.AddClassOf((*GlFramebufferTextureMultisampleMultiviewOVR)(nil))
Namespace.AddClassOf((*GlFramebufferTextureMultiviewOVR)(nil))
Namespace.AddClassOf((*GlFramebufferTextureOES)(nil))
Namespace.AddClassOf((*GlFrontFace)(nil))
@@ -1863,12 +1957,14 @@
Namespace.AddClassOf((*GlGetFixedv)(nil))
Namespace.AddClassOf((*GlGetFixedvOES)(nil))
Namespace.AddClassOf((*GlGetFloati_vNV)(nil))
+ Namespace.AddClassOf((*GlGetFloati_vOES)(nil))
Namespace.AddClassOf((*GlGetFloatv)(nil))
Namespace.AddClassOf((*GlGetFragDataIndexEXT)(nil))
Namespace.AddClassOf((*GlGetFragDataLocation)(nil))
Namespace.AddClassOf((*GlGetFramebufferAttachmentParameteriv)(nil))
Namespace.AddClassOf((*GlGetFramebufferAttachmentParameterivOES)(nil))
Namespace.AddClassOf((*GlGetFramebufferParameteriv)(nil))
+ Namespace.AddClassOf((*GlGetFramebufferPixelLocalStorageSizeEXT)(nil))
Namespace.AddClassOf((*GlGetGraphicsResetStatus)(nil))
Namespace.AddClassOf((*GlGetGraphicsResetStatusEXT)(nil))
Namespace.AddClassOf((*GlGetGraphicsResetStatusKHR)(nil))
@@ -1978,7 +2074,9 @@
Namespace.AddClassOf((*GlGetTexParameteriv)(nil))
Namespace.AddClassOf((*GlGetTexParameterxv)(nil))
Namespace.AddClassOf((*GlGetTexParameterxvOES)(nil))
+ Namespace.AddClassOf((*GlGetTextureHandleIMG)(nil))
Namespace.AddClassOf((*GlGetTextureHandleNV)(nil))
+ Namespace.AddClassOf((*GlGetTextureSamplerHandleIMG)(nil))
Namespace.AddClassOf((*GlGetTextureSamplerHandleNV)(nil))
Namespace.AddClassOf((*GlGetTransformFeedbackVarying)(nil))
Namespace.AddClassOf((*GlGetTranslatedShaderSourceANGLE)(nil))
@@ -1987,6 +2085,7 @@
Namespace.AddClassOf((*GlGetUniformIndices)(nil))
Namespace.AddClassOf((*GlGetUniformLocation)(nil))
Namespace.AddClassOf((*GlGetUniformfv)(nil))
+ Namespace.AddClassOf((*GlGetUniformi64vNV)(nil))
Namespace.AddClassOf((*GlGetUniformiv)(nil))
Namespace.AddClassOf((*GlGetUniformuiv)(nil))
Namespace.AddClassOf((*GlGetVertexAttribIiv)(nil))
@@ -2150,6 +2249,7 @@
Namespace.AddClassOf((*GlPointSizexOES)(nil))
Namespace.AddClassOf((*GlPolygonModeNV)(nil))
Namespace.AddClassOf((*GlPolygonOffset)(nil))
+ Namespace.AddClassOf((*GlPolygonOffsetClampEXT)(nil))
Namespace.AddClassOf((*GlPolygonOffsetx)(nil))
Namespace.AddClassOf((*GlPolygonOffsetxOES)(nil))
Namespace.AddClassOf((*GlPopDebugGroup)(nil))
@@ -2169,10 +2269,14 @@
Namespace.AddClassOf((*GlProgramUniform1fv)(nil))
Namespace.AddClassOf((*GlProgramUniform1fvEXT)(nil))
Namespace.AddClassOf((*GlProgramUniform1i)(nil))
+ Namespace.AddClassOf((*GlProgramUniform1i64NV)(nil))
+ Namespace.AddClassOf((*GlProgramUniform1i64vNV)(nil))
Namespace.AddClassOf((*GlProgramUniform1iEXT)(nil))
Namespace.AddClassOf((*GlProgramUniform1iv)(nil))
Namespace.AddClassOf((*GlProgramUniform1ivEXT)(nil))
Namespace.AddClassOf((*GlProgramUniform1ui)(nil))
+ Namespace.AddClassOf((*GlProgramUniform1ui64NV)(nil))
+ Namespace.AddClassOf((*GlProgramUniform1ui64vNV)(nil))
Namespace.AddClassOf((*GlProgramUniform1uiEXT)(nil))
Namespace.AddClassOf((*GlProgramUniform1uiv)(nil))
Namespace.AddClassOf((*GlProgramUniform1uivEXT)(nil))
@@ -2181,10 +2285,14 @@
Namespace.AddClassOf((*GlProgramUniform2fv)(nil))
Namespace.AddClassOf((*GlProgramUniform2fvEXT)(nil))
Namespace.AddClassOf((*GlProgramUniform2i)(nil))
+ Namespace.AddClassOf((*GlProgramUniform2i64NV)(nil))
+ Namespace.AddClassOf((*GlProgramUniform2i64vNV)(nil))
Namespace.AddClassOf((*GlProgramUniform2iEXT)(nil))
Namespace.AddClassOf((*GlProgramUniform2iv)(nil))
Namespace.AddClassOf((*GlProgramUniform2ivEXT)(nil))
Namespace.AddClassOf((*GlProgramUniform2ui)(nil))
+ Namespace.AddClassOf((*GlProgramUniform2ui64NV)(nil))
+ Namespace.AddClassOf((*GlProgramUniform2ui64vNV)(nil))
Namespace.AddClassOf((*GlProgramUniform2uiEXT)(nil))
Namespace.AddClassOf((*GlProgramUniform2uiv)(nil))
Namespace.AddClassOf((*GlProgramUniform2uivEXT)(nil))
@@ -2193,10 +2301,14 @@
Namespace.AddClassOf((*GlProgramUniform3fv)(nil))
Namespace.AddClassOf((*GlProgramUniform3fvEXT)(nil))
Namespace.AddClassOf((*GlProgramUniform3i)(nil))
+ Namespace.AddClassOf((*GlProgramUniform3i64NV)(nil))
+ Namespace.AddClassOf((*GlProgramUniform3i64vNV)(nil))
Namespace.AddClassOf((*GlProgramUniform3iEXT)(nil))
Namespace.AddClassOf((*GlProgramUniform3iv)(nil))
Namespace.AddClassOf((*GlProgramUniform3ivEXT)(nil))
Namespace.AddClassOf((*GlProgramUniform3ui)(nil))
+ Namespace.AddClassOf((*GlProgramUniform3ui64NV)(nil))
+ Namespace.AddClassOf((*GlProgramUniform3ui64vNV)(nil))
Namespace.AddClassOf((*GlProgramUniform3uiEXT)(nil))
Namespace.AddClassOf((*GlProgramUniform3uiv)(nil))
Namespace.AddClassOf((*GlProgramUniform3uivEXT)(nil))
@@ -2205,14 +2317,20 @@
Namespace.AddClassOf((*GlProgramUniform4fv)(nil))
Namespace.AddClassOf((*GlProgramUniform4fvEXT)(nil))
Namespace.AddClassOf((*GlProgramUniform4i)(nil))
+ Namespace.AddClassOf((*GlProgramUniform4i64NV)(nil))
+ Namespace.AddClassOf((*GlProgramUniform4i64vNV)(nil))
Namespace.AddClassOf((*GlProgramUniform4iEXT)(nil))
Namespace.AddClassOf((*GlProgramUniform4iv)(nil))
Namespace.AddClassOf((*GlProgramUniform4ivEXT)(nil))
Namespace.AddClassOf((*GlProgramUniform4ui)(nil))
+ Namespace.AddClassOf((*GlProgramUniform4ui64NV)(nil))
+ Namespace.AddClassOf((*GlProgramUniform4ui64vNV)(nil))
Namespace.AddClassOf((*GlProgramUniform4uiEXT)(nil))
Namespace.AddClassOf((*GlProgramUniform4uiv)(nil))
Namespace.AddClassOf((*GlProgramUniform4uivEXT)(nil))
+ Namespace.AddClassOf((*GlProgramUniformHandleui64IMG)(nil))
Namespace.AddClassOf((*GlProgramUniformHandleui64NV)(nil))
+ Namespace.AddClassOf((*GlProgramUniformHandleui64vIMG)(nil))
Namespace.AddClassOf((*GlProgramUniformHandleui64vNV)(nil))
Namespace.AddClassOf((*GlProgramUniformMatrix2fv)(nil))
Namespace.AddClassOf((*GlProgramUniformMatrix2fvEXT)(nil))
@@ -2280,8 +2398,11 @@
Namespace.AddClassOf((*GlScalexOES)(nil))
Namespace.AddClassOf((*GlScissor)(nil))
Namespace.AddClassOf((*GlScissorArrayvNV)(nil))
+ Namespace.AddClassOf((*GlScissorArrayvOES)(nil))
Namespace.AddClassOf((*GlScissorIndexedNV)(nil))
+ Namespace.AddClassOf((*GlScissorIndexedOES)(nil))
Namespace.AddClassOf((*GlScissorIndexedvNV)(nil))
+ Namespace.AddClassOf((*GlScissorIndexedvOES)(nil))
Namespace.AddClassOf((*GlSelectPerfMonitorCountersAMD)(nil))
Namespace.AddClassOf((*GlSetFenceNV)(nil))
Namespace.AddClassOf((*GlShadeModel)(nil))
@@ -2370,29 +2491,47 @@
Namespace.AddClassOf((*GlUniform1f)(nil))
Namespace.AddClassOf((*GlUniform1fv)(nil))
Namespace.AddClassOf((*GlUniform1i)(nil))
+ Namespace.AddClassOf((*GlUniform1i64NV)(nil))
+ Namespace.AddClassOf((*GlUniform1i64vNV)(nil))
Namespace.AddClassOf((*GlUniform1iv)(nil))
Namespace.AddClassOf((*GlUniform1ui)(nil))
+ Namespace.AddClassOf((*GlUniform1ui64NV)(nil))
+ Namespace.AddClassOf((*GlUniform1ui64vNV)(nil))
Namespace.AddClassOf((*GlUniform1uiv)(nil))
Namespace.AddClassOf((*GlUniform2f)(nil))
Namespace.AddClassOf((*GlUniform2fv)(nil))
Namespace.AddClassOf((*GlUniform2i)(nil))
+ Namespace.AddClassOf((*GlUniform2i64NV)(nil))
+ Namespace.AddClassOf((*GlUniform2i64vNV)(nil))
Namespace.AddClassOf((*GlUniform2iv)(nil))
Namespace.AddClassOf((*GlUniform2ui)(nil))
+ Namespace.AddClassOf((*GlUniform2ui64NV)(nil))
+ Namespace.AddClassOf((*GlUniform2ui64vNV)(nil))
Namespace.AddClassOf((*GlUniform2uiv)(nil))
Namespace.AddClassOf((*GlUniform3f)(nil))
Namespace.AddClassOf((*GlUniform3fv)(nil))
Namespace.AddClassOf((*GlUniform3i)(nil))
+ Namespace.AddClassOf((*GlUniform3i64NV)(nil))
+ Namespace.AddClassOf((*GlUniform3i64vNV)(nil))
Namespace.AddClassOf((*GlUniform3iv)(nil))
Namespace.AddClassOf((*GlUniform3ui)(nil))
+ Namespace.AddClassOf((*GlUniform3ui64NV)(nil))
+ Namespace.AddClassOf((*GlUniform3ui64vNV)(nil))
Namespace.AddClassOf((*GlUniform3uiv)(nil))
Namespace.AddClassOf((*GlUniform4f)(nil))
Namespace.AddClassOf((*GlUniform4fv)(nil))
Namespace.AddClassOf((*GlUniform4i)(nil))
+ Namespace.AddClassOf((*GlUniform4i64NV)(nil))
+ Namespace.AddClassOf((*GlUniform4i64vNV)(nil))
Namespace.AddClassOf((*GlUniform4iv)(nil))
Namespace.AddClassOf((*GlUniform4ui)(nil))
+ Namespace.AddClassOf((*GlUniform4ui64NV)(nil))
+ Namespace.AddClassOf((*GlUniform4ui64vNV)(nil))
Namespace.AddClassOf((*GlUniform4uiv)(nil))
Namespace.AddClassOf((*GlUniformBlockBinding)(nil))
+ Namespace.AddClassOf((*GlUniformHandleui64IMG)(nil))
Namespace.AddClassOf((*GlUniformHandleui64NV)(nil))
+ Namespace.AddClassOf((*GlUniformHandleui64vIMG)(nil))
Namespace.AddClassOf((*GlUniformHandleui64vNV)(nil))
Namespace.AddClassOf((*GlUniformMatrix2fv)(nil))
Namespace.AddClassOf((*GlUniformMatrix2x3fv)(nil))
@@ -2443,13 +2582,18 @@
Namespace.AddClassOf((*GlVertexPointerBounds)(nil))
Namespace.AddClassOf((*GlViewport)(nil))
Namespace.AddClassOf((*GlViewportArrayvNV)(nil))
+ Namespace.AddClassOf((*GlViewportArrayvOES)(nil))
Namespace.AddClassOf((*GlViewportIndexedfNV)(nil))
+ Namespace.AddClassOf((*GlViewportIndexedfOES)(nil))
Namespace.AddClassOf((*GlViewportIndexedfvNV)(nil))
+ Namespace.AddClassOf((*GlViewportIndexedfvOES)(nil))
+ Namespace.AddClassOf((*GlViewportSwizzleNV)(nil))
Namespace.AddClassOf((*GlWaitSync)(nil))
Namespace.AddClassOf((*GlWaitSyncAPPLE)(nil))
Namespace.AddClassOf((*GlWeightPathsNV)(nil))
Namespace.AddClassOf((*GlWeightPointerOES)(nil))
Namespace.AddClassOf((*GlWeightPointerOESBounds)(nil))
+ Namespace.AddClassOf((*GlWindowRectanglesEXT)(nil))
Namespace.AddClassOf((*GlXCreateContext)(nil))
Namespace.AddClassOf((*GlXCreateNewContext)(nil))
Namespace.AddClassOf((*GlXMakeContextCurrent)(nil))
@@ -2642,6 +2786,51 @@
return &entities[ixǁActiveUniform]
}
+type binaryClassAndroidNativeBufferExtra struct{}
+
+func (*AndroidNativeBufferExtra) Class() binary.Class {
+ return (*binaryClassAndroidNativeBufferExtra)(nil)
+}
+func doEncodeAndroidNativeBufferExtra(e binary.Writer, o *AndroidNativeBufferExtra) {
+ e.Uint32(o.Width)
+ e.Uint32(o.Height)
+ e.Uint32(o.Stride)
+ e.Uint32(uint32(o.Format))
+ e.Uint32(uint32(o.Usage))
+}
+func doDecodeAndroidNativeBufferExtra(d binary.Reader, o *AndroidNativeBufferExtra) {
+ o.Width = uint32(d.Uint32())
+ o.Height = uint32(d.Uint32())
+ o.Stride = uint32(d.Uint32())
+ o.Format = AndroidGraphicsBufferFormat(d.Uint32())
+ o.Usage = AndroidGraphicsBufferUsage(d.Uint32())
+}
+func doDecodeRawAndroidNativeBufferExtra(d binary.Reader, o *AndroidNativeBufferExtra) {
+ o.Width = uint32(d.Uint32())
+ o.Height = uint32(d.Uint32())
+ o.Stride = uint32(d.Uint32())
+ o.Format = AndroidGraphicsBufferFormat(d.Uint32())
+ o.Usage = AndroidGraphicsBufferUsage(d.Uint32())
+}
+func (*binaryClassAndroidNativeBufferExtra) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeAndroidNativeBufferExtra(e, obj.(*AndroidNativeBufferExtra))
+}
+func (*binaryClassAndroidNativeBufferExtra) New() binary.Object {
+ return &AndroidNativeBufferExtra{}
+}
+func (*binaryClassAndroidNativeBufferExtra) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeAndroidNativeBufferExtra(d, obj.(*AndroidNativeBufferExtra))
+}
+func (o *AndroidNativeBufferExtra) WriteSimple(w binary.Writer) {
+ doEncodeAndroidNativeBufferExtra(w, o)
+}
+func (o *AndroidNativeBufferExtra) ReadSimple(r binary.Reader) {
+ doDecodeAndroidNativeBufferExtra(r, o)
+}
+func (c *binaryClassAndroidNativeBufferExtra) Schema() *binary.Entity {
+ return &entities[ixǁAndroidNativeBufferExtra]
+}
+
type binaryClassBlendState struct{}
func (*BlendState) Class() binary.Class {
@@ -2693,6 +2882,75 @@
return &entities[ixǁBlendState]
}
+type binaryClassBoolˢ struct{}
+
+func (*Boolˢ) Class() binary.Class {
+ return (*binaryClassBoolˢ)(nil)
+}
+func doEncodeBoolˢ(e binary.Writer, o *Boolˢ) {
+ e.Simple(&o.SliceInfo)
+}
+func doDecodeBoolˢ(d binary.Reader, o *Boolˢ) {
+ d.Simple(&o.SliceInfo)
+}
+func doDecodeRawBoolˢ(d binary.Reader, o *Boolˢ) {
+ d.Simple(&o.SliceInfo)
+}
+func (*binaryClassBoolˢ) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeBoolˢ(e, obj.(*Boolˢ))
+}
+func (*binaryClassBoolˢ) New() binary.Object {
+ return &Boolˢ{}
+}
+func (*binaryClassBoolˢ) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeBoolˢ(d, obj.(*Boolˢ))
+}
+func (o *Boolˢ) WriteSimple(w binary.Writer) {
+ doEncodeBoolˢ(w, o)
+}
+func (o *Boolˢ) ReadSimple(r binary.Reader) {
+ doDecodeBoolˢ(r, o)
+}
+func (c *binaryClassBoolˢ) Schema() *binary.Entity {
+ return &entities[ixǁBoolˢ]
+}
+
+type binaryClassBoolᵖ struct{}
+
+func (*Boolᵖ) Class() binary.Class {
+ return (*binaryClassBoolᵖ)(nil)
+}
+func doEncodeBoolᵖ(e binary.Writer, o *Boolᵖ) {
+ e.Uint64(o.Address)
+ e.Uint32(uint32(o.Pool))
+}
+func doDecodeBoolᵖ(d binary.Reader, o *Boolᵖ) {
+ o.Address = uint64(d.Uint64())
+ o.Pool = memory.PoolID(d.Uint32())
+}
+func doDecodeRawBoolᵖ(d binary.Reader, o *Boolᵖ) {
+ o.Address = uint64(d.Uint64())
+ o.Pool = memory.PoolID(d.Uint32())
+}
+func (*binaryClassBoolᵖ) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeBoolᵖ(e, obj.(*Boolᵖ))
+}
+func (*binaryClassBoolᵖ) New() binary.Object {
+ return &Boolᵖ{}
+}
+func (*binaryClassBoolᵖ) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeBoolᵖ(d, obj.(*Boolᵖ))
+}
+func (o *Boolᵖ) WriteSimple(w binary.Writer) {
+ doEncodeBoolᵖ(w, o)
+}
+func (o *Boolᵖ) ReadSimple(r binary.Reader) {
+ doDecodeBoolᵖ(r, o)
+}
+func (c *binaryClassBoolᵖ) Schema() *binary.Entity {
+ return &entities[ixǁBoolᵖ]
+}
+
type binaryClassVec4f struct{}
func (*Vec4f) Class() binary.Class {
@@ -5940,6 +6198,42 @@
return &entities[ixǁCubemapLevel]
}
+type binaryClassGLeglImageOES struct{}
+
+func (*GLeglImageOES) Class() binary.Class {
+ return (*binaryClassGLeglImageOES)(nil)
+}
+func doEncodeGLeglImageOES(e binary.Writer, o *GLeglImageOES) {
+ e.Uint64(o.Address)
+ e.Uint32(uint32(o.Pool))
+}
+func doDecodeGLeglImageOES(d binary.Reader, o *GLeglImageOES) {
+ o.Address = uint64(d.Uint64())
+ o.Pool = memory.PoolID(d.Uint32())
+}
+func doDecodeRawGLeglImageOES(d binary.Reader, o *GLeglImageOES) {
+ o.Address = uint64(d.Uint64())
+ o.Pool = memory.PoolID(d.Uint32())
+}
+func (*binaryClassGLeglImageOES) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGLeglImageOES(e, obj.(*GLeglImageOES))
+}
+func (*binaryClassGLeglImageOES) New() binary.Object {
+ return &GLeglImageOES{}
+}
+func (*binaryClassGLeglImageOES) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGLeglImageOES(d, obj.(*GLeglImageOES))
+}
+func (o *GLeglImageOES) WriteSimple(w binary.Writer) {
+ doEncodeGLeglImageOES(w, o)
+}
+func (o *GLeglImageOES) ReadSimple(r binary.Reader) {
+ doDecodeGLeglImageOES(r, o)
+}
+func (c *binaryClassGLeglImageOES) Schema() *binary.Entity {
+ return &entities[ixǁGLeglImageOES]
+}
+
type binaryClassTexture struct{}
func (*Texture) Class() binary.Class {
@@ -5983,6 +6277,7 @@
e.Uint32(uint32(o.ImmutableLevels))
e.String(o.Label)
e.Float32(float32(o.MaxAnisotropy))
+ e.Simple(&o.EGLImage)
}
func doDecodeTexture(d binary.Decoder, o *Texture) {
o.ID = TextureId(d.Uint32())
@@ -6032,6 +6327,7 @@
o.ImmutableLevels = GLuint(d.Uint32())
o.Label = string(d.String())
o.MaxAnisotropy = GLfloat(d.Float32())
+ d.Simple(&o.EGLImage)
}
func doDecodeRawTexture(d binary.Decoder, o *Texture) {
o.ID = TextureId(d.Uint32())
@@ -6081,6 +6377,7 @@
o.ImmutableLevels = GLuint(d.Uint32())
o.Label = string(d.String())
o.MaxAnisotropy = GLfloat(d.Float32())
+ d.Simple(&o.EGLImage)
}
func (*binaryClassTexture) Encode(e binary.Encoder, obj binary.Object) {
doEncodeTexture(e, obj.(*Texture))
@@ -6426,6 +6723,7 @@
e.Uint32(uint32(o.CompareMode))
e.Uint32(uint32(o.CompareFunc))
e.String(o.Label)
+ e.Float32(float32(o.MaxAnisotropy))
}
func doDecodeSampler(d binary.Reader, o *Sampler) {
d.Simple(&o.BorderColor)
@@ -6439,6 +6737,7 @@
o.CompareMode = GLenum(d.Uint32())
o.CompareFunc = GLenum(d.Uint32())
o.Label = string(d.String())
+ o.MaxAnisotropy = GLfloat(d.Float32())
}
func doDecodeRawSampler(d binary.Reader, o *Sampler) {
d.Simple(&o.BorderColor)
@@ -6452,6 +6751,7 @@
o.CompareMode = GLenum(d.Uint32())
o.CompareFunc = GLenum(d.Uint32())
o.Label = string(d.String())
+ o.MaxAnisotropy = GLfloat(d.Float32())
}
func (*binaryClassSampler) Encode(e binary.Encoder, obj binary.Object) {
doEncodeSampler(e, obj.(*Sampler))
@@ -10094,6 +10394,55 @@
return &entities[ixǁEglCreateImageKHR]
}
+type binaryClassEglCreateNativeClientBufferANDROID struct{}
+
+func (*EglCreateNativeClientBufferANDROID) Class() binary.Class {
+ return (*binaryClassEglCreateNativeClientBufferANDROID)(nil)
+}
+func doEncodeEglCreateNativeClientBufferANDROID(e binary.Encoder, o *EglCreateNativeClientBufferANDROID) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Simple(&o.AttribList)
+ e.Simple(&o.Result)
+}
+func doDecodeEglCreateNativeClientBufferANDROID(d binary.Decoder, o *EglCreateNativeClientBufferANDROID) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ d.Simple(&o.AttribList)
+ d.Simple(&o.Result)
+}
+func doDecodeRawEglCreateNativeClientBufferANDROID(d binary.Decoder, o *EglCreateNativeClientBufferANDROID) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ d.Simple(&o.AttribList)
+ d.Simple(&o.Result)
+}
+func (*binaryClassEglCreateNativeClientBufferANDROID) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeEglCreateNativeClientBufferANDROID(e, obj.(*EglCreateNativeClientBufferANDROID))
+}
+func (*binaryClassEglCreateNativeClientBufferANDROID) New() binary.Object {
+ return &EglCreateNativeClientBufferANDROID{}
+}
+func (*binaryClassEglCreateNativeClientBufferANDROID) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeEglCreateNativeClientBufferANDROID(d, obj.(*EglCreateNativeClientBufferANDROID))
+}
+func (c *binaryClassEglCreateNativeClientBufferANDROID) Schema() *binary.Entity {
+ return &entities[ixǁEglCreateNativeClientBufferANDROID]
+}
+
type binaryClassEglCreatePbufferFromClientBuffer struct{}
func (*EglCreatePbufferFromClientBuffer) Class() binary.Class {
@@ -12505,42 +12854,6 @@
return &entities[ixǁGLcharᶜᵖᶜᵖ]
}
-type binaryClassGLeglImageOES struct{}
-
-func (*GLeglImageOES) Class() binary.Class {
- return (*binaryClassGLeglImageOES)(nil)
-}
-func doEncodeGLeglImageOES(e binary.Writer, o *GLeglImageOES) {
- e.Uint64(o.Address)
- e.Uint32(uint32(o.Pool))
-}
-func doDecodeGLeglImageOES(d binary.Reader, o *GLeglImageOES) {
- o.Address = uint64(d.Uint64())
- o.Pool = memory.PoolID(d.Uint32())
-}
-func doDecodeRawGLeglImageOES(d binary.Reader, o *GLeglImageOES) {
- o.Address = uint64(d.Uint64())
- o.Pool = memory.PoolID(d.Uint32())
-}
-func (*binaryClassGLeglImageOES) Encode(e binary.Encoder, obj binary.Object) {
- doEncodeGLeglImageOES(e, obj.(*GLeglImageOES))
-}
-func (*binaryClassGLeglImageOES) New() binary.Object {
- return &GLeglImageOES{}
-}
-func (*binaryClassGLeglImageOES) DecodeTo(d binary.Decoder, obj binary.Object) {
- doDecodeGLeglImageOES(d, obj.(*GLeglImageOES))
-}
-func (o *GLeglImageOES) WriteSimple(w binary.Writer) {
- doEncodeGLeglImageOES(w, o)
-}
-func (o *GLeglImageOES) ReadSimple(r binary.Reader) {
- doDecodeGLeglImageOES(r, o)
-}
-func (c *binaryClassGLeglImageOES) Schema() *binary.Entity {
- return &entities[ixǁGLeglImageOES]
-}
-
type binaryClassGLenumˢ struct{}
func (*GLenumˢ) Class() binary.Class {
@@ -12946,6 +13259,111 @@
return &entities[ixǁGLfloatᶜᵖ]
}
+type binaryClassGLint64EXTˢ struct{}
+
+func (*GLint64EXTˢ) Class() binary.Class {
+ return (*binaryClassGLint64EXTˢ)(nil)
+}
+func doEncodeGLint64EXTˢ(e binary.Writer, o *GLint64EXTˢ) {
+ e.Simple(&o.SliceInfo)
+}
+func doDecodeGLint64EXTˢ(d binary.Reader, o *GLint64EXTˢ) {
+ d.Simple(&o.SliceInfo)
+}
+func doDecodeRawGLint64EXTˢ(d binary.Reader, o *GLint64EXTˢ) {
+ d.Simple(&o.SliceInfo)
+}
+func (*binaryClassGLint64EXTˢ) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGLint64EXTˢ(e, obj.(*GLint64EXTˢ))
+}
+func (*binaryClassGLint64EXTˢ) New() binary.Object {
+ return &GLint64EXTˢ{}
+}
+func (*binaryClassGLint64EXTˢ) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGLint64EXTˢ(d, obj.(*GLint64EXTˢ))
+}
+func (o *GLint64EXTˢ) WriteSimple(w binary.Writer) {
+ doEncodeGLint64EXTˢ(w, o)
+}
+func (o *GLint64EXTˢ) ReadSimple(r binary.Reader) {
+ doDecodeGLint64EXTˢ(r, o)
+}
+func (c *binaryClassGLint64EXTˢ) Schema() *binary.Entity {
+ return &entities[ixǁGLint64EXTˢ]
+}
+
+type binaryClassGLint64EXTᵖ struct{}
+
+func (*GLint64EXTᵖ) Class() binary.Class {
+ return (*binaryClassGLint64EXTᵖ)(nil)
+}
+func doEncodeGLint64EXTᵖ(e binary.Writer, o *GLint64EXTᵖ) {
+ e.Uint64(o.Address)
+ e.Uint32(uint32(o.Pool))
+}
+func doDecodeGLint64EXTᵖ(d binary.Reader, o *GLint64EXTᵖ) {
+ o.Address = uint64(d.Uint64())
+ o.Pool = memory.PoolID(d.Uint32())
+}
+func doDecodeRawGLint64EXTᵖ(d binary.Reader, o *GLint64EXTᵖ) {
+ o.Address = uint64(d.Uint64())
+ o.Pool = memory.PoolID(d.Uint32())
+}
+func (*binaryClassGLint64EXTᵖ) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGLint64EXTᵖ(e, obj.(*GLint64EXTᵖ))
+}
+func (*binaryClassGLint64EXTᵖ) New() binary.Object {
+ return &GLint64EXTᵖ{}
+}
+func (*binaryClassGLint64EXTᵖ) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGLint64EXTᵖ(d, obj.(*GLint64EXTᵖ))
+}
+func (o *GLint64EXTᵖ) WriteSimple(w binary.Writer) {
+ doEncodeGLint64EXTᵖ(w, o)
+}
+func (o *GLint64EXTᵖ) ReadSimple(r binary.Reader) {
+ doDecodeGLint64EXTᵖ(r, o)
+}
+func (c *binaryClassGLint64EXTᵖ) Schema() *binary.Entity {
+ return &entities[ixǁGLint64EXTᵖ]
+}
+
+type binaryClassGLint64EXTᶜᵖ struct{}
+
+func (*GLint64EXTᶜᵖ) Class() binary.Class {
+ return (*binaryClassGLint64EXTᶜᵖ)(nil)
+}
+func doEncodeGLint64EXTᶜᵖ(e binary.Writer, o *GLint64EXTᶜᵖ) {
+ e.Uint64(o.Address)
+ e.Uint32(uint32(o.Pool))
+}
+func doDecodeGLint64EXTᶜᵖ(d binary.Reader, o *GLint64EXTᶜᵖ) {
+ o.Address = uint64(d.Uint64())
+ o.Pool = memory.PoolID(d.Uint32())
+}
+func doDecodeRawGLint64EXTᶜᵖ(d binary.Reader, o *GLint64EXTᶜᵖ) {
+ o.Address = uint64(d.Uint64())
+ o.Pool = memory.PoolID(d.Uint32())
+}
+func (*binaryClassGLint64EXTᶜᵖ) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGLint64EXTᶜᵖ(e, obj.(*GLint64EXTᶜᵖ))
+}
+func (*binaryClassGLint64EXTᶜᵖ) New() binary.Object {
+ return &GLint64EXTᶜᵖ{}
+}
+func (*binaryClassGLint64EXTᶜᵖ) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGLint64EXTᶜᵖ(d, obj.(*GLint64EXTᶜᵖ))
+}
+func (o *GLint64EXTᶜᵖ) WriteSimple(w binary.Writer) {
+ doEncodeGLint64EXTᶜᵖ(w, o)
+}
+func (o *GLint64EXTᶜᵖ) ReadSimple(r binary.Reader) {
+ doDecodeGLint64EXTᶜᵖ(r, o)
+}
+func (c *binaryClassGLint64EXTᶜᵖ) Schema() *binary.Entity {
+ return &entities[ixǁGLint64EXTᶜᵖ]
+}
+
type binaryClassGLint64ˢ struct{}
func (*GLint64ˢ) Class() binary.Class {
@@ -13519,6 +13937,111 @@
return &entities[ixǁGLubyteᶜᵖ]
}
+type binaryClassGLuint64EXTˢ struct{}
+
+func (*GLuint64EXTˢ) Class() binary.Class {
+ return (*binaryClassGLuint64EXTˢ)(nil)
+}
+func doEncodeGLuint64EXTˢ(e binary.Writer, o *GLuint64EXTˢ) {
+ e.Simple(&o.SliceInfo)
+}
+func doDecodeGLuint64EXTˢ(d binary.Reader, o *GLuint64EXTˢ) {
+ d.Simple(&o.SliceInfo)
+}
+func doDecodeRawGLuint64EXTˢ(d binary.Reader, o *GLuint64EXTˢ) {
+ d.Simple(&o.SliceInfo)
+}
+func (*binaryClassGLuint64EXTˢ) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGLuint64EXTˢ(e, obj.(*GLuint64EXTˢ))
+}
+func (*binaryClassGLuint64EXTˢ) New() binary.Object {
+ return &GLuint64EXTˢ{}
+}
+func (*binaryClassGLuint64EXTˢ) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGLuint64EXTˢ(d, obj.(*GLuint64EXTˢ))
+}
+func (o *GLuint64EXTˢ) WriteSimple(w binary.Writer) {
+ doEncodeGLuint64EXTˢ(w, o)
+}
+func (o *GLuint64EXTˢ) ReadSimple(r binary.Reader) {
+ doDecodeGLuint64EXTˢ(r, o)
+}
+func (c *binaryClassGLuint64EXTˢ) Schema() *binary.Entity {
+ return &entities[ixǁGLuint64EXTˢ]
+}
+
+type binaryClassGLuint64EXTᵖ struct{}
+
+func (*GLuint64EXTᵖ) Class() binary.Class {
+ return (*binaryClassGLuint64EXTᵖ)(nil)
+}
+func doEncodeGLuint64EXTᵖ(e binary.Writer, o *GLuint64EXTᵖ) {
+ e.Uint64(o.Address)
+ e.Uint32(uint32(o.Pool))
+}
+func doDecodeGLuint64EXTᵖ(d binary.Reader, o *GLuint64EXTᵖ) {
+ o.Address = uint64(d.Uint64())
+ o.Pool = memory.PoolID(d.Uint32())
+}
+func doDecodeRawGLuint64EXTᵖ(d binary.Reader, o *GLuint64EXTᵖ) {
+ o.Address = uint64(d.Uint64())
+ o.Pool = memory.PoolID(d.Uint32())
+}
+func (*binaryClassGLuint64EXTᵖ) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGLuint64EXTᵖ(e, obj.(*GLuint64EXTᵖ))
+}
+func (*binaryClassGLuint64EXTᵖ) New() binary.Object {
+ return &GLuint64EXTᵖ{}
+}
+func (*binaryClassGLuint64EXTᵖ) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGLuint64EXTᵖ(d, obj.(*GLuint64EXTᵖ))
+}
+func (o *GLuint64EXTᵖ) WriteSimple(w binary.Writer) {
+ doEncodeGLuint64EXTᵖ(w, o)
+}
+func (o *GLuint64EXTᵖ) ReadSimple(r binary.Reader) {
+ doDecodeGLuint64EXTᵖ(r, o)
+}
+func (c *binaryClassGLuint64EXTᵖ) Schema() *binary.Entity {
+ return &entities[ixǁGLuint64EXTᵖ]
+}
+
+type binaryClassGLuint64EXTᶜᵖ struct{}
+
+func (*GLuint64EXTᶜᵖ) Class() binary.Class {
+ return (*binaryClassGLuint64EXTᶜᵖ)(nil)
+}
+func doEncodeGLuint64EXTᶜᵖ(e binary.Writer, o *GLuint64EXTᶜᵖ) {
+ e.Uint64(o.Address)
+ e.Uint32(uint32(o.Pool))
+}
+func doDecodeGLuint64EXTᶜᵖ(d binary.Reader, o *GLuint64EXTᶜᵖ) {
+ o.Address = uint64(d.Uint64())
+ o.Pool = memory.PoolID(d.Uint32())
+}
+func doDecodeRawGLuint64EXTᶜᵖ(d binary.Reader, o *GLuint64EXTᶜᵖ) {
+ o.Address = uint64(d.Uint64())
+ o.Pool = memory.PoolID(d.Uint32())
+}
+func (*binaryClassGLuint64EXTᶜᵖ) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGLuint64EXTᶜᵖ(e, obj.(*GLuint64EXTᶜᵖ))
+}
+func (*binaryClassGLuint64EXTᶜᵖ) New() binary.Object {
+ return &GLuint64EXTᶜᵖ{}
+}
+func (*binaryClassGLuint64EXTᶜᵖ) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGLuint64EXTᶜᵖ(d, obj.(*GLuint64EXTᶜᵖ))
+}
+func (o *GLuint64EXTᶜᵖ) WriteSimple(w binary.Writer) {
+ doEncodeGLuint64EXTᶜᵖ(w, o)
+}
+func (o *GLuint64EXTᶜᵖ) ReadSimple(r binary.Reader) {
+ doDecodeGLuint64EXTᶜᵖ(r, o)
+}
+func (c *binaryClassGLuint64EXTᶜᵖ) Schema() *binary.Entity {
+ return &entities[ixǁGLuint64EXTᶜᵖ]
+}
+
type binaryClassGLuint64ˢ struct{}
func (*GLuint64ˢ) Class() binary.Class {
@@ -17960,6 +18483,58 @@
return &entities[ixǁGlClearDepthxOES]
}
+type binaryClassGlClearPixelLocalStorageuiEXT struct{}
+
+func (*GlClearPixelLocalStorageuiEXT) Class() binary.Class {
+ return (*binaryClassGlClearPixelLocalStorageuiEXT)(nil)
+}
+func doEncodeGlClearPixelLocalStorageuiEXT(e binary.Encoder, o *GlClearPixelLocalStorageuiEXT) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Int32(int32(o.Offset))
+ e.Int32(int32(o.N))
+ e.Simple(&o.Values)
+}
+func doDecodeGlClearPixelLocalStorageuiEXT(d binary.Decoder, o *GlClearPixelLocalStorageuiEXT) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Offset = GLsizei(d.Int32())
+ o.N = GLsizei(d.Int32())
+ d.Simple(&o.Values)
+}
+func doDecodeRawGlClearPixelLocalStorageuiEXT(d binary.Decoder, o *GlClearPixelLocalStorageuiEXT) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Offset = GLsizei(d.Int32())
+ o.N = GLsizei(d.Int32())
+ d.Simple(&o.Values)
+}
+func (*binaryClassGlClearPixelLocalStorageuiEXT) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlClearPixelLocalStorageuiEXT(e, obj.(*GlClearPixelLocalStorageuiEXT))
+}
+func (*binaryClassGlClearPixelLocalStorageuiEXT) New() binary.Object {
+ return &GlClearPixelLocalStorageuiEXT{}
+}
+func (*binaryClassGlClearPixelLocalStorageuiEXT) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlClearPixelLocalStorageuiEXT(d, obj.(*GlClearPixelLocalStorageuiEXT))
+}
+func (c *binaryClassGlClearPixelLocalStorageuiEXT) Schema() *binary.Entity {
+ return &entities[ixǁGlClearPixelLocalStorageuiEXT]
+}
+
type binaryClassGlClearStencil struct{}
func (*GlClearStencil) Class() binary.Class {
@@ -18006,6 +18581,140 @@
return &entities[ixǁGlClearStencil]
}
+type binaryClassGlClearTexImageEXT struct{}
+
+func (*GlClearTexImageEXT) Class() binary.Class {
+ return (*binaryClassGlClearTexImageEXT)(nil)
+}
+func doEncodeGlClearTexImageEXT(e binary.Encoder, o *GlClearTexImageEXT) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.Texture))
+ e.Int32(int32(o.Level))
+ e.Uint32(uint32(o.Format))
+ e.Uint32(uint32(o.Type))
+ e.Simple(&o.Data)
+}
+func doDecodeGlClearTexImageEXT(d binary.Decoder, o *GlClearTexImageEXT) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Texture = GLuint(d.Uint32())
+ o.Level = GLint(d.Int32())
+ o.Format = GLenum(d.Uint32())
+ o.Type = GLenum(d.Uint32())
+ d.Simple(&o.Data)
+}
+func doDecodeRawGlClearTexImageEXT(d binary.Decoder, o *GlClearTexImageEXT) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Texture = GLuint(d.Uint32())
+ o.Level = GLint(d.Int32())
+ o.Format = GLenum(d.Uint32())
+ o.Type = GLenum(d.Uint32())
+ d.Simple(&o.Data)
+}
+func (*binaryClassGlClearTexImageEXT) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlClearTexImageEXT(e, obj.(*GlClearTexImageEXT))
+}
+func (*binaryClassGlClearTexImageEXT) New() binary.Object {
+ return &GlClearTexImageEXT{}
+}
+func (*binaryClassGlClearTexImageEXT) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlClearTexImageEXT(d, obj.(*GlClearTexImageEXT))
+}
+func (c *binaryClassGlClearTexImageEXT) Schema() *binary.Entity {
+ return &entities[ixǁGlClearTexImageEXT]
+}
+
+type binaryClassGlClearTexSubImageEXT struct{}
+
+func (*GlClearTexSubImageEXT) Class() binary.Class {
+ return (*binaryClassGlClearTexSubImageEXT)(nil)
+}
+func doEncodeGlClearTexSubImageEXT(e binary.Encoder, o *GlClearTexSubImageEXT) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.Texture))
+ e.Int32(int32(o.Level))
+ e.Int32(int32(o.Xoffset))
+ e.Int32(int32(o.Yoffset))
+ e.Int32(int32(o.Zoffset))
+ e.Int32(int32(o.Width))
+ e.Int32(int32(o.Height))
+ e.Int32(int32(o.Depth))
+ e.Uint32(uint32(o.Format))
+ e.Uint32(uint32(o.Type))
+ e.Simple(&o.Data)
+}
+func doDecodeGlClearTexSubImageEXT(d binary.Decoder, o *GlClearTexSubImageEXT) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Texture = GLuint(d.Uint32())
+ o.Level = GLint(d.Int32())
+ o.Xoffset = GLint(d.Int32())
+ o.Yoffset = GLint(d.Int32())
+ o.Zoffset = GLint(d.Int32())
+ o.Width = GLsizei(d.Int32())
+ o.Height = GLsizei(d.Int32())
+ o.Depth = GLsizei(d.Int32())
+ o.Format = GLenum(d.Uint32())
+ o.Type = GLenum(d.Uint32())
+ d.Simple(&o.Data)
+}
+func doDecodeRawGlClearTexSubImageEXT(d binary.Decoder, o *GlClearTexSubImageEXT) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Texture = GLuint(d.Uint32())
+ o.Level = GLint(d.Int32())
+ o.Xoffset = GLint(d.Int32())
+ o.Yoffset = GLint(d.Int32())
+ o.Zoffset = GLint(d.Int32())
+ o.Width = GLsizei(d.Int32())
+ o.Height = GLsizei(d.Int32())
+ o.Depth = GLsizei(d.Int32())
+ o.Format = GLenum(d.Uint32())
+ o.Type = GLenum(d.Uint32())
+ d.Simple(&o.Data)
+}
+func (*binaryClassGlClearTexSubImageEXT) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlClearTexSubImageEXT(e, obj.(*GlClearTexSubImageEXT))
+}
+func (*binaryClassGlClearTexSubImageEXT) New() binary.Object {
+ return &GlClearTexSubImageEXT{}
+}
+func (*binaryClassGlClearTexSubImageEXT) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlClearTexSubImageEXT(d, obj.(*GlClearTexSubImageEXT))
+}
+func (c *binaryClassGlClearTexSubImageEXT) Schema() *binary.Entity {
+ return &entities[ixǁGlClearTexSubImageEXT]
+}
+
type binaryClassGlClientActiveTexture struct{}
func (*GlClientActiveTexture) Class() binary.Class {
@@ -19529,6 +20238,55 @@
return &entities[ixǁGlCompressedTexSubImage3DOES]
}
+type binaryClassGlConservativeRasterParameteriNV struct{}
+
+func (*GlConservativeRasterParameteriNV) Class() binary.Class {
+ return (*binaryClassGlConservativeRasterParameteriNV)(nil)
+}
+func doEncodeGlConservativeRasterParameteriNV(e binary.Encoder, o *GlConservativeRasterParameteriNV) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.Pname))
+ e.Int32(int32(o.Param))
+}
+func doDecodeGlConservativeRasterParameteriNV(d binary.Decoder, o *GlConservativeRasterParameteriNV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Pname = GLenum(d.Uint32())
+ o.Param = GLint(d.Int32())
+}
+func doDecodeRawGlConservativeRasterParameteriNV(d binary.Decoder, o *GlConservativeRasterParameteriNV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Pname = GLenum(d.Uint32())
+ o.Param = GLint(d.Int32())
+}
+func (*binaryClassGlConservativeRasterParameteriNV) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlConservativeRasterParameteriNV(e, obj.(*GlConservativeRasterParameteriNV))
+}
+func (*binaryClassGlConservativeRasterParameteriNV) New() binary.Object {
+ return &GlConservativeRasterParameteriNV{}
+}
+func (*binaryClassGlConservativeRasterParameteriNV) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlConservativeRasterParameteriNV(d, obj.(*GlConservativeRasterParameteriNV))
+}
+func (c *binaryClassGlConservativeRasterParameteriNV) Schema() *binary.Entity {
+ return &entities[ixǁGlConservativeRasterParameteriNV]
+}
+
type binaryClassGlCopyBufferSubData struct{}
func (*GlCopyBufferSubData) Class() binary.Class {
@@ -22847,6 +23605,58 @@
return &entities[ixǁGlDepthRangeArrayfvNV]
}
+type binaryClassGlDepthRangeArrayfvOES struct{}
+
+func (*GlDepthRangeArrayfvOES) Class() binary.Class {
+ return (*binaryClassGlDepthRangeArrayfvOES)(nil)
+}
+func doEncodeGlDepthRangeArrayfvOES(e binary.Encoder, o *GlDepthRangeArrayfvOES) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.First))
+ e.Int32(int32(o.Count))
+ e.Simple(&o.V)
+}
+func doDecodeGlDepthRangeArrayfvOES(d binary.Decoder, o *GlDepthRangeArrayfvOES) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.First = GLuint(d.Uint32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.V)
+}
+func doDecodeRawGlDepthRangeArrayfvOES(d binary.Decoder, o *GlDepthRangeArrayfvOES) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.First = GLuint(d.Uint32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.V)
+}
+func (*binaryClassGlDepthRangeArrayfvOES) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlDepthRangeArrayfvOES(e, obj.(*GlDepthRangeArrayfvOES))
+}
+func (*binaryClassGlDepthRangeArrayfvOES) New() binary.Object {
+ return &GlDepthRangeArrayfvOES{}
+}
+func (*binaryClassGlDepthRangeArrayfvOES) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlDepthRangeArrayfvOES(d, obj.(*GlDepthRangeArrayfvOES))
+}
+func (c *binaryClassGlDepthRangeArrayfvOES) Schema() *binary.Entity {
+ return &entities[ixǁGlDepthRangeArrayfvOES]
+}
+
type binaryClassGlDepthRangeIndexedfNV struct{}
func (*GlDepthRangeIndexedfNV) Class() binary.Class {
@@ -22899,6 +23709,58 @@
return &entities[ixǁGlDepthRangeIndexedfNV]
}
+type binaryClassGlDepthRangeIndexedfOES struct{}
+
+func (*GlDepthRangeIndexedfOES) Class() binary.Class {
+ return (*binaryClassGlDepthRangeIndexedfOES)(nil)
+}
+func doEncodeGlDepthRangeIndexedfOES(e binary.Encoder, o *GlDepthRangeIndexedfOES) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.Index))
+ e.Float32(float32(o.N))
+ e.Float32(float32(o.F))
+}
+func doDecodeGlDepthRangeIndexedfOES(d binary.Decoder, o *GlDepthRangeIndexedfOES) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Index = GLuint(d.Uint32())
+ o.N = GLfloat(d.Float32())
+ o.F = GLfloat(d.Float32())
+}
+func doDecodeRawGlDepthRangeIndexedfOES(d binary.Decoder, o *GlDepthRangeIndexedfOES) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Index = GLuint(d.Uint32())
+ o.N = GLfloat(d.Float32())
+ o.F = GLfloat(d.Float32())
+}
+func (*binaryClassGlDepthRangeIndexedfOES) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlDepthRangeIndexedfOES(e, obj.(*GlDepthRangeIndexedfOES))
+}
+func (*binaryClassGlDepthRangeIndexedfOES) New() binary.Object {
+ return &GlDepthRangeIndexedfOES{}
+}
+func (*binaryClassGlDepthRangeIndexedfOES) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlDepthRangeIndexedfOES(d, obj.(*GlDepthRangeIndexedfOES))
+}
+func (c *binaryClassGlDepthRangeIndexedfOES) Schema() *binary.Entity {
+ return &entities[ixǁGlDepthRangeIndexedfOES]
+}
+
type binaryClassGlDepthRangef struct{}
func (*GlDepthRangef) Class() binary.Class {
@@ -25811,6 +26673,107 @@
return &entities[ixǁGlDrawTexxvOES]
}
+type binaryClassGlDrawTransformFeedbackEXT struct{}
+
+func (*GlDrawTransformFeedbackEXT) Class() binary.Class {
+ return (*binaryClassGlDrawTransformFeedbackEXT)(nil)
+}
+func doEncodeGlDrawTransformFeedbackEXT(e binary.Encoder, o *GlDrawTransformFeedbackEXT) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.Mode))
+ e.Uint32(uint32(o.Id))
+}
+func doDecodeGlDrawTransformFeedbackEXT(d binary.Decoder, o *GlDrawTransformFeedbackEXT) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Mode = GLenum(d.Uint32())
+ o.Id = GLuint(d.Uint32())
+}
+func doDecodeRawGlDrawTransformFeedbackEXT(d binary.Decoder, o *GlDrawTransformFeedbackEXT) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Mode = GLenum(d.Uint32())
+ o.Id = GLuint(d.Uint32())
+}
+func (*binaryClassGlDrawTransformFeedbackEXT) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlDrawTransformFeedbackEXT(e, obj.(*GlDrawTransformFeedbackEXT))
+}
+func (*binaryClassGlDrawTransformFeedbackEXT) New() binary.Object {
+ return &GlDrawTransformFeedbackEXT{}
+}
+func (*binaryClassGlDrawTransformFeedbackEXT) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlDrawTransformFeedbackEXT(d, obj.(*GlDrawTransformFeedbackEXT))
+}
+func (c *binaryClassGlDrawTransformFeedbackEXT) Schema() *binary.Entity {
+ return &entities[ixǁGlDrawTransformFeedbackEXT]
+}
+
+type binaryClassGlDrawTransformFeedbackInstancedEXT struct{}
+
+func (*GlDrawTransformFeedbackInstancedEXT) Class() binary.Class {
+ return (*binaryClassGlDrawTransformFeedbackInstancedEXT)(nil)
+}
+func doEncodeGlDrawTransformFeedbackInstancedEXT(e binary.Encoder, o *GlDrawTransformFeedbackInstancedEXT) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.Mode))
+ e.Uint32(uint32(o.Id))
+ e.Int32(int32(o.Instancecount))
+}
+func doDecodeGlDrawTransformFeedbackInstancedEXT(d binary.Decoder, o *GlDrawTransformFeedbackInstancedEXT) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Mode = GLenum(d.Uint32())
+ o.Id = GLuint(d.Uint32())
+ o.Instancecount = GLsizei(d.Int32())
+}
+func doDecodeRawGlDrawTransformFeedbackInstancedEXT(d binary.Decoder, o *GlDrawTransformFeedbackInstancedEXT) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Mode = GLenum(d.Uint32())
+ o.Id = GLuint(d.Uint32())
+ o.Instancecount = GLsizei(d.Int32())
+}
+func (*binaryClassGlDrawTransformFeedbackInstancedEXT) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlDrawTransformFeedbackInstancedEXT(e, obj.(*GlDrawTransformFeedbackInstancedEXT))
+}
+func (*binaryClassGlDrawTransformFeedbackInstancedEXT) New() binary.Object {
+ return &GlDrawTransformFeedbackInstancedEXT{}
+}
+func (*binaryClassGlDrawTransformFeedbackInstancedEXT) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlDrawTransformFeedbackInstancedEXT(d, obj.(*GlDrawTransformFeedbackInstancedEXT))
+}
+func (c *binaryClassGlDrawTransformFeedbackInstancedEXT) Schema() *binary.Entity {
+ return &entities[ixǁGlDrawTransformFeedbackInstancedEXT]
+}
+
type binaryClassGlEGLImageTargetRenderbufferStorageOES struct{}
func (*GlEGLImageTargetRenderbufferStorageOES) Class() binary.Class {
@@ -28168,6 +29131,55 @@
return &entities[ixǁGlFramebufferParameteri]
}
+type binaryClassGlFramebufferPixelLocalStorageSizeEXT struct{}
+
+func (*GlFramebufferPixelLocalStorageSizeEXT) Class() binary.Class {
+ return (*binaryClassGlFramebufferPixelLocalStorageSizeEXT)(nil)
+}
+func doEncodeGlFramebufferPixelLocalStorageSizeEXT(e binary.Encoder, o *GlFramebufferPixelLocalStorageSizeEXT) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.Target))
+ e.Int32(int32(o.Size))
+}
+func doDecodeGlFramebufferPixelLocalStorageSizeEXT(d binary.Decoder, o *GlFramebufferPixelLocalStorageSizeEXT) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Target = GLuint(d.Uint32())
+ o.Size = GLsizei(d.Int32())
+}
+func doDecodeRawGlFramebufferPixelLocalStorageSizeEXT(d binary.Decoder, o *GlFramebufferPixelLocalStorageSizeEXT) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Target = GLuint(d.Uint32())
+ o.Size = GLsizei(d.Int32())
+}
+func (*binaryClassGlFramebufferPixelLocalStorageSizeEXT) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlFramebufferPixelLocalStorageSizeEXT(e, obj.(*GlFramebufferPixelLocalStorageSizeEXT))
+}
+func (*binaryClassGlFramebufferPixelLocalStorageSizeEXT) New() binary.Object {
+ return &GlFramebufferPixelLocalStorageSizeEXT{}
+}
+func (*binaryClassGlFramebufferPixelLocalStorageSizeEXT) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlFramebufferPixelLocalStorageSizeEXT(d, obj.(*GlFramebufferPixelLocalStorageSizeEXT))
+}
+func (c *binaryClassGlFramebufferPixelLocalStorageSizeEXT) Schema() *binary.Entity {
+ return &entities[ixǁGlFramebufferPixelLocalStorageSizeEXT]
+}
+
type binaryClassGlFramebufferRenderbuffer struct{}
func (*GlFramebufferRenderbuffer) Class() binary.Class {
@@ -28446,6 +29458,70 @@
return &entities[ixǁGlFramebufferTexture2D]
}
+type binaryClassGlFramebufferTexture2DDownsampleIMG struct{}
+
+func (*GlFramebufferTexture2DDownsampleIMG) Class() binary.Class {
+ return (*binaryClassGlFramebufferTexture2DDownsampleIMG)(nil)
+}
+func doEncodeGlFramebufferTexture2DDownsampleIMG(e binary.Encoder, o *GlFramebufferTexture2DDownsampleIMG) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.Target))
+ e.Uint32(uint32(o.Attachment))
+ e.Uint32(uint32(o.Textarget))
+ e.Uint32(uint32(o.Texture))
+ e.Int32(int32(o.Level))
+ e.Int32(int32(o.Xscale))
+ e.Int32(int32(o.Yscale))
+}
+func doDecodeGlFramebufferTexture2DDownsampleIMG(d binary.Decoder, o *GlFramebufferTexture2DDownsampleIMG) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Target = GLenum(d.Uint32())
+ o.Attachment = GLenum(d.Uint32())
+ o.Textarget = GLenum(d.Uint32())
+ o.Texture = GLuint(d.Uint32())
+ o.Level = GLint(d.Int32())
+ o.Xscale = GLint(d.Int32())
+ o.Yscale = GLint(d.Int32())
+}
+func doDecodeRawGlFramebufferTexture2DDownsampleIMG(d binary.Decoder, o *GlFramebufferTexture2DDownsampleIMG) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Target = GLenum(d.Uint32())
+ o.Attachment = GLenum(d.Uint32())
+ o.Textarget = GLenum(d.Uint32())
+ o.Texture = GLuint(d.Uint32())
+ o.Level = GLint(d.Int32())
+ o.Xscale = GLint(d.Int32())
+ o.Yscale = GLint(d.Int32())
+}
+func (*binaryClassGlFramebufferTexture2DDownsampleIMG) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlFramebufferTexture2DDownsampleIMG(e, obj.(*GlFramebufferTexture2DDownsampleIMG))
+}
+func (*binaryClassGlFramebufferTexture2DDownsampleIMG) New() binary.Object {
+ return &GlFramebufferTexture2DDownsampleIMG{}
+}
+func (*binaryClassGlFramebufferTexture2DDownsampleIMG) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlFramebufferTexture2DDownsampleIMG(d, obj.(*GlFramebufferTexture2DDownsampleIMG))
+}
+func (c *binaryClassGlFramebufferTexture2DDownsampleIMG) Schema() *binary.Entity {
+ return &entities[ixǁGlFramebufferTexture2DDownsampleIMG]
+}
+
type binaryClassGlFramebufferTexture2DMultisampleEXT struct{}
func (*GlFramebufferTexture2DMultisampleEXT) Class() binary.Class {
@@ -28800,6 +29876,134 @@
return &entities[ixǁGlFramebufferTextureLayer]
}
+type binaryClassGlFramebufferTextureLayerDownsampleIMG struct{}
+
+func (*GlFramebufferTextureLayerDownsampleIMG) Class() binary.Class {
+ return (*binaryClassGlFramebufferTextureLayerDownsampleIMG)(nil)
+}
+func doEncodeGlFramebufferTextureLayerDownsampleIMG(e binary.Encoder, o *GlFramebufferTextureLayerDownsampleIMG) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.Target))
+ e.Uint32(uint32(o.Attachment))
+ e.Uint32(uint32(o.Texture))
+ e.Int32(int32(o.Level))
+ e.Int32(int32(o.Layer))
+ e.Int32(int32(o.Xscale))
+ e.Int32(int32(o.Yscale))
+}
+func doDecodeGlFramebufferTextureLayerDownsampleIMG(d binary.Decoder, o *GlFramebufferTextureLayerDownsampleIMG) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Target = GLenum(d.Uint32())
+ o.Attachment = GLenum(d.Uint32())
+ o.Texture = GLuint(d.Uint32())
+ o.Level = GLint(d.Int32())
+ o.Layer = GLint(d.Int32())
+ o.Xscale = GLint(d.Int32())
+ o.Yscale = GLint(d.Int32())
+}
+func doDecodeRawGlFramebufferTextureLayerDownsampleIMG(d binary.Decoder, o *GlFramebufferTextureLayerDownsampleIMG) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Target = GLenum(d.Uint32())
+ o.Attachment = GLenum(d.Uint32())
+ o.Texture = GLuint(d.Uint32())
+ o.Level = GLint(d.Int32())
+ o.Layer = GLint(d.Int32())
+ o.Xscale = GLint(d.Int32())
+ o.Yscale = GLint(d.Int32())
+}
+func (*binaryClassGlFramebufferTextureLayerDownsampleIMG) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlFramebufferTextureLayerDownsampleIMG(e, obj.(*GlFramebufferTextureLayerDownsampleIMG))
+}
+func (*binaryClassGlFramebufferTextureLayerDownsampleIMG) New() binary.Object {
+ return &GlFramebufferTextureLayerDownsampleIMG{}
+}
+func (*binaryClassGlFramebufferTextureLayerDownsampleIMG) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlFramebufferTextureLayerDownsampleIMG(d, obj.(*GlFramebufferTextureLayerDownsampleIMG))
+}
+func (c *binaryClassGlFramebufferTextureLayerDownsampleIMG) Schema() *binary.Entity {
+ return &entities[ixǁGlFramebufferTextureLayerDownsampleIMG]
+}
+
+type binaryClassGlFramebufferTextureMultisampleMultiviewOVR struct{}
+
+func (*GlFramebufferTextureMultisampleMultiviewOVR) Class() binary.Class {
+ return (*binaryClassGlFramebufferTextureMultisampleMultiviewOVR)(nil)
+}
+func doEncodeGlFramebufferTextureMultisampleMultiviewOVR(e binary.Encoder, o *GlFramebufferTextureMultisampleMultiviewOVR) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.Target))
+ e.Uint32(uint32(o.Attachment))
+ e.Uint32(uint32(o.Texture))
+ e.Int32(int32(o.Level))
+ e.Int32(int32(o.Samples))
+ e.Int32(int32(o.BaseViewIndex))
+ e.Int32(int32(o.NumViews))
+}
+func doDecodeGlFramebufferTextureMultisampleMultiviewOVR(d binary.Decoder, o *GlFramebufferTextureMultisampleMultiviewOVR) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Target = GLenum(d.Uint32())
+ o.Attachment = GLenum(d.Uint32())
+ o.Texture = GLuint(d.Uint32())
+ o.Level = GLint(d.Int32())
+ o.Samples = GLsizei(d.Int32())
+ o.BaseViewIndex = GLint(d.Int32())
+ o.NumViews = GLsizei(d.Int32())
+}
+func doDecodeRawGlFramebufferTextureMultisampleMultiviewOVR(d binary.Decoder, o *GlFramebufferTextureMultisampleMultiviewOVR) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Target = GLenum(d.Uint32())
+ o.Attachment = GLenum(d.Uint32())
+ o.Texture = GLuint(d.Uint32())
+ o.Level = GLint(d.Int32())
+ o.Samples = GLsizei(d.Int32())
+ o.BaseViewIndex = GLint(d.Int32())
+ o.NumViews = GLsizei(d.Int32())
+}
+func (*binaryClassGlFramebufferTextureMultisampleMultiviewOVR) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlFramebufferTextureMultisampleMultiviewOVR(e, obj.(*GlFramebufferTextureMultisampleMultiviewOVR))
+}
+func (*binaryClassGlFramebufferTextureMultisampleMultiviewOVR) New() binary.Object {
+ return &GlFramebufferTextureMultisampleMultiviewOVR{}
+}
+func (*binaryClassGlFramebufferTextureMultisampleMultiviewOVR) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlFramebufferTextureMultisampleMultiviewOVR(d, obj.(*GlFramebufferTextureMultisampleMultiviewOVR))
+}
+func (c *binaryClassGlFramebufferTextureMultisampleMultiviewOVR) Schema() *binary.Entity {
+ return &entities[ixǁGlFramebufferTextureMultisampleMultiviewOVR]
+}
+
type binaryClassGlFramebufferTextureMultiviewOVR struct{}
func (*GlFramebufferTextureMultiviewOVR) Class() binary.Class {
@@ -31848,6 +33052,58 @@
return &entities[ixǁGlGetFloati_vNV]
}
+type binaryClassGlGetFloati_vOES struct{}
+
+func (*GlGetFloati_vOES) Class() binary.Class {
+ return (*binaryClassGlGetFloati_vOES)(nil)
+}
+func doEncodeGlGetFloati_vOES(e binary.Encoder, o *GlGetFloati_vOES) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.Target))
+ e.Uint32(uint32(o.Index))
+ e.Simple(&o.Data)
+}
+func doDecodeGlGetFloati_vOES(d binary.Decoder, o *GlGetFloati_vOES) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Target = GLenum(d.Uint32())
+ o.Index = GLuint(d.Uint32())
+ d.Simple(&o.Data)
+}
+func doDecodeRawGlGetFloati_vOES(d binary.Decoder, o *GlGetFloati_vOES) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Target = GLenum(d.Uint32())
+ o.Index = GLuint(d.Uint32())
+ d.Simple(&o.Data)
+}
+func (*binaryClassGlGetFloati_vOES) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlGetFloati_vOES(e, obj.(*GlGetFloati_vOES))
+}
+func (*binaryClassGlGetFloati_vOES) New() binary.Object {
+ return &GlGetFloati_vOES{}
+}
+func (*binaryClassGlGetFloati_vOES) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlGetFloati_vOES(d, obj.(*GlGetFloati_vOES))
+}
+func (c *binaryClassGlGetFloati_vOES) Schema() *binary.Entity {
+ return &entities[ixǁGlGetFloati_vOES]
+}
+
type binaryClassGlGetFloatv struct{}
func (*GlGetFloatv) Class() binary.Class {
@@ -32163,6 +33419,55 @@
return &entities[ixǁGlGetFramebufferParameteriv]
}
+type binaryClassGlGetFramebufferPixelLocalStorageSizeEXT struct{}
+
+func (*GlGetFramebufferPixelLocalStorageSizeEXT) Class() binary.Class {
+ return (*binaryClassGlGetFramebufferPixelLocalStorageSizeEXT)(nil)
+}
+func doEncodeGlGetFramebufferPixelLocalStorageSizeEXT(e binary.Encoder, o *GlGetFramebufferPixelLocalStorageSizeEXT) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.Target))
+ e.Int32(int32(o.Result))
+}
+func doDecodeGlGetFramebufferPixelLocalStorageSizeEXT(d binary.Decoder, o *GlGetFramebufferPixelLocalStorageSizeEXT) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Target = GLuint(d.Uint32())
+ o.Result = GLsizei(d.Int32())
+}
+func doDecodeRawGlGetFramebufferPixelLocalStorageSizeEXT(d binary.Decoder, o *GlGetFramebufferPixelLocalStorageSizeEXT) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Target = GLuint(d.Uint32())
+ o.Result = GLsizei(d.Int32())
+}
+func (*binaryClassGlGetFramebufferPixelLocalStorageSizeEXT) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlGetFramebufferPixelLocalStorageSizeEXT(e, obj.(*GlGetFramebufferPixelLocalStorageSizeEXT))
+}
+func (*binaryClassGlGetFramebufferPixelLocalStorageSizeEXT) New() binary.Object {
+ return &GlGetFramebufferPixelLocalStorageSizeEXT{}
+}
+func (*binaryClassGlGetFramebufferPixelLocalStorageSizeEXT) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlGetFramebufferPixelLocalStorageSizeEXT(d, obj.(*GlGetFramebufferPixelLocalStorageSizeEXT))
+}
+func (c *binaryClassGlGetFramebufferPixelLocalStorageSizeEXT) Schema() *binary.Entity {
+ return &entities[ixǁGlGetFramebufferPixelLocalStorageSizeEXT]
+}
+
type binaryClassGlGetGraphicsResetStatus struct{}
func (*GlGetGraphicsResetStatus) Class() binary.Class {
@@ -38000,6 +39305,55 @@
return &entities[ixǁGlGetTexParameterxvOES]
}
+type binaryClassGlGetTextureHandleIMG struct{}
+
+func (*GlGetTextureHandleIMG) Class() binary.Class {
+ return (*binaryClassGlGetTextureHandleIMG)(nil)
+}
+func doEncodeGlGetTextureHandleIMG(e binary.Encoder, o *GlGetTextureHandleIMG) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.Texture))
+ e.Uint64(uint64(o.Result))
+}
+func doDecodeGlGetTextureHandleIMG(d binary.Decoder, o *GlGetTextureHandleIMG) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Texture = GLuint(d.Uint32())
+ o.Result = GLuint64(d.Uint64())
+}
+func doDecodeRawGlGetTextureHandleIMG(d binary.Decoder, o *GlGetTextureHandleIMG) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Texture = GLuint(d.Uint32())
+ o.Result = GLuint64(d.Uint64())
+}
+func (*binaryClassGlGetTextureHandleIMG) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlGetTextureHandleIMG(e, obj.(*GlGetTextureHandleIMG))
+}
+func (*binaryClassGlGetTextureHandleIMG) New() binary.Object {
+ return &GlGetTextureHandleIMG{}
+}
+func (*binaryClassGlGetTextureHandleIMG) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlGetTextureHandleIMG(d, obj.(*GlGetTextureHandleIMG))
+}
+func (c *binaryClassGlGetTextureHandleIMG) Schema() *binary.Entity {
+ return &entities[ixǁGlGetTextureHandleIMG]
+}
+
type binaryClassGlGetTextureHandleNV struct{}
func (*GlGetTextureHandleNV) Class() binary.Class {
@@ -38049,6 +39403,58 @@
return &entities[ixǁGlGetTextureHandleNV]
}
+type binaryClassGlGetTextureSamplerHandleIMG struct{}
+
+func (*GlGetTextureSamplerHandleIMG) Class() binary.Class {
+ return (*binaryClassGlGetTextureSamplerHandleIMG)(nil)
+}
+func doEncodeGlGetTextureSamplerHandleIMG(e binary.Encoder, o *GlGetTextureSamplerHandleIMG) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.Texture))
+ e.Uint32(uint32(o.Sampler))
+ e.Uint64(uint64(o.Result))
+}
+func doDecodeGlGetTextureSamplerHandleIMG(d binary.Decoder, o *GlGetTextureSamplerHandleIMG) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Texture = GLuint(d.Uint32())
+ o.Sampler = GLuint(d.Uint32())
+ o.Result = GLuint64(d.Uint64())
+}
+func doDecodeRawGlGetTextureSamplerHandleIMG(d binary.Decoder, o *GlGetTextureSamplerHandleIMG) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Texture = GLuint(d.Uint32())
+ o.Sampler = GLuint(d.Uint32())
+ o.Result = GLuint64(d.Uint64())
+}
+func (*binaryClassGlGetTextureSamplerHandleIMG) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlGetTextureSamplerHandleIMG(e, obj.(*GlGetTextureSamplerHandleIMG))
+}
+func (*binaryClassGlGetTextureSamplerHandleIMG) New() binary.Object {
+ return &GlGetTextureSamplerHandleIMG{}
+}
+func (*binaryClassGlGetTextureSamplerHandleIMG) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlGetTextureSamplerHandleIMG(d, obj.(*GlGetTextureSamplerHandleIMG))
+}
+func (c *binaryClassGlGetTextureSamplerHandleIMG) Schema() *binary.Entity {
+ return &entities[ixǁGlGetTextureSamplerHandleIMG]
+}
+
type binaryClassGlGetTextureSamplerHandleNV struct{}
func (*GlGetTextureSamplerHandleNV) Class() binary.Class {
@@ -38467,6 +39873,58 @@
return &entities[ixǁGlGetUniformfv]
}
+type binaryClassGlGetUniformi64vNV struct{}
+
+func (*GlGetUniformi64vNV) Class() binary.Class {
+ return (*binaryClassGlGetUniformi64vNV)(nil)
+}
+func doEncodeGlGetUniformi64vNV(e binary.Encoder, o *GlGetUniformi64vNV) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.Program))
+ e.Int32(int32(o.Location))
+ e.Simple(&o.Params)
+}
+func doDecodeGlGetUniformi64vNV(d binary.Decoder, o *GlGetUniformi64vNV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Program = GLuint(d.Uint32())
+ o.Location = GLint(d.Int32())
+ d.Simple(&o.Params)
+}
+func doDecodeRawGlGetUniformi64vNV(d binary.Decoder, o *GlGetUniformi64vNV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Program = GLuint(d.Uint32())
+ o.Location = GLint(d.Int32())
+ d.Simple(&o.Params)
+}
+func (*binaryClassGlGetUniformi64vNV) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlGetUniformi64vNV(e, obj.(*GlGetUniformi64vNV))
+}
+func (*binaryClassGlGetUniformi64vNV) New() binary.Object {
+ return &GlGetUniformi64vNV{}
+}
+func (*binaryClassGlGetUniformi64vNV) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlGetUniformi64vNV(d, obj.(*GlGetUniformi64vNV))
+}
+func (c *binaryClassGlGetUniformi64vNV) Schema() *binary.Entity {
+ return &entities[ixǁGlGetUniformi64vNV]
+}
+
type binaryClassGlGetUniformiv struct{}
func (*GlGetUniformiv) Class() binary.Class {
@@ -46930,6 +48388,58 @@
return &entities[ixǁGlPolygonOffset]
}
+type binaryClassGlPolygonOffsetClampEXT struct{}
+
+func (*GlPolygonOffsetClampEXT) Class() binary.Class {
+ return (*binaryClassGlPolygonOffsetClampEXT)(nil)
+}
+func doEncodeGlPolygonOffsetClampEXT(e binary.Encoder, o *GlPolygonOffsetClampEXT) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Float32(float32(o.Factor))
+ e.Float32(float32(o.Units))
+ e.Float32(float32(o.Clamp))
+}
+func doDecodeGlPolygonOffsetClampEXT(d binary.Decoder, o *GlPolygonOffsetClampEXT) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Factor = GLfloat(d.Float32())
+ o.Units = GLfloat(d.Float32())
+ o.Clamp = GLfloat(d.Float32())
+}
+func doDecodeRawGlPolygonOffsetClampEXT(d binary.Decoder, o *GlPolygonOffsetClampEXT) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Factor = GLfloat(d.Float32())
+ o.Units = GLfloat(d.Float32())
+ o.Clamp = GLfloat(d.Float32())
+}
+func (*binaryClassGlPolygonOffsetClampEXT) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlPolygonOffsetClampEXT(e, obj.(*GlPolygonOffsetClampEXT))
+}
+func (*binaryClassGlPolygonOffsetClampEXT) New() binary.Object {
+ return &GlPolygonOffsetClampEXT{}
+}
+func (*binaryClassGlPolygonOffsetClampEXT) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlPolygonOffsetClampEXT(d, obj.(*GlPolygonOffsetClampEXT))
+}
+func (c *binaryClassGlPolygonOffsetClampEXT) Schema() *binary.Entity {
+ return &entities[ixǁGlPolygonOffsetClampEXT]
+}
+
type binaryClassGlPolygonOffsetx struct{}
func (*GlPolygonOffsetx) Class() binary.Class {
@@ -47939,6 +49449,113 @@
return &entities[ixǁGlProgramUniform1i]
}
+type binaryClassGlProgramUniform1i64NV struct{}
+
+func (*GlProgramUniform1i64NV) Class() binary.Class {
+ return (*binaryClassGlProgramUniform1i64NV)(nil)
+}
+func doEncodeGlProgramUniform1i64NV(e binary.Encoder, o *GlProgramUniform1i64NV) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.Program))
+ e.Int32(int32(o.Location))
+ e.Int64(int64(o.X))
+}
+func doDecodeGlProgramUniform1i64NV(d binary.Decoder, o *GlProgramUniform1i64NV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Program = GLuint(d.Uint32())
+ o.Location = GLint(d.Int32())
+ o.X = GLint64EXT(d.Int64())
+}
+func doDecodeRawGlProgramUniform1i64NV(d binary.Decoder, o *GlProgramUniform1i64NV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Program = GLuint(d.Uint32())
+ o.Location = GLint(d.Int32())
+ o.X = GLint64EXT(d.Int64())
+}
+func (*binaryClassGlProgramUniform1i64NV) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlProgramUniform1i64NV(e, obj.(*GlProgramUniform1i64NV))
+}
+func (*binaryClassGlProgramUniform1i64NV) New() binary.Object {
+ return &GlProgramUniform1i64NV{}
+}
+func (*binaryClassGlProgramUniform1i64NV) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlProgramUniform1i64NV(d, obj.(*GlProgramUniform1i64NV))
+}
+func (c *binaryClassGlProgramUniform1i64NV) Schema() *binary.Entity {
+ return &entities[ixǁGlProgramUniform1i64NV]
+}
+
+type binaryClassGlProgramUniform1i64vNV struct{}
+
+func (*GlProgramUniform1i64vNV) Class() binary.Class {
+ return (*binaryClassGlProgramUniform1i64vNV)(nil)
+}
+func doEncodeGlProgramUniform1i64vNV(e binary.Encoder, o *GlProgramUniform1i64vNV) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.Program))
+ e.Int32(int32(o.Location))
+ e.Int32(int32(o.Count))
+ e.Simple(&o.Value)
+}
+func doDecodeGlProgramUniform1i64vNV(d binary.Decoder, o *GlProgramUniform1i64vNV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Program = GLuint(d.Uint32())
+ o.Location = GLint(d.Int32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.Value)
+}
+func doDecodeRawGlProgramUniform1i64vNV(d binary.Decoder, o *GlProgramUniform1i64vNV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Program = GLuint(d.Uint32())
+ o.Location = GLint(d.Int32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.Value)
+}
+func (*binaryClassGlProgramUniform1i64vNV) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlProgramUniform1i64vNV(e, obj.(*GlProgramUniform1i64vNV))
+}
+func (*binaryClassGlProgramUniform1i64vNV) New() binary.Object {
+ return &GlProgramUniform1i64vNV{}
+}
+func (*binaryClassGlProgramUniform1i64vNV) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlProgramUniform1i64vNV(d, obj.(*GlProgramUniform1i64vNV))
+}
+func (c *binaryClassGlProgramUniform1i64vNV) Schema() *binary.Entity {
+ return &entities[ixǁGlProgramUniform1i64vNV]
+}
+
type binaryClassGlProgramUniform1iEXT struct{}
func (*GlProgramUniform1iEXT) Class() binary.Class {
@@ -48153,6 +49770,113 @@
return &entities[ixǁGlProgramUniform1ui]
}
+type binaryClassGlProgramUniform1ui64NV struct{}
+
+func (*GlProgramUniform1ui64NV) Class() binary.Class {
+ return (*binaryClassGlProgramUniform1ui64NV)(nil)
+}
+func doEncodeGlProgramUniform1ui64NV(e binary.Encoder, o *GlProgramUniform1ui64NV) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.Program))
+ e.Int32(int32(o.Location))
+ e.Uint64(uint64(o.X))
+}
+func doDecodeGlProgramUniform1ui64NV(d binary.Decoder, o *GlProgramUniform1ui64NV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Program = GLuint(d.Uint32())
+ o.Location = GLint(d.Int32())
+ o.X = GLuint64EXT(d.Uint64())
+}
+func doDecodeRawGlProgramUniform1ui64NV(d binary.Decoder, o *GlProgramUniform1ui64NV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Program = GLuint(d.Uint32())
+ o.Location = GLint(d.Int32())
+ o.X = GLuint64EXT(d.Uint64())
+}
+func (*binaryClassGlProgramUniform1ui64NV) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlProgramUniform1ui64NV(e, obj.(*GlProgramUniform1ui64NV))
+}
+func (*binaryClassGlProgramUniform1ui64NV) New() binary.Object {
+ return &GlProgramUniform1ui64NV{}
+}
+func (*binaryClassGlProgramUniform1ui64NV) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlProgramUniform1ui64NV(d, obj.(*GlProgramUniform1ui64NV))
+}
+func (c *binaryClassGlProgramUniform1ui64NV) Schema() *binary.Entity {
+ return &entities[ixǁGlProgramUniform1ui64NV]
+}
+
+type binaryClassGlProgramUniform1ui64vNV struct{}
+
+func (*GlProgramUniform1ui64vNV) Class() binary.Class {
+ return (*binaryClassGlProgramUniform1ui64vNV)(nil)
+}
+func doEncodeGlProgramUniform1ui64vNV(e binary.Encoder, o *GlProgramUniform1ui64vNV) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.Program))
+ e.Int32(int32(o.Location))
+ e.Int32(int32(o.Count))
+ e.Simple(&o.Value)
+}
+func doDecodeGlProgramUniform1ui64vNV(d binary.Decoder, o *GlProgramUniform1ui64vNV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Program = GLuint(d.Uint32())
+ o.Location = GLint(d.Int32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.Value)
+}
+func doDecodeRawGlProgramUniform1ui64vNV(d binary.Decoder, o *GlProgramUniform1ui64vNV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Program = GLuint(d.Uint32())
+ o.Location = GLint(d.Int32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.Value)
+}
+func (*binaryClassGlProgramUniform1ui64vNV) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlProgramUniform1ui64vNV(e, obj.(*GlProgramUniform1ui64vNV))
+}
+func (*binaryClassGlProgramUniform1ui64vNV) New() binary.Object {
+ return &GlProgramUniform1ui64vNV{}
+}
+func (*binaryClassGlProgramUniform1ui64vNV) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlProgramUniform1ui64vNV(d, obj.(*GlProgramUniform1ui64vNV))
+}
+func (c *binaryClassGlProgramUniform1ui64vNV) Schema() *binary.Entity {
+ return &entities[ixǁGlProgramUniform1ui64vNV]
+}
+
type binaryClassGlProgramUniform1uiEXT struct{}
func (*GlProgramUniform1uiEXT) Class() binary.Class {
@@ -48590,6 +50314,116 @@
return &entities[ixǁGlProgramUniform2i]
}
+type binaryClassGlProgramUniform2i64NV struct{}
+
+func (*GlProgramUniform2i64NV) Class() binary.Class {
+ return (*binaryClassGlProgramUniform2i64NV)(nil)
+}
+func doEncodeGlProgramUniform2i64NV(e binary.Encoder, o *GlProgramUniform2i64NV) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.Program))
+ e.Int32(int32(o.Location))
+ e.Int64(int64(o.X))
+ e.Int64(int64(o.Y))
+}
+func doDecodeGlProgramUniform2i64NV(d binary.Decoder, o *GlProgramUniform2i64NV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Program = GLuint(d.Uint32())
+ o.Location = GLint(d.Int32())
+ o.X = GLint64EXT(d.Int64())
+ o.Y = GLint64EXT(d.Int64())
+}
+func doDecodeRawGlProgramUniform2i64NV(d binary.Decoder, o *GlProgramUniform2i64NV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Program = GLuint(d.Uint32())
+ o.Location = GLint(d.Int32())
+ o.X = GLint64EXT(d.Int64())
+ o.Y = GLint64EXT(d.Int64())
+}
+func (*binaryClassGlProgramUniform2i64NV) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlProgramUniform2i64NV(e, obj.(*GlProgramUniform2i64NV))
+}
+func (*binaryClassGlProgramUniform2i64NV) New() binary.Object {
+ return &GlProgramUniform2i64NV{}
+}
+func (*binaryClassGlProgramUniform2i64NV) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlProgramUniform2i64NV(d, obj.(*GlProgramUniform2i64NV))
+}
+func (c *binaryClassGlProgramUniform2i64NV) Schema() *binary.Entity {
+ return &entities[ixǁGlProgramUniform2i64NV]
+}
+
+type binaryClassGlProgramUniform2i64vNV struct{}
+
+func (*GlProgramUniform2i64vNV) Class() binary.Class {
+ return (*binaryClassGlProgramUniform2i64vNV)(nil)
+}
+func doEncodeGlProgramUniform2i64vNV(e binary.Encoder, o *GlProgramUniform2i64vNV) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.Program))
+ e.Int32(int32(o.Location))
+ e.Int32(int32(o.Count))
+ e.Simple(&o.Value)
+}
+func doDecodeGlProgramUniform2i64vNV(d binary.Decoder, o *GlProgramUniform2i64vNV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Program = GLuint(d.Uint32())
+ o.Location = GLint(d.Int32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.Value)
+}
+func doDecodeRawGlProgramUniform2i64vNV(d binary.Decoder, o *GlProgramUniform2i64vNV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Program = GLuint(d.Uint32())
+ o.Location = GLint(d.Int32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.Value)
+}
+func (*binaryClassGlProgramUniform2i64vNV) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlProgramUniform2i64vNV(e, obj.(*GlProgramUniform2i64vNV))
+}
+func (*binaryClassGlProgramUniform2i64vNV) New() binary.Object {
+ return &GlProgramUniform2i64vNV{}
+}
+func (*binaryClassGlProgramUniform2i64vNV) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlProgramUniform2i64vNV(d, obj.(*GlProgramUniform2i64vNV))
+}
+func (c *binaryClassGlProgramUniform2i64vNV) Schema() *binary.Entity {
+ return &entities[ixǁGlProgramUniform2i64vNV]
+}
+
type binaryClassGlProgramUniform2iEXT struct{}
func (*GlProgramUniform2iEXT) Class() binary.Class {
@@ -48810,6 +50644,116 @@
return &entities[ixǁGlProgramUniform2ui]
}
+type binaryClassGlProgramUniform2ui64NV struct{}
+
+func (*GlProgramUniform2ui64NV) Class() binary.Class {
+ return (*binaryClassGlProgramUniform2ui64NV)(nil)
+}
+func doEncodeGlProgramUniform2ui64NV(e binary.Encoder, o *GlProgramUniform2ui64NV) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.Program))
+ e.Int32(int32(o.Location))
+ e.Uint64(uint64(o.X))
+ e.Uint64(uint64(o.Y))
+}
+func doDecodeGlProgramUniform2ui64NV(d binary.Decoder, o *GlProgramUniform2ui64NV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Program = GLuint(d.Uint32())
+ o.Location = GLint(d.Int32())
+ o.X = GLuint64EXT(d.Uint64())
+ o.Y = GLuint64EXT(d.Uint64())
+}
+func doDecodeRawGlProgramUniform2ui64NV(d binary.Decoder, o *GlProgramUniform2ui64NV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Program = GLuint(d.Uint32())
+ o.Location = GLint(d.Int32())
+ o.X = GLuint64EXT(d.Uint64())
+ o.Y = GLuint64EXT(d.Uint64())
+}
+func (*binaryClassGlProgramUniform2ui64NV) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlProgramUniform2ui64NV(e, obj.(*GlProgramUniform2ui64NV))
+}
+func (*binaryClassGlProgramUniform2ui64NV) New() binary.Object {
+ return &GlProgramUniform2ui64NV{}
+}
+func (*binaryClassGlProgramUniform2ui64NV) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlProgramUniform2ui64NV(d, obj.(*GlProgramUniform2ui64NV))
+}
+func (c *binaryClassGlProgramUniform2ui64NV) Schema() *binary.Entity {
+ return &entities[ixǁGlProgramUniform2ui64NV]
+}
+
+type binaryClassGlProgramUniform2ui64vNV struct{}
+
+func (*GlProgramUniform2ui64vNV) Class() binary.Class {
+ return (*binaryClassGlProgramUniform2ui64vNV)(nil)
+}
+func doEncodeGlProgramUniform2ui64vNV(e binary.Encoder, o *GlProgramUniform2ui64vNV) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.Program))
+ e.Int32(int32(o.Location))
+ e.Int32(int32(o.Count))
+ e.Simple(&o.Value)
+}
+func doDecodeGlProgramUniform2ui64vNV(d binary.Decoder, o *GlProgramUniform2ui64vNV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Program = GLuint(d.Uint32())
+ o.Location = GLint(d.Int32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.Value)
+}
+func doDecodeRawGlProgramUniform2ui64vNV(d binary.Decoder, o *GlProgramUniform2ui64vNV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Program = GLuint(d.Uint32())
+ o.Location = GLint(d.Int32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.Value)
+}
+func (*binaryClassGlProgramUniform2ui64vNV) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlProgramUniform2ui64vNV(e, obj.(*GlProgramUniform2ui64vNV))
+}
+func (*binaryClassGlProgramUniform2ui64vNV) New() binary.Object {
+ return &GlProgramUniform2ui64vNV{}
+}
+func (*binaryClassGlProgramUniform2ui64vNV) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlProgramUniform2ui64vNV(d, obj.(*GlProgramUniform2ui64vNV))
+}
+func (c *binaryClassGlProgramUniform2ui64vNV) Schema() *binary.Entity {
+ return &entities[ixǁGlProgramUniform2ui64vNV]
+}
+
type binaryClassGlProgramUniform2uiEXT struct{}
func (*GlProgramUniform2uiEXT) Class() binary.Class {
@@ -49259,6 +51203,119 @@
return &entities[ixǁGlProgramUniform3i]
}
+type binaryClassGlProgramUniform3i64NV struct{}
+
+func (*GlProgramUniform3i64NV) Class() binary.Class {
+ return (*binaryClassGlProgramUniform3i64NV)(nil)
+}
+func doEncodeGlProgramUniform3i64NV(e binary.Encoder, o *GlProgramUniform3i64NV) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.Program))
+ e.Int32(int32(o.Location))
+ e.Int64(int64(o.X))
+ e.Int64(int64(o.Y))
+ e.Int64(int64(o.Z))
+}
+func doDecodeGlProgramUniform3i64NV(d binary.Decoder, o *GlProgramUniform3i64NV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Program = GLuint(d.Uint32())
+ o.Location = GLint(d.Int32())
+ o.X = GLint64EXT(d.Int64())
+ o.Y = GLint64EXT(d.Int64())
+ o.Z = GLint64EXT(d.Int64())
+}
+func doDecodeRawGlProgramUniform3i64NV(d binary.Decoder, o *GlProgramUniform3i64NV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Program = GLuint(d.Uint32())
+ o.Location = GLint(d.Int32())
+ o.X = GLint64EXT(d.Int64())
+ o.Y = GLint64EXT(d.Int64())
+ o.Z = GLint64EXT(d.Int64())
+}
+func (*binaryClassGlProgramUniform3i64NV) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlProgramUniform3i64NV(e, obj.(*GlProgramUniform3i64NV))
+}
+func (*binaryClassGlProgramUniform3i64NV) New() binary.Object {
+ return &GlProgramUniform3i64NV{}
+}
+func (*binaryClassGlProgramUniform3i64NV) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlProgramUniform3i64NV(d, obj.(*GlProgramUniform3i64NV))
+}
+func (c *binaryClassGlProgramUniform3i64NV) Schema() *binary.Entity {
+ return &entities[ixǁGlProgramUniform3i64NV]
+}
+
+type binaryClassGlProgramUniform3i64vNV struct{}
+
+func (*GlProgramUniform3i64vNV) Class() binary.Class {
+ return (*binaryClassGlProgramUniform3i64vNV)(nil)
+}
+func doEncodeGlProgramUniform3i64vNV(e binary.Encoder, o *GlProgramUniform3i64vNV) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.Program))
+ e.Int32(int32(o.Location))
+ e.Int32(int32(o.Count))
+ e.Simple(&o.Value)
+}
+func doDecodeGlProgramUniform3i64vNV(d binary.Decoder, o *GlProgramUniform3i64vNV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Program = GLuint(d.Uint32())
+ o.Location = GLint(d.Int32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.Value)
+}
+func doDecodeRawGlProgramUniform3i64vNV(d binary.Decoder, o *GlProgramUniform3i64vNV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Program = GLuint(d.Uint32())
+ o.Location = GLint(d.Int32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.Value)
+}
+func (*binaryClassGlProgramUniform3i64vNV) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlProgramUniform3i64vNV(e, obj.(*GlProgramUniform3i64vNV))
+}
+func (*binaryClassGlProgramUniform3i64vNV) New() binary.Object {
+ return &GlProgramUniform3i64vNV{}
+}
+func (*binaryClassGlProgramUniform3i64vNV) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlProgramUniform3i64vNV(d, obj.(*GlProgramUniform3i64vNV))
+}
+func (c *binaryClassGlProgramUniform3i64vNV) Schema() *binary.Entity {
+ return &entities[ixǁGlProgramUniform3i64vNV]
+}
+
type binaryClassGlProgramUniform3iEXT struct{}
func (*GlProgramUniform3iEXT) Class() binary.Class {
@@ -49485,6 +51542,119 @@
return &entities[ixǁGlProgramUniform3ui]
}
+type binaryClassGlProgramUniform3ui64NV struct{}
+
+func (*GlProgramUniform3ui64NV) Class() binary.Class {
+ return (*binaryClassGlProgramUniform3ui64NV)(nil)
+}
+func doEncodeGlProgramUniform3ui64NV(e binary.Encoder, o *GlProgramUniform3ui64NV) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.Program))
+ e.Int32(int32(o.Location))
+ e.Uint64(uint64(o.X))
+ e.Uint64(uint64(o.Y))
+ e.Uint64(uint64(o.Z))
+}
+func doDecodeGlProgramUniform3ui64NV(d binary.Decoder, o *GlProgramUniform3ui64NV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Program = GLuint(d.Uint32())
+ o.Location = GLint(d.Int32())
+ o.X = GLuint64EXT(d.Uint64())
+ o.Y = GLuint64EXT(d.Uint64())
+ o.Z = GLuint64EXT(d.Uint64())
+}
+func doDecodeRawGlProgramUniform3ui64NV(d binary.Decoder, o *GlProgramUniform3ui64NV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Program = GLuint(d.Uint32())
+ o.Location = GLint(d.Int32())
+ o.X = GLuint64EXT(d.Uint64())
+ o.Y = GLuint64EXT(d.Uint64())
+ o.Z = GLuint64EXT(d.Uint64())
+}
+func (*binaryClassGlProgramUniform3ui64NV) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlProgramUniform3ui64NV(e, obj.(*GlProgramUniform3ui64NV))
+}
+func (*binaryClassGlProgramUniform3ui64NV) New() binary.Object {
+ return &GlProgramUniform3ui64NV{}
+}
+func (*binaryClassGlProgramUniform3ui64NV) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlProgramUniform3ui64NV(d, obj.(*GlProgramUniform3ui64NV))
+}
+func (c *binaryClassGlProgramUniform3ui64NV) Schema() *binary.Entity {
+ return &entities[ixǁGlProgramUniform3ui64NV]
+}
+
+type binaryClassGlProgramUniform3ui64vNV struct{}
+
+func (*GlProgramUniform3ui64vNV) Class() binary.Class {
+ return (*binaryClassGlProgramUniform3ui64vNV)(nil)
+}
+func doEncodeGlProgramUniform3ui64vNV(e binary.Encoder, o *GlProgramUniform3ui64vNV) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.Program))
+ e.Int32(int32(o.Location))
+ e.Int32(int32(o.Count))
+ e.Simple(&o.Value)
+}
+func doDecodeGlProgramUniform3ui64vNV(d binary.Decoder, o *GlProgramUniform3ui64vNV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Program = GLuint(d.Uint32())
+ o.Location = GLint(d.Int32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.Value)
+}
+func doDecodeRawGlProgramUniform3ui64vNV(d binary.Decoder, o *GlProgramUniform3ui64vNV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Program = GLuint(d.Uint32())
+ o.Location = GLint(d.Int32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.Value)
+}
+func (*binaryClassGlProgramUniform3ui64vNV) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlProgramUniform3ui64vNV(e, obj.(*GlProgramUniform3ui64vNV))
+}
+func (*binaryClassGlProgramUniform3ui64vNV) New() binary.Object {
+ return &GlProgramUniform3ui64vNV{}
+}
+func (*binaryClassGlProgramUniform3ui64vNV) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlProgramUniform3ui64vNV(d, obj.(*GlProgramUniform3ui64vNV))
+}
+func (c *binaryClassGlProgramUniform3ui64vNV) Schema() *binary.Entity {
+ return &entities[ixǁGlProgramUniform3ui64vNV]
+}
+
type binaryClassGlProgramUniform3uiEXT struct{}
func (*GlProgramUniform3uiEXT) Class() binary.Class {
@@ -49946,6 +52116,122 @@
return &entities[ixǁGlProgramUniform4i]
}
+type binaryClassGlProgramUniform4i64NV struct{}
+
+func (*GlProgramUniform4i64NV) Class() binary.Class {
+ return (*binaryClassGlProgramUniform4i64NV)(nil)
+}
+func doEncodeGlProgramUniform4i64NV(e binary.Encoder, o *GlProgramUniform4i64NV) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.Program))
+ e.Int32(int32(o.Location))
+ e.Int64(int64(o.X))
+ e.Int64(int64(o.Y))
+ e.Int64(int64(o.Z))
+ e.Int64(int64(o.W))
+}
+func doDecodeGlProgramUniform4i64NV(d binary.Decoder, o *GlProgramUniform4i64NV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Program = GLuint(d.Uint32())
+ o.Location = GLint(d.Int32())
+ o.X = GLint64EXT(d.Int64())
+ o.Y = GLint64EXT(d.Int64())
+ o.Z = GLint64EXT(d.Int64())
+ o.W = GLint64EXT(d.Int64())
+}
+func doDecodeRawGlProgramUniform4i64NV(d binary.Decoder, o *GlProgramUniform4i64NV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Program = GLuint(d.Uint32())
+ o.Location = GLint(d.Int32())
+ o.X = GLint64EXT(d.Int64())
+ o.Y = GLint64EXT(d.Int64())
+ o.Z = GLint64EXT(d.Int64())
+ o.W = GLint64EXT(d.Int64())
+}
+func (*binaryClassGlProgramUniform4i64NV) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlProgramUniform4i64NV(e, obj.(*GlProgramUniform4i64NV))
+}
+func (*binaryClassGlProgramUniform4i64NV) New() binary.Object {
+ return &GlProgramUniform4i64NV{}
+}
+func (*binaryClassGlProgramUniform4i64NV) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlProgramUniform4i64NV(d, obj.(*GlProgramUniform4i64NV))
+}
+func (c *binaryClassGlProgramUniform4i64NV) Schema() *binary.Entity {
+ return &entities[ixǁGlProgramUniform4i64NV]
+}
+
+type binaryClassGlProgramUniform4i64vNV struct{}
+
+func (*GlProgramUniform4i64vNV) Class() binary.Class {
+ return (*binaryClassGlProgramUniform4i64vNV)(nil)
+}
+func doEncodeGlProgramUniform4i64vNV(e binary.Encoder, o *GlProgramUniform4i64vNV) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.Program))
+ e.Int32(int32(o.Location))
+ e.Int32(int32(o.Count))
+ e.Simple(&o.Value)
+}
+func doDecodeGlProgramUniform4i64vNV(d binary.Decoder, o *GlProgramUniform4i64vNV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Program = GLuint(d.Uint32())
+ o.Location = GLint(d.Int32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.Value)
+}
+func doDecodeRawGlProgramUniform4i64vNV(d binary.Decoder, o *GlProgramUniform4i64vNV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Program = GLuint(d.Uint32())
+ o.Location = GLint(d.Int32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.Value)
+}
+func (*binaryClassGlProgramUniform4i64vNV) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlProgramUniform4i64vNV(e, obj.(*GlProgramUniform4i64vNV))
+}
+func (*binaryClassGlProgramUniform4i64vNV) New() binary.Object {
+ return &GlProgramUniform4i64vNV{}
+}
+func (*binaryClassGlProgramUniform4i64vNV) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlProgramUniform4i64vNV(d, obj.(*GlProgramUniform4i64vNV))
+}
+func (c *binaryClassGlProgramUniform4i64vNV) Schema() *binary.Entity {
+ return &entities[ixǁGlProgramUniform4i64vNV]
+}
+
type binaryClassGlProgramUniform4iEXT struct{}
func (*GlProgramUniform4iEXT) Class() binary.Class {
@@ -50178,6 +52464,122 @@
return &entities[ixǁGlProgramUniform4ui]
}
+type binaryClassGlProgramUniform4ui64NV struct{}
+
+func (*GlProgramUniform4ui64NV) Class() binary.Class {
+ return (*binaryClassGlProgramUniform4ui64NV)(nil)
+}
+func doEncodeGlProgramUniform4ui64NV(e binary.Encoder, o *GlProgramUniform4ui64NV) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.Program))
+ e.Int32(int32(o.Location))
+ e.Uint64(uint64(o.X))
+ e.Uint64(uint64(o.Y))
+ e.Uint64(uint64(o.Z))
+ e.Uint64(uint64(o.W))
+}
+func doDecodeGlProgramUniform4ui64NV(d binary.Decoder, o *GlProgramUniform4ui64NV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Program = GLuint(d.Uint32())
+ o.Location = GLint(d.Int32())
+ o.X = GLuint64EXT(d.Uint64())
+ o.Y = GLuint64EXT(d.Uint64())
+ o.Z = GLuint64EXT(d.Uint64())
+ o.W = GLuint64EXT(d.Uint64())
+}
+func doDecodeRawGlProgramUniform4ui64NV(d binary.Decoder, o *GlProgramUniform4ui64NV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Program = GLuint(d.Uint32())
+ o.Location = GLint(d.Int32())
+ o.X = GLuint64EXT(d.Uint64())
+ o.Y = GLuint64EXT(d.Uint64())
+ o.Z = GLuint64EXT(d.Uint64())
+ o.W = GLuint64EXT(d.Uint64())
+}
+func (*binaryClassGlProgramUniform4ui64NV) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlProgramUniform4ui64NV(e, obj.(*GlProgramUniform4ui64NV))
+}
+func (*binaryClassGlProgramUniform4ui64NV) New() binary.Object {
+ return &GlProgramUniform4ui64NV{}
+}
+func (*binaryClassGlProgramUniform4ui64NV) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlProgramUniform4ui64NV(d, obj.(*GlProgramUniform4ui64NV))
+}
+func (c *binaryClassGlProgramUniform4ui64NV) Schema() *binary.Entity {
+ return &entities[ixǁGlProgramUniform4ui64NV]
+}
+
+type binaryClassGlProgramUniform4ui64vNV struct{}
+
+func (*GlProgramUniform4ui64vNV) Class() binary.Class {
+ return (*binaryClassGlProgramUniform4ui64vNV)(nil)
+}
+func doEncodeGlProgramUniform4ui64vNV(e binary.Encoder, o *GlProgramUniform4ui64vNV) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.Program))
+ e.Int32(int32(o.Location))
+ e.Int32(int32(o.Count))
+ e.Simple(&o.Value)
+}
+func doDecodeGlProgramUniform4ui64vNV(d binary.Decoder, o *GlProgramUniform4ui64vNV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Program = GLuint(d.Uint32())
+ o.Location = GLint(d.Int32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.Value)
+}
+func doDecodeRawGlProgramUniform4ui64vNV(d binary.Decoder, o *GlProgramUniform4ui64vNV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Program = GLuint(d.Uint32())
+ o.Location = GLint(d.Int32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.Value)
+}
+func (*binaryClassGlProgramUniform4ui64vNV) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlProgramUniform4ui64vNV(e, obj.(*GlProgramUniform4ui64vNV))
+}
+func (*binaryClassGlProgramUniform4ui64vNV) New() binary.Object {
+ return &GlProgramUniform4ui64vNV{}
+}
+func (*binaryClassGlProgramUniform4ui64vNV) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlProgramUniform4ui64vNV(d, obj.(*GlProgramUniform4ui64vNV))
+}
+func (c *binaryClassGlProgramUniform4ui64vNV) Schema() *binary.Entity {
+ return &entities[ixǁGlProgramUniform4ui64vNV]
+}
+
type binaryClassGlProgramUniform4uiEXT struct{}
func (*GlProgramUniform4uiEXT) Class() binary.Class {
@@ -50349,6 +52751,58 @@
return &entities[ixǁGlProgramUniform4uivEXT]
}
+type binaryClassGlProgramUniformHandleui64IMG struct{}
+
+func (*GlProgramUniformHandleui64IMG) Class() binary.Class {
+ return (*binaryClassGlProgramUniformHandleui64IMG)(nil)
+}
+func doEncodeGlProgramUniformHandleui64IMG(e binary.Encoder, o *GlProgramUniformHandleui64IMG) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.Program))
+ e.Int32(int32(o.Location))
+ e.Uint64(uint64(o.Value))
+}
+func doDecodeGlProgramUniformHandleui64IMG(d binary.Decoder, o *GlProgramUniformHandleui64IMG) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Program = GLuint(d.Uint32())
+ o.Location = GLint(d.Int32())
+ o.Value = GLuint64(d.Uint64())
+}
+func doDecodeRawGlProgramUniformHandleui64IMG(d binary.Decoder, o *GlProgramUniformHandleui64IMG) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Program = GLuint(d.Uint32())
+ o.Location = GLint(d.Int32())
+ o.Value = GLuint64(d.Uint64())
+}
+func (*binaryClassGlProgramUniformHandleui64IMG) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlProgramUniformHandleui64IMG(e, obj.(*GlProgramUniformHandleui64IMG))
+}
+func (*binaryClassGlProgramUniformHandleui64IMG) New() binary.Object {
+ return &GlProgramUniformHandleui64IMG{}
+}
+func (*binaryClassGlProgramUniformHandleui64IMG) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlProgramUniformHandleui64IMG(d, obj.(*GlProgramUniformHandleui64IMG))
+}
+func (c *binaryClassGlProgramUniformHandleui64IMG) Schema() *binary.Entity {
+ return &entities[ixǁGlProgramUniformHandleui64IMG]
+}
+
type binaryClassGlProgramUniformHandleui64NV struct{}
func (*GlProgramUniformHandleui64NV) Class() binary.Class {
@@ -50401,6 +52855,61 @@
return &entities[ixǁGlProgramUniformHandleui64NV]
}
+type binaryClassGlProgramUniformHandleui64vIMG struct{}
+
+func (*GlProgramUniformHandleui64vIMG) Class() binary.Class {
+ return (*binaryClassGlProgramUniformHandleui64vIMG)(nil)
+}
+func doEncodeGlProgramUniformHandleui64vIMG(e binary.Encoder, o *GlProgramUniformHandleui64vIMG) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.Program))
+ e.Int32(int32(o.Location))
+ e.Int32(int32(o.Count))
+ e.Simple(&o.Values)
+}
+func doDecodeGlProgramUniformHandleui64vIMG(d binary.Decoder, o *GlProgramUniformHandleui64vIMG) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Program = GLuint(d.Uint32())
+ o.Location = GLint(d.Int32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.Values)
+}
+func doDecodeRawGlProgramUniformHandleui64vIMG(d binary.Decoder, o *GlProgramUniformHandleui64vIMG) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Program = GLuint(d.Uint32())
+ o.Location = GLint(d.Int32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.Values)
+}
+func (*binaryClassGlProgramUniformHandleui64vIMG) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlProgramUniformHandleui64vIMG(e, obj.(*GlProgramUniformHandleui64vIMG))
+}
+func (*binaryClassGlProgramUniformHandleui64vIMG) New() binary.Object {
+ return &GlProgramUniformHandleui64vIMG{}
+}
+func (*binaryClassGlProgramUniformHandleui64vIMG) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlProgramUniformHandleui64vIMG(d, obj.(*GlProgramUniformHandleui64vIMG))
+}
+func (c *binaryClassGlProgramUniformHandleui64vIMG) Schema() *binary.Entity {
+ return &entities[ixǁGlProgramUniformHandleui64vIMG]
+}
+
type binaryClassGlProgramUniformHandleui64vNV struct{}
func (*GlProgramUniformHandleui64vNV) Class() binary.Class {
@@ -54032,6 +56541,58 @@
return &entities[ixǁGlScissorArrayvNV]
}
+type binaryClassGlScissorArrayvOES struct{}
+
+func (*GlScissorArrayvOES) Class() binary.Class {
+ return (*binaryClassGlScissorArrayvOES)(nil)
+}
+func doEncodeGlScissorArrayvOES(e binary.Encoder, o *GlScissorArrayvOES) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.First))
+ e.Int32(int32(o.Count))
+ e.Simple(&o.V)
+}
+func doDecodeGlScissorArrayvOES(d binary.Decoder, o *GlScissorArrayvOES) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.First = GLuint(d.Uint32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.V)
+}
+func doDecodeRawGlScissorArrayvOES(d binary.Decoder, o *GlScissorArrayvOES) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.First = GLuint(d.Uint32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.V)
+}
+func (*binaryClassGlScissorArrayvOES) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlScissorArrayvOES(e, obj.(*GlScissorArrayvOES))
+}
+func (*binaryClassGlScissorArrayvOES) New() binary.Object {
+ return &GlScissorArrayvOES{}
+}
+func (*binaryClassGlScissorArrayvOES) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlScissorArrayvOES(d, obj.(*GlScissorArrayvOES))
+}
+func (c *binaryClassGlScissorArrayvOES) Schema() *binary.Entity {
+ return &entities[ixǁGlScissorArrayvOES]
+}
+
type binaryClassGlScissorIndexedNV struct{}
func (*GlScissorIndexedNV) Class() binary.Class {
@@ -54090,6 +56651,64 @@
return &entities[ixǁGlScissorIndexedNV]
}
+type binaryClassGlScissorIndexedOES struct{}
+
+func (*GlScissorIndexedOES) Class() binary.Class {
+ return (*binaryClassGlScissorIndexedOES)(nil)
+}
+func doEncodeGlScissorIndexedOES(e binary.Encoder, o *GlScissorIndexedOES) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.Index))
+ e.Int32(int32(o.Left))
+ e.Int32(int32(o.Bottom))
+ e.Int32(int32(o.Width))
+ e.Int32(int32(o.Height))
+}
+func doDecodeGlScissorIndexedOES(d binary.Decoder, o *GlScissorIndexedOES) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Index = GLuint(d.Uint32())
+ o.Left = GLint(d.Int32())
+ o.Bottom = GLint(d.Int32())
+ o.Width = GLsizei(d.Int32())
+ o.Height = GLsizei(d.Int32())
+}
+func doDecodeRawGlScissorIndexedOES(d binary.Decoder, o *GlScissorIndexedOES) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Index = GLuint(d.Uint32())
+ o.Left = GLint(d.Int32())
+ o.Bottom = GLint(d.Int32())
+ o.Width = GLsizei(d.Int32())
+ o.Height = GLsizei(d.Int32())
+}
+func (*binaryClassGlScissorIndexedOES) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlScissorIndexedOES(e, obj.(*GlScissorIndexedOES))
+}
+func (*binaryClassGlScissorIndexedOES) New() binary.Object {
+ return &GlScissorIndexedOES{}
+}
+func (*binaryClassGlScissorIndexedOES) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlScissorIndexedOES(d, obj.(*GlScissorIndexedOES))
+}
+func (c *binaryClassGlScissorIndexedOES) Schema() *binary.Entity {
+ return &entities[ixǁGlScissorIndexedOES]
+}
+
type binaryClassGlScissorIndexedvNV struct{}
func (*GlScissorIndexedvNV) Class() binary.Class {
@@ -54139,6 +56758,55 @@
return &entities[ixǁGlScissorIndexedvNV]
}
+type binaryClassGlScissorIndexedvOES struct{}
+
+func (*GlScissorIndexedvOES) Class() binary.Class {
+ return (*binaryClassGlScissorIndexedvOES)(nil)
+}
+func doEncodeGlScissorIndexedvOES(e binary.Encoder, o *GlScissorIndexedvOES) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.Index))
+ e.Simple(&o.V)
+}
+func doDecodeGlScissorIndexedvOES(d binary.Decoder, o *GlScissorIndexedvOES) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Index = GLuint(d.Uint32())
+ d.Simple(&o.V)
+}
+func doDecodeRawGlScissorIndexedvOES(d binary.Decoder, o *GlScissorIndexedvOES) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Index = GLuint(d.Uint32())
+ d.Simple(&o.V)
+}
+func (*binaryClassGlScissorIndexedvOES) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlScissorIndexedvOES(e, obj.(*GlScissorIndexedvOES))
+}
+func (*binaryClassGlScissorIndexedvOES) New() binary.Object {
+ return &GlScissorIndexedvOES{}
+}
+func (*binaryClassGlScissorIndexedvOES) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlScissorIndexedvOES(d, obj.(*GlScissorIndexedvOES))
+}
+func (c *binaryClassGlScissorIndexedvOES) Schema() *binary.Entity {
+ return &entities[ixǁGlScissorIndexedvOES]
+}
+
type binaryClassGlSelectPerfMonitorCountersAMD struct{}
func (*GlSelectPerfMonitorCountersAMD) Class() binary.Class {
@@ -59071,6 +61739,107 @@
return &entities[ixǁGlUniform1i]
}
+type binaryClassGlUniform1i64NV struct{}
+
+func (*GlUniform1i64NV) Class() binary.Class {
+ return (*binaryClassGlUniform1i64NV)(nil)
+}
+func doEncodeGlUniform1i64NV(e binary.Encoder, o *GlUniform1i64NV) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Int32(int32(o.Location))
+ e.Int64(int64(o.X))
+}
+func doDecodeGlUniform1i64NV(d binary.Decoder, o *GlUniform1i64NV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Location = GLint(d.Int32())
+ o.X = GLint64EXT(d.Int64())
+}
+func doDecodeRawGlUniform1i64NV(d binary.Decoder, o *GlUniform1i64NV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Location = GLint(d.Int32())
+ o.X = GLint64EXT(d.Int64())
+}
+func (*binaryClassGlUniform1i64NV) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlUniform1i64NV(e, obj.(*GlUniform1i64NV))
+}
+func (*binaryClassGlUniform1i64NV) New() binary.Object {
+ return &GlUniform1i64NV{}
+}
+func (*binaryClassGlUniform1i64NV) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlUniform1i64NV(d, obj.(*GlUniform1i64NV))
+}
+func (c *binaryClassGlUniform1i64NV) Schema() *binary.Entity {
+ return &entities[ixǁGlUniform1i64NV]
+}
+
+type binaryClassGlUniform1i64vNV struct{}
+
+func (*GlUniform1i64vNV) Class() binary.Class {
+ return (*binaryClassGlUniform1i64vNV)(nil)
+}
+func doEncodeGlUniform1i64vNV(e binary.Encoder, o *GlUniform1i64vNV) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Int32(int32(o.Location))
+ e.Int32(int32(o.Count))
+ e.Simple(&o.Value)
+}
+func doDecodeGlUniform1i64vNV(d binary.Decoder, o *GlUniform1i64vNV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Location = GLint(d.Int32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.Value)
+}
+func doDecodeRawGlUniform1i64vNV(d binary.Decoder, o *GlUniform1i64vNV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Location = GLint(d.Int32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.Value)
+}
+func (*binaryClassGlUniform1i64vNV) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlUniform1i64vNV(e, obj.(*GlUniform1i64vNV))
+}
+func (*binaryClassGlUniform1i64vNV) New() binary.Object {
+ return &GlUniform1i64vNV{}
+}
+func (*binaryClassGlUniform1i64vNV) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlUniform1i64vNV(d, obj.(*GlUniform1i64vNV))
+}
+func (c *binaryClassGlUniform1i64vNV) Schema() *binary.Entity {
+ return &entities[ixǁGlUniform1i64vNV]
+}
+
type binaryClassGlUniform1iv struct{}
func (*GlUniform1iv) Class() binary.Class {
@@ -59172,6 +61941,107 @@
return &entities[ixǁGlUniform1ui]
}
+type binaryClassGlUniform1ui64NV struct{}
+
+func (*GlUniform1ui64NV) Class() binary.Class {
+ return (*binaryClassGlUniform1ui64NV)(nil)
+}
+func doEncodeGlUniform1ui64NV(e binary.Encoder, o *GlUniform1ui64NV) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Int32(int32(o.Location))
+ e.Uint64(uint64(o.X))
+}
+func doDecodeGlUniform1ui64NV(d binary.Decoder, o *GlUniform1ui64NV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Location = GLint(d.Int32())
+ o.X = GLuint64EXT(d.Uint64())
+}
+func doDecodeRawGlUniform1ui64NV(d binary.Decoder, o *GlUniform1ui64NV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Location = GLint(d.Int32())
+ o.X = GLuint64EXT(d.Uint64())
+}
+func (*binaryClassGlUniform1ui64NV) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlUniform1ui64NV(e, obj.(*GlUniform1ui64NV))
+}
+func (*binaryClassGlUniform1ui64NV) New() binary.Object {
+ return &GlUniform1ui64NV{}
+}
+func (*binaryClassGlUniform1ui64NV) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlUniform1ui64NV(d, obj.(*GlUniform1ui64NV))
+}
+func (c *binaryClassGlUniform1ui64NV) Schema() *binary.Entity {
+ return &entities[ixǁGlUniform1ui64NV]
+}
+
+type binaryClassGlUniform1ui64vNV struct{}
+
+func (*GlUniform1ui64vNV) Class() binary.Class {
+ return (*binaryClassGlUniform1ui64vNV)(nil)
+}
+func doEncodeGlUniform1ui64vNV(e binary.Encoder, o *GlUniform1ui64vNV) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Int32(int32(o.Location))
+ e.Int32(int32(o.Count))
+ e.Simple(&o.Value)
+}
+func doDecodeGlUniform1ui64vNV(d binary.Decoder, o *GlUniform1ui64vNV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Location = GLint(d.Int32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.Value)
+}
+func doDecodeRawGlUniform1ui64vNV(d binary.Decoder, o *GlUniform1ui64vNV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Location = GLint(d.Int32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.Value)
+}
+func (*binaryClassGlUniform1ui64vNV) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlUniform1ui64vNV(e, obj.(*GlUniform1ui64vNV))
+}
+func (*binaryClassGlUniform1ui64vNV) New() binary.Object {
+ return &GlUniform1ui64vNV{}
+}
+func (*binaryClassGlUniform1ui64vNV) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlUniform1ui64vNV(d, obj.(*GlUniform1ui64vNV))
+}
+func (c *binaryClassGlUniform1ui64vNV) Schema() *binary.Entity {
+ return &entities[ixǁGlUniform1ui64vNV]
+}
+
type binaryClassGlUniform1uiv struct{}
func (*GlUniform1uiv) Class() binary.Class {
@@ -59380,6 +62250,110 @@
return &entities[ixǁGlUniform2i]
}
+type binaryClassGlUniform2i64NV struct{}
+
+func (*GlUniform2i64NV) Class() binary.Class {
+ return (*binaryClassGlUniform2i64NV)(nil)
+}
+func doEncodeGlUniform2i64NV(e binary.Encoder, o *GlUniform2i64NV) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Int32(int32(o.Location))
+ e.Int64(int64(o.X))
+ e.Int64(int64(o.Y))
+}
+func doDecodeGlUniform2i64NV(d binary.Decoder, o *GlUniform2i64NV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Location = GLint(d.Int32())
+ o.X = GLint64EXT(d.Int64())
+ o.Y = GLint64EXT(d.Int64())
+}
+func doDecodeRawGlUniform2i64NV(d binary.Decoder, o *GlUniform2i64NV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Location = GLint(d.Int32())
+ o.X = GLint64EXT(d.Int64())
+ o.Y = GLint64EXT(d.Int64())
+}
+func (*binaryClassGlUniform2i64NV) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlUniform2i64NV(e, obj.(*GlUniform2i64NV))
+}
+func (*binaryClassGlUniform2i64NV) New() binary.Object {
+ return &GlUniform2i64NV{}
+}
+func (*binaryClassGlUniform2i64NV) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlUniform2i64NV(d, obj.(*GlUniform2i64NV))
+}
+func (c *binaryClassGlUniform2i64NV) Schema() *binary.Entity {
+ return &entities[ixǁGlUniform2i64NV]
+}
+
+type binaryClassGlUniform2i64vNV struct{}
+
+func (*GlUniform2i64vNV) Class() binary.Class {
+ return (*binaryClassGlUniform2i64vNV)(nil)
+}
+func doEncodeGlUniform2i64vNV(e binary.Encoder, o *GlUniform2i64vNV) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Int32(int32(o.Location))
+ e.Int32(int32(o.Count))
+ e.Simple(&o.Value)
+}
+func doDecodeGlUniform2i64vNV(d binary.Decoder, o *GlUniform2i64vNV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Location = GLint(d.Int32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.Value)
+}
+func doDecodeRawGlUniform2i64vNV(d binary.Decoder, o *GlUniform2i64vNV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Location = GLint(d.Int32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.Value)
+}
+func (*binaryClassGlUniform2i64vNV) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlUniform2i64vNV(e, obj.(*GlUniform2i64vNV))
+}
+func (*binaryClassGlUniform2i64vNV) New() binary.Object {
+ return &GlUniform2i64vNV{}
+}
+func (*binaryClassGlUniform2i64vNV) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlUniform2i64vNV(d, obj.(*GlUniform2i64vNV))
+}
+func (c *binaryClassGlUniform2i64vNV) Schema() *binary.Entity {
+ return &entities[ixǁGlUniform2i64vNV]
+}
+
type binaryClassGlUniform2iv struct{}
func (*GlUniform2iv) Class() binary.Class {
@@ -59484,6 +62458,110 @@
return &entities[ixǁGlUniform2ui]
}
+type binaryClassGlUniform2ui64NV struct{}
+
+func (*GlUniform2ui64NV) Class() binary.Class {
+ return (*binaryClassGlUniform2ui64NV)(nil)
+}
+func doEncodeGlUniform2ui64NV(e binary.Encoder, o *GlUniform2ui64NV) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Int32(int32(o.Location))
+ e.Uint64(uint64(o.X))
+ e.Uint64(uint64(o.Y))
+}
+func doDecodeGlUniform2ui64NV(d binary.Decoder, o *GlUniform2ui64NV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Location = GLint(d.Int32())
+ o.X = GLuint64EXT(d.Uint64())
+ o.Y = GLuint64EXT(d.Uint64())
+}
+func doDecodeRawGlUniform2ui64NV(d binary.Decoder, o *GlUniform2ui64NV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Location = GLint(d.Int32())
+ o.X = GLuint64EXT(d.Uint64())
+ o.Y = GLuint64EXT(d.Uint64())
+}
+func (*binaryClassGlUniform2ui64NV) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlUniform2ui64NV(e, obj.(*GlUniform2ui64NV))
+}
+func (*binaryClassGlUniform2ui64NV) New() binary.Object {
+ return &GlUniform2ui64NV{}
+}
+func (*binaryClassGlUniform2ui64NV) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlUniform2ui64NV(d, obj.(*GlUniform2ui64NV))
+}
+func (c *binaryClassGlUniform2ui64NV) Schema() *binary.Entity {
+ return &entities[ixǁGlUniform2ui64NV]
+}
+
+type binaryClassGlUniform2ui64vNV struct{}
+
+func (*GlUniform2ui64vNV) Class() binary.Class {
+ return (*binaryClassGlUniform2ui64vNV)(nil)
+}
+func doEncodeGlUniform2ui64vNV(e binary.Encoder, o *GlUniform2ui64vNV) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Int32(int32(o.Location))
+ e.Int32(int32(o.Count))
+ e.Simple(&o.Value)
+}
+func doDecodeGlUniform2ui64vNV(d binary.Decoder, o *GlUniform2ui64vNV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Location = GLint(d.Int32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.Value)
+}
+func doDecodeRawGlUniform2ui64vNV(d binary.Decoder, o *GlUniform2ui64vNV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Location = GLint(d.Int32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.Value)
+}
+func (*binaryClassGlUniform2ui64vNV) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlUniform2ui64vNV(e, obj.(*GlUniform2ui64vNV))
+}
+func (*binaryClassGlUniform2ui64vNV) New() binary.Object {
+ return &GlUniform2ui64vNV{}
+}
+func (*binaryClassGlUniform2ui64vNV) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlUniform2ui64vNV(d, obj.(*GlUniform2ui64vNV))
+}
+func (c *binaryClassGlUniform2ui64vNV) Schema() *binary.Entity {
+ return &entities[ixǁGlUniform2ui64vNV]
+}
+
type binaryClassGlUniform2uiv struct{}
func (*GlUniform2uiv) Class() binary.Class {
@@ -59698,6 +62776,113 @@
return &entities[ixǁGlUniform3i]
}
+type binaryClassGlUniform3i64NV struct{}
+
+func (*GlUniform3i64NV) Class() binary.Class {
+ return (*binaryClassGlUniform3i64NV)(nil)
+}
+func doEncodeGlUniform3i64NV(e binary.Encoder, o *GlUniform3i64NV) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Int32(int32(o.Location))
+ e.Int64(int64(o.X))
+ e.Int64(int64(o.Y))
+ e.Int64(int64(o.Z))
+}
+func doDecodeGlUniform3i64NV(d binary.Decoder, o *GlUniform3i64NV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Location = GLint(d.Int32())
+ o.X = GLint64EXT(d.Int64())
+ o.Y = GLint64EXT(d.Int64())
+ o.Z = GLint64EXT(d.Int64())
+}
+func doDecodeRawGlUniform3i64NV(d binary.Decoder, o *GlUniform3i64NV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Location = GLint(d.Int32())
+ o.X = GLint64EXT(d.Int64())
+ o.Y = GLint64EXT(d.Int64())
+ o.Z = GLint64EXT(d.Int64())
+}
+func (*binaryClassGlUniform3i64NV) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlUniform3i64NV(e, obj.(*GlUniform3i64NV))
+}
+func (*binaryClassGlUniform3i64NV) New() binary.Object {
+ return &GlUniform3i64NV{}
+}
+func (*binaryClassGlUniform3i64NV) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlUniform3i64NV(d, obj.(*GlUniform3i64NV))
+}
+func (c *binaryClassGlUniform3i64NV) Schema() *binary.Entity {
+ return &entities[ixǁGlUniform3i64NV]
+}
+
+type binaryClassGlUniform3i64vNV struct{}
+
+func (*GlUniform3i64vNV) Class() binary.Class {
+ return (*binaryClassGlUniform3i64vNV)(nil)
+}
+func doEncodeGlUniform3i64vNV(e binary.Encoder, o *GlUniform3i64vNV) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Int32(int32(o.Location))
+ e.Int32(int32(o.Count))
+ e.Simple(&o.Value)
+}
+func doDecodeGlUniform3i64vNV(d binary.Decoder, o *GlUniform3i64vNV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Location = GLint(d.Int32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.Value)
+}
+func doDecodeRawGlUniform3i64vNV(d binary.Decoder, o *GlUniform3i64vNV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Location = GLint(d.Int32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.Value)
+}
+func (*binaryClassGlUniform3i64vNV) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlUniform3i64vNV(e, obj.(*GlUniform3i64vNV))
+}
+func (*binaryClassGlUniform3i64vNV) New() binary.Object {
+ return &GlUniform3i64vNV{}
+}
+func (*binaryClassGlUniform3i64vNV) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlUniform3i64vNV(d, obj.(*GlUniform3i64vNV))
+}
+func (c *binaryClassGlUniform3i64vNV) Schema() *binary.Entity {
+ return &entities[ixǁGlUniform3i64vNV]
+}
+
type binaryClassGlUniform3iv struct{}
func (*GlUniform3iv) Class() binary.Class {
@@ -59805,6 +62990,113 @@
return &entities[ixǁGlUniform3ui]
}
+type binaryClassGlUniform3ui64NV struct{}
+
+func (*GlUniform3ui64NV) Class() binary.Class {
+ return (*binaryClassGlUniform3ui64NV)(nil)
+}
+func doEncodeGlUniform3ui64NV(e binary.Encoder, o *GlUniform3ui64NV) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Int32(int32(o.Location))
+ e.Uint64(uint64(o.X))
+ e.Uint64(uint64(o.Y))
+ e.Uint64(uint64(o.Z))
+}
+func doDecodeGlUniform3ui64NV(d binary.Decoder, o *GlUniform3ui64NV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Location = GLint(d.Int32())
+ o.X = GLuint64EXT(d.Uint64())
+ o.Y = GLuint64EXT(d.Uint64())
+ o.Z = GLuint64EXT(d.Uint64())
+}
+func doDecodeRawGlUniform3ui64NV(d binary.Decoder, o *GlUniform3ui64NV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Location = GLint(d.Int32())
+ o.X = GLuint64EXT(d.Uint64())
+ o.Y = GLuint64EXT(d.Uint64())
+ o.Z = GLuint64EXT(d.Uint64())
+}
+func (*binaryClassGlUniform3ui64NV) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlUniform3ui64NV(e, obj.(*GlUniform3ui64NV))
+}
+func (*binaryClassGlUniform3ui64NV) New() binary.Object {
+ return &GlUniform3ui64NV{}
+}
+func (*binaryClassGlUniform3ui64NV) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlUniform3ui64NV(d, obj.(*GlUniform3ui64NV))
+}
+func (c *binaryClassGlUniform3ui64NV) Schema() *binary.Entity {
+ return &entities[ixǁGlUniform3ui64NV]
+}
+
+type binaryClassGlUniform3ui64vNV struct{}
+
+func (*GlUniform3ui64vNV) Class() binary.Class {
+ return (*binaryClassGlUniform3ui64vNV)(nil)
+}
+func doEncodeGlUniform3ui64vNV(e binary.Encoder, o *GlUniform3ui64vNV) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Int32(int32(o.Location))
+ e.Int32(int32(o.Count))
+ e.Simple(&o.Value)
+}
+func doDecodeGlUniform3ui64vNV(d binary.Decoder, o *GlUniform3ui64vNV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Location = GLint(d.Int32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.Value)
+}
+func doDecodeRawGlUniform3ui64vNV(d binary.Decoder, o *GlUniform3ui64vNV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Location = GLint(d.Int32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.Value)
+}
+func (*binaryClassGlUniform3ui64vNV) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlUniform3ui64vNV(e, obj.(*GlUniform3ui64vNV))
+}
+func (*binaryClassGlUniform3ui64vNV) New() binary.Object {
+ return &GlUniform3ui64vNV{}
+}
+func (*binaryClassGlUniform3ui64vNV) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlUniform3ui64vNV(d, obj.(*GlUniform3ui64vNV))
+}
+func (c *binaryClassGlUniform3ui64vNV) Schema() *binary.Entity {
+ return &entities[ixǁGlUniform3ui64vNV]
+}
+
type binaryClassGlUniform3uiv struct{}
func (*GlUniform3uiv) Class() binary.Class {
@@ -60025,6 +63317,116 @@
return &entities[ixǁGlUniform4i]
}
+type binaryClassGlUniform4i64NV struct{}
+
+func (*GlUniform4i64NV) Class() binary.Class {
+ return (*binaryClassGlUniform4i64NV)(nil)
+}
+func doEncodeGlUniform4i64NV(e binary.Encoder, o *GlUniform4i64NV) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Int32(int32(o.Location))
+ e.Int64(int64(o.X))
+ e.Int64(int64(o.Y))
+ e.Int64(int64(o.Z))
+ e.Int64(int64(o.W))
+}
+func doDecodeGlUniform4i64NV(d binary.Decoder, o *GlUniform4i64NV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Location = GLint(d.Int32())
+ o.X = GLint64EXT(d.Int64())
+ o.Y = GLint64EXT(d.Int64())
+ o.Z = GLint64EXT(d.Int64())
+ o.W = GLint64EXT(d.Int64())
+}
+func doDecodeRawGlUniform4i64NV(d binary.Decoder, o *GlUniform4i64NV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Location = GLint(d.Int32())
+ o.X = GLint64EXT(d.Int64())
+ o.Y = GLint64EXT(d.Int64())
+ o.Z = GLint64EXT(d.Int64())
+ o.W = GLint64EXT(d.Int64())
+}
+func (*binaryClassGlUniform4i64NV) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlUniform4i64NV(e, obj.(*GlUniform4i64NV))
+}
+func (*binaryClassGlUniform4i64NV) New() binary.Object {
+ return &GlUniform4i64NV{}
+}
+func (*binaryClassGlUniform4i64NV) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlUniform4i64NV(d, obj.(*GlUniform4i64NV))
+}
+func (c *binaryClassGlUniform4i64NV) Schema() *binary.Entity {
+ return &entities[ixǁGlUniform4i64NV]
+}
+
+type binaryClassGlUniform4i64vNV struct{}
+
+func (*GlUniform4i64vNV) Class() binary.Class {
+ return (*binaryClassGlUniform4i64vNV)(nil)
+}
+func doEncodeGlUniform4i64vNV(e binary.Encoder, o *GlUniform4i64vNV) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Int32(int32(o.Location))
+ e.Int32(int32(o.Count))
+ e.Simple(&o.Value)
+}
+func doDecodeGlUniform4i64vNV(d binary.Decoder, o *GlUniform4i64vNV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Location = GLint(d.Int32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.Value)
+}
+func doDecodeRawGlUniform4i64vNV(d binary.Decoder, o *GlUniform4i64vNV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Location = GLint(d.Int32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.Value)
+}
+func (*binaryClassGlUniform4i64vNV) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlUniform4i64vNV(e, obj.(*GlUniform4i64vNV))
+}
+func (*binaryClassGlUniform4i64vNV) New() binary.Object {
+ return &GlUniform4i64vNV{}
+}
+func (*binaryClassGlUniform4i64vNV) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlUniform4i64vNV(d, obj.(*GlUniform4i64vNV))
+}
+func (c *binaryClassGlUniform4i64vNV) Schema() *binary.Entity {
+ return &entities[ixǁGlUniform4i64vNV]
+}
+
type binaryClassGlUniform4iv struct{}
func (*GlUniform4iv) Class() binary.Class {
@@ -60135,6 +63537,116 @@
return &entities[ixǁGlUniform4ui]
}
+type binaryClassGlUniform4ui64NV struct{}
+
+func (*GlUniform4ui64NV) Class() binary.Class {
+ return (*binaryClassGlUniform4ui64NV)(nil)
+}
+func doEncodeGlUniform4ui64NV(e binary.Encoder, o *GlUniform4ui64NV) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Int32(int32(o.Location))
+ e.Uint64(uint64(o.X))
+ e.Uint64(uint64(o.Y))
+ e.Uint64(uint64(o.Z))
+ e.Uint64(uint64(o.W))
+}
+func doDecodeGlUniform4ui64NV(d binary.Decoder, o *GlUniform4ui64NV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Location = GLint(d.Int32())
+ o.X = GLuint64EXT(d.Uint64())
+ o.Y = GLuint64EXT(d.Uint64())
+ o.Z = GLuint64EXT(d.Uint64())
+ o.W = GLuint64EXT(d.Uint64())
+}
+func doDecodeRawGlUniform4ui64NV(d binary.Decoder, o *GlUniform4ui64NV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Location = GLint(d.Int32())
+ o.X = GLuint64EXT(d.Uint64())
+ o.Y = GLuint64EXT(d.Uint64())
+ o.Z = GLuint64EXT(d.Uint64())
+ o.W = GLuint64EXT(d.Uint64())
+}
+func (*binaryClassGlUniform4ui64NV) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlUniform4ui64NV(e, obj.(*GlUniform4ui64NV))
+}
+func (*binaryClassGlUniform4ui64NV) New() binary.Object {
+ return &GlUniform4ui64NV{}
+}
+func (*binaryClassGlUniform4ui64NV) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlUniform4ui64NV(d, obj.(*GlUniform4ui64NV))
+}
+func (c *binaryClassGlUniform4ui64NV) Schema() *binary.Entity {
+ return &entities[ixǁGlUniform4ui64NV]
+}
+
+type binaryClassGlUniform4ui64vNV struct{}
+
+func (*GlUniform4ui64vNV) Class() binary.Class {
+ return (*binaryClassGlUniform4ui64vNV)(nil)
+}
+func doEncodeGlUniform4ui64vNV(e binary.Encoder, o *GlUniform4ui64vNV) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Int32(int32(o.Location))
+ e.Int32(int32(o.Count))
+ e.Simple(&o.Value)
+}
+func doDecodeGlUniform4ui64vNV(d binary.Decoder, o *GlUniform4ui64vNV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Location = GLint(d.Int32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.Value)
+}
+func doDecodeRawGlUniform4ui64vNV(d binary.Decoder, o *GlUniform4ui64vNV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Location = GLint(d.Int32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.Value)
+}
+func (*binaryClassGlUniform4ui64vNV) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlUniform4ui64vNV(e, obj.(*GlUniform4ui64vNV))
+}
+func (*binaryClassGlUniform4ui64vNV) New() binary.Object {
+ return &GlUniform4ui64vNV{}
+}
+func (*binaryClassGlUniform4ui64vNV) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlUniform4ui64vNV(d, obj.(*GlUniform4ui64vNV))
+}
+func (c *binaryClassGlUniform4ui64vNV) Schema() *binary.Entity {
+ return &entities[ixǁGlUniform4ui64vNV]
+}
+
type binaryClassGlUniform4uiv struct{}
func (*GlUniform4uiv) Class() binary.Class {
@@ -60239,6 +63751,55 @@
return &entities[ixǁGlUniformBlockBinding]
}
+type binaryClassGlUniformHandleui64IMG struct{}
+
+func (*GlUniformHandleui64IMG) Class() binary.Class {
+ return (*binaryClassGlUniformHandleui64IMG)(nil)
+}
+func doEncodeGlUniformHandleui64IMG(e binary.Encoder, o *GlUniformHandleui64IMG) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Int32(int32(o.Location))
+ e.Uint64(uint64(o.Value))
+}
+func doDecodeGlUniformHandleui64IMG(d binary.Decoder, o *GlUniformHandleui64IMG) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Location = GLint(d.Int32())
+ o.Value = GLuint64(d.Uint64())
+}
+func doDecodeRawGlUniformHandleui64IMG(d binary.Decoder, o *GlUniformHandleui64IMG) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Location = GLint(d.Int32())
+ o.Value = GLuint64(d.Uint64())
+}
+func (*binaryClassGlUniformHandleui64IMG) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlUniformHandleui64IMG(e, obj.(*GlUniformHandleui64IMG))
+}
+func (*binaryClassGlUniformHandleui64IMG) New() binary.Object {
+ return &GlUniformHandleui64IMG{}
+}
+func (*binaryClassGlUniformHandleui64IMG) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlUniformHandleui64IMG(d, obj.(*GlUniformHandleui64IMG))
+}
+func (c *binaryClassGlUniformHandleui64IMG) Schema() *binary.Entity {
+ return &entities[ixǁGlUniformHandleui64IMG]
+}
+
type binaryClassGlUniformHandleui64NV struct{}
func (*GlUniformHandleui64NV) Class() binary.Class {
@@ -60288,6 +63849,58 @@
return &entities[ixǁGlUniformHandleui64NV]
}
+type binaryClassGlUniformHandleui64vIMG struct{}
+
+func (*GlUniformHandleui64vIMG) Class() binary.Class {
+ return (*binaryClassGlUniformHandleui64vIMG)(nil)
+}
+func doEncodeGlUniformHandleui64vIMG(e binary.Encoder, o *GlUniformHandleui64vIMG) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Int32(int32(o.Location))
+ e.Int32(int32(o.Count))
+ e.Simple(&o.Value)
+}
+func doDecodeGlUniformHandleui64vIMG(d binary.Decoder, o *GlUniformHandleui64vIMG) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Location = GLint(d.Int32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.Value)
+}
+func doDecodeRawGlUniformHandleui64vIMG(d binary.Decoder, o *GlUniformHandleui64vIMG) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Location = GLint(d.Int32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.Value)
+}
+func (*binaryClassGlUniformHandleui64vIMG) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlUniformHandleui64vIMG(e, obj.(*GlUniformHandleui64vIMG))
+}
+func (*binaryClassGlUniformHandleui64vIMG) New() binary.Object {
+ return &GlUniformHandleui64vIMG{}
+}
+func (*binaryClassGlUniformHandleui64vIMG) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlUniformHandleui64vIMG(d, obj.(*GlUniformHandleui64vIMG))
+}
+func (c *binaryClassGlUniformHandleui64vIMG) Schema() *binary.Entity {
+ return &entities[ixǁGlUniformHandleui64vIMG]
+}
+
type binaryClassGlUniformHandleui64vNV struct{}
func (*GlUniformHandleui64vNV) Class() binary.Class {
@@ -62921,6 +66534,58 @@
return &entities[ixǁGlViewportArrayvNV]
}
+type binaryClassGlViewportArrayvOES struct{}
+
+func (*GlViewportArrayvOES) Class() binary.Class {
+ return (*binaryClassGlViewportArrayvOES)(nil)
+}
+func doEncodeGlViewportArrayvOES(e binary.Encoder, o *GlViewportArrayvOES) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.First))
+ e.Int32(int32(o.Count))
+ e.Simple(&o.V)
+}
+func doDecodeGlViewportArrayvOES(d binary.Decoder, o *GlViewportArrayvOES) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.First = GLuint(d.Uint32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.V)
+}
+func doDecodeRawGlViewportArrayvOES(d binary.Decoder, o *GlViewportArrayvOES) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.First = GLuint(d.Uint32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.V)
+}
+func (*binaryClassGlViewportArrayvOES) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlViewportArrayvOES(e, obj.(*GlViewportArrayvOES))
+}
+func (*binaryClassGlViewportArrayvOES) New() binary.Object {
+ return &GlViewportArrayvOES{}
+}
+func (*binaryClassGlViewportArrayvOES) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlViewportArrayvOES(d, obj.(*GlViewportArrayvOES))
+}
+func (c *binaryClassGlViewportArrayvOES) Schema() *binary.Entity {
+ return &entities[ixǁGlViewportArrayvOES]
+}
+
type binaryClassGlViewportIndexedfNV struct{}
func (*GlViewportIndexedfNV) Class() binary.Class {
@@ -62979,6 +66644,64 @@
return &entities[ixǁGlViewportIndexedfNV]
}
+type binaryClassGlViewportIndexedfOES struct{}
+
+func (*GlViewportIndexedfOES) Class() binary.Class {
+ return (*binaryClassGlViewportIndexedfOES)(nil)
+}
+func doEncodeGlViewportIndexedfOES(e binary.Encoder, o *GlViewportIndexedfOES) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.Index))
+ e.Float32(float32(o.X))
+ e.Float32(float32(o.Y))
+ e.Float32(float32(o.W))
+ e.Float32(float32(o.H))
+}
+func doDecodeGlViewportIndexedfOES(d binary.Decoder, o *GlViewportIndexedfOES) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Index = GLuint(d.Uint32())
+ o.X = GLfloat(d.Float32())
+ o.Y = GLfloat(d.Float32())
+ o.W = GLfloat(d.Float32())
+ o.H = GLfloat(d.Float32())
+}
+func doDecodeRawGlViewportIndexedfOES(d binary.Decoder, o *GlViewportIndexedfOES) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Index = GLuint(d.Uint32())
+ o.X = GLfloat(d.Float32())
+ o.Y = GLfloat(d.Float32())
+ o.W = GLfloat(d.Float32())
+ o.H = GLfloat(d.Float32())
+}
+func (*binaryClassGlViewportIndexedfOES) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlViewportIndexedfOES(e, obj.(*GlViewportIndexedfOES))
+}
+func (*binaryClassGlViewportIndexedfOES) New() binary.Object {
+ return &GlViewportIndexedfOES{}
+}
+func (*binaryClassGlViewportIndexedfOES) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlViewportIndexedfOES(d, obj.(*GlViewportIndexedfOES))
+}
+func (c *binaryClassGlViewportIndexedfOES) Schema() *binary.Entity {
+ return &entities[ixǁGlViewportIndexedfOES]
+}
+
type binaryClassGlViewportIndexedfvNV struct{}
func (*GlViewportIndexedfvNV) Class() binary.Class {
@@ -63028,6 +66751,113 @@
return &entities[ixǁGlViewportIndexedfvNV]
}
+type binaryClassGlViewportIndexedfvOES struct{}
+
+func (*GlViewportIndexedfvOES) Class() binary.Class {
+ return (*binaryClassGlViewportIndexedfvOES)(nil)
+}
+func doEncodeGlViewportIndexedfvOES(e binary.Encoder, o *GlViewportIndexedfvOES) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.Index))
+ e.Simple(&o.V)
+}
+func doDecodeGlViewportIndexedfvOES(d binary.Decoder, o *GlViewportIndexedfvOES) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Index = GLuint(d.Uint32())
+ d.Simple(&o.V)
+}
+func doDecodeRawGlViewportIndexedfvOES(d binary.Decoder, o *GlViewportIndexedfvOES) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Index = GLuint(d.Uint32())
+ d.Simple(&o.V)
+}
+func (*binaryClassGlViewportIndexedfvOES) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlViewportIndexedfvOES(e, obj.(*GlViewportIndexedfvOES))
+}
+func (*binaryClassGlViewportIndexedfvOES) New() binary.Object {
+ return &GlViewportIndexedfvOES{}
+}
+func (*binaryClassGlViewportIndexedfvOES) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlViewportIndexedfvOES(d, obj.(*GlViewportIndexedfvOES))
+}
+func (c *binaryClassGlViewportIndexedfvOES) Schema() *binary.Entity {
+ return &entities[ixǁGlViewportIndexedfvOES]
+}
+
+type binaryClassGlViewportSwizzleNV struct{}
+
+func (*GlViewportSwizzleNV) Class() binary.Class {
+ return (*binaryClassGlViewportSwizzleNV)(nil)
+}
+func doEncodeGlViewportSwizzleNV(e binary.Encoder, o *GlViewportSwizzleNV) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.Index))
+ e.Uint32(uint32(o.Swizzlex))
+ e.Uint32(uint32(o.Swizzley))
+ e.Uint32(uint32(o.Swizzlez))
+ e.Uint32(uint32(o.Swizzlew))
+}
+func doDecodeGlViewportSwizzleNV(d binary.Decoder, o *GlViewportSwizzleNV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Index = GLuint(d.Uint32())
+ o.Swizzlex = GLenum(d.Uint32())
+ o.Swizzley = GLenum(d.Uint32())
+ o.Swizzlez = GLenum(d.Uint32())
+ o.Swizzlew = GLenum(d.Uint32())
+}
+func doDecodeRawGlViewportSwizzleNV(d binary.Decoder, o *GlViewportSwizzleNV) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Index = GLuint(d.Uint32())
+ o.Swizzlex = GLenum(d.Uint32())
+ o.Swizzley = GLenum(d.Uint32())
+ o.Swizzlez = GLenum(d.Uint32())
+ o.Swizzlew = GLenum(d.Uint32())
+}
+func (*binaryClassGlViewportSwizzleNV) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlViewportSwizzleNV(e, obj.(*GlViewportSwizzleNV))
+}
+func (*binaryClassGlViewportSwizzleNV) New() binary.Object {
+ return &GlViewportSwizzleNV{}
+}
+func (*binaryClassGlViewportSwizzleNV) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlViewportSwizzleNV(d, obj.(*GlViewportSwizzleNV))
+}
+func (c *binaryClassGlViewportSwizzleNV) Schema() *binary.Entity {
+ return &entities[ixǁGlViewportSwizzleNV]
+}
+
type binaryClassGlWaitSync struct{}
func (*GlWaitSync) Class() binary.Class {
@@ -63300,6 +67130,58 @@
return &entities[ixǁGlWeightPointerOESBounds]
}
+type binaryClassGlWindowRectanglesEXT struct{}
+
+func (*GlWindowRectanglesEXT) Class() binary.Class {
+ return (*binaryClassGlWindowRectanglesEXT)(nil)
+}
+func doEncodeGlWindowRectanglesEXT(e binary.Encoder, o *GlWindowRectanglesEXT) {
+ e.Uint32(uint32(len(o.extras)))
+ for i := range o.extras {
+ curr := &o.extras[i]
+ e.Object(*curr)
+ }
+ e.Uint32(uint32(o.Mode))
+ e.Int32(int32(o.Count))
+ e.Simple(&o.Box)
+}
+func doDecodeGlWindowRectanglesEXT(d binary.Decoder, o *GlWindowRectanglesEXT) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Mode = GLenum(d.Uint32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.Box)
+}
+func doDecodeRawGlWindowRectanglesEXT(d binary.Decoder, o *GlWindowRectanglesEXT) {
+ if count := d.Count(); count > 0 {
+ o.extras = make(atom.Extras, count)
+ for i := range o.extras {
+ curr := &o.extras[i]
+ *curr = atom.ExtraCast(d.Object())
+ }
+ }
+ o.Mode = GLenum(d.Uint32())
+ o.Count = GLsizei(d.Int32())
+ d.Simple(&o.Box)
+}
+func (*binaryClassGlWindowRectanglesEXT) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeGlWindowRectanglesEXT(e, obj.(*GlWindowRectanglesEXT))
+}
+func (*binaryClassGlWindowRectanglesEXT) New() binary.Object {
+ return &GlWindowRectanglesEXT{}
+}
+func (*binaryClassGlWindowRectanglesEXT) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeGlWindowRectanglesEXT(d, obj.(*GlWindowRectanglesEXT))
+}
+func (c *binaryClassGlWindowRectanglesEXT) Schema() *binary.Entity {
+ return &entities[ixǁGlWindowRectanglesEXT]
+}
+
type binaryClassGlXCreateContext struct{}
func (*GlXCreateContext) Class() binary.Class {
@@ -65395,6 +69277,16 @@
e.Object(nil)
}
}
+ e.Uint32(uint32(len(o.EGLImages)))
+ for _, k := range (o.EGLImages).KeysSorted() {
+ v := (o.EGLImages)[k]
+ e.Simple(&k)
+ if v != nil {
+ e.Object(v)
+ } else {
+ e.Object(nil)
+ }
+ }
e.Uint32(uint32(o.NextContextID))
e.Uint64(uint64(o.CurrentThread))
e.Uint32(uint32(len(o.Contexts)))
@@ -65454,6 +69346,21 @@
m[k] = v
}
}
+ if count := d.Count(); count > 0 {
+ o.EGLImages = make(EGLImageKHRːAndroidNativeBufferExtraʳᵐ, count)
+ m := o.EGLImages
+ for i := uint32(0); i < count; i++ {
+ var k EGLImageKHR
+ var v *AndroidNativeBufferExtra
+ d.Simple(&k)
+ if obj := d.Object(); obj != nil {
+ v = obj.(*AndroidNativeBufferExtra)
+ } else {
+ v = nil
+ }
+ m[k] = v
+ }
+ }
o.NextContextID = ContextID(d.Uint32())
o.CurrentThread = ThreadID(d.Uint64())
if count := d.Count(); count > 0 {
@@ -65533,6 +69440,21 @@
m[k] = v
}
}
+ if count := d.Count(); count > 0 {
+ o.EGLImages = make(EGLImageKHRːAndroidNativeBufferExtraʳᵐ, count)
+ m := o.EGLImages
+ for i := uint32(0); i < count; i++ {
+ var k EGLImageKHR
+ var v *AndroidNativeBufferExtra
+ d.Simple(&k)
+ if obj := d.Object(); obj != nil {
+ v = obj.(*AndroidNativeBufferExtra)
+ } else {
+ v = nil
+ }
+ m[k] = v
+ }
+ }
o.NextContextID = ContextID(d.Uint32())
o.CurrentThread = ThreadID(d.Uint64())
if count := d.Count(); count > 0 {
diff --git a/gapid/gfxapi/gles/globals_snippets.base64 b/gapid/gfxapi/gles/globals_snippets.base64
index 9ccb08c..3cb2834 100644
--- a/gapid/gfxapi/gles/globals_snippets.base64
+++ b/gapid/gfxapi/gles/globals_snippets.base64
@@ -1 +1 @@
-AwhzbmlwcGV0cwZMYWJlbHMAAgMGsAMFCHNuaXBwZXRzCHBhcnRQYXRoAAIDUAUHCHNuaXBwZXRzCWZpZWxkUGF0aAACA7AHBAkGCwkIc25pcHBldHMMcmVsYXRpdmVQYXRoAAGwBVN0YXRlCENvbnRleHRzAg1BY3RpdmVRdWVyaWVzAAQVR0xfQU5ZX1NBTVBMRVNfUEFTU0VEIkdMX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkUoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1BSSU1JVElWRVNfV1JJVFRFThdHTF9QUklNSVRJVkVTX0dFTkVSQVRFRAINBg8EEQYTCAVTdGF0ZQhDb250ZXh0cwIRQWN0aXZlVGV4dHVyZVVuaXQgC0dMX1RFWFRVUkUwC0dMX1RFWFRVUkUxDEdMX1RFWFRVUkUxMAxHTF9URVhUVVJFMTEMR0xfVEVYVFVSRTEyDEdMX1RFWFRVUkUxMwxHTF9URVhUVVJFMTQMR0xfVEVYVFVSRTE1DEdMX1RFWFRVUkUxNgxHTF9URVhUVVJFMTcMR0xfVEVYVFVSRTE4DEdMX1RFWFRVUkUxOQtHTF9URVhUVVJFMgxHTF9URVhUVVJFMjAMR0xfVEVYVFVSRTIxDEdMX1RFWFRVUkUyMgxHTF9URVhUVVJFMjMMR0xfVEVYVFVSRTI0DEdMX1RFWFRVUkUyNQxHTF9URVhUVVJFMjYMR0xfVEVYVFVSRTI3DEdMX1RFWFRVUkUyOAxHTF9URVhUVVJFMjkLR0xfVEVYVFVSRTMMR0xfVEVYVFVSRTMwDEdMX1RFWFRVUkUzMQtHTF9URVhUVVJFNAtHTF9URVhUVVJFNQtHTF9URVhUVVJFNgtHTF9URVhUVVJFNwtHTF9URVhUVVJFOAtHTF9URVhUVVJFOQIVBBcGGQQbBh0IBVN0YXRlCENvbnRleHRzAhFCb3VuZEZyYW1lYnVmZmVycwADE0dMX0RSQVdfRlJBTUVCVUZGRVITR0xfUkVBRF9GUkFNRUJVRkZFUg5HTF9GUkFNRUJVRkZFUgIfBCEGIwQlBicIBVN0YXRlCENvbnRleHRzAhJCb3VuZFJlbmRlcmJ1ZmZlcnMAAQ9HTF9SRU5ERVJCVUZGRVICKQYrBi0ELwYxCAVTdGF0ZQhDb250ZXh0cwIFRGVidWcGT3V0cHV0AghHTF9GQUxTRQdHTF9UUlVFAjMGNQY3BDkGOwgFU3RhdGUIQ29udGV4dHMCBURlYnVnEU91dHB1dFN5bmNocm9ub3VzAghHTF9GQUxTRQdHTF9UUlVFAj0GPwRBBkMGRQRHBkkIBVN0YXRlCENvbnRleHRzAhJGcmFnbWVudE9wZXJhdGlvbnMFQmxlbmQCCERzdEFscGhhDxFHTF9DT05TVEFOVF9BTFBIQRFHTF9DT05TVEFOVF9DT0xPUgxHTF9EU1RfQUxQSEEMR0xfRFNUX0NPTE9SBkdMX09ORRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEbR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SFkdMX09ORV9NSU5VU19EU1RfQUxQSEEWR0xfT05FX01JTlVTX0RTVF9DT0xPUhZHTF9PTkVfTUlOVVNfU1JDX0FMUEhBFkdMX09ORV9NSU5VU19TUkNfQ09MT1IMR0xfU1JDX0FMUEhBFUdMX1NSQ19BTFBIQV9TQVRVUkFURQxHTF9TUkNfQ09MT1IHR0xfWkVSTwJLBk0ETwZRBlMEVQZXCAVTdGF0ZQhDb250ZXh0cwISRnJhZ21lbnRPcGVyYXRpb25zBUJsZW5kAgZEc3RSZ2IPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPAlkGWwRdBl8GYQRjBmUIBVN0YXRlCENvbnRleHRzAhJGcmFnbWVudE9wZXJhdGlvbnMFQmxlbmQCB0VuYWJsZWQCCEdMX0ZBTFNFB0dMX1RSVUUCZwZpBGsGbQZvBHEGcwgFU3RhdGUIQ29udGV4dHMCEkZyYWdtZW50T3BlcmF0aW9ucwVCbGVuZAINRXF1YXRpb25BbHBoYQULR0xfRlVOQ19BREQYR0xfRlVOQ19SRVZFUlNFX1NVQlRSQUNUEEdMX0ZVTkNfU1VCVFJBQ1QGR0xfTUFYBkdMX01JTgJ1BncEeQZ7Bn0EfwaAgQgFU3RhdGUIQ29udGV4dHMCEkZyYWdtZW50T3BlcmF0aW9ucwVCbGVuZAILRXF1YXRpb25SZ2IFC0dMX0ZVTkNfQUREGEdMX0ZVTkNfUkVWRVJTRV9TVUJUUkFDVBBHTF9GVU5DX1NVQlRSQUNUBkdMX01BWAZHTF9NSU4CgIMGgIUEgIcGgIkGgIsEgI0GgI8IBVN0YXRlCENvbnRleHRzAhJGcmFnbWVudE9wZXJhdGlvbnMFQmxlbmQCCFNyY0FscGhhDxFHTF9DT05TVEFOVF9BTFBIQRFHTF9DT05TVEFOVF9DT0xPUgxHTF9EU1RfQUxQSEEMR0xfRFNUX0NPTE9SBkdMX09ORRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEbR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SFkdMX09ORV9NSU5VU19EU1RfQUxQSEEWR0xfT05FX01JTlVTX0RTVF9DT0xPUhZHTF9PTkVfTUlOVVNfU1JDX0FMUEhBFkdMX09ORV9NSU5VU19TUkNfQ09MT1IMR0xfU1JDX0FMUEhBFUdMX1NSQ19BTFBIQV9TQVRVUkFURQxHTF9TUkNfQ09MT1IHR0xfWkVSTwKAkQaAkwSAlQaAlwaAmQSAmwaAnQgFU3RhdGUIQ29udGV4dHMCEkZyYWdtZW50T3BlcmF0aW9ucwVCbGVuZAIGU3JjUmdiDxFHTF9DT05TVEFOVF9BTFBIQRFHTF9DT05TVEFOVF9DT0xPUgxHTF9EU1RfQUxQSEEMR0xfRFNUX0NPTE9SBkdMX09ORRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEbR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SFkdMX09ORV9NSU5VU19EU1RfQUxQSEEWR0xfT05FX01JTlVTX0RTVF9DT0xPUhZHTF9PTkVfTUlOVVNfU1JDX0FMUEhBFkdMX09ORV9NSU5VU19TUkNfQ09MT1IMR0xfU1JDX0FMUEhBFUdMX1NSQ19BTFBIQV9TQVRVUkFURQxHTF9TUkNfQ09MT1IHR0xfWkVSTwKAnwaAoQaAowaApQSApwaAqQgFU3RhdGUIQ29udGV4dHMCEkZyYWdtZW50T3BlcmF0aW9ucwVEZXB0aARGdW5jCAlHTF9BTFdBWVMIR0xfRVFVQUwJR0xfR0VRVUFMCkdMX0dSRUFURVIJR0xfTEVRVUFMB0dMX0xFU1MIR0xfTkVWRVILR0xfTk9URVFVQUwCgKsGgK0GgK8GgLEEgLMGgLUIBVN0YXRlCENvbnRleHRzAhJGcmFnbWVudE9wZXJhdGlvbnMFRGVwdGgEVGVzdAIIR0xfRkFMU0UHR0xfVFJVRQKAtwaAuQaAuwSAvQaAvwgFU3RhdGUIQ29udGV4dHMCEkZyYWdtZW50T3BlcmF0aW9ucwZEaXRoZXICCEdMX0ZBTFNFB0dMX1RSVUUCgMEGgMMGgMUEgMcGgMkIBVN0YXRlCENvbnRleHRzAhJGcmFnbWVudE9wZXJhdGlvbnMPRnJhbWVidWZmZXJTcmdiAghHTF9GQUxTRQdHTF9UUlVFAoDLBoDNBoDPBoDRBIDTBoDVCAVTdGF0ZQhDb250ZXh0cwISRnJhZ21lbnRPcGVyYXRpb25zB1NjaXNzb3IEVGVzdAIIR0xfRkFMU0UHR0xfVFJVRQKA1waA2QaA2waA3QSA3waA4QgFU3RhdGUIQ29udGV4dHMCEkZyYWdtZW50T3BlcmF0aW9ucwdTdGVuY2lsCEJhY2tGYWlsCAdHTF9ERUNSDEdMX0RFQ1JfV1JBUAdHTF9JTkNSDEdMX0lOQ1JfV1JBUAlHTF9JTlZFUlQHR0xfS0VFUApHTF9SRVBMQUNFB0dMX1pFUk8CgOMGgOUGgOcGgOkEgOsGgO0IBVN0YXRlCENvbnRleHRzAhJGcmFnbWVudE9wZXJhdGlvbnMHU3RlbmNpbAhCYWNrRnVuYwgJR0xfQUxXQVlTCEdMX0VRVUFMCUdMX0dFUVVBTApHTF9HUkVBVEVSCUdMX0xFUVVBTAdHTF9MRVNTCEdMX05FVkVSC0dMX05PVEVRVUFMAoDvBoDxBoDzBoD1BID3BoD5CAVTdGF0ZQhDb250ZXh0cwISRnJhZ21lbnRPcGVyYXRpb25zB1N0ZW5jaWwRQmFja1Bhc3NEZXB0aEZhaWwIB0dMX0RFQ1IMR0xfREVDUl9XUkFQB0dMX0lOQ1IMR0xfSU5DUl9XUkFQCUdMX0lOVkVSVAdHTF9LRUVQCkdMX1JFUExBQ0UHR0xfWkVSTwKA+waA/QaA/waBAQSBAwaBBQgFU3RhdGUIQ29udGV4dHMCEkZyYWdtZW50T3BlcmF0aW9ucwdTdGVuY2lsEUJhY2tQYXNzRGVwdGhQYXNzCAdHTF9ERUNSDEdMX0RFQ1JfV1JBUAdHTF9JTkNSDEdMX0lOQ1JfV1JBUAlHTF9JTlZFUlQHR0xfS0VFUApHTF9SRVBMQUNFB0dMX1pFUk8CgQcGgQkGgQsGgQ0EgQ8GgREIBVN0YXRlCENvbnRleHRzAhJGcmFnbWVudE9wZXJhdGlvbnMHU3RlbmNpbARGYWlsCAdHTF9ERUNSDEdMX0RFQ1JfV1JBUAdHTF9JTkNSDEdMX0lOQ1JfV1JBUAlHTF9JTlZFUlQHR0xfS0VFUApHTF9SRVBMQUNFB0dMX1pFUk8CgRMGgRUGgRcGgRkEgRsGgR0IBVN0YXRlCENvbnRleHRzAhJGcmFnbWVudE9wZXJhdGlvbnMHU3RlbmNpbARGdW5jCAlHTF9BTFdBWVMIR0xfRVFVQUwJR0xfR0VRVUFMCkdMX0dSRUFURVIJR0xfTEVRVUFMB0dMX0xFU1MIR0xfTkVWRVILR0xfTk9URVFVQUwCgR8GgSEGgSMGgSUEgScGgSkIBVN0YXRlCENvbnRleHRzAhJGcmFnbWVudE9wZXJhdGlvbnMHU3RlbmNpbA1QYXNzRGVwdGhGYWlsCAdHTF9ERUNSDEdMX0RFQ1JfV1JBUAdHTF9JTkNSDEdMX0lOQ1JfV1JBUAlHTF9JTlZFUlQHR0xfS0VFUApHTF9SRVBMQUNFB0dMX1pFUk8CgSsGgS0GgS8GgTEEgTMGgTUIBVN0YXRlCENvbnRleHRzAhJGcmFnbWVudE9wZXJhdGlvbnMHU3RlbmNpbA1QYXNzRGVwdGhQYXNzCAdHTF9ERUNSDEdMX0RFQ1JfV1JBUAdHTF9JTkNSDEdMX0lOQ1JfV1JBUAlHTF9JTlZFUlQHR0xfS0VFUApHTF9SRVBMQUNFB0dMX1pFUk8CgTcGgTkGgTsGgT0EgT8GgUEIBVN0YXRlCENvbnRleHRzAhJGcmFnbWVudE9wZXJhdGlvbnMHU3RlbmNpbARUZXN0AghHTF9GQUxTRQdHTF9UUlVFAoFDBIFFBIFHBoFJBoFLBIFNBoFPCAVTdGF0ZQhDb250ZXh0cwILRnJhbWVidWZmZXIOQ29sb3JXcml0ZW1hc2sCAgEHR0xfVFJVRQKBUQaBUwSBVQaBVwSBWQaBWwgFU3RhdGUIQ29udGV4dHMCCkltYWdlVW5pdHMCBkFjY2VzcwMMR0xfUkVBRF9PTkxZDUdMX1JFQURfV1JJVEUNR0xfV1JJVEVfT05MWQKBXQaBXwSBYQaBYwSBZQaBZwgFU3RhdGUIQ29udGV4dHMCCkltYWdlVW5pdHMCBkZvcm1hdA0HR0xfUjMyRgdHTF9SMzJJCEdMX1IzMlVJCkdMX1JHQkExNkYKR0xfUkdCQTE2SQtHTF9SR0JBMTZVSQpHTF9SR0JBMzJGCkdMX1JHQkEzMkkLR0xfUkdCQTMyVUkIR0xfUkdCQTgJR0xfUkdCQThJCkdMX1JHQkE4VUkOR0xfUkdCQThfU05PUk0CgWkGgWsEgW0GgW8GgXEEgXMGgXUIBVN0YXRlCENvbnRleHRzAglJbnN0YW5jZXMHQnVmZmVycwILQWNjZXNzRmxhZ3MDGUdMX01BUF9GTFVTSF9FWFBMSUNJVF9CSVQPR0xfTUFQX1JFQURfQklUEEdMX01BUF9XUklURV9CSVQLCHNuaXBwZXRzDE9ic2VydmF0aW9ucwACAwZQgXcGgXkEgXsGgX0GgX8EgYEGgYMIBVN0YXRlCENvbnRleHRzAglJbnN0YW5jZXMHQnVmZmVycwIERGF0YQICAAqBhQSBhwaBiQSBiwaBjQaBjwSBkQaBkwgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcwdCdWZmZXJzAgpNYXBQb2ludGVyBAICAAKBlQaBlwSBmQaBmwaBnQSBnwaBoQgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcwdCdWZmZXJzAgZNYXBwZWQCCEdMX0ZBTFNFB0dMX1RSVUUCgaMGgaUEgacGgakGgasEga0Gga8IBVN0YXRlCENvbnRleHRzAglJbnN0YW5jZXMHQnVmZmVycwIFVXNhZ2UJD0dMX0RZTkFNSUNfRFJBVw5HTF9TVEFUSUNfRFJBVw5HTF9TVFJFQU1fRFJBVw9HTF9EWU5BTUlDX0NPUFkPR0xfRFlOQU1JQ19SRUFEDkdMX1NUQVRJQ19DT1BZDkdMX1NUQVRJQ19SRUFEDkdMX1NUUkVBTV9DT1BZDkdMX1NUUkVBTV9SRUFEAoGxBoGzBoG1BoG3BoG5BIG7BoG9CAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzD0RlZmF1bHRUZXh0dXJlcwlUZXh0dXJlMmQES2luZAENR0xfVEVYVFVSRV8yRAKBvwaBwQaBwwaBxQaBxwSByQaBywgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcw9EZWZhdWx0VGV4dHVyZXMOVGV4dHVyZTJkQXJyYXkES2luZAETR0xfVEVYVFVSRV8yRF9BUlJBWQKBzQaBzwaB0QaB0waB1QSB1waB2QgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcw9EZWZhdWx0VGV4dHVyZXMUVGV4dHVyZTJkTXVsdGlzYW1wbGUES2luZAEZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRQKB2waB3QaB3waB4QaB4wSB5QaB5wgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcw9EZWZhdWx0VGV4dHVyZXMZVGV4dHVyZTJkTXVsdGlzYW1wbGVBcnJheQRLaW5kAR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZAoHpBoHrBoHtBoHvBoHxBIHzBoH1CAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzD0RlZmF1bHRUZXh0dXJlcwlUZXh0dXJlM2QES2luZAENR0xfVEVYVFVSRV8zRAKB9waB+QaB+waB/QaB/wSCAQaCAwgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcw9EZWZhdWx0VGV4dHVyZXMNVGV4dHVyZUJ1ZmZlcgRLaW5kARFHTF9URVhUVVJFX0JVRkZFUgKCBQaCBwaCCQaCCwaCDQSCDwaCEQgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcw9EZWZhdWx0VGV4dHVyZXMOVGV4dHVyZUN1YmVNYXAES2luZAETR0xfVEVYVFVSRV9DVUJFX01BUAKCEwaCFQaCFwaCGQaCGwSCHQaCHwgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcw9EZWZhdWx0VGV4dHVyZXMTVGV4dHVyZUN1YmVNYXBBcnJheQRLaW5kARlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZAoIhBoIjBoIlBoInBoIpBIIrBoItCAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzD0RlZmF1bHRUZXh0dXJlcxJUZXh0dXJlRXh0ZXJuYWxPZXMES2luZAEXR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMCgi8GgjEEgjMGgjUEgjcGgjkGgjsEgj0Ggj8IBVN0YXRlCENvbnRleHRzAglJbnN0YW5jZXMMRnJhbWVidWZmZXJzAgtBdHRhY2htZW50cwIKT2JqZWN0VHlwZQMPR0xfUkVOREVSQlVGRkVSCkdMX1RFWFRVUkUHR0xfTk9ORQKCQQaCQwSCRQaCRwSCSQaCSwaCTQSCTwaCUQgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcwxGcmFtZWJ1ZmZlcnMCC0F0dGFjaG1lbnRzAhJUZXh0dXJlQ3ViZU1hcEZhY2UBB0dMX05PTkUCglMEglUGglcEglkGglsGgl0Egl8GgmEIBVN0YXRlCENvbnRleHRzAglJbnN0YW5jZXMMRnJhbWVidWZmZXJzAgtBdHRhY2htZW50cwAWFEdMX0NPTE9SX0FUVEFDSE1FTlQwE0dMX0RFUFRIX0FUVEFDSE1FTlQVR0xfU1RFTkNJTF9BVFRBQ0hNRU5UFEdMX0NPTE9SX0FUVEFDSE1FTlQxFUdMX0NPTE9SX0FUVEFDSE1FTlQxMBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTEVR0xfQ09MT1JfQVRUQUNITUVOVDEyFUdMX0NPTE9SX0FUVEFDSE1FTlQxMxVHTF9DT0xPUl9BVFRBQ0hNRU5UMTQVR0xfQ09MT1JfQVRUQUNITUVOVDE1FEdMX0NPTE9SX0FUVEFDSE1FTlQyFEdMX0NPTE9SX0FUVEFDSE1FTlQzFEdMX0NPTE9SX0FUVEFDSE1FTlQ0FEdMX0NPTE9SX0FUVEFDSE1FTlQ1FEdMX0NPTE9SX0FUVEFDSE1FTlQ2FEdMX0NPTE9SX0FUVEFDSE1FTlQ3FEdMX0NPTE9SX0FUVEFDSE1FTlQ4FEdMX0NPTE9SX0FUVEFDSE1FTlQ5G0dMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVAdHTF9CQUNLCEdMX0RFUFRICkdMX1NURU5DSUwCgmMEgmUGgmcEgmkGgmsGgm0Egm8GgnEIBVN0YXRlCENvbnRleHRzAglJbnN0YW5jZXMMRnJhbWVidWZmZXJzAgpEcmF3QnVmZmVyAgEHR0xfTk9ORQKCcwaCdQSCdwaCeQaCewSCfQaCfwgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcwxGcmFtZWJ1ZmZlcnMCClJlYWRCdWZmZXISB0dMX0JBQ0sUR0xfQ09MT1JfQVRUQUNITUVOVDAUR0xfQ09MT1JfQVRUQUNITUVOVDEVR0xfQ09MT1JfQVRUQUNITUVOVDEwFUdMX0NPTE9SX0FUVEFDSE1FTlQxMRVHTF9DT0xPUl9BVFRBQ0hNRU5UMTIVR0xfQ09MT1JfQVRUQUNITUVOVDEzFUdMX0NPTE9SX0FUVEFDSE1FTlQxNBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTUUR0xfQ09MT1JfQVRUQUNITUVOVDIUR0xfQ09MT1JfQVRUQUNITUVOVDMUR0xfQ09MT1JfQVRUQUNITUVOVDQUR0xfQ09MT1JfQVRUQUNITUVOVDUUR0xfQ09MT1JfQVRUQUNITUVOVDYUR0xfQ09MT1JfQVRUQUNITUVOVDcUR0xfQ09MT1JfQVRUQUNITUVOVDgUR0xfQ09MT1JfQVRUQUNITUVOVDkHR0xfTk9ORQKCgQaCgwSChQaChwSCiQaCiwaCjQSCjwaCkQgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcwhQcm9ncmFtcwIIVW5pZm9ybXMCBFR5cGUVCEdMX0ZMT0FUBkdMX0lOVA9HTF9VTlNJR05FRF9JTlQNR0xfRkxPQVRfVkVDMgtHTF9JTlRfVkVDMhRHTF9VTlNJR05FRF9JTlRfVkVDMg1HTF9GTE9BVF9WRUMzC0dMX0lOVF9WRUMzFEdMX1VOU0lHTkVEX0lOVF9WRUMzDUdMX0ZMT0FUX1ZFQzQLR0xfSU5UX1ZFQzQUR0xfVU5TSUdORURfSU5UX1ZFQzQNR0xfRkxPQVRfTUFUMg9HTF9GTE9BVF9NQVQyeDMPR0xfRkxPQVRfTUFUMng0DUdMX0ZMT0FUX01BVDMPR0xfRkxPQVRfTUFUM3gyD0dMX0ZMT0FUX01BVDN4NA1HTF9GTE9BVF9NQVQ0D0dMX0ZMT0FUX01BVDR4Mg9HTF9GTE9BVF9NQVQ0eDMKgpMGgpUEgpcGgpkEgpsGgp0Ggp8EgqEGgqMIBVN0YXRlCENvbnRleHRzAglJbnN0YW5jZXMIUHJvZ3JhbXMCCFVuaWZvcm1zAgVWYWx1ZQICAAKCpQaCpwSCqQaCqwaCrQSCrwaCsQgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcw1SZW5kZXJidWZmZXJzAg5JbnRlcm5hbEZvcm1hdCUUR0xfREVQVEhfQ09NUE9ORU5UMTYJR0xfUkdCNTY1CkdMX1JHQjVfQTEIR0xfUkdCQTQRR0xfU1RFTkNJTF9JTkRFWDgTR0xfREVQVEgyNF9TVEVOQ0lMOBRHTF9ERVBUSDMyRl9TVEVOQ0lMOBRHTF9ERVBUSF9DT01QT05FTlQyNBVHTF9ERVBUSF9DT01QT05FTlQzMkYHR0xfUjE2SQhHTF9SMTZVSQdHTF9SMzJJCEdMX1IzMlVJBUdMX1I4BkdMX1I4SQdHTF9SOFVJCEdMX1JHMTZJCUdMX1JHMTZVSQhHTF9SRzMySQlHTF9SRzMyVUkGR0xfUkc4B0dMX1JHOEkIR0xfUkc4VUkLR0xfUkdCMTBfQTINR0xfUkdCMTBfQTJVSQdHTF9SR0I4CkdMX1JHQkExNkkLR0xfUkdCQTE2VUkKR0xfUkdCQTMySQtHTF9SR0JBMzJVSQhHTF9SR0JBOAlHTF9SR0JBOEkKR0xfUkdCQThVSQ9HTF9TUkdCOF9BTFBIQTgGR0xfUjE2B0dMX1JHMTYJR0xfUkdCQTE2AoKzBoK1BIK3BoK5BoK7BIK9BoK/CAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzB1NoYWRlcnMCClNoYWRlclR5cGUGEkdMX0ZSQUdNRU5UX1NIQURFUhBHTF9WRVJURVhfU0hBREVSEUdMX0NPTVBVVEVfU0hBREVSEkdMX0dFT01FVFJZX1NIQURFUhZHTF9URVNTX0NPTlRST0xfU0hBREVSGUdMX1RFU1NfRVZBTFVBVElPTl9TSEFERVICgsEGgsMEgsUGgscGgskEgssGgs0IBVN0YXRlCENvbnRleHRzAglJbnN0YW5jZXMHU2hhZGVycwIEVHlwZQYSR0xfRlJBR01FTlRfU0hBREVSEEdMX1ZFUlRFWF9TSEFERVIRR0xfQ09NUFVURV9TSEFERVISR0xfR0VPTUVUUllfU0hBREVSFkdMX1RFU1NfQ09OVFJPTF9TSEFERVIZR0xfVEVTU19FVkFMVUFUSU9OX1NIQURFUgKCzwaC0QSC0waC1QaC1wSC2QaC2wgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcwhUZXh0dXJlcwIES2luZAkXR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMNR0xfVEVYVFVSRV8yRBNHTF9URVhUVVJFXzJEX0FSUkFZGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWQ1HTF9URVhUVVJFXzNEEUdMX1RFWFRVUkVfQlVGRkVSE0dMX1RFWFRVUkVfQ1VCRV9NQVAZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWQKC3QaC3wSC4QaC4waC5QSC5waC6QgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcwhUZXh0dXJlcwIJTWluRmlsdGVyAQlHTF9MSU5FQVICgusGgu0Egu8GgvEGgvMEgvUGgvcIBVN0YXRlCENvbnRleHRzAglJbnN0YW5jZXMIVGV4dHVyZXMCBVdyYXBTARBHTF9DTEFNUF9UT19FREdFAoL5BoL7BIL9BoL/BoMBBIMDBoMFCAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzCFRleHR1cmVzAgVXcmFwVAEQR0xfQ0xBTVBfVE9fRURHRQKDBwaDCQSDCwaDDQSDDwaDEQaDEwSDFQaDFwgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcwxWZXJ0ZXhBcnJheXMCFVZlcnRleEF0dHJpYnV0ZUFycmF5cwIHRW5hYmxlZAIIR0xfRkFMU0UHR0xfVFJVRQqDGQSDGwaDHQSDHwaDIQSDIwaDJQaDJwSDKQaDKwgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcwxWZXJ0ZXhBcnJheXMCFVZlcnRleEF0dHJpYnV0ZUFycmF5cwIHUG9pbnRlcgQBAAKDLQaDLwSDMQaDMwSDNQaDNwaDOQSDOwaDPQgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcwxWZXJ0ZXhBcnJheXMCFVZlcnRleEF0dHJpYnV0ZUFycmF5cwIEVHlwZQwHR0xfQllURRBHTF9VTlNJR05FRF9CWVRFCEdMX1NIT1JUEUdMX1VOU0lHTkVEX1NIT1JUDUdMX0hBTEZfRkxPQVQRR0xfSEFMRl9GTE9BVF9PRVMGR0xfSU5UD0dMX1VOU0lHTkVEX0lOVAhHTF9GTE9BVAhHTF9GSVhFRBVHTF9JTlRfMl8xMF8xMF8xMF9SRVYeR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWAoM/BoNBBoNDBINFBoNHCAVTdGF0ZQhDb250ZXh0cwINTWlzY2VsbGFuZW91cxxGcmFnbWVudFNoYWRlckRlcml2YXRpdmVIaW50AwxHTF9ET05UX0NBUkUKR0xfRkFTVEVTVAlHTF9OSUNFU1QCg0kGg0sGg00Eg08Gg1EIBVN0YXRlCENvbnRleHRzAg1NaXNjZWxsYW5lb3VzEkdlbmVyYXRlTWlwbWFwSGludAMMR0xfRE9OVF9DQVJFCkdMX0ZBU1RFU1QJR0xfTklDRVNUAoNTBoNVBoNXBINZBoNbCAVTdGF0ZQhDb250ZXh0cwINTWlzY2VsbGFuZW91cxpQcmltaXRpdmVSZXN0YXJ0Rml4ZWRJbmRleAIIR0xfRkFMU0UHR0xfVFJVRQKDXQaDXwaDYQSDYwaDZQgFU3RhdGUIQ29udGV4dHMCDVJhc3Rlcml6YXRpb24IQ3VsbEZhY2UCCEdMX0ZBTFNFB0dMX1RSVUUCg2cGg2kGg2sEg20Gg28IBVN0YXRlCENvbnRleHRzAg1SYXN0ZXJpemF0aW9uDEN1bGxGYWNlTW9kZQMHR0xfQkFDSwhHTF9GUk9OVBFHTF9GUk9OVF9BTkRfQkFDSwKDcQaDcwaDdQSDdwaDeQgFU3RhdGUIQ29udGV4dHMCDVJhc3Rlcml6YXRpb24JRnJvbnRGYWNlAgZHTF9DQ1cFR0xfQ1cCg3sGg30Gg38Eg4EGg4MIBVN0YXRlCENvbnRleHRzAg1SYXN0ZXJpemF0aW9uEVBvbHlnb25PZmZzZXRGaWxsAghHTF9GQUxTRQdHTF9UUlVFAoOFBoOHBoOJBIOLBoONCAVTdGF0ZQhDb250ZXh0cwINUmFzdGVyaXphdGlvbhFSYXN0ZXJpemVyRGlzY2FyZAIIR0xfRkFMU0UHR0xfVFJVRQKDjwaDkQaDkwSDlQaDlwgFU3RhdGUIQ29udGV4dHMCDVJhc3Rlcml6YXRpb24VU2FtcGxlQWxwaGFUb0NvdmVyYWdlAghHTF9GQUxTRQdHTF9UUlVFAoOZBoObBoOdBIOfBoOhCAVTdGF0ZQhDb250ZXh0cwINUmFzdGVyaXphdGlvbg5TYW1wbGVDb3ZlcmFnZQIIR0xfRkFMU0UHR0xfVFJVRQKDowaDpQaDpwSDqQaDqwgFU3RhdGUIQ29udGV4dHMCDVJhc3Rlcml6YXRpb24KU2FtcGxlTWFzawIIR0xfRkFMU0UHR0xfVFJVRQKDrQSDrwaDsQSDswaDtQgFU3RhdGUIQ29udGV4dHMCDFRleHR1cmVVbml0cwAgC0dMX1RFWFRVUkUwC0dMX1RFWFRVUkUxDEdMX1RFWFRVUkUxMAxHTF9URVhUVVJFMTEMR0xfVEVYVFVSRTEyDEdMX1RFWFRVUkUxMwxHTF9URVhUVVJFMTQMR0xfVEVYVFVSRTE1DEdMX1RFWFRVUkUxNgxHTF9URVhUVVJFMTcMR0xfVEVYVFVSRTE4DEdMX1RFWFRVUkUxOQtHTF9URVhUVVJFMgxHTF9URVhUVVJFMjAMR0xfVEVYVFVSRTIxDEdMX1RFWFRVUkUyMgxHTF9URVhUVVJFMjMMR0xfVEVYVFVSRTI0DEdMX1RFWFRVUkUyNQxHTF9URVhUVVJFMjYMR0xfVEVYVFVSRTI3DEdMX1RFWFRVUkUyOAxHTF9URVhUVVJFMjkLR0xfVEVYVFVSRTMMR0xfVEVYVFVSRTMwDEdMX1RFWFRVUkUzMQtHTF9URVhUVVJFNAtHTF9URVhUVVJFNQtHTF9URVhUVVJFNgtHTF9URVhUVVJFNwtHTF9URVhUVVJFOAtHTF9URVhUVVJFOQKDtwSDuQaDuwSDvQaDvwgFU3RhdGULRUdMQ29udGV4dHMCEUJvdW5kRnJhbWVidWZmZXJzAAITR0xfRFJBV19GUkFNRUJVRkZFUhNHTF9SRUFEX0ZSQU1FQlVGRkVSAoPBBIPDBIPFBoPHBoPJBIPLBoPNCAVTdGF0ZQtFR0xDb250ZXh0cwILRnJhbWVidWZmZXIOQ29sb3JXcml0ZW1hc2sCAgEHR0xfVFJVRQKDzwaD0QaD0waD1QaD1wSD2QaD2wgFU3RhdGULRUdMQ29udGV4dHMCCUluc3RhbmNlcw9EZWZhdWx0VGV4dHVyZXMJVGV4dHVyZTJkBEtpbmQBDUdMX1RFWFRVUkVfMkQCg90Gg98Gg+EGg+MGg+UEg+cGg+kIBVN0YXRlC0VHTENvbnRleHRzAglJbnN0YW5jZXMPRGVmYXVsdFRleHR1cmVzDlRleHR1cmUyZEFycmF5BEtpbmQBE0dMX1RFWFRVUkVfMkRfQVJSQVkCg+sGg+0Gg+8Gg/EGg/MEg/UGg/cIBVN0YXRlC0VHTENvbnRleHRzAglJbnN0YW5jZXMPRGVmYXVsdFRleHR1cmVzFFRleHR1cmUyZE11bHRpc2FtcGxlBEtpbmQBGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUCg/kGg/sGg/0Gg/8GhAEEhAMGhAUIBVN0YXRlC0VHTENvbnRleHRzAglJbnN0YW5jZXMPRGVmYXVsdFRleHR1cmVzGVRleHR1cmUyZE11bHRpc2FtcGxlQXJyYXkES2luZAEfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWQKEBwaECQaECwaEDQaEDwSEEQaEEwgFU3RhdGULRUdMQ29udGV4dHMCCUluc3RhbmNlcw9EZWZhdWx0VGV4dHVyZXMJVGV4dHVyZTNkBEtpbmQBDUdMX1RFWFRVUkVfM0QChBUGhBcGhBkGhBsGhB0EhB8GhCEIBVN0YXRlC0VHTENvbnRleHRzAglJbnN0YW5jZXMPRGVmYXVsdFRleHR1cmVzDVRleHR1cmVCdWZmZXIES2luZAERR0xfVEVYVFVSRV9CVUZGRVIChCMGhCUGhCcGhCkGhCsEhC0GhC8IBVN0YXRlC0VHTENvbnRleHRzAglJbnN0YW5jZXMPRGVmYXVsdFRleHR1cmVzDlRleHR1cmVDdWJlTWFwBEtpbmQBE0dMX1RFWFRVUkVfQ1VCRV9NQVAChDEGhDMGhDUGhDcGhDkEhDsGhD0IBVN0YXRlC0VHTENvbnRleHRzAglJbnN0YW5jZXMPRGVmYXVsdFRleHR1cmVzE1RleHR1cmVDdWJlTWFwQXJyYXkES2luZAEZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWQKEPwaEQQaEQwaERQaERwSESQaESwgFU3RhdGULRUdMQ29udGV4dHMCCUluc3RhbmNlcw9EZWZhdWx0VGV4dHVyZXMSVGV4dHVyZUV4dGVybmFsT2VzBEtpbmQBF0dMX1RFWFRVUkVfRVhURVJOQUxfT0VTAoRNBoRPBIRRBoRTBIRVBoRXBoRZBIRbBoRdCAVTdGF0ZQtFR0xDb250ZXh0cwIJSW5zdGFuY2VzDEZyYW1lYnVmZmVycwILQXR0YWNobWVudHMCCk9iamVjdFR5cGUBD0dMX1JFTkRFUkJVRkZFUgKEXwaEYQSEYwaEZQSEZwaEaQaEawSEbQaEbwgFU3RhdGULRUdMQ29udGV4dHMCCUluc3RhbmNlcwxGcmFtZWJ1ZmZlcnMCC0F0dGFjaG1lbnRzAhJUZXh0dXJlQ3ViZU1hcEZhY2UBB0dMX05PTkUChHEEhHMGhHUEhHcGhHkGhHsEhH0GhH8IBVN0YXRlC0VHTENvbnRleHRzAglJbnN0YW5jZXMMRnJhbWVidWZmZXJzAgtBdHRhY2htZW50cwADFEdMX0NPTE9SX0FUVEFDSE1FTlQwE0dMX0RFUFRIX0FUVEFDSE1FTlQVR0xfU1RFTkNJTF9BVFRBQ0hNRU5UAoSBBoSDBISFBoSHBoSJBISLBoSNCAVTdGF0ZQtFR0xDb250ZXh0cwIJSW5zdGFuY2VzDEZyYW1lYnVmZmVycwIKUmVhZEJ1ZmZlcgEHR0xfQkFDSwKEjwSEkQaEkwSElQaElwgFU3RhdGULRUdMQ29udGV4dHMCDFRleHR1cmVVbml0cwABC0dMX1RFWFRVUkUw
\ No newline at end of file
+AwhzbmlwcGV0cwZMYWJlbHMAAgMGsAMFCHNuaXBwZXRzCHBhcnRQYXRoAAIDUAUHCHNuaXBwZXRzCWZpZWxkUGF0aAACA7AHBAkGCwkIc25pcHBldHMMcmVsYXRpdmVQYXRoAAGwBVN0YXRlCENvbnRleHRzAg1BY3RpdmVRdWVyaWVzAAUVR0xfQU5ZX1NBTVBMRVNfUEFTU0VEIkdMX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkUoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1BSSU1JVElWRVNfV1JJVFRFThdHTF9QUklNSVRJVkVTX0dFTkVSQVRFRBBHTF9USU1FU1RBTVBfRVhUAg0GDwQRBhMIBVN0YXRlCENvbnRleHRzAhFBY3RpdmVUZXh0dXJlVW5pdCALR0xfVEVYVFVSRTALR0xfVEVYVFVSRTEMR0xfVEVYVFVSRTEwDEdMX1RFWFRVUkUxMQxHTF9URVhUVVJFMTIMR0xfVEVYVFVSRTEzDEdMX1RFWFRVUkUxNAxHTF9URVhUVVJFMTUMR0xfVEVYVFVSRTE2DEdMX1RFWFRVUkUxNwxHTF9URVhUVVJFMTgMR0xfVEVYVFVSRTE5C0dMX1RFWFRVUkUyDEdMX1RFWFRVUkUyMAxHTF9URVhUVVJFMjEMR0xfVEVYVFVSRTIyDEdMX1RFWFRVUkUyMwxHTF9URVhUVVJFMjQMR0xfVEVYVFVSRTI1DEdMX1RFWFRVUkUyNgxHTF9URVhUVVJFMjcMR0xfVEVYVFVSRTI4DEdMX1RFWFRVUkUyOQtHTF9URVhUVVJFMwxHTF9URVhUVVJFMzAMR0xfVEVYVFVSRTMxC0dMX1RFWFRVUkU0C0dMX1RFWFRVUkU1C0dMX1RFWFRVUkU2C0dMX1RFWFRVUkU3C0dMX1RFWFRVUkU4C0dMX1RFWFRVUkU5AhUEFwYZBBsGHQgFU3RhdGUIQ29udGV4dHMCEUJvdW5kRnJhbWVidWZmZXJzAAMTR0xfRFJBV19GUkFNRUJVRkZFUhNHTF9SRUFEX0ZSQU1FQlVGRkVSDkdMX0ZSQU1FQlVGRkVSAh8EIQYjBCUGJwgFU3RhdGUIQ29udGV4dHMCEkJvdW5kUmVuZGVyYnVmZmVycwABD0dMX1JFTkRFUkJVRkZFUgIpBisGLQQvBjEIBVN0YXRlCENvbnRleHRzAgVEZWJ1ZwZPdXRwdXQCCEdMX0ZBTFNFB0dMX1RSVUUCMwY1BjcEOQY7CAVTdGF0ZQhDb250ZXh0cwIFRGVidWcRT3V0cHV0U3luY2hyb25vdXMCCEdMX0ZBTFNFB0dMX1RSVUUCPQY/BEEGQwZFBEcGSQgFU3RhdGUIQ29udGV4dHMCEkZyYWdtZW50T3BlcmF0aW9ucwVCbGVuZAIIRHN0QWxwaGEPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPAksGTQRPBlEGUwRVBlcIBVN0YXRlCENvbnRleHRzAhJGcmFnbWVudE9wZXJhdGlvbnMFQmxlbmQCBkRzdFJnYg8RR0xfQ09OU1RBTlRfQUxQSEERR0xfQ09OU1RBTlRfQ09MT1IMR0xfRFNUX0FMUEhBDEdMX0RTVF9DT0xPUgZHTF9PTkUbR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBG0dMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUhZHTF9PTkVfTUlOVVNfRFNUX0FMUEhBFkdMX09ORV9NSU5VU19EU1RfQ09MT1IWR0xfT05FX01JTlVTX1NSQ19BTFBIQRZHTF9PTkVfTUlOVVNfU1JDX0NPTE9SDEdMX1NSQ19BTFBIQRVHTF9TUkNfQUxQSEFfU0FUVVJBVEUMR0xfU1JDX0NPTE9SB0dMX1pFUk8CWQZbBF0GXwZhBGMGZQgFU3RhdGUIQ29udGV4dHMCEkZyYWdtZW50T3BlcmF0aW9ucwVCbGVuZAIHRW5hYmxlZAIIR0xfRkFMU0UHR0xfVFJVRQJnBmkEawZtBm8EcQZzCAVTdGF0ZQhDb250ZXh0cwISRnJhZ21lbnRPcGVyYXRpb25zBUJsZW5kAg1FcXVhdGlvbkFscGhhBQtHTF9GVU5DX0FERBhHTF9GVU5DX1JFVkVSU0VfU1VCVFJBQ1QQR0xfRlVOQ19TVUJUUkFDVAZHTF9NQVgGR0xfTUlOAnUGdwR5BnsGfQR/BoCBCAVTdGF0ZQhDb250ZXh0cwISRnJhZ21lbnRPcGVyYXRpb25zBUJsZW5kAgtFcXVhdGlvblJnYgULR0xfRlVOQ19BREQYR0xfRlVOQ19SRVZFUlNFX1NVQlRSQUNUEEdMX0ZVTkNfU1VCVFJBQ1QGR0xfTUFYBkdMX01JTgKAgwaAhQSAhwaAiQaAiwSAjQaAjwgFU3RhdGUIQ29udGV4dHMCEkZyYWdtZW50T3BlcmF0aW9ucwVCbGVuZAIIU3JjQWxwaGEPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPAoCRBoCTBICVBoCXBoCZBICbBoCdCAVTdGF0ZQhDb250ZXh0cwISRnJhZ21lbnRPcGVyYXRpb25zBUJsZW5kAgZTcmNSZ2IPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPAoCfBoChBoCjBoClBICnBoCpCAVTdGF0ZQhDb250ZXh0cwISRnJhZ21lbnRPcGVyYXRpb25zBURlcHRoBEZ1bmMICUdMX0FMV0FZUwhHTF9FUVVBTAlHTF9HRVFVQUwKR0xfR1JFQVRFUglHTF9MRVFVQUwHR0xfTEVTUwhHTF9ORVZFUgtHTF9OT1RFUVVBTAKAqwaArQaArwaAsQSAswaAtQgFU3RhdGUIQ29udGV4dHMCEkZyYWdtZW50T3BlcmF0aW9ucwVEZXB0aARUZXN0AghHTF9GQUxTRQdHTF9UUlVFAoC3BoC5BoC7BIC9BoC/CAVTdGF0ZQhDb250ZXh0cwISRnJhZ21lbnRPcGVyYXRpb25zBkRpdGhlcgIIR0xfRkFMU0UHR0xfVFJVRQKAwQaAwwaAxQSAxwaAyQgFU3RhdGUIQ29udGV4dHMCEkZyYWdtZW50T3BlcmF0aW9ucw9GcmFtZWJ1ZmZlclNyZ2ICCEdMX0ZBTFNFB0dMX1RSVUUCgMsGgM0GgM8GgNEEgNMGgNUIBVN0YXRlCENvbnRleHRzAhJGcmFnbWVudE9wZXJhdGlvbnMHU2Npc3NvcgRUZXN0AghHTF9GQUxTRQdHTF9UUlVFAoDXBoDZBoDbBoDdBIDfBoDhCAVTdGF0ZQhDb250ZXh0cwISRnJhZ21lbnRPcGVyYXRpb25zB1N0ZW5jaWwIQmFja0ZhaWwIB0dMX0RFQ1IMR0xfREVDUl9XUkFQB0dMX0lOQ1IMR0xfSU5DUl9XUkFQCUdMX0lOVkVSVAdHTF9LRUVQCkdMX1JFUExBQ0UHR0xfWkVSTwKA4waA5QaA5waA6QSA6waA7QgFU3RhdGUIQ29udGV4dHMCEkZyYWdtZW50T3BlcmF0aW9ucwdTdGVuY2lsCEJhY2tGdW5jCAlHTF9BTFdBWVMIR0xfRVFVQUwJR0xfR0VRVUFMCkdMX0dSRUFURVIJR0xfTEVRVUFMB0dMX0xFU1MIR0xfTkVWRVILR0xfTk9URVFVQUwCgO8GgPEGgPMGgPUEgPcGgPkIBVN0YXRlCENvbnRleHRzAhJGcmFnbWVudE9wZXJhdGlvbnMHU3RlbmNpbBFCYWNrUGFzc0RlcHRoRmFpbAgHR0xfREVDUgxHTF9ERUNSX1dSQVAHR0xfSU5DUgxHTF9JTkNSX1dSQVAJR0xfSU5WRVJUB0dMX0tFRVAKR0xfUkVQTEFDRQdHTF9aRVJPAoD7BoD9BoD/BoEBBIEDBoEFCAVTdGF0ZQhDb250ZXh0cwISRnJhZ21lbnRPcGVyYXRpb25zB1N0ZW5jaWwRQmFja1Bhc3NEZXB0aFBhc3MIB0dMX0RFQ1IMR0xfREVDUl9XUkFQB0dMX0lOQ1IMR0xfSU5DUl9XUkFQCUdMX0lOVkVSVAdHTF9LRUVQCkdMX1JFUExBQ0UHR0xfWkVSTwKBBwaBCQaBCwaBDQSBDwaBEQgFU3RhdGUIQ29udGV4dHMCEkZyYWdtZW50T3BlcmF0aW9ucwdTdGVuY2lsBEZhaWwIB0dMX0RFQ1IMR0xfREVDUl9XUkFQB0dMX0lOQ1IMR0xfSU5DUl9XUkFQCUdMX0lOVkVSVAdHTF9LRUVQCkdMX1JFUExBQ0UHR0xfWkVSTwKBEwaBFQaBFwaBGQSBGwaBHQgFU3RhdGUIQ29udGV4dHMCEkZyYWdtZW50T3BlcmF0aW9ucwdTdGVuY2lsBEZ1bmMICUdMX0FMV0FZUwhHTF9FUVVBTAlHTF9HRVFVQUwKR0xfR1JFQVRFUglHTF9MRVFVQUwHR0xfTEVTUwhHTF9ORVZFUgtHTF9OT1RFUVVBTAKBHwaBIQaBIwaBJQSBJwaBKQgFU3RhdGUIQ29udGV4dHMCEkZyYWdtZW50T3BlcmF0aW9ucwdTdGVuY2lsDVBhc3NEZXB0aEZhaWwIB0dMX0RFQ1IMR0xfREVDUl9XUkFQB0dMX0lOQ1IMR0xfSU5DUl9XUkFQCUdMX0lOVkVSVAdHTF9LRUVQCkdMX1JFUExBQ0UHR0xfWkVSTwKBKwaBLQaBLwaBMQSBMwaBNQgFU3RhdGUIQ29udGV4dHMCEkZyYWdtZW50T3BlcmF0aW9ucwdTdGVuY2lsDVBhc3NEZXB0aFBhc3MIB0dMX0RFQ1IMR0xfREVDUl9XUkFQB0dMX0lOQ1IMR0xfSU5DUl9XUkFQCUdMX0lOVkVSVAdHTF9LRUVQCkdMX1JFUExBQ0UHR0xfWkVSTwKBNwaBOQaBOwaBPQSBPwaBQQgFU3RhdGUIQ29udGV4dHMCEkZyYWdtZW50T3BlcmF0aW9ucwdTdGVuY2lsBFRlc3QCCEdMX0ZBTFNFB0dMX1RSVUUCgUMEgUUEgUcGgUkGgUsEgU0GgU8IBVN0YXRlCENvbnRleHRzAgtGcmFtZWJ1ZmZlcg5Db2xvcldyaXRlbWFzawICAQdHTF9UUlVFAoFRBoFTBIFVBoFXBIFZBoFbCAVTdGF0ZQhDb250ZXh0cwIKSW1hZ2VVbml0cwIGQWNjZXNzAwxHTF9SRUFEX09OTFkNR0xfUkVBRF9XUklURQ1HTF9XUklURV9PTkxZAoFdBoFfBIFhBoFjBIFlBoFnCAVTdGF0ZQhDb250ZXh0cwIKSW1hZ2VVbml0cwIGRm9ybWF0DQdHTF9SMzJGB0dMX1IzMkkIR0xfUjMyVUkKR0xfUkdCQTE2RgpHTF9SR0JBMTZJC0dMX1JHQkExNlVJCkdMX1JHQkEzMkYKR0xfUkdCQTMySQtHTF9SR0JBMzJVSQhHTF9SR0JBOAlHTF9SR0JBOEkKR0xfUkdCQThVSQ5HTF9SR0JBOF9TTk9STQKBaQaBawSBbQaBbwaBcQSBcwaBdQgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcwdCdWZmZXJzAgtBY2Nlc3NGbGFncwMZR0xfTUFQX0ZMVVNIX0VYUExJQ0lUX0JJVA9HTF9NQVBfUkVBRF9CSVQQR0xfTUFQX1dSSVRFX0JJVAsIc25pcHBldHMMT2JzZXJ2YXRpb25zAAIDBlCBdwaBeQSBewaBfQaBfwSBgQaBgwgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcwdCdWZmZXJzAgREYXRhAgIACoGFBIGHBoGJBIGLBoGNBoGPBIGRBoGTCAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzB0J1ZmZlcnMCCk1hcFBvaW50ZXIEAgIAAoGVBoGXBIGZBoGbBoGdBIGfBoGhCAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzB0J1ZmZlcnMCBk1hcHBlZAIIR0xfRkFMU0UHR0xfVFJVRQKBowaBpQSBpwaBqQaBqwSBrQaBrwgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcwdCdWZmZXJzAgVVc2FnZQkPR0xfRFlOQU1JQ19EUkFXDkdMX1NUQVRJQ19EUkFXDkdMX1NUUkVBTV9EUkFXD0dMX0RZTkFNSUNfQ09QWQ9HTF9EWU5BTUlDX1JFQUQOR0xfU1RBVElDX0NPUFkOR0xfU1RBVElDX1JFQUQOR0xfU1RSRUFNX0NPUFkOR0xfU1RSRUFNX1JFQUQCgbEGgbMGgbUGgbcGgbkEgbsGgb0IBVN0YXRlCENvbnRleHRzAglJbnN0YW5jZXMPRGVmYXVsdFRleHR1cmVzCVRleHR1cmUyZARLaW5kAQ1HTF9URVhUVVJFXzJEAoG/BoHBBoHDBoHFBoHHBIHJBoHLCAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzD0RlZmF1bHRUZXh0dXJlcw5UZXh0dXJlMmRBcnJheQRLaW5kARNHTF9URVhUVVJFXzJEX0FSUkFZAoHNBoHPBoHRBoHTBoHVBIHXBoHZCAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzD0RlZmF1bHRUZXh0dXJlcxRUZXh0dXJlMmRNdWx0aXNhbXBsZQRLaW5kARlHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFAoHbBoHdBoHfBoHhBoHjBIHlBoHnCAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzD0RlZmF1bHRUZXh0dXJlcxlUZXh0dXJlMmRNdWx0aXNhbXBsZUFycmF5BEtpbmQBH0dMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVkCgekGgesGge0Gge8GgfEEgfMGgfUIBVN0YXRlCENvbnRleHRzAglJbnN0YW5jZXMPRGVmYXVsdFRleHR1cmVzCVRleHR1cmUzZARLaW5kAQ1HTF9URVhUVVJFXzNEAoH3BoH5BoH7BoH9BoH/BIIBBoIDCAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzD0RlZmF1bHRUZXh0dXJlcw1UZXh0dXJlQnVmZmVyBEtpbmQBEUdMX1RFWFRVUkVfQlVGRkVSAoIFBoIHBoIJBoILBoINBIIPBoIRCAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzD0RlZmF1bHRUZXh0dXJlcw5UZXh0dXJlQ3ViZU1hcARLaW5kARNHTF9URVhUVVJFX0NVQkVfTUFQAoITBoIVBoIXBoIZBoIbBIIdBoIfCAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzD0RlZmF1bHRUZXh0dXJlcxNUZXh0dXJlQ3ViZU1hcEFycmF5BEtpbmQBGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVkCgiEGgiMGgiUGgicGgikEgisGgi0IBVN0YXRlCENvbnRleHRzAglJbnN0YW5jZXMPRGVmYXVsdFRleHR1cmVzElRleHR1cmVFeHRlcm5hbE9lcwRLaW5kARdHTF9URVhUVVJFX0VYVEVSTkFMX09FUwKCLwaCMQSCMwaCNQSCNwaCOQaCOwSCPQaCPwgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcwxGcmFtZWJ1ZmZlcnMCC0F0dGFjaG1lbnRzAgpPYmplY3RUeXBlAw9HTF9SRU5ERVJCVUZGRVIKR0xfVEVYVFVSRQdHTF9OT05FAoJBBoJDBIJFBoJHBIJJBoJLBoJNBIJPBoJRCAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzDEZyYW1lYnVmZmVycwILQXR0YWNobWVudHMCElRleHR1cmVDdWJlTWFwRmFjZQEHR0xfTk9ORQKCUwSCVQaCVwSCWQaCWwaCXQSCXwaCYQgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcwxGcmFtZWJ1ZmZlcnMCC0F0dGFjaG1lbnRzABYUR0xfQ09MT1JfQVRUQUNITUVOVDATR0xfREVQVEhfQVRUQUNITUVOVBVHTF9TVEVOQ0lMX0FUVEFDSE1FTlQUR0xfQ09MT1JfQVRUQUNITUVOVDEVR0xfQ09MT1JfQVRUQUNITUVOVDEwFUdMX0NPTE9SX0FUVEFDSE1FTlQxMRVHTF9DT0xPUl9BVFRBQ0hNRU5UMTIVR0xfQ09MT1JfQVRUQUNITUVOVDEzFUdMX0NPTE9SX0FUVEFDSE1FTlQxNBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTUUR0xfQ09MT1JfQVRUQUNITUVOVDIUR0xfQ09MT1JfQVRUQUNITUVOVDMUR0xfQ09MT1JfQVRUQUNITUVOVDQUR0xfQ09MT1JfQVRUQUNITUVOVDUUR0xfQ09MT1JfQVRUQUNITUVOVDYUR0xfQ09MT1JfQVRUQUNITUVOVDcUR0xfQ09MT1JfQVRUQUNITUVOVDgUR0xfQ09MT1JfQVRUQUNITUVOVDkbR0xfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UB0dMX0JBQ0sIR0xfREVQVEgKR0xfU1RFTkNJTAKCYwSCZQaCZwSCaQaCawaCbQSCbwaCcQgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcwxGcmFtZWJ1ZmZlcnMCCkRyYXdCdWZmZXICAQdHTF9OT05FAoJzBoJ1BIJ3BoJ5BoJ7BIJ9BoJ/CAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzDEZyYW1lYnVmZmVycwIKUmVhZEJ1ZmZlchIHR0xfQkFDSxRHTF9DT0xPUl9BVFRBQ0hNRU5UMBRHTF9DT0xPUl9BVFRBQ0hNRU5UMRVHTF9DT0xPUl9BVFRBQ0hNRU5UMTAVR0xfQ09MT1JfQVRUQUNITUVOVDExFUdMX0NPTE9SX0FUVEFDSE1FTlQxMhVHTF9DT0xPUl9BVFRBQ0hNRU5UMTMVR0xfQ09MT1JfQVRUQUNITUVOVDE0FUdMX0NPTE9SX0FUVEFDSE1FTlQxNRRHTF9DT0xPUl9BVFRBQ0hNRU5UMhRHTF9DT0xPUl9BVFRBQ0hNRU5UMxRHTF9DT0xPUl9BVFRBQ0hNRU5UNBRHTF9DT0xPUl9BVFRBQ0hNRU5UNRRHTF9DT0xPUl9BVFRBQ0hNRU5UNhRHTF9DT0xPUl9BVFRBQ0hNRU5UNxRHTF9DT0xPUl9BVFRBQ0hNRU5UOBRHTF9DT0xPUl9BVFRBQ0hNRU5UOQdHTF9OT05FAoKBBoKDBIKFBoKHBIKJBoKLBoKNBIKPBoKRCAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzCFByb2dyYW1zAghVbmlmb3JtcwIEVHlwZRUIR0xfRkxPQVQGR0xfSU5UD0dMX1VOU0lHTkVEX0lOVA1HTF9GTE9BVF9WRUMyC0dMX0lOVF9WRUMyFEdMX1VOU0lHTkVEX0lOVF9WRUMyDUdMX0ZMT0FUX1ZFQzMLR0xfSU5UX1ZFQzMUR0xfVU5TSUdORURfSU5UX1ZFQzMNR0xfRkxPQVRfVkVDNAtHTF9JTlRfVkVDNBRHTF9VTlNJR05FRF9JTlRfVkVDNA1HTF9GTE9BVF9NQVQyD0dMX0ZMT0FUX01BVDJ4Mw9HTF9GTE9BVF9NQVQyeDQNR0xfRkxPQVRfTUFUMw9HTF9GTE9BVF9NQVQzeDIPR0xfRkxPQVRfTUFUM3g0DUdMX0ZMT0FUX01BVDQPR0xfRkxPQVRfTUFUNHgyD0dMX0ZMT0FUX01BVDR4MwqCkwaClQSClwaCmQSCmwaCnQaCnwSCoQaCowgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcwhQcm9ncmFtcwIIVW5pZm9ybXMCBVZhbHVlAgIAAoKlBoKnBIKpBoKrBoKtBIKvBoKxCAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzDVJlbmRlcmJ1ZmZlcnMCDkludGVybmFsRm9ybWF0JRRHTF9ERVBUSF9DT01QT05FTlQxNglHTF9SR0I1NjUKR0xfUkdCNV9BMQhHTF9SR0JBNBFHTF9TVEVOQ0lMX0lOREVYOBNHTF9ERVBUSDI0X1NURU5DSUw4FEdMX0RFUFRIMzJGX1NURU5DSUw4FEdMX0RFUFRIX0NPTVBPTkVOVDI0FUdMX0RFUFRIX0NPTVBPTkVOVDMyRgdHTF9SMTZJCEdMX1IxNlVJB0dMX1IzMkkIR0xfUjMyVUkFR0xfUjgGR0xfUjhJB0dMX1I4VUkIR0xfUkcxNkkJR0xfUkcxNlVJCEdMX1JHMzJJCUdMX1JHMzJVSQZHTF9SRzgHR0xfUkc4SQhHTF9SRzhVSQtHTF9SR0IxMF9BMg1HTF9SR0IxMF9BMlVJB0dMX1JHQjgKR0xfUkdCQTE2SQtHTF9SR0JBMTZVSQpHTF9SR0JBMzJJC0dMX1JHQkEzMlVJCEdMX1JHQkE4CUdMX1JHQkE4SQpHTF9SR0JBOFVJD0dMX1NSR0I4X0FMUEhBOAZHTF9SMTYHR0xfUkcxNglHTF9SR0JBMTYCgrMGgrUEgrcGgrkGgrsEgr0Ggr8IBVN0YXRlCENvbnRleHRzAglJbnN0YW5jZXMHU2hhZGVycwIKU2hhZGVyVHlwZQYSR0xfRlJBR01FTlRfU0hBREVSEEdMX1ZFUlRFWF9TSEFERVIRR0xfQ09NUFVURV9TSEFERVISR0xfR0VPTUVUUllfU0hBREVSFkdMX1RFU1NfQ09OVFJPTF9TSEFERVIZR0xfVEVTU19FVkFMVUFUSU9OX1NIQURFUgKCwQaCwwSCxQaCxwaCyQSCywaCzQgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcwdTaGFkZXJzAgRUeXBlBhJHTF9GUkFHTUVOVF9TSEFERVIQR0xfVkVSVEVYX1NIQURFUhFHTF9DT01QVVRFX1NIQURFUhJHTF9HRU9NRVRSWV9TSEFERVIWR0xfVEVTU19DT05UUk9MX1NIQURFUhlHTF9URVNTX0VWQUxVQVRJT05fU0hBREVSAoLPBoLRBILTBoLVBoLXBILZBoLbCAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzCFRleHR1cmVzAgRLaW5kCRdHTF9URVhUVVJFX0VYVEVSTkFMX09FUw1HTF9URVhUVVJFXzJEE0dMX1RFWFRVUkVfMkRfQVJSQVkZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZDUdMX1RFWFRVUkVfM0QRR0xfVEVYVFVSRV9CVUZGRVITR0xfVEVYVFVSRV9DVUJFX01BUBlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZAoLdBoLfBILhBoLjBoLlBILnBoLpCAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzCFRleHR1cmVzAglNaW5GaWx0ZXIBCUdMX0xJTkVBUgKC6waC7QSC7waC8QaC8wSC9QaC9wgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcwhUZXh0dXJlcwIFV3JhcFMBEEdMX0NMQU1QX1RPX0VER0UCgvkGgvsEgv0Ggv8GgwEEgwMGgwUIBVN0YXRlCENvbnRleHRzAglJbnN0YW5jZXMIVGV4dHVyZXMCBVdyYXBUARBHTF9DTEFNUF9UT19FREdFAoMHBoMJBIMLBoMNBIMPBoMRBoMTBIMVBoMXCAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzDFZlcnRleEFycmF5cwIVVmVydGV4QXR0cmlidXRlQXJyYXlzAgdFbmFibGVkAghHTF9GQUxTRQdHTF9UUlVFCoMZBIMbBoMdBIMfBoMhBIMjBoMlBoMnBIMpBoMrCAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzDFZlcnRleEFycmF5cwIVVmVydGV4QXR0cmlidXRlQXJyYXlzAgdQb2ludGVyBAEAAoMtBoMvBIMxBoMzBIM1BoM3BoM5BIM7BoM9CAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzDFZlcnRleEFycmF5cwIVVmVydGV4QXR0cmlidXRlQXJyYXlzAgRUeXBlDAdHTF9CWVRFEEdMX1VOU0lHTkVEX0JZVEUIR0xfU0hPUlQRR0xfVU5TSUdORURfU0hPUlQNR0xfSEFMRl9GTE9BVBFHTF9IQUxGX0ZMT0FUX09FUwZHTF9JTlQPR0xfVU5TSUdORURfSU5UCEdMX0ZMT0FUCEdMX0ZJWEVEFUdMX0lOVF8yXzEwXzEwXzEwX1JFVh5HTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYCgz8Gg0EGg0MEg0UGg0cIBVN0YXRlCENvbnRleHRzAg1NaXNjZWxsYW5lb3VzHEZyYWdtZW50U2hhZGVyRGVyaXZhdGl2ZUhpbnQDDEdMX0RPTlRfQ0FSRQpHTF9GQVNURVNUCUdMX05JQ0VTVAKDSQaDSwaDTQSDTwaDUQgFU3RhdGUIQ29udGV4dHMCDU1pc2NlbGxhbmVvdXMSR2VuZXJhdGVNaXBtYXBIaW50AwxHTF9ET05UX0NBUkUKR0xfRkFTVEVTVAlHTF9OSUNFU1QCg1MGg1UGg1cEg1kGg1sIBVN0YXRlCENvbnRleHRzAg1NaXNjZWxsYW5lb3VzGlByaW1pdGl2ZVJlc3RhcnRGaXhlZEluZGV4AghHTF9GQUxTRQdHTF9UUlVFAoNdBoNfBoNhBINjBoNlCAVTdGF0ZQhDb250ZXh0cwINUmFzdGVyaXphdGlvbghDdWxsRmFjZQIIR0xfRkFMU0UHR0xfVFJVRQKDZwaDaQaDawSDbQaDbwgFU3RhdGUIQ29udGV4dHMCDVJhc3Rlcml6YXRpb24MQ3VsbEZhY2VNb2RlAwdHTF9CQUNLCEdMX0ZST05UEUdMX0ZST05UX0FORF9CQUNLAoNxBoNzBoN1BIN3BoN5CAVTdGF0ZQhDb250ZXh0cwINUmFzdGVyaXphdGlvbglGcm9udEZhY2UCBkdMX0NDVwVHTF9DVwKDewaDfQaDfwSDgQaDgwgFU3RhdGUIQ29udGV4dHMCDVJhc3Rlcml6YXRpb24RUG9seWdvbk9mZnNldEZpbGwCCEdMX0ZBTFNFB0dMX1RSVUUCg4UGg4cGg4kEg4sGg40IBVN0YXRlCENvbnRleHRzAg1SYXN0ZXJpemF0aW9uEVJhc3Rlcml6ZXJEaXNjYXJkAghHTF9GQUxTRQdHTF9UUlVFAoOPBoORBoOTBIOVBoOXCAVTdGF0ZQhDb250ZXh0cwINUmFzdGVyaXphdGlvbhVTYW1wbGVBbHBoYVRvQ292ZXJhZ2UCCEdMX0ZBTFNFB0dMX1RSVUUCg5kGg5sGg50Eg58Gg6EIBVN0YXRlCENvbnRleHRzAg1SYXN0ZXJpemF0aW9uDlNhbXBsZUNvdmVyYWdlAghHTF9GQUxTRQdHTF9UUlVFAoOjBoOlBoOnBIOpBoOrCAVTdGF0ZQhDb250ZXh0cwINUmFzdGVyaXphdGlvbgpTYW1wbGVNYXNrAghHTF9GQUxTRQdHTF9UUlVFAoOtBIOvBoOxBIOzBoO1CAVTdGF0ZQhDb250ZXh0cwIMVGV4dHVyZVVuaXRzACALR0xfVEVYVFVSRTALR0xfVEVYVFVSRTEMR0xfVEVYVFVSRTEwDEdMX1RFWFRVUkUxMQxHTF9URVhUVVJFMTIMR0xfVEVYVFVSRTEzDEdMX1RFWFRVUkUxNAxHTF9URVhUVVJFMTUMR0xfVEVYVFVSRTE2DEdMX1RFWFRVUkUxNwxHTF9URVhUVVJFMTgMR0xfVEVYVFVSRTE5C0dMX1RFWFRVUkUyDEdMX1RFWFRVUkUyMAxHTF9URVhUVVJFMjEMR0xfVEVYVFVSRTIyDEdMX1RFWFRVUkUyMwxHTF9URVhUVVJFMjQMR0xfVEVYVFVSRTI1DEdMX1RFWFRVUkUyNgxHTF9URVhUVVJFMjcMR0xfVEVYVFVSRTI4DEdMX1RFWFRVUkUyOQtHTF9URVhUVVJFMwxHTF9URVhUVVJFMzAMR0xfVEVYVFVSRTMxC0dMX1RFWFRVUkU0C0dMX1RFWFRVUkU1C0dMX1RFWFRVUkU2C0dMX1RFWFRVUkU3C0dMX1RFWFRVUkU4C0dMX1RFWFRVUkU5AoO3BIO5BoO7BIO9BoO/CAVTdGF0ZQtFR0xDb250ZXh0cwIRQm91bmRGcmFtZWJ1ZmZlcnMAAhNHTF9EUkFXX0ZSQU1FQlVGRkVSE0dMX1JFQURfRlJBTUVCVUZGRVICg8EEg8MEg8UGg8cGg8kEg8sGg80IBVN0YXRlC0VHTENvbnRleHRzAgtGcmFtZWJ1ZmZlcg5Db2xvcldyaXRlbWFzawICAQdHTF9UUlVFAoPPBoPRBoPTBoPVBoPXBIPZBoPbCAVTdGF0ZQtFR0xDb250ZXh0cwIJSW5zdGFuY2VzD0RlZmF1bHRUZXh0dXJlcwlUZXh0dXJlMmQES2luZAENR0xfVEVYVFVSRV8yRAKD3QaD3waD4QaD4waD5QSD5waD6QgFU3RhdGULRUdMQ29udGV4dHMCCUluc3RhbmNlcw9EZWZhdWx0VGV4dHVyZXMOVGV4dHVyZTJkQXJyYXkES2luZAETR0xfVEVYVFVSRV8yRF9BUlJBWQKD6waD7QaD7waD8QaD8wSD9QaD9wgFU3RhdGULRUdMQ29udGV4dHMCCUluc3RhbmNlcw9EZWZhdWx0VGV4dHVyZXMUVGV4dHVyZTJkTXVsdGlzYW1wbGUES2luZAEZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRQKD+QaD+waD/QaD/waEAQSEAwaEBQgFU3RhdGULRUdMQ29udGV4dHMCCUluc3RhbmNlcw9EZWZhdWx0VGV4dHVyZXMZVGV4dHVyZTJkTXVsdGlzYW1wbGVBcnJheQRLaW5kAR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZAoQHBoQJBoQLBoQNBoQPBIQRBoQTCAVTdGF0ZQtFR0xDb250ZXh0cwIJSW5zdGFuY2VzD0RlZmF1bHRUZXh0dXJlcwlUZXh0dXJlM2QES2luZAENR0xfVEVYVFVSRV8zRAKEFQaEFwaEGQaEGwaEHQSEHwaEIQgFU3RhdGULRUdMQ29udGV4dHMCCUluc3RhbmNlcw9EZWZhdWx0VGV4dHVyZXMNVGV4dHVyZUJ1ZmZlcgRLaW5kARFHTF9URVhUVVJFX0JVRkZFUgKEIwaEJQaEJwaEKQaEKwSELQaELwgFU3RhdGULRUdMQ29udGV4dHMCCUluc3RhbmNlcw9EZWZhdWx0VGV4dHVyZXMOVGV4dHVyZUN1YmVNYXAES2luZAETR0xfVEVYVFVSRV9DVUJFX01BUAKEMQaEMwaENQaENwaEOQSEOwaEPQgFU3RhdGULRUdMQ29udGV4dHMCCUluc3RhbmNlcw9EZWZhdWx0VGV4dHVyZXMTVGV4dHVyZUN1YmVNYXBBcnJheQRLaW5kARlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZAoQ/BoRBBoRDBoRFBoRHBIRJBoRLCAVTdGF0ZQtFR0xDb250ZXh0cwIJSW5zdGFuY2VzD0RlZmF1bHRUZXh0dXJlcxJUZXh0dXJlRXh0ZXJuYWxPZXMES2luZAEXR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMChE0GhE8EhFEGhFMEhFUGhFcGhFkEhFsGhF0IBVN0YXRlC0VHTENvbnRleHRzAglJbnN0YW5jZXMMRnJhbWVidWZmZXJzAgtBdHRhY2htZW50cwIKT2JqZWN0VHlwZQEPR0xfUkVOREVSQlVGRkVSAoRfBoRhBIRjBoRlBIRnBoRpBoRrBIRtBoRvCAVTdGF0ZQtFR0xDb250ZXh0cwIJSW5zdGFuY2VzDEZyYW1lYnVmZmVycwILQXR0YWNobWVudHMCElRleHR1cmVDdWJlTWFwRmFjZQEHR0xfTk9ORQKEcQSEcwaEdQSEdwaEeQaEewSEfQaEfwgFU3RhdGULRUdMQ29udGV4dHMCCUluc3RhbmNlcwxGcmFtZWJ1ZmZlcnMCC0F0dGFjaG1lbnRzAAMUR0xfQ09MT1JfQVRUQUNITUVOVDATR0xfREVQVEhfQVRUQUNITUVOVBVHTF9TVEVOQ0lMX0FUVEFDSE1FTlQChIEGhIMEhIUGhIcGhIkEhIsGhI0IBVN0YXRlC0VHTENvbnRleHRzAglJbnN0YW5jZXMMRnJhbWVidWZmZXJzAgpSZWFkQnVmZmVyAQdHTF9CQUNLAoSPBISRBoSTBISVBoSXCAVTdGF0ZQtFR0xDb250ZXh0cwIMVGV4dHVyZVVuaXRzAAELR0xfVEVYVFVSRTA=
\ No newline at end of file
diff --git a/gapid/gfxapi/gles/globals_snippets.text b/gapid/gfxapi/gles/globals_snippets.text
index 004ab6e..e5b9251 100644
--- a/gapid/gfxapi/gles/globals_snippets.text
+++ b/gapid/gfxapi/gles/globals_snippets.text
@@ -1,4 +1,4 @@
-Global:Contexts.Elem().ActiveQueries.Key(): [GL_ANY_SAMPLES_PASSED GL_ANY_SAMPLES_PASSED_CONSERVATIVE GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN GL_PRIMITIVES_GENERATED]
+Global:Contexts.Elem().ActiveQueries.Key(): [GL_ANY_SAMPLES_PASSED GL_ANY_SAMPLES_PASSED_CONSERVATIVE GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN GL_PRIMITIVES_GENERATED GL_TIMESTAMP_EXT]
Global:Contexts.Elem().ActiveTextureUnit: [GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE10 GL_TEXTURE11 GL_TEXTURE12 GL_TEXTURE13 GL_TEXTURE14 GL_TEXTURE15 GL_TEXTURE16 GL_TEXTURE17 GL_TEXTURE18 GL_TEXTURE19 GL_TEXTURE2 GL_TEXTURE20 GL_TEXTURE21 GL_TEXTURE22 GL_TEXTURE23 GL_TEXTURE24 GL_TEXTURE25 GL_TEXTURE26 GL_TEXTURE27 GL_TEXTURE28 GL_TEXTURE29 GL_TEXTURE3 GL_TEXTURE30 GL_TEXTURE31 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 GL_TEXTURE8 GL_TEXTURE9]
Global:Contexts.Elem().BoundFramebuffers.Key(): [GL_DRAW_FRAMEBUFFER GL_READ_FRAMEBUFFER GL_FRAMEBUFFER]
Global:Contexts.Elem().BoundRenderbuffers.Key(): [GL_RENDERBUFFER]
diff --git a/gapid/gfxapi/gles/glsl/preprocessor/preprocessorImpl.go b/gapid/gfxapi/gles/glsl/preprocessor/preprocessorImpl.go
index 09223bf..d9b3fde 100644
--- a/gapid/gfxapi/gles/glsl/preprocessor/preprocessorImpl.go
+++ b/gapid/gfxapi/gles/glsl/preprocessor/preprocessorImpl.go
@@ -540,8 +540,8 @@
case ppLine:
args := p.getDirectiveArguments(info, true)
- if len(args) != 1 {
- p.err.Errorf("expected single line number after #line")
+ if len(args) != 1 && len(args) != 2 {
+ p.err.Errorf("expected line/file number after #line")
}
case ppError:
diff --git a/gapid/gfxapi/gles/glsl/preprocessor/preprocessor_test.go b/gapid/gfxapi/gles/glsl/preprocessor/preprocessor_test.go
index 4b8db00..1f2f144 100644
--- a/gapid/gfxapi/gles/glsl/preprocessor/preprocessor_test.go
+++ b/gapid/gfxapi/gles/glsl/preprocessor/preprocessor_test.go
@@ -350,8 +350,8 @@
#endif`, []Token{a}, "", nil},
{`#line 123`, []Token{}, "", nil},
- {`#line`, []Token{}, "", []string{"expected single line number after #line"}},
- {`#line 1 2 3`, []Token{}, "", []string{"expected single line number after #line"}},
+ {`#line`, []Token{}, "", []string{"expected line/file number after #line"}},
+ {`#line 1 2 3`, []Token{}, "", []string{"expected line/file number after #line"}},
{`#if defined
a
diff --git a/gapid/gfxapi/gles/mutate.go b/gapid/gfxapi/gles/mutate.go
index 7b5fb5c..66f5f1d 100644
--- a/gapid/gfxapi/gles/mutate.go
+++ b/gapid/gfxapi/gles/mutate.go
@@ -171,854 +171,917 @@
var funcInfoEglWaitNative = builder.FunctionInfo{ApiIndex: 1, ID: 120, ReturnType: protocol.Type_Int64, Parameters: 1}
var funcInfoEglCreateImageKHR = builder.FunctionInfo{ApiIndex: 1, ID: 121, ReturnType: protocol.Type_AbsolutePointer, Parameters: 5}
var funcInfoEglDestroyImageKHR = builder.FunctionInfo{ApiIndex: 1, ID: 122, ReturnType: protocol.Type_Int64, Parameters: 2}
-var funcInfoGlActiveShaderProgramEXT = builder.FunctionInfo{ApiIndex: 1, ID: 123, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlAlphaFuncQCOM = builder.FunctionInfo{ApiIndex: 1, ID: 124, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlApplyFramebufferAttachmentCMAAINTEL = builder.FunctionInfo{ApiIndex: 1, ID: 125, ReturnType: protocol.Type_Void, Parameters: 0}
-var funcInfoGlBeginConditionalRenderNV = builder.FunctionInfo{ApiIndex: 1, ID: 126, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlBeginPerfMonitorAMD = builder.FunctionInfo{ApiIndex: 1, ID: 127, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlBeginPerfQueryINTEL = builder.FunctionInfo{ApiIndex: 1, ID: 128, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlBeginQueryEXT = builder.FunctionInfo{ApiIndex: 1, ID: 129, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlBindFragDataLocationEXT = builder.FunctionInfo{ApiIndex: 1, ID: 130, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlBindFragDataLocationIndexedEXT = builder.FunctionInfo{ApiIndex: 1, ID: 131, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlBindProgramPipelineEXT = builder.FunctionInfo{ApiIndex: 1, ID: 132, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlBindVertexArrayOES = builder.FunctionInfo{ApiIndex: 1, ID: 133, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlBlendBarrierNV = builder.FunctionInfo{ApiIndex: 1, ID: 134, ReturnType: protocol.Type_Void, Parameters: 0}
-var funcInfoGlBlendEquationSeparateiOES = builder.FunctionInfo{ApiIndex: 1, ID: 135, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlBlendEquationiOES = builder.FunctionInfo{ApiIndex: 1, ID: 136, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlBlendFuncSeparateiOES = builder.FunctionInfo{ApiIndex: 1, ID: 137, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlBlendFunciOES = builder.FunctionInfo{ApiIndex: 1, ID: 138, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlBlendParameteriNV = builder.FunctionInfo{ApiIndex: 1, ID: 139, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlBlitFramebufferANGLE = builder.FunctionInfo{ApiIndex: 1, ID: 140, ReturnType: protocol.Type_Void, Parameters: 10}
-var funcInfoGlBlitFramebufferNV = builder.FunctionInfo{ApiIndex: 1, ID: 141, ReturnType: protocol.Type_Void, Parameters: 10}
-var funcInfoGlBufferStorageEXT = builder.FunctionInfo{ApiIndex: 1, ID: 142, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlClientWaitSyncAPPLE = builder.FunctionInfo{ApiIndex: 1, ID: 143, ReturnType: protocol.Type_Uint32, Parameters: 3}
-var funcInfoGlColorMaskiOES = builder.FunctionInfo{ApiIndex: 1, ID: 144, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlCompressedTexImage3DOES = builder.FunctionInfo{ApiIndex: 1, ID: 145, ReturnType: protocol.Type_Void, Parameters: 9}
-var funcInfoGlCompressedTexSubImage3DOES = builder.FunctionInfo{ApiIndex: 1, ID: 146, ReturnType: protocol.Type_Void, Parameters: 11}
-var funcInfoGlCopyBufferSubDataNV = builder.FunctionInfo{ApiIndex: 1, ID: 147, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlCopyImageSubDataOES = builder.FunctionInfo{ApiIndex: 1, ID: 148, ReturnType: protocol.Type_Void, Parameters: 15}
-var funcInfoGlCopyPathNV = builder.FunctionInfo{ApiIndex: 1, ID: 149, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlCopyTexSubImage3DOES = builder.FunctionInfo{ApiIndex: 1, ID: 150, ReturnType: protocol.Type_Void, Parameters: 9}
-var funcInfoGlCopyTextureLevelsAPPLE = builder.FunctionInfo{ApiIndex: 1, ID: 151, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlCoverFillPathInstancedNV = builder.FunctionInfo{ApiIndex: 1, ID: 152, ReturnType: protocol.Type_Void, Parameters: 7}
-var funcInfoGlCoverFillPathNV = builder.FunctionInfo{ApiIndex: 1, ID: 153, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlCoverStrokePathInstancedNV = builder.FunctionInfo{ApiIndex: 1, ID: 154, ReturnType: protocol.Type_Void, Parameters: 7}
-var funcInfoGlCoverStrokePathNV = builder.FunctionInfo{ApiIndex: 1, ID: 155, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlCoverageMaskNV = builder.FunctionInfo{ApiIndex: 1, ID: 156, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlCoverageModulationNV = builder.FunctionInfo{ApiIndex: 1, ID: 157, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlCoverageModulationTableNV = builder.FunctionInfo{ApiIndex: 1, ID: 158, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlCoverageOperationNV = builder.FunctionInfo{ApiIndex: 1, ID: 159, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlCreatePerfQueryINTEL = builder.FunctionInfo{ApiIndex: 1, ID: 160, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlCreateShaderProgramvEXT = builder.FunctionInfo{ApiIndex: 1, ID: 161, ReturnType: protocol.Type_Uint32, Parameters: 3}
-var funcInfoGlDeleteFencesNV = builder.FunctionInfo{ApiIndex: 1, ID: 162, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlDeletePathsNV = builder.FunctionInfo{ApiIndex: 1, ID: 163, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlDeletePerfMonitorsAMD = builder.FunctionInfo{ApiIndex: 1, ID: 164, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlDeletePerfQueryINTEL = builder.FunctionInfo{ApiIndex: 1, ID: 165, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlDeleteProgramPipelinesEXT = builder.FunctionInfo{ApiIndex: 1, ID: 166, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlDeleteQueriesEXT = builder.FunctionInfo{ApiIndex: 1, ID: 167, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlDeleteSyncAPPLE = builder.FunctionInfo{ApiIndex: 1, ID: 168, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlDeleteVertexArraysOES = builder.FunctionInfo{ApiIndex: 1, ID: 169, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlDepthRangeArrayfvNV = builder.FunctionInfo{ApiIndex: 1, ID: 170, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlDepthRangeIndexedfNV = builder.FunctionInfo{ApiIndex: 1, ID: 171, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlDisableDriverControlQCOM = builder.FunctionInfo{ApiIndex: 1, ID: 172, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlDisableiNV = builder.FunctionInfo{ApiIndex: 1, ID: 173, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlDisableiOES = builder.FunctionInfo{ApiIndex: 1, ID: 174, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlDiscardFramebufferEXT = builder.FunctionInfo{ApiIndex: 1, ID: 175, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlDrawArraysInstancedANGLE = builder.FunctionInfo{ApiIndex: 1, ID: 176, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlDrawArraysInstancedBaseInstanceEXT = builder.FunctionInfo{ApiIndex: 1, ID: 177, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlDrawArraysInstancedEXT = builder.FunctionInfo{ApiIndex: 1, ID: 178, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlDrawArraysInstancedNV = builder.FunctionInfo{ApiIndex: 1, ID: 179, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlDrawBuffersEXT = builder.FunctionInfo{ApiIndex: 1, ID: 180, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlDrawBuffersIndexedEXT = builder.FunctionInfo{ApiIndex: 1, ID: 181, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlDrawBuffersNV = builder.FunctionInfo{ApiIndex: 1, ID: 182, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlDrawElementsBaseVertexEXT = builder.FunctionInfo{ApiIndex: 1, ID: 183, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlDrawElementsBaseVertexOES = builder.FunctionInfo{ApiIndex: 1, ID: 184, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlDrawElementsInstancedANGLE = builder.FunctionInfo{ApiIndex: 1, ID: 185, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlDrawElementsInstancedBaseInstanceEXT = builder.FunctionInfo{ApiIndex: 1, ID: 186, ReturnType: protocol.Type_Void, Parameters: 6}
-var funcInfoGlDrawElementsInstancedBaseVertexBaseInstanceEXT = builder.FunctionInfo{ApiIndex: 1, ID: 187, ReturnType: protocol.Type_Void, Parameters: 7}
-var funcInfoGlDrawElementsInstancedBaseVertexEXT = builder.FunctionInfo{ApiIndex: 1, ID: 188, ReturnType: protocol.Type_Void, Parameters: 6}
-var funcInfoGlDrawElementsInstancedBaseVertexOES = builder.FunctionInfo{ApiIndex: 1, ID: 189, ReturnType: protocol.Type_Void, Parameters: 6}
-var funcInfoGlDrawElementsInstancedEXT = builder.FunctionInfo{ApiIndex: 1, ID: 190, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlDrawElementsInstancedNV = builder.FunctionInfo{ApiIndex: 1, ID: 191, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlDrawRangeElementsBaseVertexEXT = builder.FunctionInfo{ApiIndex: 1, ID: 192, ReturnType: protocol.Type_Void, Parameters: 7}
-var funcInfoGlDrawRangeElementsBaseVertexOES = builder.FunctionInfo{ApiIndex: 1, ID: 193, ReturnType: protocol.Type_Void, Parameters: 7}
-var funcInfoGlEGLImageTargetRenderbufferStorageOES = builder.FunctionInfo{ApiIndex: 1, ID: 194, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlEGLImageTargetTexture2DOES = builder.FunctionInfo{ApiIndex: 1, ID: 195, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlEnableDriverControlQCOM = builder.FunctionInfo{ApiIndex: 1, ID: 196, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlEnableiNV = builder.FunctionInfo{ApiIndex: 1, ID: 197, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlEnableiOES = builder.FunctionInfo{ApiIndex: 1, ID: 198, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlEndConditionalRenderNV = builder.FunctionInfo{ApiIndex: 1, ID: 199, ReturnType: protocol.Type_Void, Parameters: 0}
-var funcInfoGlEndPerfMonitorAMD = builder.FunctionInfo{ApiIndex: 1, ID: 200, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlEndPerfQueryINTEL = builder.FunctionInfo{ApiIndex: 1, ID: 201, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlEndQueryEXT = builder.FunctionInfo{ApiIndex: 1, ID: 202, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlEndTilingQCOM = builder.FunctionInfo{ApiIndex: 1, ID: 203, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlExtGetBufferPointervQCOM = builder.FunctionInfo{ApiIndex: 1, ID: 204, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlExtGetBuffersQCOM = builder.FunctionInfo{ApiIndex: 1, ID: 205, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlExtGetFramebuffersQCOM = builder.FunctionInfo{ApiIndex: 1, ID: 206, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlExtGetProgramBinarySourceQCOM = builder.FunctionInfo{ApiIndex: 1, ID: 207, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlExtGetProgramsQCOM = builder.FunctionInfo{ApiIndex: 1, ID: 208, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlExtGetRenderbuffersQCOM = builder.FunctionInfo{ApiIndex: 1, ID: 209, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlExtGetShadersQCOM = builder.FunctionInfo{ApiIndex: 1, ID: 210, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlExtGetTexLevelParameterivQCOM = builder.FunctionInfo{ApiIndex: 1, ID: 211, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlExtGetTexSubImageQCOM = builder.FunctionInfo{ApiIndex: 1, ID: 212, ReturnType: protocol.Type_Void, Parameters: 11}
-var funcInfoGlExtGetTexturesQCOM = builder.FunctionInfo{ApiIndex: 1, ID: 213, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlExtIsProgramBinaryQCOM = builder.FunctionInfo{ApiIndex: 1, ID: 214, ReturnType: protocol.Type_Uint8, Parameters: 1}
-var funcInfoGlExtTexObjectStateOverrideiQCOM = builder.FunctionInfo{ApiIndex: 1, ID: 215, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlFenceSyncAPPLE = builder.FunctionInfo{ApiIndex: 1, ID: 216, ReturnType: protocol.Type_AbsolutePointer, Parameters: 2}
-var funcInfoGlFinishFenceNV = builder.FunctionInfo{ApiIndex: 1, ID: 217, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlFlushMappedBufferRangeEXT = builder.FunctionInfo{ApiIndex: 1, ID: 218, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlFragmentCoverageColorNV = builder.FunctionInfo{ApiIndex: 1, ID: 219, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlFramebufferSampleLocationsfvNV = builder.FunctionInfo{ApiIndex: 1, ID: 220, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlFramebufferTexture2DMultisampleEXT = builder.FunctionInfo{ApiIndex: 1, ID: 221, ReturnType: protocol.Type_Void, Parameters: 6}
-var funcInfoGlFramebufferTexture2DMultisampleIMG = builder.FunctionInfo{ApiIndex: 1, ID: 222, ReturnType: protocol.Type_Void, Parameters: 6}
-var funcInfoGlFramebufferTexture3DOES = builder.FunctionInfo{ApiIndex: 1, ID: 223, ReturnType: protocol.Type_Void, Parameters: 6}
-var funcInfoGlFramebufferTextureMultiviewOVR = builder.FunctionInfo{ApiIndex: 1, ID: 224, ReturnType: protocol.Type_Void, Parameters: 6}
-var funcInfoGlFramebufferTextureOES = builder.FunctionInfo{ApiIndex: 1, ID: 225, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlGenFencesNV = builder.FunctionInfo{ApiIndex: 1, ID: 226, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlGenPathsNV = builder.FunctionInfo{ApiIndex: 1, ID: 227, ReturnType: protocol.Type_Uint32, Parameters: 1}
-var funcInfoGlGenPerfMonitorsAMD = builder.FunctionInfo{ApiIndex: 1, ID: 228, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlGenProgramPipelinesEXT = builder.FunctionInfo{ApiIndex: 1, ID: 229, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlGenQueriesEXT = builder.FunctionInfo{ApiIndex: 1, ID: 230, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlGenVertexArraysOES = builder.FunctionInfo{ApiIndex: 1, ID: 231, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlGetBufferPointervOES = builder.FunctionInfo{ApiIndex: 1, ID: 232, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetCoverageModulationTableNV = builder.FunctionInfo{ApiIndex: 1, ID: 233, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlGetDriverControlStringQCOM = builder.FunctionInfo{ApiIndex: 1, ID: 234, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlGetDriverControlsQCOM = builder.FunctionInfo{ApiIndex: 1, ID: 235, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetFenceivNV = builder.FunctionInfo{ApiIndex: 1, ID: 236, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetFirstPerfQueryIdINTEL = builder.FunctionInfo{ApiIndex: 1, ID: 237, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlGetFloati_vNV = builder.FunctionInfo{ApiIndex: 1, ID: 238, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetFragDataIndexEXT = builder.FunctionInfo{ApiIndex: 1, ID: 239, ReturnType: protocol.Type_Int32, Parameters: 2}
-var funcInfoGlGetGraphicsResetStatusEXT = builder.FunctionInfo{ApiIndex: 1, ID: 240, ReturnType: protocol.Type_Uint32, Parameters: 0}
-var funcInfoGlGetGraphicsResetStatusKHR = builder.FunctionInfo{ApiIndex: 1, ID: 241, ReturnType: protocol.Type_Uint32, Parameters: 0}
-var funcInfoGlGetImageHandleNV = builder.FunctionInfo{ApiIndex: 1, ID: 242, ReturnType: protocol.Type_Uint64, Parameters: 5}
-var funcInfoGlGetInteger64vAPPLE = builder.FunctionInfo{ApiIndex: 1, ID: 243, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlGetIntegeri_vEXT = builder.FunctionInfo{ApiIndex: 1, ID: 244, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetInternalformatSampleivNV = builder.FunctionInfo{ApiIndex: 1, ID: 245, ReturnType: protocol.Type_Void, Parameters: 6}
-var funcInfoGlGetNextPerfQueryIdINTEL = builder.FunctionInfo{ApiIndex: 1, ID: 246, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlGetObjectLabelEXT = builder.FunctionInfo{ApiIndex: 1, ID: 247, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlGetPathCommandsNV = builder.FunctionInfo{ApiIndex: 1, ID: 248, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlGetPathCoordsNV = builder.FunctionInfo{ApiIndex: 1, ID: 249, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlGetPathDashArrayNV = builder.FunctionInfo{ApiIndex: 1, ID: 250, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlGetPathLengthNV = builder.FunctionInfo{ApiIndex: 1, ID: 251, ReturnType: protocol.Type_Float, Parameters: 3}
-var funcInfoGlGetPathMetricRangeNV = builder.FunctionInfo{ApiIndex: 1, ID: 252, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlGetPathMetricsNV = builder.FunctionInfo{ApiIndex: 1, ID: 253, ReturnType: protocol.Type_Void, Parameters: 7}
-var funcInfoGlGetPathParameterfvNV = builder.FunctionInfo{ApiIndex: 1, ID: 254, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetPathParameterivNV = builder.FunctionInfo{ApiIndex: 1, ID: 255, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetPathSpacingNV = builder.FunctionInfo{ApiIndex: 1, ID: 256, ReturnType: protocol.Type_Void, Parameters: 9}
-var funcInfoGlGetPerfCounterInfoINTEL = builder.FunctionInfo{ApiIndex: 1, ID: 257, ReturnType: protocol.Type_Void, Parameters: 11}
-var funcInfoGlGetPerfMonitorCounterDataAMD = builder.FunctionInfo{ApiIndex: 1, ID: 258, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlGetPerfMonitorCounterInfoAMD = builder.FunctionInfo{ApiIndex: 1, ID: 259, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlGetPerfMonitorCounterStringAMD = builder.FunctionInfo{ApiIndex: 1, ID: 260, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlGetPerfMonitorCountersAMD = builder.FunctionInfo{ApiIndex: 1, ID: 261, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlGetPerfMonitorGroupStringAMD = builder.FunctionInfo{ApiIndex: 1, ID: 262, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlGetPerfMonitorGroupsAMD = builder.FunctionInfo{ApiIndex: 1, ID: 263, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetPerfQueryDataINTEL = builder.FunctionInfo{ApiIndex: 1, ID: 264, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlGetPerfQueryIdByNameINTEL = builder.FunctionInfo{ApiIndex: 1, ID: 265, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlGetPerfQueryInfoINTEL = builder.FunctionInfo{ApiIndex: 1, ID: 266, ReturnType: protocol.Type_Void, Parameters: 7}
-var funcInfoGlGetProgramBinaryOES = builder.FunctionInfo{ApiIndex: 1, ID: 267, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlGetProgramPipelineInfoLogEXT = builder.FunctionInfo{ApiIndex: 1, ID: 268, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlGetProgramPipelineivEXT = builder.FunctionInfo{ApiIndex: 1, ID: 269, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetProgramResourceLocationIndexEXT = builder.FunctionInfo{ApiIndex: 1, ID: 270, ReturnType: protocol.Type_Int32, Parameters: 3}
-var funcInfoGlGetProgramResourcefvNV = builder.FunctionInfo{ApiIndex: 1, ID: 271, ReturnType: protocol.Type_Void, Parameters: 8}
-var funcInfoGlGetQueryObjecti64vEXT = builder.FunctionInfo{ApiIndex: 1, ID: 272, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetQueryObjectivEXT = builder.FunctionInfo{ApiIndex: 1, ID: 273, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetQueryObjectui64vEXT = builder.FunctionInfo{ApiIndex: 1, ID: 274, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetQueryObjectuivEXT = builder.FunctionInfo{ApiIndex: 1, ID: 275, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetQueryivEXT = builder.FunctionInfo{ApiIndex: 1, ID: 276, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetSamplerParameterIivOES = builder.FunctionInfo{ApiIndex: 1, ID: 277, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetSamplerParameterIuivOES = builder.FunctionInfo{ApiIndex: 1, ID: 278, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetSyncivAPPLE = builder.FunctionInfo{ApiIndex: 1, ID: 279, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlGetTexParameterIivOES = builder.FunctionInfo{ApiIndex: 1, ID: 280, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetTexParameterIuivOES = builder.FunctionInfo{ApiIndex: 1, ID: 281, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetTextureHandleNV = builder.FunctionInfo{ApiIndex: 1, ID: 282, ReturnType: protocol.Type_Uint64, Parameters: 1}
-var funcInfoGlGetTextureSamplerHandleNV = builder.FunctionInfo{ApiIndex: 1, ID: 283, ReturnType: protocol.Type_Uint64, Parameters: 2}
-var funcInfoGlGetTranslatedShaderSourceANGLE = builder.FunctionInfo{ApiIndex: 1, ID: 284, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlGetnUniformfvEXT = builder.FunctionInfo{ApiIndex: 1, ID: 285, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlGetnUniformfvKHR = builder.FunctionInfo{ApiIndex: 1, ID: 286, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlGetnUniformivEXT = builder.FunctionInfo{ApiIndex: 1, ID: 287, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlGetnUniformivKHR = builder.FunctionInfo{ApiIndex: 1, ID: 288, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlGetnUniformuivKHR = builder.FunctionInfo{ApiIndex: 1, ID: 289, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlInsertEventMarkerEXT = builder.FunctionInfo{ApiIndex: 1, ID: 290, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlInterpolatePathsNV = builder.FunctionInfo{ApiIndex: 1, ID: 291, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlIsEnablediNV = builder.FunctionInfo{ApiIndex: 1, ID: 292, ReturnType: protocol.Type_Uint8, Parameters: 2}
-var funcInfoGlIsEnablediOES = builder.FunctionInfo{ApiIndex: 1, ID: 293, ReturnType: protocol.Type_Uint8, Parameters: 2}
-var funcInfoGlIsFenceNV = builder.FunctionInfo{ApiIndex: 1, ID: 294, ReturnType: protocol.Type_Uint8, Parameters: 1}
-var funcInfoGlIsImageHandleResidentNV = builder.FunctionInfo{ApiIndex: 1, ID: 295, ReturnType: protocol.Type_Uint8, Parameters: 1}
-var funcInfoGlIsPathNV = builder.FunctionInfo{ApiIndex: 1, ID: 296, ReturnType: protocol.Type_Uint8, Parameters: 1}
-var funcInfoGlIsPointInFillPathNV = builder.FunctionInfo{ApiIndex: 1, ID: 297, ReturnType: protocol.Type_Uint8, Parameters: 4}
-var funcInfoGlIsPointInStrokePathNV = builder.FunctionInfo{ApiIndex: 1, ID: 298, ReturnType: protocol.Type_Uint8, Parameters: 3}
-var funcInfoGlIsProgramPipelineEXT = builder.FunctionInfo{ApiIndex: 1, ID: 299, ReturnType: protocol.Type_Uint8, Parameters: 1}
-var funcInfoGlIsQueryEXT = builder.FunctionInfo{ApiIndex: 1, ID: 300, ReturnType: protocol.Type_Uint8, Parameters: 1}
-var funcInfoGlIsSyncAPPLE = builder.FunctionInfo{ApiIndex: 1, ID: 301, ReturnType: protocol.Type_Uint8, Parameters: 1}
-var funcInfoGlIsTextureHandleResidentNV = builder.FunctionInfo{ApiIndex: 1, ID: 302, ReturnType: protocol.Type_Uint8, Parameters: 1}
-var funcInfoGlIsVertexArrayOES = builder.FunctionInfo{ApiIndex: 1, ID: 303, ReturnType: protocol.Type_Uint8, Parameters: 1}
-var funcInfoGlLabelObjectEXT = builder.FunctionInfo{ApiIndex: 1, ID: 304, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlMakeImageHandleNonResidentNV = builder.FunctionInfo{ApiIndex: 1, ID: 305, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlMakeImageHandleResidentNV = builder.FunctionInfo{ApiIndex: 1, ID: 306, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlMakeTextureHandleNonResidentNV = builder.FunctionInfo{ApiIndex: 1, ID: 307, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlMakeTextureHandleResidentNV = builder.FunctionInfo{ApiIndex: 1, ID: 308, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlMapBufferOES = builder.FunctionInfo{ApiIndex: 1, ID: 309, ReturnType: protocol.Type_AbsolutePointer, Parameters: 2}
-var funcInfoGlMapBufferRangeEXT = builder.FunctionInfo{ApiIndex: 1, ID: 310, ReturnType: protocol.Type_AbsolutePointer, Parameters: 4}
-var funcInfoGlMatrixLoad3x2fNV = builder.FunctionInfo{ApiIndex: 1, ID: 311, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlMatrixLoad3x3fNV = builder.FunctionInfo{ApiIndex: 1, ID: 312, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlMatrixLoadTranspose3x3fNV = builder.FunctionInfo{ApiIndex: 1, ID: 313, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlMatrixMult3x2fNV = builder.FunctionInfo{ApiIndex: 1, ID: 314, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlMatrixMult3x3fNV = builder.FunctionInfo{ApiIndex: 1, ID: 315, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlMatrixMultTranspose3x3fNV = builder.FunctionInfo{ApiIndex: 1, ID: 316, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlMultiDrawArraysEXT = builder.FunctionInfo{ApiIndex: 1, ID: 317, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlMultiDrawArraysIndirectEXT = builder.FunctionInfo{ApiIndex: 1, ID: 318, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlMultiDrawElementsBaseVertexEXT = builder.FunctionInfo{ApiIndex: 1, ID: 319, ReturnType: protocol.Type_Void, Parameters: 6}
-var funcInfoGlMultiDrawElementsBaseVertexOES = builder.FunctionInfo{ApiIndex: 1, ID: 320, ReturnType: protocol.Type_Void, Parameters: 6}
-var funcInfoGlMultiDrawElementsEXT = builder.FunctionInfo{ApiIndex: 1, ID: 321, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlMultiDrawElementsIndirectEXT = builder.FunctionInfo{ApiIndex: 1, ID: 322, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlNamedFramebufferSampleLocationsfvNV = builder.FunctionInfo{ApiIndex: 1, ID: 323, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlPatchParameteriOES = builder.FunctionInfo{ApiIndex: 1, ID: 324, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlPathCommandsNV = builder.FunctionInfo{ApiIndex: 1, ID: 325, ReturnType: protocol.Type_Void, Parameters: 6}
-var funcInfoGlPathCoordsNV = builder.FunctionInfo{ApiIndex: 1, ID: 326, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlPathCoverDepthFuncNV = builder.FunctionInfo{ApiIndex: 1, ID: 327, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlPathDashArrayNV = builder.FunctionInfo{ApiIndex: 1, ID: 328, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlPathGlyphIndexArrayNV = builder.FunctionInfo{ApiIndex: 1, ID: 329, ReturnType: protocol.Type_Uint32, Parameters: 8}
-var funcInfoGlPathGlyphIndexRangeNV = builder.FunctionInfo{ApiIndex: 1, ID: 330, ReturnType: protocol.Type_Uint32, Parameters: 6}
-var funcInfoGlPathGlyphRangeNV = builder.FunctionInfo{ApiIndex: 1, ID: 331, ReturnType: protocol.Type_Void, Parameters: 9}
-var funcInfoGlPathGlyphsNV = builder.FunctionInfo{ApiIndex: 1, ID: 332, ReturnType: protocol.Type_Void, Parameters: 10}
-var funcInfoGlPathMemoryGlyphIndexArrayNV = builder.FunctionInfo{ApiIndex: 1, ID: 333, ReturnType: protocol.Type_Uint32, Parameters: 9}
-var funcInfoGlPathParameterfNV = builder.FunctionInfo{ApiIndex: 1, ID: 334, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlPathParameterfvNV = builder.FunctionInfo{ApiIndex: 1, ID: 335, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlPathParameteriNV = builder.FunctionInfo{ApiIndex: 1, ID: 336, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlPathParameterivNV = builder.FunctionInfo{ApiIndex: 1, ID: 337, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlPathStencilDepthOffsetNV = builder.FunctionInfo{ApiIndex: 1, ID: 338, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlPathStencilFuncNV = builder.FunctionInfo{ApiIndex: 1, ID: 339, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlPathStringNV = builder.FunctionInfo{ApiIndex: 1, ID: 340, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlPathSubCommandsNV = builder.FunctionInfo{ApiIndex: 1, ID: 341, ReturnType: protocol.Type_Void, Parameters: 8}
-var funcInfoGlPathSubCoordsNV = builder.FunctionInfo{ApiIndex: 1, ID: 342, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlPointAlongPathNV = builder.FunctionInfo{ApiIndex: 1, ID: 343, ReturnType: protocol.Type_Uint8, Parameters: 8}
-var funcInfoGlPolygonModeNV = builder.FunctionInfo{ApiIndex: 1, ID: 344, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlPopGroupMarkerEXT = builder.FunctionInfo{ApiIndex: 1, ID: 345, ReturnType: protocol.Type_Void, Parameters: 0}
-var funcInfoGlPrimitiveBoundingBoxOES = builder.FunctionInfo{ApiIndex: 1, ID: 346, ReturnType: protocol.Type_Void, Parameters: 8}
-var funcInfoGlProgramBinaryOES = builder.FunctionInfo{ApiIndex: 1, ID: 347, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlProgramParameteriEXT = builder.FunctionInfo{ApiIndex: 1, ID: 348, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlProgramPathFragmentInputGenNV = builder.FunctionInfo{ApiIndex: 1, ID: 349, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlProgramUniform1fEXT = builder.FunctionInfo{ApiIndex: 1, ID: 350, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlProgramUniform1fvEXT = builder.FunctionInfo{ApiIndex: 1, ID: 351, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlProgramUniform1iEXT = builder.FunctionInfo{ApiIndex: 1, ID: 352, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlProgramUniform1ivEXT = builder.FunctionInfo{ApiIndex: 1, ID: 353, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlProgramUniform1uiEXT = builder.FunctionInfo{ApiIndex: 1, ID: 354, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlProgramUniform1uivEXT = builder.FunctionInfo{ApiIndex: 1, ID: 355, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlProgramUniform2fEXT = builder.FunctionInfo{ApiIndex: 1, ID: 356, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlProgramUniform2fvEXT = builder.FunctionInfo{ApiIndex: 1, ID: 357, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlProgramUniform2iEXT = builder.FunctionInfo{ApiIndex: 1, ID: 358, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlProgramUniform2ivEXT = builder.FunctionInfo{ApiIndex: 1, ID: 359, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlProgramUniform2uiEXT = builder.FunctionInfo{ApiIndex: 1, ID: 360, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlProgramUniform2uivEXT = builder.FunctionInfo{ApiIndex: 1, ID: 361, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlProgramUniform3fEXT = builder.FunctionInfo{ApiIndex: 1, ID: 362, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlProgramUniform3fvEXT = builder.FunctionInfo{ApiIndex: 1, ID: 363, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlProgramUniform3iEXT = builder.FunctionInfo{ApiIndex: 1, ID: 364, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlProgramUniform3ivEXT = builder.FunctionInfo{ApiIndex: 1, ID: 365, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlProgramUniform3uiEXT = builder.FunctionInfo{ApiIndex: 1, ID: 366, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlProgramUniform3uivEXT = builder.FunctionInfo{ApiIndex: 1, ID: 367, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlProgramUniform4fEXT = builder.FunctionInfo{ApiIndex: 1, ID: 368, ReturnType: protocol.Type_Void, Parameters: 6}
-var funcInfoGlProgramUniform4fvEXT = builder.FunctionInfo{ApiIndex: 1, ID: 369, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlProgramUniform4iEXT = builder.FunctionInfo{ApiIndex: 1, ID: 370, ReturnType: protocol.Type_Void, Parameters: 6}
-var funcInfoGlProgramUniform4ivEXT = builder.FunctionInfo{ApiIndex: 1, ID: 371, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlProgramUniform4uiEXT = builder.FunctionInfo{ApiIndex: 1, ID: 372, ReturnType: protocol.Type_Void, Parameters: 6}
-var funcInfoGlProgramUniform4uivEXT = builder.FunctionInfo{ApiIndex: 1, ID: 373, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlProgramUniformHandleui64NV = builder.FunctionInfo{ApiIndex: 1, ID: 374, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlProgramUniformHandleui64vNV = builder.FunctionInfo{ApiIndex: 1, ID: 375, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlProgramUniformMatrix2fvEXT = builder.FunctionInfo{ApiIndex: 1, ID: 376, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlProgramUniformMatrix2x3fvEXT = builder.FunctionInfo{ApiIndex: 1, ID: 377, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlProgramUniformMatrix2x4fvEXT = builder.FunctionInfo{ApiIndex: 1, ID: 378, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlProgramUniformMatrix3fvEXT = builder.FunctionInfo{ApiIndex: 1, ID: 379, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlProgramUniformMatrix3x2fvEXT = builder.FunctionInfo{ApiIndex: 1, ID: 380, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlProgramUniformMatrix3x4fvEXT = builder.FunctionInfo{ApiIndex: 1, ID: 381, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlProgramUniformMatrix4fvEXT = builder.FunctionInfo{ApiIndex: 1, ID: 382, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlProgramUniformMatrix4x2fvEXT = builder.FunctionInfo{ApiIndex: 1, ID: 383, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlProgramUniformMatrix4x3fvEXT = builder.FunctionInfo{ApiIndex: 1, ID: 384, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlPushGroupMarkerEXT = builder.FunctionInfo{ApiIndex: 1, ID: 385, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlQueryCounterEXT = builder.FunctionInfo{ApiIndex: 1, ID: 386, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlRasterSamplesEXT = builder.FunctionInfo{ApiIndex: 1, ID: 387, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlReadBufferIndexedEXT = builder.FunctionInfo{ApiIndex: 1, ID: 388, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlReadBufferNV = builder.FunctionInfo{ApiIndex: 1, ID: 389, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlReadnPixelsEXT = builder.FunctionInfo{ApiIndex: 1, ID: 390, ReturnType: protocol.Type_Void, Parameters: 8}
-var funcInfoGlReadnPixelsKHR = builder.FunctionInfo{ApiIndex: 1, ID: 391, ReturnType: protocol.Type_Void, Parameters: 8}
-var funcInfoGlRenderbufferStorageMultisampleANGLE = builder.FunctionInfo{ApiIndex: 1, ID: 392, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlRenderbufferStorageMultisampleAPPLE = builder.FunctionInfo{ApiIndex: 1, ID: 393, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlRenderbufferStorageMultisampleEXT = builder.FunctionInfo{ApiIndex: 1, ID: 394, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlRenderbufferStorageMultisampleIMG = builder.FunctionInfo{ApiIndex: 1, ID: 395, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlRenderbufferStorageMultisampleNV = builder.FunctionInfo{ApiIndex: 1, ID: 396, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlResolveDepthValuesNV = builder.FunctionInfo{ApiIndex: 1, ID: 397, ReturnType: protocol.Type_Void, Parameters: 0}
-var funcInfoGlResolveMultisampleFramebufferAPPLE = builder.FunctionInfo{ApiIndex: 1, ID: 398, ReturnType: protocol.Type_Void, Parameters: 0}
-var funcInfoGlSamplerParameterIivOES = builder.FunctionInfo{ApiIndex: 1, ID: 399, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlSamplerParameterIuivOES = builder.FunctionInfo{ApiIndex: 1, ID: 400, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlScissorArrayvNV = builder.FunctionInfo{ApiIndex: 1, ID: 401, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlScissorIndexedNV = builder.FunctionInfo{ApiIndex: 1, ID: 402, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlScissorIndexedvNV = builder.FunctionInfo{ApiIndex: 1, ID: 403, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlSelectPerfMonitorCountersAMD = builder.FunctionInfo{ApiIndex: 1, ID: 404, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlSetFenceNV = builder.FunctionInfo{ApiIndex: 1, ID: 405, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlStartTilingQCOM = builder.FunctionInfo{ApiIndex: 1, ID: 406, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlStencilFillPathInstancedNV = builder.FunctionInfo{ApiIndex: 1, ID: 407, ReturnType: protocol.Type_Void, Parameters: 8}
-var funcInfoGlStencilFillPathNV = builder.FunctionInfo{ApiIndex: 1, ID: 408, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlStencilStrokePathInstancedNV = builder.FunctionInfo{ApiIndex: 1, ID: 409, ReturnType: protocol.Type_Void, Parameters: 8}
-var funcInfoGlStencilStrokePathNV = builder.FunctionInfo{ApiIndex: 1, ID: 410, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlStencilThenCoverFillPathInstancedNV = builder.FunctionInfo{ApiIndex: 1, ID: 411, ReturnType: protocol.Type_Void, Parameters: 9}
-var funcInfoGlStencilThenCoverFillPathNV = builder.FunctionInfo{ApiIndex: 1, ID: 412, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlStencilThenCoverStrokePathInstancedNV = builder.FunctionInfo{ApiIndex: 1, ID: 413, ReturnType: protocol.Type_Void, Parameters: 9}
-var funcInfoGlStencilThenCoverStrokePathNV = builder.FunctionInfo{ApiIndex: 1, ID: 414, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlSubpixelPrecisionBiasNV = builder.FunctionInfo{ApiIndex: 1, ID: 415, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlTestFenceNV = builder.FunctionInfo{ApiIndex: 1, ID: 416, ReturnType: protocol.Type_Uint8, Parameters: 1}
-var funcInfoGlTexBufferOES = builder.FunctionInfo{ApiIndex: 1, ID: 417, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlTexBufferRangeOES = builder.FunctionInfo{ApiIndex: 1, ID: 418, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlTexImage3DOES = builder.FunctionInfo{ApiIndex: 1, ID: 419, ReturnType: protocol.Type_Void, Parameters: 10}
-var funcInfoGlTexPageCommitmentEXT = builder.FunctionInfo{ApiIndex: 1, ID: 420, ReturnType: protocol.Type_Void, Parameters: 9}
-var funcInfoGlTexParameterIivOES = builder.FunctionInfo{ApiIndex: 1, ID: 421, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlTexParameterIuivOES = builder.FunctionInfo{ApiIndex: 1, ID: 422, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlTexStorage1DEXT = builder.FunctionInfo{ApiIndex: 1, ID: 423, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlTexStorage2DEXT = builder.FunctionInfo{ApiIndex: 1, ID: 424, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlTexStorage3DEXT = builder.FunctionInfo{ApiIndex: 1, ID: 425, ReturnType: protocol.Type_Void, Parameters: 6}
-var funcInfoGlTexSubImage3DOES = builder.FunctionInfo{ApiIndex: 1, ID: 426, ReturnType: protocol.Type_Void, Parameters: 11}
-var funcInfoGlTextureStorage1DEXT = builder.FunctionInfo{ApiIndex: 1, ID: 427, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlTextureStorage2DEXT = builder.FunctionInfo{ApiIndex: 1, ID: 428, ReturnType: protocol.Type_Void, Parameters: 6}
-var funcInfoGlTextureStorage3DEXT = builder.FunctionInfo{ApiIndex: 1, ID: 429, ReturnType: protocol.Type_Void, Parameters: 7}
-var funcInfoGlTextureViewEXT = builder.FunctionInfo{ApiIndex: 1, ID: 430, ReturnType: protocol.Type_Void, Parameters: 8}
-var funcInfoGlTextureViewOES = builder.FunctionInfo{ApiIndex: 1, ID: 431, ReturnType: protocol.Type_Void, Parameters: 8}
-var funcInfoGlTransformPathNV = builder.FunctionInfo{ApiIndex: 1, ID: 432, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlUniformHandleui64NV = builder.FunctionInfo{ApiIndex: 1, ID: 433, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlUniformHandleui64vNV = builder.FunctionInfo{ApiIndex: 1, ID: 434, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlUniformMatrix2x3fvNV = builder.FunctionInfo{ApiIndex: 1, ID: 435, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlUniformMatrix2x4fvNV = builder.FunctionInfo{ApiIndex: 1, ID: 436, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlUniformMatrix3x2fvNV = builder.FunctionInfo{ApiIndex: 1, ID: 437, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlUniformMatrix3x4fvNV = builder.FunctionInfo{ApiIndex: 1, ID: 438, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlUniformMatrix4x2fvNV = builder.FunctionInfo{ApiIndex: 1, ID: 439, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlUniformMatrix4x3fvNV = builder.FunctionInfo{ApiIndex: 1, ID: 440, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlUnmapBufferOES = builder.FunctionInfo{ApiIndex: 1, ID: 441, ReturnType: protocol.Type_Uint8, Parameters: 1}
-var funcInfoGlUseProgramStagesEXT = builder.FunctionInfo{ApiIndex: 1, ID: 442, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlValidateProgramPipelineEXT = builder.FunctionInfo{ApiIndex: 1, ID: 443, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlVertexAttribDivisorANGLE = builder.FunctionInfo{ApiIndex: 1, ID: 444, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlVertexAttribDivisorEXT = builder.FunctionInfo{ApiIndex: 1, ID: 445, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlVertexAttribDivisorNV = builder.FunctionInfo{ApiIndex: 1, ID: 446, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlViewportArrayvNV = builder.FunctionInfo{ApiIndex: 1, ID: 447, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlViewportIndexedfNV = builder.FunctionInfo{ApiIndex: 1, ID: 448, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlViewportIndexedfvNV = builder.FunctionInfo{ApiIndex: 1, ID: 449, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlWaitSyncAPPLE = builder.FunctionInfo{ApiIndex: 1, ID: 450, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlWeightPathsNV = builder.FunctionInfo{ApiIndex: 1, ID: 451, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlBlendBarrier = builder.FunctionInfo{ApiIndex: 1, ID: 452, ReturnType: protocol.Type_Void, Parameters: 0}
-var funcInfoGlBlendColor = builder.FunctionInfo{ApiIndex: 1, ID: 453, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlBlendEquation = builder.FunctionInfo{ApiIndex: 1, ID: 454, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlBlendEquationSeparate = builder.FunctionInfo{ApiIndex: 1, ID: 455, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlBlendEquationSeparatei = builder.FunctionInfo{ApiIndex: 1, ID: 456, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlBlendEquationi = builder.FunctionInfo{ApiIndex: 1, ID: 457, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlBlendFunc = builder.FunctionInfo{ApiIndex: 1, ID: 458, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlBlendFuncSeparate = builder.FunctionInfo{ApiIndex: 1, ID: 459, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlBlendFuncSeparatei = builder.FunctionInfo{ApiIndex: 1, ID: 460, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlBlendFunci = builder.FunctionInfo{ApiIndex: 1, ID: 461, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlDepthFunc = builder.FunctionInfo{ApiIndex: 1, ID: 462, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlSampleCoverage = builder.FunctionInfo{ApiIndex: 1, ID: 463, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlSampleMaski = builder.FunctionInfo{ApiIndex: 1, ID: 464, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlScissor = builder.FunctionInfo{ApiIndex: 1, ID: 465, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlStencilFunc = builder.FunctionInfo{ApiIndex: 1, ID: 466, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlStencilFuncSeparate = builder.FunctionInfo{ApiIndex: 1, ID: 467, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlStencilOp = builder.FunctionInfo{ApiIndex: 1, ID: 468, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlStencilOpSeparate = builder.FunctionInfo{ApiIndex: 1, ID: 469, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlBindFramebuffer = builder.FunctionInfo{ApiIndex: 1, ID: 470, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlBindRenderbuffer = builder.FunctionInfo{ApiIndex: 1, ID: 471, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlBlitFramebuffer = builder.FunctionInfo{ApiIndex: 1, ID: 472, ReturnType: protocol.Type_Void, Parameters: 10}
-var funcInfoGlCheckFramebufferStatus = builder.FunctionInfo{ApiIndex: 1, ID: 473, ReturnType: protocol.Type_Uint32, Parameters: 1}
-var funcInfoGlClear = builder.FunctionInfo{ApiIndex: 1, ID: 474, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlClearBufferfi = builder.FunctionInfo{ApiIndex: 1, ID: 475, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlClearBufferfv = builder.FunctionInfo{ApiIndex: 1, ID: 476, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlClearBufferiv = builder.FunctionInfo{ApiIndex: 1, ID: 477, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlClearBufferuiv = builder.FunctionInfo{ApiIndex: 1, ID: 478, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlClearColor = builder.FunctionInfo{ApiIndex: 1, ID: 479, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlClearDepthf = builder.FunctionInfo{ApiIndex: 1, ID: 480, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlClearStencil = builder.FunctionInfo{ApiIndex: 1, ID: 481, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlColorMask = builder.FunctionInfo{ApiIndex: 1, ID: 482, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlColorMaski = builder.FunctionInfo{ApiIndex: 1, ID: 483, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlDeleteFramebuffers = builder.FunctionInfo{ApiIndex: 1, ID: 484, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlDeleteRenderbuffers = builder.FunctionInfo{ApiIndex: 1, ID: 485, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlDepthMask = builder.FunctionInfo{ApiIndex: 1, ID: 486, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlDrawBuffers = builder.FunctionInfo{ApiIndex: 1, ID: 487, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlFramebufferParameteri = builder.FunctionInfo{ApiIndex: 1, ID: 488, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlFramebufferRenderbuffer = builder.FunctionInfo{ApiIndex: 1, ID: 489, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlFramebufferTexture = builder.FunctionInfo{ApiIndex: 1, ID: 490, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlFramebufferTexture2D = builder.FunctionInfo{ApiIndex: 1, ID: 491, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlFramebufferTextureLayer = builder.FunctionInfo{ApiIndex: 1, ID: 492, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlGenFramebuffers = builder.FunctionInfo{ApiIndex: 1, ID: 493, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlGenRenderbuffers = builder.FunctionInfo{ApiIndex: 1, ID: 494, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlGetFramebufferAttachmentParameteriv = builder.FunctionInfo{ApiIndex: 1, ID: 495, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlGetFramebufferParameteriv = builder.FunctionInfo{ApiIndex: 1, ID: 496, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetRenderbufferParameteriv = builder.FunctionInfo{ApiIndex: 1, ID: 497, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlInvalidateFramebuffer = builder.FunctionInfo{ApiIndex: 1, ID: 498, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlInvalidateSubFramebuffer = builder.FunctionInfo{ApiIndex: 1, ID: 499, ReturnType: protocol.Type_Void, Parameters: 7}
-var funcInfoGlIsFramebuffer = builder.FunctionInfo{ApiIndex: 1, ID: 500, ReturnType: protocol.Type_Uint8, Parameters: 1}
-var funcInfoGlIsRenderbuffer = builder.FunctionInfo{ApiIndex: 1, ID: 501, ReturnType: protocol.Type_Uint8, Parameters: 1}
-var funcInfoGlReadBuffer = builder.FunctionInfo{ApiIndex: 1, ID: 502, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlReadPixels = builder.FunctionInfo{ApiIndex: 1, ID: 503, ReturnType: protocol.Type_Void, Parameters: 7}
-var funcInfoGlReadnPixels = builder.FunctionInfo{ApiIndex: 1, ID: 504, ReturnType: protocol.Type_Void, Parameters: 8}
-var funcInfoGlRenderbufferStorage = builder.FunctionInfo{ApiIndex: 1, ID: 505, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlRenderbufferStorageMultisample = builder.FunctionInfo{ApiIndex: 1, ID: 506, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlStencilMask = builder.FunctionInfo{ApiIndex: 1, ID: 507, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlStencilMaskSeparate = builder.FunctionInfo{ApiIndex: 1, ID: 508, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlDisable = builder.FunctionInfo{ApiIndex: 1, ID: 509, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlDisablei = builder.FunctionInfo{ApiIndex: 1, ID: 510, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlEnable = builder.FunctionInfo{ApiIndex: 1, ID: 511, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlEnablei = builder.FunctionInfo{ApiIndex: 1, ID: 512, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlFinish = builder.FunctionInfo{ApiIndex: 1, ID: 513, ReturnType: protocol.Type_Void, Parameters: 0}
-var funcInfoGlFlush = builder.FunctionInfo{ApiIndex: 1, ID: 514, ReturnType: protocol.Type_Void, Parameters: 0}
-var funcInfoGlGetError = builder.FunctionInfo{ApiIndex: 1, ID: 515, ReturnType: protocol.Type_Uint32, Parameters: 0}
-var funcInfoGlGetGraphicsResetStatus = builder.FunctionInfo{ApiIndex: 1, ID: 516, ReturnType: protocol.Type_Uint32, Parameters: 0}
-var funcInfoGlHint = builder.FunctionInfo{ApiIndex: 1, ID: 517, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlActiveShaderProgram = builder.FunctionInfo{ApiIndex: 1, ID: 518, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlAttachShader = builder.FunctionInfo{ApiIndex: 1, ID: 519, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlBindAttribLocation = builder.FunctionInfo{ApiIndex: 1, ID: 520, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlBindProgramPipeline = builder.FunctionInfo{ApiIndex: 1, ID: 521, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlCompileShader = builder.FunctionInfo{ApiIndex: 1, ID: 522, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlCreateProgram = builder.FunctionInfo{ApiIndex: 1, ID: 523, ReturnType: protocol.Type_Uint32, Parameters: 0}
-var funcInfoGlCreateShader = builder.FunctionInfo{ApiIndex: 1, ID: 524, ReturnType: protocol.Type_Uint32, Parameters: 1}
-var funcInfoGlCreateShaderProgramv = builder.FunctionInfo{ApiIndex: 1, ID: 525, ReturnType: protocol.Type_Uint32, Parameters: 3}
-var funcInfoGlDeleteProgram = builder.FunctionInfo{ApiIndex: 1, ID: 526, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlDeleteProgramPipelines = builder.FunctionInfo{ApiIndex: 1, ID: 527, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlDeleteShader = builder.FunctionInfo{ApiIndex: 1, ID: 528, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlDetachShader = builder.FunctionInfo{ApiIndex: 1, ID: 529, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlDispatchCompute = builder.FunctionInfo{ApiIndex: 1, ID: 530, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlDispatchComputeIndirect = builder.FunctionInfo{ApiIndex: 1, ID: 531, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlGenProgramPipelines = builder.FunctionInfo{ApiIndex: 1, ID: 532, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlGetActiveAttrib = builder.FunctionInfo{ApiIndex: 1, ID: 533, ReturnType: protocol.Type_Void, Parameters: 7}
-var funcInfoGlGetActiveUniform = builder.FunctionInfo{ApiIndex: 1, ID: 534, ReturnType: protocol.Type_Void, Parameters: 7}
-var funcInfoGlGetActiveUniformBlockName = builder.FunctionInfo{ApiIndex: 1, ID: 535, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlGetActiveUniformBlockiv = builder.FunctionInfo{ApiIndex: 1, ID: 536, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlGetActiveUniformsiv = builder.FunctionInfo{ApiIndex: 1, ID: 537, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlGetAttachedShaders = builder.FunctionInfo{ApiIndex: 1, ID: 538, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlGetAttribLocation = builder.FunctionInfo{ApiIndex: 1, ID: 539, ReturnType: protocol.Type_Int32, Parameters: 2}
-var funcInfoGlGetFragDataLocation = builder.FunctionInfo{ApiIndex: 1, ID: 540, ReturnType: protocol.Type_Int32, Parameters: 2}
-var funcInfoGlGetProgramBinary = builder.FunctionInfo{ApiIndex: 1, ID: 541, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlGetProgramInfoLog = builder.FunctionInfo{ApiIndex: 1, ID: 542, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlGetProgramInterfaceiv = builder.FunctionInfo{ApiIndex: 1, ID: 543, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlGetProgramPipelineInfoLog = builder.FunctionInfo{ApiIndex: 1, ID: 544, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlGetProgramPipelineiv = builder.FunctionInfo{ApiIndex: 1, ID: 545, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetProgramResourceIndex = builder.FunctionInfo{ApiIndex: 1, ID: 546, ReturnType: protocol.Type_Uint32, Parameters: 3}
-var funcInfoGlGetProgramResourceLocation = builder.FunctionInfo{ApiIndex: 1, ID: 547, ReturnType: protocol.Type_Int32, Parameters: 3}
-var funcInfoGlGetProgramResourceName = builder.FunctionInfo{ApiIndex: 1, ID: 548, ReturnType: protocol.Type_Void, Parameters: 6}
-var funcInfoGlGetProgramResourceiv = builder.FunctionInfo{ApiIndex: 1, ID: 549, ReturnType: protocol.Type_Void, Parameters: 8}
-var funcInfoGlGetProgramiv = builder.FunctionInfo{ApiIndex: 1, ID: 550, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetShaderInfoLog = builder.FunctionInfo{ApiIndex: 1, ID: 551, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlGetShaderPrecisionFormat = builder.FunctionInfo{ApiIndex: 1, ID: 552, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlGetShaderSource = builder.FunctionInfo{ApiIndex: 1, ID: 553, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlGetShaderiv = builder.FunctionInfo{ApiIndex: 1, ID: 554, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetUniformBlockIndex = builder.FunctionInfo{ApiIndex: 1, ID: 555, ReturnType: protocol.Type_Uint32, Parameters: 2}
-var funcInfoGlGetUniformIndices = builder.FunctionInfo{ApiIndex: 1, ID: 556, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlGetUniformLocation = builder.FunctionInfo{ApiIndex: 1, ID: 557, ReturnType: protocol.Type_Int32, Parameters: 2}
-var funcInfoGlGetUniformfv = builder.FunctionInfo{ApiIndex: 1, ID: 558, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetUniformiv = builder.FunctionInfo{ApiIndex: 1, ID: 559, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetUniformuiv = builder.FunctionInfo{ApiIndex: 1, ID: 560, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetnUniformfv = builder.FunctionInfo{ApiIndex: 1, ID: 561, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlGetnUniformiv = builder.FunctionInfo{ApiIndex: 1, ID: 562, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlGetnUniformuiv = builder.FunctionInfo{ApiIndex: 1, ID: 563, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlIsProgram = builder.FunctionInfo{ApiIndex: 1, ID: 564, ReturnType: protocol.Type_Uint8, Parameters: 1}
-var funcInfoGlIsProgramPipeline = builder.FunctionInfo{ApiIndex: 1, ID: 565, ReturnType: protocol.Type_Uint8, Parameters: 1}
-var funcInfoGlIsShader = builder.FunctionInfo{ApiIndex: 1, ID: 566, ReturnType: protocol.Type_Uint8, Parameters: 1}
-var funcInfoGlLinkProgram = builder.FunctionInfo{ApiIndex: 1, ID: 567, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlMemoryBarrier = builder.FunctionInfo{ApiIndex: 1, ID: 568, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlMemoryBarrierByRegion = builder.FunctionInfo{ApiIndex: 1, ID: 569, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlProgramBinary = builder.FunctionInfo{ApiIndex: 1, ID: 570, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlProgramParameteri = builder.FunctionInfo{ApiIndex: 1, ID: 571, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlProgramUniform1f = builder.FunctionInfo{ApiIndex: 1, ID: 572, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlProgramUniform1fv = builder.FunctionInfo{ApiIndex: 1, ID: 573, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlProgramUniform1i = builder.FunctionInfo{ApiIndex: 1, ID: 574, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlProgramUniform1iv = builder.FunctionInfo{ApiIndex: 1, ID: 575, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlProgramUniform1ui = builder.FunctionInfo{ApiIndex: 1, ID: 576, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlProgramUniform1uiv = builder.FunctionInfo{ApiIndex: 1, ID: 577, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlProgramUniform2f = builder.FunctionInfo{ApiIndex: 1, ID: 578, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlProgramUniform2fv = builder.FunctionInfo{ApiIndex: 1, ID: 579, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlProgramUniform2i = builder.FunctionInfo{ApiIndex: 1, ID: 580, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlProgramUniform2iv = builder.FunctionInfo{ApiIndex: 1, ID: 581, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlProgramUniform2ui = builder.FunctionInfo{ApiIndex: 1, ID: 582, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlProgramUniform2uiv = builder.FunctionInfo{ApiIndex: 1, ID: 583, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlProgramUniform3f = builder.FunctionInfo{ApiIndex: 1, ID: 584, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlProgramUniform3fv = builder.FunctionInfo{ApiIndex: 1, ID: 585, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlProgramUniform3i = builder.FunctionInfo{ApiIndex: 1, ID: 586, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlProgramUniform3iv = builder.FunctionInfo{ApiIndex: 1, ID: 587, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlProgramUniform3ui = builder.FunctionInfo{ApiIndex: 1, ID: 588, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlProgramUniform3uiv = builder.FunctionInfo{ApiIndex: 1, ID: 589, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlProgramUniform4f = builder.FunctionInfo{ApiIndex: 1, ID: 590, ReturnType: protocol.Type_Void, Parameters: 6}
-var funcInfoGlProgramUniform4fv = builder.FunctionInfo{ApiIndex: 1, ID: 591, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlProgramUniform4i = builder.FunctionInfo{ApiIndex: 1, ID: 592, ReturnType: protocol.Type_Void, Parameters: 6}
-var funcInfoGlProgramUniform4iv = builder.FunctionInfo{ApiIndex: 1, ID: 593, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlProgramUniform4ui = builder.FunctionInfo{ApiIndex: 1, ID: 594, ReturnType: protocol.Type_Void, Parameters: 6}
-var funcInfoGlProgramUniform4uiv = builder.FunctionInfo{ApiIndex: 1, ID: 595, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlProgramUniformMatrix2fv = builder.FunctionInfo{ApiIndex: 1, ID: 596, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlProgramUniformMatrix2x3fv = builder.FunctionInfo{ApiIndex: 1, ID: 597, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlProgramUniformMatrix2x4fv = builder.FunctionInfo{ApiIndex: 1, ID: 598, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlProgramUniformMatrix3fv = builder.FunctionInfo{ApiIndex: 1, ID: 599, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlProgramUniformMatrix3x2fv = builder.FunctionInfo{ApiIndex: 1, ID: 600, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlProgramUniformMatrix3x4fv = builder.FunctionInfo{ApiIndex: 1, ID: 601, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlProgramUniformMatrix4fv = builder.FunctionInfo{ApiIndex: 1, ID: 602, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlProgramUniformMatrix4x2fv = builder.FunctionInfo{ApiIndex: 1, ID: 603, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlProgramUniformMatrix4x3fv = builder.FunctionInfo{ApiIndex: 1, ID: 604, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlReleaseShaderCompiler = builder.FunctionInfo{ApiIndex: 1, ID: 605, ReturnType: protocol.Type_Void, Parameters: 0}
-var funcInfoGlShaderBinary = builder.FunctionInfo{ApiIndex: 1, ID: 606, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlShaderSource = builder.FunctionInfo{ApiIndex: 1, ID: 607, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlUniform1f = builder.FunctionInfo{ApiIndex: 1, ID: 608, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlUniform1fv = builder.FunctionInfo{ApiIndex: 1, ID: 609, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlUniform1i = builder.FunctionInfo{ApiIndex: 1, ID: 610, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlUniform1iv = builder.FunctionInfo{ApiIndex: 1, ID: 611, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlUniform1ui = builder.FunctionInfo{ApiIndex: 1, ID: 612, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlUniform1uiv = builder.FunctionInfo{ApiIndex: 1, ID: 613, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlUniform2f = builder.FunctionInfo{ApiIndex: 1, ID: 614, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlUniform2fv = builder.FunctionInfo{ApiIndex: 1, ID: 615, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlUniform2i = builder.FunctionInfo{ApiIndex: 1, ID: 616, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlUniform2iv = builder.FunctionInfo{ApiIndex: 1, ID: 617, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlUniform2ui = builder.FunctionInfo{ApiIndex: 1, ID: 618, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlUniform2uiv = builder.FunctionInfo{ApiIndex: 1, ID: 619, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlUniform3f = builder.FunctionInfo{ApiIndex: 1, ID: 620, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlUniform3fv = builder.FunctionInfo{ApiIndex: 1, ID: 621, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlUniform3i = builder.FunctionInfo{ApiIndex: 1, ID: 622, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlUniform3iv = builder.FunctionInfo{ApiIndex: 1, ID: 623, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlUniform3ui = builder.FunctionInfo{ApiIndex: 1, ID: 624, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlUniform3uiv = builder.FunctionInfo{ApiIndex: 1, ID: 625, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlUniform4f = builder.FunctionInfo{ApiIndex: 1, ID: 626, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlUniform4fv = builder.FunctionInfo{ApiIndex: 1, ID: 627, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlUniform4i = builder.FunctionInfo{ApiIndex: 1, ID: 628, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlUniform4iv = builder.FunctionInfo{ApiIndex: 1, ID: 629, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlUniform4ui = builder.FunctionInfo{ApiIndex: 1, ID: 630, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlUniform4uiv = builder.FunctionInfo{ApiIndex: 1, ID: 631, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlUniformBlockBinding = builder.FunctionInfo{ApiIndex: 1, ID: 632, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlUniformMatrix2fv = builder.FunctionInfo{ApiIndex: 1, ID: 633, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlUniformMatrix2x3fv = builder.FunctionInfo{ApiIndex: 1, ID: 634, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlUniformMatrix2x4fv = builder.FunctionInfo{ApiIndex: 1, ID: 635, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlUniformMatrix3fv = builder.FunctionInfo{ApiIndex: 1, ID: 636, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlUniformMatrix3x2fv = builder.FunctionInfo{ApiIndex: 1, ID: 637, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlUniformMatrix3x4fv = builder.FunctionInfo{ApiIndex: 1, ID: 638, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlUniformMatrix4fv = builder.FunctionInfo{ApiIndex: 1, ID: 639, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlUniformMatrix4x2fv = builder.FunctionInfo{ApiIndex: 1, ID: 640, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlUniformMatrix4x3fv = builder.FunctionInfo{ApiIndex: 1, ID: 641, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlUseProgram = builder.FunctionInfo{ApiIndex: 1, ID: 642, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlUseProgramStages = builder.FunctionInfo{ApiIndex: 1, ID: 643, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlValidateProgram = builder.FunctionInfo{ApiIndex: 1, ID: 644, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlValidateProgramPipeline = builder.FunctionInfo{ApiIndex: 1, ID: 645, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlCullFace = builder.FunctionInfo{ApiIndex: 1, ID: 646, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlDepthRangef = builder.FunctionInfo{ApiIndex: 1, ID: 647, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlFrontFace = builder.FunctionInfo{ApiIndex: 1, ID: 648, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlGetMultisamplefv = builder.FunctionInfo{ApiIndex: 1, ID: 649, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlLineWidth = builder.FunctionInfo{ApiIndex: 1, ID: 650, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlMinSampleShading = builder.FunctionInfo{ApiIndex: 1, ID: 651, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlPolygonOffset = builder.FunctionInfo{ApiIndex: 1, ID: 652, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlViewport = builder.FunctionInfo{ApiIndex: 1, ID: 653, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlGetBooleani_v = builder.FunctionInfo{ApiIndex: 1, ID: 654, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetBooleanv = builder.FunctionInfo{ApiIndex: 1, ID: 655, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlGetFloatv = builder.FunctionInfo{ApiIndex: 1, ID: 656, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlGetInteger64i_v = builder.FunctionInfo{ApiIndex: 1, ID: 657, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetInteger64v = builder.FunctionInfo{ApiIndex: 1, ID: 658, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlGetIntegeri_v = builder.FunctionInfo{ApiIndex: 1, ID: 659, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetIntegerv = builder.FunctionInfo{ApiIndex: 1, ID: 660, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlGetInternalformativ = builder.FunctionInfo{ApiIndex: 1, ID: 661, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlGetString = builder.FunctionInfo{ApiIndex: 1, ID: 662, ReturnType: protocol.Type_AbsolutePointer, Parameters: 1}
-var funcInfoGlGetStringi = builder.FunctionInfo{ApiIndex: 1, ID: 663, ReturnType: protocol.Type_AbsolutePointer, Parameters: 2}
-var funcInfoGlIsEnabled = builder.FunctionInfo{ApiIndex: 1, ID: 664, ReturnType: protocol.Type_Uint8, Parameters: 1}
-var funcInfoGlIsEnabledi = builder.FunctionInfo{ApiIndex: 1, ID: 665, ReturnType: protocol.Type_Uint8, Parameters: 2}
-var funcInfoGlClientWaitSync = builder.FunctionInfo{ApiIndex: 1, ID: 666, ReturnType: protocol.Type_Uint32, Parameters: 3}
-var funcInfoGlDeleteSync = builder.FunctionInfo{ApiIndex: 1, ID: 667, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlFenceSync = builder.FunctionInfo{ApiIndex: 1, ID: 668, ReturnType: protocol.Type_AbsolutePointer, Parameters: 2}
-var funcInfoGlGetSynciv = builder.FunctionInfo{ApiIndex: 1, ID: 669, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlIsSync = builder.FunctionInfo{ApiIndex: 1, ID: 670, ReturnType: protocol.Type_Uint8, Parameters: 1}
-var funcInfoGlWaitSync = builder.FunctionInfo{ApiIndex: 1, ID: 671, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlActiveTexture = builder.FunctionInfo{ApiIndex: 1, ID: 672, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlBindImageTexture = builder.FunctionInfo{ApiIndex: 1, ID: 673, ReturnType: protocol.Type_Void, Parameters: 7}
-var funcInfoGlBindSampler = builder.FunctionInfo{ApiIndex: 1, ID: 674, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlBindTexture = builder.FunctionInfo{ApiIndex: 1, ID: 675, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlCompressedTexImage2D = builder.FunctionInfo{ApiIndex: 1, ID: 676, ReturnType: protocol.Type_Void, Parameters: 8}
-var funcInfoGlCompressedTexImage3D = builder.FunctionInfo{ApiIndex: 1, ID: 677, ReturnType: protocol.Type_Void, Parameters: 9}
-var funcInfoGlCompressedTexSubImage2D = builder.FunctionInfo{ApiIndex: 1, ID: 678, ReturnType: protocol.Type_Void, Parameters: 9}
-var funcInfoGlCompressedTexSubImage3D = builder.FunctionInfo{ApiIndex: 1, ID: 679, ReturnType: protocol.Type_Void, Parameters: 11}
-var funcInfoGlCopyImageSubData = builder.FunctionInfo{ApiIndex: 1, ID: 680, ReturnType: protocol.Type_Void, Parameters: 15}
-var funcInfoGlCopyTexImage2D = builder.FunctionInfo{ApiIndex: 1, ID: 681, ReturnType: protocol.Type_Void, Parameters: 8}
-var funcInfoGlCopyTexSubImage2D = builder.FunctionInfo{ApiIndex: 1, ID: 682, ReturnType: protocol.Type_Void, Parameters: 8}
-var funcInfoGlCopyTexSubImage3D = builder.FunctionInfo{ApiIndex: 1, ID: 683, ReturnType: protocol.Type_Void, Parameters: 9}
-var funcInfoGlDeleteSamplers = builder.FunctionInfo{ApiIndex: 1, ID: 684, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlDeleteTextures = builder.FunctionInfo{ApiIndex: 1, ID: 685, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlGenSamplers = builder.FunctionInfo{ApiIndex: 1, ID: 686, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlGenTextures = builder.FunctionInfo{ApiIndex: 1, ID: 687, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlGenerateMipmap = builder.FunctionInfo{ApiIndex: 1, ID: 688, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlGetSamplerParameterIiv = builder.FunctionInfo{ApiIndex: 1, ID: 689, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetSamplerParameterIuiv = builder.FunctionInfo{ApiIndex: 1, ID: 690, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetSamplerParameterfv = builder.FunctionInfo{ApiIndex: 1, ID: 691, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetSamplerParameteriv = builder.FunctionInfo{ApiIndex: 1, ID: 692, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetTexLevelParameterfv = builder.FunctionInfo{ApiIndex: 1, ID: 693, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlGetTexLevelParameteriv = builder.FunctionInfo{ApiIndex: 1, ID: 694, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlGetTexParameterIiv = builder.FunctionInfo{ApiIndex: 1, ID: 695, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetTexParameterIuiv = builder.FunctionInfo{ApiIndex: 1, ID: 696, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetTexParameterfv = builder.FunctionInfo{ApiIndex: 1, ID: 697, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetTexParameteriv = builder.FunctionInfo{ApiIndex: 1, ID: 698, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlIsSampler = builder.FunctionInfo{ApiIndex: 1, ID: 699, ReturnType: protocol.Type_Uint8, Parameters: 1}
-var funcInfoGlIsTexture = builder.FunctionInfo{ApiIndex: 1, ID: 700, ReturnType: protocol.Type_Uint8, Parameters: 1}
-var funcInfoGlPixelStorei = builder.FunctionInfo{ApiIndex: 1, ID: 701, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlSamplerParameterIiv = builder.FunctionInfo{ApiIndex: 1, ID: 702, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlSamplerParameterIuiv = builder.FunctionInfo{ApiIndex: 1, ID: 703, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlSamplerParameterf = builder.FunctionInfo{ApiIndex: 1, ID: 704, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlSamplerParameterfv = builder.FunctionInfo{ApiIndex: 1, ID: 705, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlSamplerParameteri = builder.FunctionInfo{ApiIndex: 1, ID: 706, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlSamplerParameteriv = builder.FunctionInfo{ApiIndex: 1, ID: 707, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlTexBuffer = builder.FunctionInfo{ApiIndex: 1, ID: 708, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlTexBufferRange = builder.FunctionInfo{ApiIndex: 1, ID: 709, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlTexImage2D = builder.FunctionInfo{ApiIndex: 1, ID: 710, ReturnType: protocol.Type_Void, Parameters: 9}
-var funcInfoGlTexImage3D = builder.FunctionInfo{ApiIndex: 1, ID: 711, ReturnType: protocol.Type_Void, Parameters: 10}
-var funcInfoGlTexParameterIiv = builder.FunctionInfo{ApiIndex: 1, ID: 712, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlTexParameterIuiv = builder.FunctionInfo{ApiIndex: 1, ID: 713, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlTexParameterf = builder.FunctionInfo{ApiIndex: 1, ID: 714, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlTexParameterfv = builder.FunctionInfo{ApiIndex: 1, ID: 715, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlTexParameteri = builder.FunctionInfo{ApiIndex: 1, ID: 716, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlTexParameteriv = builder.FunctionInfo{ApiIndex: 1, ID: 717, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlTexStorage2D = builder.FunctionInfo{ApiIndex: 1, ID: 718, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlTexStorage2DMultisample = builder.FunctionInfo{ApiIndex: 1, ID: 719, ReturnType: protocol.Type_Void, Parameters: 6}
-var funcInfoGlTexStorage3D = builder.FunctionInfo{ApiIndex: 1, ID: 720, ReturnType: protocol.Type_Void, Parameters: 6}
-var funcInfoGlTexStorage3DMultisample = builder.FunctionInfo{ApiIndex: 1, ID: 721, ReturnType: protocol.Type_Void, Parameters: 7}
-var funcInfoGlTexSubImage2D = builder.FunctionInfo{ApiIndex: 1, ID: 722, ReturnType: protocol.Type_Void, Parameters: 9}
-var funcInfoGlTexSubImage3D = builder.FunctionInfo{ApiIndex: 1, ID: 723, ReturnType: protocol.Type_Void, Parameters: 11}
-var funcInfoGlBeginTransformFeedback = builder.FunctionInfo{ApiIndex: 1, ID: 724, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlBindTransformFeedback = builder.FunctionInfo{ApiIndex: 1, ID: 725, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlDeleteTransformFeedbacks = builder.FunctionInfo{ApiIndex: 1, ID: 726, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlEndTransformFeedback = builder.FunctionInfo{ApiIndex: 1, ID: 727, ReturnType: protocol.Type_Void, Parameters: 0}
-var funcInfoGlGenTransformFeedbacks = builder.FunctionInfo{ApiIndex: 1, ID: 728, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlGetTransformFeedbackVarying = builder.FunctionInfo{ApiIndex: 1, ID: 729, ReturnType: protocol.Type_Void, Parameters: 7}
-var funcInfoGlIsTransformFeedback = builder.FunctionInfo{ApiIndex: 1, ID: 730, ReturnType: protocol.Type_Uint8, Parameters: 1}
-var funcInfoGlPauseTransformFeedback = builder.FunctionInfo{ApiIndex: 1, ID: 731, ReturnType: protocol.Type_Void, Parameters: 0}
-var funcInfoGlResumeTransformFeedback = builder.FunctionInfo{ApiIndex: 1, ID: 732, ReturnType: protocol.Type_Void, Parameters: 0}
-var funcInfoGlTransformFeedbackVaryings = builder.FunctionInfo{ApiIndex: 1, ID: 733, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlBindVertexArray = builder.FunctionInfo{ApiIndex: 1, ID: 734, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlBindVertexBuffer = builder.FunctionInfo{ApiIndex: 1, ID: 735, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlDeleteVertexArrays = builder.FunctionInfo{ApiIndex: 1, ID: 736, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlDisableVertexAttribArray = builder.FunctionInfo{ApiIndex: 1, ID: 737, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlEnableVertexAttribArray = builder.FunctionInfo{ApiIndex: 1, ID: 738, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlGenVertexArrays = builder.FunctionInfo{ApiIndex: 1, ID: 739, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlGetVertexAttribIiv = builder.FunctionInfo{ApiIndex: 1, ID: 740, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetVertexAttribIuiv = builder.FunctionInfo{ApiIndex: 1, ID: 741, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetVertexAttribPointerv = builder.FunctionInfo{ApiIndex: 1, ID: 742, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetVertexAttribfv = builder.FunctionInfo{ApiIndex: 1, ID: 743, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetVertexAttribiv = builder.FunctionInfo{ApiIndex: 1, ID: 744, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlIsVertexArray = builder.FunctionInfo{ApiIndex: 1, ID: 745, ReturnType: protocol.Type_Uint8, Parameters: 1}
-var funcInfoGlVertexAttrib1f = builder.FunctionInfo{ApiIndex: 1, ID: 746, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlVertexAttrib1fv = builder.FunctionInfo{ApiIndex: 1, ID: 747, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlVertexAttrib2f = builder.FunctionInfo{ApiIndex: 1, ID: 748, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlVertexAttrib2fv = builder.FunctionInfo{ApiIndex: 1, ID: 749, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlVertexAttrib3f = builder.FunctionInfo{ApiIndex: 1, ID: 750, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlVertexAttrib3fv = builder.FunctionInfo{ApiIndex: 1, ID: 751, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlVertexAttrib4f = builder.FunctionInfo{ApiIndex: 1, ID: 752, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlVertexAttrib4fv = builder.FunctionInfo{ApiIndex: 1, ID: 753, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlVertexAttribBinding = builder.FunctionInfo{ApiIndex: 1, ID: 754, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlVertexAttribDivisor = builder.FunctionInfo{ApiIndex: 1, ID: 755, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlVertexAttribFormat = builder.FunctionInfo{ApiIndex: 1, ID: 756, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlVertexAttribI4i = builder.FunctionInfo{ApiIndex: 1, ID: 757, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlVertexAttribI4iv = builder.FunctionInfo{ApiIndex: 1, ID: 758, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlVertexAttribI4ui = builder.FunctionInfo{ApiIndex: 1, ID: 759, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlVertexAttribI4uiv = builder.FunctionInfo{ApiIndex: 1, ID: 760, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlVertexAttribIFormat = builder.FunctionInfo{ApiIndex: 1, ID: 761, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlVertexAttribIPointer = builder.FunctionInfo{ApiIndex: 1, ID: 762, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlVertexAttribPointer = builder.FunctionInfo{ApiIndex: 1, ID: 763, ReturnType: protocol.Type_Void, Parameters: 6}
-var funcInfoGlVertexBindingDivisor = builder.FunctionInfo{ApiIndex: 1, ID: 764, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlXCreateContext = builder.FunctionInfo{ApiIndex: 1, ID: 765, ReturnType: protocol.Type_AbsolutePointer, Parameters: 4}
-var funcInfoGlXCreateNewContext = builder.FunctionInfo{ApiIndex: 1, ID: 766, ReturnType: protocol.Type_AbsolutePointer, Parameters: 5}
-var funcInfoGlXMakeContextCurrent = builder.FunctionInfo{ApiIndex: 1, ID: 767, ReturnType: protocol.Type_Int64, Parameters: 4}
-var funcInfoGlXMakeCurrent = builder.FunctionInfo{ApiIndex: 1, ID: 768, ReturnType: protocol.Type_Int64, Parameters: 3}
-var funcInfoGlXSwapBuffers = builder.FunctionInfo{ApiIndex: 1, ID: 769, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlXQueryDrawable = builder.FunctionInfo{ApiIndex: 1, ID: 770, ReturnType: protocol.Type_Int64, Parameters: 4}
-var funcInfoWglCreateContext = builder.FunctionInfo{ApiIndex: 1, ID: 771, ReturnType: protocol.Type_AbsolutePointer, Parameters: 1}
-var funcInfoWglCreateContextAttribsARB = builder.FunctionInfo{ApiIndex: 1, ID: 772, ReturnType: protocol.Type_AbsolutePointer, Parameters: 3}
-var funcInfoWglMakeCurrent = builder.FunctionInfo{ApiIndex: 1, ID: 773, ReturnType: protocol.Type_Int64, Parameters: 2}
-var funcInfoWglSwapBuffers = builder.FunctionInfo{ApiIndex: 1, ID: 774, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoCGLCreateContext = builder.FunctionInfo{ApiIndex: 1, ID: 775, ReturnType: protocol.Type_Int64, Parameters: 3}
-var funcInfoCGLSetCurrentContext = builder.FunctionInfo{ApiIndex: 1, ID: 776, ReturnType: protocol.Type_Int64, Parameters: 1}
-var funcInfoCGLGetSurface = builder.FunctionInfo{ApiIndex: 1, ID: 777, ReturnType: protocol.Type_Int64, Parameters: 4}
-var funcInfoCGSGetSurfaceBounds = builder.FunctionInfo{ApiIndex: 1, ID: 778, ReturnType: protocol.Type_Int64, Parameters: 4}
-var funcInfoCGLFlushDrawable = builder.FunctionInfo{ApiIndex: 1, ID: 779, ReturnType: protocol.Type_Int64, Parameters: 1}
-var funcInfoGlGetQueryObjecti64v = builder.FunctionInfo{ApiIndex: 1, ID: 780, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetQueryObjectui64v = builder.FunctionInfo{ApiIndex: 1, ID: 781, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlTexStorage1D = builder.FunctionInfo{ApiIndex: 1, ID: 782, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlBindFragDataLocation = builder.FunctionInfo{ApiIndex: 1, ID: 783, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlAlphaFunc = builder.FunctionInfo{ApiIndex: 1, ID: 784, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlAlphaFuncx = builder.FunctionInfo{ApiIndex: 1, ID: 785, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlAlphaFuncxOES = builder.FunctionInfo{ApiIndex: 1, ID: 786, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlBindFramebufferOES = builder.FunctionInfo{ApiIndex: 1, ID: 787, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlBindRenderbufferOES = builder.FunctionInfo{ApiIndex: 1, ID: 788, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlBlendEquationOES = builder.FunctionInfo{ApiIndex: 1, ID: 789, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlBlendEquationSeparateOES = builder.FunctionInfo{ApiIndex: 1, ID: 790, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlBlendFuncSeparateOES = builder.FunctionInfo{ApiIndex: 1, ID: 791, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlCheckFramebufferStatusOES = builder.FunctionInfo{ApiIndex: 1, ID: 792, ReturnType: protocol.Type_Uint32, Parameters: 1}
-var funcInfoGlClearColorx = builder.FunctionInfo{ApiIndex: 1, ID: 793, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlClearColorxOES = builder.FunctionInfo{ApiIndex: 1, ID: 794, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlClearDepthfOES = builder.FunctionInfo{ApiIndex: 1, ID: 795, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlClearDepthx = builder.FunctionInfo{ApiIndex: 1, ID: 796, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlClearDepthxOES = builder.FunctionInfo{ApiIndex: 1, ID: 797, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlClientActiveTexture = builder.FunctionInfo{ApiIndex: 1, ID: 798, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlClipPlanef = builder.FunctionInfo{ApiIndex: 1, ID: 799, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlClipPlanefIMG = builder.FunctionInfo{ApiIndex: 1, ID: 800, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlClipPlanefOES = builder.FunctionInfo{ApiIndex: 1, ID: 801, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlClipPlanex = builder.FunctionInfo{ApiIndex: 1, ID: 802, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlClipPlanexIMG = builder.FunctionInfo{ApiIndex: 1, ID: 803, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlClipPlanexOES = builder.FunctionInfo{ApiIndex: 1, ID: 804, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlColor4f = builder.FunctionInfo{ApiIndex: 1, ID: 805, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlColor4ub = builder.FunctionInfo{ApiIndex: 1, ID: 806, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlColor4x = builder.FunctionInfo{ApiIndex: 1, ID: 807, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlColor4xOES = builder.FunctionInfo{ApiIndex: 1, ID: 808, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlColorPointer = builder.FunctionInfo{ApiIndex: 1, ID: 809, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlCurrentPaletteMatrixOES = builder.FunctionInfo{ApiIndex: 1, ID: 810, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlDeleteFramebuffersOES = builder.FunctionInfo{ApiIndex: 1, ID: 811, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlDeleteRenderbuffersOES = builder.FunctionInfo{ApiIndex: 1, ID: 812, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlDepthRangefOES = builder.FunctionInfo{ApiIndex: 1, ID: 813, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlDepthRangex = builder.FunctionInfo{ApiIndex: 1, ID: 814, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlDepthRangexOES = builder.FunctionInfo{ApiIndex: 1, ID: 815, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlDisableClientState = builder.FunctionInfo{ApiIndex: 1, ID: 816, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlDrawTexfOES = builder.FunctionInfo{ApiIndex: 1, ID: 817, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlDrawTexfvOES = builder.FunctionInfo{ApiIndex: 1, ID: 818, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlDrawTexiOES = builder.FunctionInfo{ApiIndex: 1, ID: 819, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlDrawTexivOES = builder.FunctionInfo{ApiIndex: 1, ID: 820, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlDrawTexsOES = builder.FunctionInfo{ApiIndex: 1, ID: 821, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlDrawTexsvOES = builder.FunctionInfo{ApiIndex: 1, ID: 822, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlDrawTexxOES = builder.FunctionInfo{ApiIndex: 1, ID: 823, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlDrawTexxvOES = builder.FunctionInfo{ApiIndex: 1, ID: 824, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlEnableClientState = builder.FunctionInfo{ApiIndex: 1, ID: 825, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlFogf = builder.FunctionInfo{ApiIndex: 1, ID: 826, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlFogfv = builder.FunctionInfo{ApiIndex: 1, ID: 827, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlFogx = builder.FunctionInfo{ApiIndex: 1, ID: 828, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlFogxOES = builder.FunctionInfo{ApiIndex: 1, ID: 829, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlFogxv = builder.FunctionInfo{ApiIndex: 1, ID: 830, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlFogxvOES = builder.FunctionInfo{ApiIndex: 1, ID: 831, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlFramebufferRenderbufferOES = builder.FunctionInfo{ApiIndex: 1, ID: 832, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlFramebufferTexture2DOES = builder.FunctionInfo{ApiIndex: 1, ID: 833, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlFrustumf = builder.FunctionInfo{ApiIndex: 1, ID: 834, ReturnType: protocol.Type_Void, Parameters: 6}
-var funcInfoGlFrustumfOES = builder.FunctionInfo{ApiIndex: 1, ID: 835, ReturnType: protocol.Type_Void, Parameters: 6}
-var funcInfoGlFrustumx = builder.FunctionInfo{ApiIndex: 1, ID: 836, ReturnType: protocol.Type_Void, Parameters: 6}
-var funcInfoGlFrustumxOES = builder.FunctionInfo{ApiIndex: 1, ID: 837, ReturnType: protocol.Type_Void, Parameters: 6}
-var funcInfoGlGenFramebuffersOES = builder.FunctionInfo{ApiIndex: 1, ID: 838, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlGenRenderbuffersOES = builder.FunctionInfo{ApiIndex: 1, ID: 839, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlGenerateMipmapOES = builder.FunctionInfo{ApiIndex: 1, ID: 840, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlGetClipPlanef = builder.FunctionInfo{ApiIndex: 1, ID: 841, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlGetClipPlanefOES = builder.FunctionInfo{ApiIndex: 1, ID: 842, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlGetClipPlanex = builder.FunctionInfo{ApiIndex: 1, ID: 843, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlGetClipPlanexOES = builder.FunctionInfo{ApiIndex: 1, ID: 844, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlGetFixedv = builder.FunctionInfo{ApiIndex: 1, ID: 845, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlGetFixedvOES = builder.FunctionInfo{ApiIndex: 1, ID: 846, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlGetFramebufferAttachmentParameterivOES = builder.FunctionInfo{ApiIndex: 1, ID: 847, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlGetLightfv = builder.FunctionInfo{ApiIndex: 1, ID: 848, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetLightxv = builder.FunctionInfo{ApiIndex: 1, ID: 849, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetLightxvOES = builder.FunctionInfo{ApiIndex: 1, ID: 850, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetMaterialfv = builder.FunctionInfo{ApiIndex: 1, ID: 851, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetMaterialxv = builder.FunctionInfo{ApiIndex: 1, ID: 852, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetMaterialxvOES = builder.FunctionInfo{ApiIndex: 1, ID: 853, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetRenderbufferParameterivOES = builder.FunctionInfo{ApiIndex: 1, ID: 854, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetTexEnvfv = builder.FunctionInfo{ApiIndex: 1, ID: 855, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetTexEnviv = builder.FunctionInfo{ApiIndex: 1, ID: 856, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetTexEnvxv = builder.FunctionInfo{ApiIndex: 1, ID: 857, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetTexEnvxvOES = builder.FunctionInfo{ApiIndex: 1, ID: 858, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetTexGenfvOES = builder.FunctionInfo{ApiIndex: 1, ID: 859, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetTexGenivOES = builder.FunctionInfo{ApiIndex: 1, ID: 860, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetTexGenxvOES = builder.FunctionInfo{ApiIndex: 1, ID: 861, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetTexParameterxv = builder.FunctionInfo{ApiIndex: 1, ID: 862, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlGetTexParameterxvOES = builder.FunctionInfo{ApiIndex: 1, ID: 863, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlIsFramebufferOES = builder.FunctionInfo{ApiIndex: 1, ID: 864, ReturnType: protocol.Type_Uint8, Parameters: 1}
-var funcInfoGlIsRenderbufferOES = builder.FunctionInfo{ApiIndex: 1, ID: 865, ReturnType: protocol.Type_Uint8, Parameters: 1}
-var funcInfoGlLightModelf = builder.FunctionInfo{ApiIndex: 1, ID: 866, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlLightModelfv = builder.FunctionInfo{ApiIndex: 1, ID: 867, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlLightModelx = builder.FunctionInfo{ApiIndex: 1, ID: 868, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlLightModelxOES = builder.FunctionInfo{ApiIndex: 1, ID: 869, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlLightModelxv = builder.FunctionInfo{ApiIndex: 1, ID: 870, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlLightModelxvOES = builder.FunctionInfo{ApiIndex: 1, ID: 871, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlLightf = builder.FunctionInfo{ApiIndex: 1, ID: 872, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlLightfv = builder.FunctionInfo{ApiIndex: 1, ID: 873, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlLightx = builder.FunctionInfo{ApiIndex: 1, ID: 874, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlLightxOES = builder.FunctionInfo{ApiIndex: 1, ID: 875, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlLightxv = builder.FunctionInfo{ApiIndex: 1, ID: 876, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlLightxvOES = builder.FunctionInfo{ApiIndex: 1, ID: 877, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlLineWidthx = builder.FunctionInfo{ApiIndex: 1, ID: 878, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlLineWidthxOES = builder.FunctionInfo{ApiIndex: 1, ID: 879, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlLoadIdentity = builder.FunctionInfo{ApiIndex: 1, ID: 880, ReturnType: protocol.Type_Void, Parameters: 0}
-var funcInfoGlLoadMatrixf = builder.FunctionInfo{ApiIndex: 1, ID: 881, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlLoadMatrixx = builder.FunctionInfo{ApiIndex: 1, ID: 882, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlLoadMatrixxOES = builder.FunctionInfo{ApiIndex: 1, ID: 883, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlLoadPaletteFromModelViewMatrixOES = builder.FunctionInfo{ApiIndex: 1, ID: 884, ReturnType: protocol.Type_Void, Parameters: 0}
-var funcInfoGlLogicOp = builder.FunctionInfo{ApiIndex: 1, ID: 885, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlMaterialf = builder.FunctionInfo{ApiIndex: 1, ID: 886, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlMaterialfv = builder.FunctionInfo{ApiIndex: 1, ID: 887, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlMaterialx = builder.FunctionInfo{ApiIndex: 1, ID: 888, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlMaterialxOES = builder.FunctionInfo{ApiIndex: 1, ID: 889, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlMaterialxv = builder.FunctionInfo{ApiIndex: 1, ID: 890, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlMaterialxvOES = builder.FunctionInfo{ApiIndex: 1, ID: 891, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlMatrixIndexPointerOES = builder.FunctionInfo{ApiIndex: 1, ID: 892, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlMatrixMode = builder.FunctionInfo{ApiIndex: 1, ID: 893, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlMultMatrixf = builder.FunctionInfo{ApiIndex: 1, ID: 894, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlMultMatrixx = builder.FunctionInfo{ApiIndex: 1, ID: 895, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlMultMatrixxOES = builder.FunctionInfo{ApiIndex: 1, ID: 896, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlMultiTexCoord4f = builder.FunctionInfo{ApiIndex: 1, ID: 897, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlMultiTexCoord4x = builder.FunctionInfo{ApiIndex: 1, ID: 898, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlMultiTexCoord4xOES = builder.FunctionInfo{ApiIndex: 1, ID: 899, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlNormal3f = builder.FunctionInfo{ApiIndex: 1, ID: 900, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlNormal3x = builder.FunctionInfo{ApiIndex: 1, ID: 901, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlNormal3xOES = builder.FunctionInfo{ApiIndex: 1, ID: 902, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlNormalPointer = builder.FunctionInfo{ApiIndex: 1, ID: 903, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlOrthof = builder.FunctionInfo{ApiIndex: 1, ID: 904, ReturnType: protocol.Type_Void, Parameters: 6}
-var funcInfoGlOrthofOES = builder.FunctionInfo{ApiIndex: 1, ID: 905, ReturnType: protocol.Type_Void, Parameters: 6}
-var funcInfoGlOrthox = builder.FunctionInfo{ApiIndex: 1, ID: 906, ReturnType: protocol.Type_Void, Parameters: 6}
-var funcInfoGlOrthoxOES = builder.FunctionInfo{ApiIndex: 1, ID: 907, ReturnType: protocol.Type_Void, Parameters: 6}
-var funcInfoGlPointParameterf = builder.FunctionInfo{ApiIndex: 1, ID: 908, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlPointParameterfv = builder.FunctionInfo{ApiIndex: 1, ID: 909, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlPointParameterx = builder.FunctionInfo{ApiIndex: 1, ID: 910, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlPointParameterxOES = builder.FunctionInfo{ApiIndex: 1, ID: 911, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlPointParameterxv = builder.FunctionInfo{ApiIndex: 1, ID: 912, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlPointParameterxvOES = builder.FunctionInfo{ApiIndex: 1, ID: 913, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlPointSize = builder.FunctionInfo{ApiIndex: 1, ID: 914, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlPointSizePointerOES = builder.FunctionInfo{ApiIndex: 1, ID: 915, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlPointSizex = builder.FunctionInfo{ApiIndex: 1, ID: 916, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlPointSizexOES = builder.FunctionInfo{ApiIndex: 1, ID: 917, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlPolygonOffsetx = builder.FunctionInfo{ApiIndex: 1, ID: 918, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlPolygonOffsetxOES = builder.FunctionInfo{ApiIndex: 1, ID: 919, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlPopMatrix = builder.FunctionInfo{ApiIndex: 1, ID: 920, ReturnType: protocol.Type_Void, Parameters: 0}
-var funcInfoGlPushMatrix = builder.FunctionInfo{ApiIndex: 1, ID: 921, ReturnType: protocol.Type_Void, Parameters: 0}
-var funcInfoGlQueryMatrixxOES = builder.FunctionInfo{ApiIndex: 1, ID: 922, ReturnType: protocol.Type_Uint32, Parameters: 2}
-var funcInfoGlRenderbufferStorageOES = builder.FunctionInfo{ApiIndex: 1, ID: 923, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlRotatef = builder.FunctionInfo{ApiIndex: 1, ID: 924, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlRotatex = builder.FunctionInfo{ApiIndex: 1, ID: 925, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlRotatexOES = builder.FunctionInfo{ApiIndex: 1, ID: 926, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlSampleCoveragex = builder.FunctionInfo{ApiIndex: 1, ID: 927, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlSampleCoveragexOES = builder.FunctionInfo{ApiIndex: 1, ID: 928, ReturnType: protocol.Type_Void, Parameters: 2}
-var funcInfoGlScalef = builder.FunctionInfo{ApiIndex: 1, ID: 929, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlScalex = builder.FunctionInfo{ApiIndex: 1, ID: 930, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlScalexOES = builder.FunctionInfo{ApiIndex: 1, ID: 931, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlShadeModel = builder.FunctionInfo{ApiIndex: 1, ID: 932, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoGlTexCoordPointer = builder.FunctionInfo{ApiIndex: 1, ID: 933, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlTexEnvf = builder.FunctionInfo{ApiIndex: 1, ID: 934, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlTexEnvfv = builder.FunctionInfo{ApiIndex: 1, ID: 935, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlTexEnvi = builder.FunctionInfo{ApiIndex: 1, ID: 936, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlTexEnviv = builder.FunctionInfo{ApiIndex: 1, ID: 937, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlTexEnvx = builder.FunctionInfo{ApiIndex: 1, ID: 938, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlTexEnvxOES = builder.FunctionInfo{ApiIndex: 1, ID: 939, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlTexEnvxv = builder.FunctionInfo{ApiIndex: 1, ID: 940, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlTexEnvxvOES = builder.FunctionInfo{ApiIndex: 1, ID: 941, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlTexGenfOES = builder.FunctionInfo{ApiIndex: 1, ID: 942, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlTexGenfvOES = builder.FunctionInfo{ApiIndex: 1, ID: 943, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlTexGeniOES = builder.FunctionInfo{ApiIndex: 1, ID: 944, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlTexGenivOES = builder.FunctionInfo{ApiIndex: 1, ID: 945, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlTexGenxOES = builder.FunctionInfo{ApiIndex: 1, ID: 946, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlTexGenxvOES = builder.FunctionInfo{ApiIndex: 1, ID: 947, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlTexParameterx = builder.FunctionInfo{ApiIndex: 1, ID: 948, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlTexParameterxOES = builder.FunctionInfo{ApiIndex: 1, ID: 949, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlTexParameterxv = builder.FunctionInfo{ApiIndex: 1, ID: 950, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlTexParameterxvOES = builder.FunctionInfo{ApiIndex: 1, ID: 951, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlTranslatef = builder.FunctionInfo{ApiIndex: 1, ID: 952, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlTranslatex = builder.FunctionInfo{ApiIndex: 1, ID: 953, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlTranslatexOES = builder.FunctionInfo{ApiIndex: 1, ID: 954, ReturnType: protocol.Type_Void, Parameters: 3}
-var funcInfoGlVertexPointer = builder.FunctionInfo{ApiIndex: 1, ID: 955, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlWeightPointerOES = builder.FunctionInfo{ApiIndex: 1, ID: 956, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlColorPointerBounds = builder.FunctionInfo{ApiIndex: 1, ID: 957, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlNormalPointerBounds = builder.FunctionInfo{ApiIndex: 1, ID: 958, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlTexCoordPointerBounds = builder.FunctionInfo{ApiIndex: 1, ID: 959, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlVertexPointerBounds = builder.FunctionInfo{ApiIndex: 1, ID: 960, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlPointSizePointerOESBounds = builder.FunctionInfo{ApiIndex: 1, ID: 961, ReturnType: protocol.Type_Void, Parameters: 4}
-var funcInfoGlMatrixIndexPointerOESBounds = builder.FunctionInfo{ApiIndex: 1, ID: 962, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoGlWeightPointerOESBounds = builder.FunctionInfo{ApiIndex: 1, ID: 963, ReturnType: protocol.Type_Void, Parameters: 5}
-var funcInfoContextInfo = builder.FunctionInfo{ApiIndex: 1, ID: 0x10000 - 971 + 964, ReturnType: protocol.Type_Void, Parameters: 12}
-var funcInfoReplayCreateRenderer = builder.FunctionInfo{ApiIndex: 1, ID: 0x10000 - 971 + 965, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoReplayBindRenderer = builder.FunctionInfo{ApiIndex: 1, ID: 0x10000 - 971 + 966, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoReplayChangeBackbuffer = builder.FunctionInfo{ApiIndex: 1, ID: 0x10000 - 971 + 967, ReturnType: protocol.Type_Void, Parameters: 6}
-var funcInfoStartTimer = builder.FunctionInfo{ApiIndex: 1, ID: 0x10000 - 971 + 968, ReturnType: protocol.Type_Void, Parameters: 1}
-var funcInfoStopTimer = builder.FunctionInfo{ApiIndex: 1, ID: 0x10000 - 971 + 969, ReturnType: protocol.Type_Uint64, Parameters: 1}
-var funcInfoFlushPostBuffer = builder.FunctionInfo{ApiIndex: 1, ID: 0x10000 - 971 + 970, ReturnType: protocol.Type_Void, Parameters: 0}
+var funcInfoEglCreateNativeClientBufferANDROID = builder.FunctionInfo{ApiIndex: 1, ID: 123, ReturnType: protocol.Type_AbsolutePointer, Parameters: 1}
+var funcInfoGlActiveShaderProgramEXT = builder.FunctionInfo{ApiIndex: 1, ID: 124, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlAlphaFuncQCOM = builder.FunctionInfo{ApiIndex: 1, ID: 125, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlApplyFramebufferAttachmentCMAAINTEL = builder.FunctionInfo{ApiIndex: 1, ID: 126, ReturnType: protocol.Type_Void, Parameters: 0}
+var funcInfoGlBeginConditionalRenderNV = builder.FunctionInfo{ApiIndex: 1, ID: 127, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlBeginPerfMonitorAMD = builder.FunctionInfo{ApiIndex: 1, ID: 128, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlBeginPerfQueryINTEL = builder.FunctionInfo{ApiIndex: 1, ID: 129, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlBeginQueryEXT = builder.FunctionInfo{ApiIndex: 1, ID: 130, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlBindFragDataLocationEXT = builder.FunctionInfo{ApiIndex: 1, ID: 131, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlBindFragDataLocationIndexedEXT = builder.FunctionInfo{ApiIndex: 1, ID: 132, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlBindProgramPipelineEXT = builder.FunctionInfo{ApiIndex: 1, ID: 133, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlBindVertexArrayOES = builder.FunctionInfo{ApiIndex: 1, ID: 134, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlBlendBarrierNV = builder.FunctionInfo{ApiIndex: 1, ID: 135, ReturnType: protocol.Type_Void, Parameters: 0}
+var funcInfoGlBlendEquationSeparateiOES = builder.FunctionInfo{ApiIndex: 1, ID: 136, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlBlendEquationiOES = builder.FunctionInfo{ApiIndex: 1, ID: 137, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlBlendFuncSeparateiOES = builder.FunctionInfo{ApiIndex: 1, ID: 138, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlBlendFunciOES = builder.FunctionInfo{ApiIndex: 1, ID: 139, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlBlendParameteriNV = builder.FunctionInfo{ApiIndex: 1, ID: 140, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlBlitFramebufferANGLE = builder.FunctionInfo{ApiIndex: 1, ID: 141, ReturnType: protocol.Type_Void, Parameters: 10}
+var funcInfoGlBlitFramebufferNV = builder.FunctionInfo{ApiIndex: 1, ID: 142, ReturnType: protocol.Type_Void, Parameters: 10}
+var funcInfoGlBufferStorageEXT = builder.FunctionInfo{ApiIndex: 1, ID: 143, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlClientWaitSyncAPPLE = builder.FunctionInfo{ApiIndex: 1, ID: 144, ReturnType: protocol.Type_Uint32, Parameters: 3}
+var funcInfoGlColorMaskiOES = builder.FunctionInfo{ApiIndex: 1, ID: 145, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlCompressedTexImage3DOES = builder.FunctionInfo{ApiIndex: 1, ID: 146, ReturnType: protocol.Type_Void, Parameters: 9}
+var funcInfoGlCompressedTexSubImage3DOES = builder.FunctionInfo{ApiIndex: 1, ID: 147, ReturnType: protocol.Type_Void, Parameters: 11}
+var funcInfoGlCopyBufferSubDataNV = builder.FunctionInfo{ApiIndex: 1, ID: 148, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlCopyImageSubDataOES = builder.FunctionInfo{ApiIndex: 1, ID: 149, ReturnType: protocol.Type_Void, Parameters: 15}
+var funcInfoGlCopyPathNV = builder.FunctionInfo{ApiIndex: 1, ID: 150, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlCopyTexSubImage3DOES = builder.FunctionInfo{ApiIndex: 1, ID: 151, ReturnType: protocol.Type_Void, Parameters: 9}
+var funcInfoGlCopyTextureLevelsAPPLE = builder.FunctionInfo{ApiIndex: 1, ID: 152, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlCoverFillPathInstancedNV = builder.FunctionInfo{ApiIndex: 1, ID: 153, ReturnType: protocol.Type_Void, Parameters: 7}
+var funcInfoGlCoverFillPathNV = builder.FunctionInfo{ApiIndex: 1, ID: 154, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlCoverStrokePathInstancedNV = builder.FunctionInfo{ApiIndex: 1, ID: 155, ReturnType: protocol.Type_Void, Parameters: 7}
+var funcInfoGlCoverStrokePathNV = builder.FunctionInfo{ApiIndex: 1, ID: 156, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlCoverageMaskNV = builder.FunctionInfo{ApiIndex: 1, ID: 157, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlCoverageModulationNV = builder.FunctionInfo{ApiIndex: 1, ID: 158, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlCoverageModulationTableNV = builder.FunctionInfo{ApiIndex: 1, ID: 159, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlCoverageOperationNV = builder.FunctionInfo{ApiIndex: 1, ID: 160, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlCreatePerfQueryINTEL = builder.FunctionInfo{ApiIndex: 1, ID: 161, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlCreateShaderProgramvEXT = builder.FunctionInfo{ApiIndex: 1, ID: 162, ReturnType: protocol.Type_Uint32, Parameters: 3}
+var funcInfoGlDeleteFencesNV = builder.FunctionInfo{ApiIndex: 1, ID: 163, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlDeletePathsNV = builder.FunctionInfo{ApiIndex: 1, ID: 164, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlDeletePerfMonitorsAMD = builder.FunctionInfo{ApiIndex: 1, ID: 165, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlDeletePerfQueryINTEL = builder.FunctionInfo{ApiIndex: 1, ID: 166, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlDeleteProgramPipelinesEXT = builder.FunctionInfo{ApiIndex: 1, ID: 167, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlDeleteQueriesEXT = builder.FunctionInfo{ApiIndex: 1, ID: 168, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlDeleteSyncAPPLE = builder.FunctionInfo{ApiIndex: 1, ID: 169, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlDeleteVertexArraysOES = builder.FunctionInfo{ApiIndex: 1, ID: 170, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlDepthRangeArrayfvNV = builder.FunctionInfo{ApiIndex: 1, ID: 171, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlDepthRangeIndexedfNV = builder.FunctionInfo{ApiIndex: 1, ID: 172, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlDisableDriverControlQCOM = builder.FunctionInfo{ApiIndex: 1, ID: 173, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlDisableiNV = builder.FunctionInfo{ApiIndex: 1, ID: 174, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlDisableiOES = builder.FunctionInfo{ApiIndex: 1, ID: 175, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlDiscardFramebufferEXT = builder.FunctionInfo{ApiIndex: 1, ID: 176, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlDrawArraysInstancedANGLE = builder.FunctionInfo{ApiIndex: 1, ID: 177, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlDrawArraysInstancedBaseInstanceEXT = builder.FunctionInfo{ApiIndex: 1, ID: 178, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlDrawArraysInstancedEXT = builder.FunctionInfo{ApiIndex: 1, ID: 179, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlDrawArraysInstancedNV = builder.FunctionInfo{ApiIndex: 1, ID: 180, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlDrawBuffersEXT = builder.FunctionInfo{ApiIndex: 1, ID: 181, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlDrawBuffersIndexedEXT = builder.FunctionInfo{ApiIndex: 1, ID: 182, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlDrawBuffersNV = builder.FunctionInfo{ApiIndex: 1, ID: 183, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlDrawElementsBaseVertexEXT = builder.FunctionInfo{ApiIndex: 1, ID: 184, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlDrawElementsBaseVertexOES = builder.FunctionInfo{ApiIndex: 1, ID: 185, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlDrawElementsInstancedANGLE = builder.FunctionInfo{ApiIndex: 1, ID: 186, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlDrawElementsInstancedBaseInstanceEXT = builder.FunctionInfo{ApiIndex: 1, ID: 187, ReturnType: protocol.Type_Void, Parameters: 6}
+var funcInfoGlDrawElementsInstancedBaseVertexBaseInstanceEXT = builder.FunctionInfo{ApiIndex: 1, ID: 188, ReturnType: protocol.Type_Void, Parameters: 7}
+var funcInfoGlDrawElementsInstancedBaseVertexEXT = builder.FunctionInfo{ApiIndex: 1, ID: 189, ReturnType: protocol.Type_Void, Parameters: 6}
+var funcInfoGlDrawElementsInstancedBaseVertexOES = builder.FunctionInfo{ApiIndex: 1, ID: 190, ReturnType: protocol.Type_Void, Parameters: 6}
+var funcInfoGlDrawElementsInstancedEXT = builder.FunctionInfo{ApiIndex: 1, ID: 191, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlDrawElementsInstancedNV = builder.FunctionInfo{ApiIndex: 1, ID: 192, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlDrawRangeElementsBaseVertexEXT = builder.FunctionInfo{ApiIndex: 1, ID: 193, ReturnType: protocol.Type_Void, Parameters: 7}
+var funcInfoGlDrawRangeElementsBaseVertexOES = builder.FunctionInfo{ApiIndex: 1, ID: 194, ReturnType: protocol.Type_Void, Parameters: 7}
+var funcInfoGlEGLImageTargetRenderbufferStorageOES = builder.FunctionInfo{ApiIndex: 1, ID: 195, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlEGLImageTargetTexture2DOES = builder.FunctionInfo{ApiIndex: 1, ID: 196, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlEnableDriverControlQCOM = builder.FunctionInfo{ApiIndex: 1, ID: 197, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlEnableiNV = builder.FunctionInfo{ApiIndex: 1, ID: 198, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlEnableiOES = builder.FunctionInfo{ApiIndex: 1, ID: 199, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlEndConditionalRenderNV = builder.FunctionInfo{ApiIndex: 1, ID: 200, ReturnType: protocol.Type_Void, Parameters: 0}
+var funcInfoGlEndPerfMonitorAMD = builder.FunctionInfo{ApiIndex: 1, ID: 201, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlEndPerfQueryINTEL = builder.FunctionInfo{ApiIndex: 1, ID: 202, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlEndQueryEXT = builder.FunctionInfo{ApiIndex: 1, ID: 203, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlEndTilingQCOM = builder.FunctionInfo{ApiIndex: 1, ID: 204, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlExtGetBufferPointervQCOM = builder.FunctionInfo{ApiIndex: 1, ID: 205, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlExtGetBuffersQCOM = builder.FunctionInfo{ApiIndex: 1, ID: 206, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlExtGetFramebuffersQCOM = builder.FunctionInfo{ApiIndex: 1, ID: 207, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlExtGetProgramBinarySourceQCOM = builder.FunctionInfo{ApiIndex: 1, ID: 208, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlExtGetProgramsQCOM = builder.FunctionInfo{ApiIndex: 1, ID: 209, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlExtGetRenderbuffersQCOM = builder.FunctionInfo{ApiIndex: 1, ID: 210, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlExtGetShadersQCOM = builder.FunctionInfo{ApiIndex: 1, ID: 211, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlExtGetTexLevelParameterivQCOM = builder.FunctionInfo{ApiIndex: 1, ID: 212, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlExtGetTexSubImageQCOM = builder.FunctionInfo{ApiIndex: 1, ID: 213, ReturnType: protocol.Type_Void, Parameters: 11}
+var funcInfoGlExtGetTexturesQCOM = builder.FunctionInfo{ApiIndex: 1, ID: 214, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlExtIsProgramBinaryQCOM = builder.FunctionInfo{ApiIndex: 1, ID: 215, ReturnType: protocol.Type_Uint8, Parameters: 1}
+var funcInfoGlExtTexObjectStateOverrideiQCOM = builder.FunctionInfo{ApiIndex: 1, ID: 216, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlFenceSyncAPPLE = builder.FunctionInfo{ApiIndex: 1, ID: 217, ReturnType: protocol.Type_AbsolutePointer, Parameters: 2}
+var funcInfoGlFinishFenceNV = builder.FunctionInfo{ApiIndex: 1, ID: 218, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlFlushMappedBufferRangeEXT = builder.FunctionInfo{ApiIndex: 1, ID: 219, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlFragmentCoverageColorNV = builder.FunctionInfo{ApiIndex: 1, ID: 220, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlFramebufferSampleLocationsfvNV = builder.FunctionInfo{ApiIndex: 1, ID: 221, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlFramebufferTexture2DMultisampleEXT = builder.FunctionInfo{ApiIndex: 1, ID: 222, ReturnType: protocol.Type_Void, Parameters: 6}
+var funcInfoGlFramebufferTexture2DMultisampleIMG = builder.FunctionInfo{ApiIndex: 1, ID: 223, ReturnType: protocol.Type_Void, Parameters: 6}
+var funcInfoGlFramebufferTexture3DOES = builder.FunctionInfo{ApiIndex: 1, ID: 224, ReturnType: protocol.Type_Void, Parameters: 6}
+var funcInfoGlFramebufferTextureMultiviewOVR = builder.FunctionInfo{ApiIndex: 1, ID: 225, ReturnType: protocol.Type_Void, Parameters: 6}
+var funcInfoGlFramebufferTextureOES = builder.FunctionInfo{ApiIndex: 1, ID: 226, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlGenFencesNV = builder.FunctionInfo{ApiIndex: 1, ID: 227, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlGenPathsNV = builder.FunctionInfo{ApiIndex: 1, ID: 228, ReturnType: protocol.Type_Uint32, Parameters: 1}
+var funcInfoGlGenPerfMonitorsAMD = builder.FunctionInfo{ApiIndex: 1, ID: 229, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlGenProgramPipelinesEXT = builder.FunctionInfo{ApiIndex: 1, ID: 230, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlGenQueriesEXT = builder.FunctionInfo{ApiIndex: 1, ID: 231, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlGenVertexArraysOES = builder.FunctionInfo{ApiIndex: 1, ID: 232, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlGetBufferPointervOES = builder.FunctionInfo{ApiIndex: 1, ID: 233, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetCoverageModulationTableNV = builder.FunctionInfo{ApiIndex: 1, ID: 234, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlGetDriverControlStringQCOM = builder.FunctionInfo{ApiIndex: 1, ID: 235, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlGetDriverControlsQCOM = builder.FunctionInfo{ApiIndex: 1, ID: 236, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetFenceivNV = builder.FunctionInfo{ApiIndex: 1, ID: 237, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetFirstPerfQueryIdINTEL = builder.FunctionInfo{ApiIndex: 1, ID: 238, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlGetFloati_vNV = builder.FunctionInfo{ApiIndex: 1, ID: 239, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetFragDataIndexEXT = builder.FunctionInfo{ApiIndex: 1, ID: 240, ReturnType: protocol.Type_Int32, Parameters: 2}
+var funcInfoGlGetGraphicsResetStatusEXT = builder.FunctionInfo{ApiIndex: 1, ID: 241, ReturnType: protocol.Type_Uint32, Parameters: 0}
+var funcInfoGlGetGraphicsResetStatusKHR = builder.FunctionInfo{ApiIndex: 1, ID: 242, ReturnType: protocol.Type_Uint32, Parameters: 0}
+var funcInfoGlGetImageHandleNV = builder.FunctionInfo{ApiIndex: 1, ID: 243, ReturnType: protocol.Type_Uint64, Parameters: 5}
+var funcInfoGlGetInteger64vAPPLE = builder.FunctionInfo{ApiIndex: 1, ID: 244, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlGetIntegeri_vEXT = builder.FunctionInfo{ApiIndex: 1, ID: 245, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetInternalformatSampleivNV = builder.FunctionInfo{ApiIndex: 1, ID: 246, ReturnType: protocol.Type_Void, Parameters: 6}
+var funcInfoGlGetNextPerfQueryIdINTEL = builder.FunctionInfo{ApiIndex: 1, ID: 247, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlGetObjectLabelEXT = builder.FunctionInfo{ApiIndex: 1, ID: 248, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlGetPathCommandsNV = builder.FunctionInfo{ApiIndex: 1, ID: 249, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlGetPathCoordsNV = builder.FunctionInfo{ApiIndex: 1, ID: 250, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlGetPathDashArrayNV = builder.FunctionInfo{ApiIndex: 1, ID: 251, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlGetPathLengthNV = builder.FunctionInfo{ApiIndex: 1, ID: 252, ReturnType: protocol.Type_Float, Parameters: 3}
+var funcInfoGlGetPathMetricRangeNV = builder.FunctionInfo{ApiIndex: 1, ID: 253, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlGetPathMetricsNV = builder.FunctionInfo{ApiIndex: 1, ID: 254, ReturnType: protocol.Type_Void, Parameters: 7}
+var funcInfoGlGetPathParameterfvNV = builder.FunctionInfo{ApiIndex: 1, ID: 255, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetPathParameterivNV = builder.FunctionInfo{ApiIndex: 1, ID: 256, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetPathSpacingNV = builder.FunctionInfo{ApiIndex: 1, ID: 257, ReturnType: protocol.Type_Void, Parameters: 9}
+var funcInfoGlGetPerfCounterInfoINTEL = builder.FunctionInfo{ApiIndex: 1, ID: 258, ReturnType: protocol.Type_Void, Parameters: 11}
+var funcInfoGlGetPerfMonitorCounterDataAMD = builder.FunctionInfo{ApiIndex: 1, ID: 259, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlGetPerfMonitorCounterInfoAMD = builder.FunctionInfo{ApiIndex: 1, ID: 260, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlGetPerfMonitorCounterStringAMD = builder.FunctionInfo{ApiIndex: 1, ID: 261, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlGetPerfMonitorCountersAMD = builder.FunctionInfo{ApiIndex: 1, ID: 262, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlGetPerfMonitorGroupStringAMD = builder.FunctionInfo{ApiIndex: 1, ID: 263, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlGetPerfMonitorGroupsAMD = builder.FunctionInfo{ApiIndex: 1, ID: 264, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetPerfQueryDataINTEL = builder.FunctionInfo{ApiIndex: 1, ID: 265, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlGetPerfQueryIdByNameINTEL = builder.FunctionInfo{ApiIndex: 1, ID: 266, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlGetPerfQueryInfoINTEL = builder.FunctionInfo{ApiIndex: 1, ID: 267, ReturnType: protocol.Type_Void, Parameters: 7}
+var funcInfoGlGetProgramBinaryOES = builder.FunctionInfo{ApiIndex: 1, ID: 268, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlGetProgramPipelineInfoLogEXT = builder.FunctionInfo{ApiIndex: 1, ID: 269, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlGetProgramPipelineivEXT = builder.FunctionInfo{ApiIndex: 1, ID: 270, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetProgramResourceLocationIndexEXT = builder.FunctionInfo{ApiIndex: 1, ID: 271, ReturnType: protocol.Type_Int32, Parameters: 3}
+var funcInfoGlGetProgramResourcefvNV = builder.FunctionInfo{ApiIndex: 1, ID: 272, ReturnType: protocol.Type_Void, Parameters: 8}
+var funcInfoGlGetQueryObjecti64vEXT = builder.FunctionInfo{ApiIndex: 1, ID: 273, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetQueryObjectivEXT = builder.FunctionInfo{ApiIndex: 1, ID: 274, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetQueryObjectui64vEXT = builder.FunctionInfo{ApiIndex: 1, ID: 275, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetQueryObjectuivEXT = builder.FunctionInfo{ApiIndex: 1, ID: 276, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetQueryivEXT = builder.FunctionInfo{ApiIndex: 1, ID: 277, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetSamplerParameterIivOES = builder.FunctionInfo{ApiIndex: 1, ID: 278, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetSamplerParameterIuivOES = builder.FunctionInfo{ApiIndex: 1, ID: 279, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetSyncivAPPLE = builder.FunctionInfo{ApiIndex: 1, ID: 280, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlGetTexParameterIivOES = builder.FunctionInfo{ApiIndex: 1, ID: 281, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetTexParameterIuivOES = builder.FunctionInfo{ApiIndex: 1, ID: 282, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetTextureHandleNV = builder.FunctionInfo{ApiIndex: 1, ID: 283, ReturnType: protocol.Type_Uint64, Parameters: 1}
+var funcInfoGlGetTextureSamplerHandleNV = builder.FunctionInfo{ApiIndex: 1, ID: 284, ReturnType: protocol.Type_Uint64, Parameters: 2}
+var funcInfoGlGetTranslatedShaderSourceANGLE = builder.FunctionInfo{ApiIndex: 1, ID: 285, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlGetnUniformfvEXT = builder.FunctionInfo{ApiIndex: 1, ID: 286, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlGetnUniformfvKHR = builder.FunctionInfo{ApiIndex: 1, ID: 287, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlGetnUniformivEXT = builder.FunctionInfo{ApiIndex: 1, ID: 288, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlGetnUniformivKHR = builder.FunctionInfo{ApiIndex: 1, ID: 289, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlGetnUniformuivKHR = builder.FunctionInfo{ApiIndex: 1, ID: 290, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlInsertEventMarkerEXT = builder.FunctionInfo{ApiIndex: 1, ID: 291, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlInterpolatePathsNV = builder.FunctionInfo{ApiIndex: 1, ID: 292, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlIsEnablediNV = builder.FunctionInfo{ApiIndex: 1, ID: 293, ReturnType: protocol.Type_Uint8, Parameters: 2}
+var funcInfoGlIsEnablediOES = builder.FunctionInfo{ApiIndex: 1, ID: 294, ReturnType: protocol.Type_Uint8, Parameters: 2}
+var funcInfoGlIsFenceNV = builder.FunctionInfo{ApiIndex: 1, ID: 295, ReturnType: protocol.Type_Uint8, Parameters: 1}
+var funcInfoGlIsImageHandleResidentNV = builder.FunctionInfo{ApiIndex: 1, ID: 296, ReturnType: protocol.Type_Uint8, Parameters: 1}
+var funcInfoGlIsPathNV = builder.FunctionInfo{ApiIndex: 1, ID: 297, ReturnType: protocol.Type_Uint8, Parameters: 1}
+var funcInfoGlIsPointInFillPathNV = builder.FunctionInfo{ApiIndex: 1, ID: 298, ReturnType: protocol.Type_Uint8, Parameters: 4}
+var funcInfoGlIsPointInStrokePathNV = builder.FunctionInfo{ApiIndex: 1, ID: 299, ReturnType: protocol.Type_Uint8, Parameters: 3}
+var funcInfoGlIsProgramPipelineEXT = builder.FunctionInfo{ApiIndex: 1, ID: 300, ReturnType: protocol.Type_Uint8, Parameters: 1}
+var funcInfoGlIsQueryEXT = builder.FunctionInfo{ApiIndex: 1, ID: 301, ReturnType: protocol.Type_Uint8, Parameters: 1}
+var funcInfoGlIsSyncAPPLE = builder.FunctionInfo{ApiIndex: 1, ID: 302, ReturnType: protocol.Type_Uint8, Parameters: 1}
+var funcInfoGlIsTextureHandleResidentNV = builder.FunctionInfo{ApiIndex: 1, ID: 303, ReturnType: protocol.Type_Uint8, Parameters: 1}
+var funcInfoGlIsVertexArrayOES = builder.FunctionInfo{ApiIndex: 1, ID: 304, ReturnType: protocol.Type_Uint8, Parameters: 1}
+var funcInfoGlLabelObjectEXT = builder.FunctionInfo{ApiIndex: 1, ID: 305, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlMakeImageHandleNonResidentNV = builder.FunctionInfo{ApiIndex: 1, ID: 306, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlMakeImageHandleResidentNV = builder.FunctionInfo{ApiIndex: 1, ID: 307, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlMakeTextureHandleNonResidentNV = builder.FunctionInfo{ApiIndex: 1, ID: 308, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlMakeTextureHandleResidentNV = builder.FunctionInfo{ApiIndex: 1, ID: 309, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlMapBufferOES = builder.FunctionInfo{ApiIndex: 1, ID: 310, ReturnType: protocol.Type_AbsolutePointer, Parameters: 2}
+var funcInfoGlMapBufferRangeEXT = builder.FunctionInfo{ApiIndex: 1, ID: 311, ReturnType: protocol.Type_AbsolutePointer, Parameters: 4}
+var funcInfoGlMatrixLoad3x2fNV = builder.FunctionInfo{ApiIndex: 1, ID: 312, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlMatrixLoad3x3fNV = builder.FunctionInfo{ApiIndex: 1, ID: 313, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlMatrixLoadTranspose3x3fNV = builder.FunctionInfo{ApiIndex: 1, ID: 314, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlMatrixMult3x2fNV = builder.FunctionInfo{ApiIndex: 1, ID: 315, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlMatrixMult3x3fNV = builder.FunctionInfo{ApiIndex: 1, ID: 316, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlMatrixMultTranspose3x3fNV = builder.FunctionInfo{ApiIndex: 1, ID: 317, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlMultiDrawArraysEXT = builder.FunctionInfo{ApiIndex: 1, ID: 318, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlMultiDrawArraysIndirectEXT = builder.FunctionInfo{ApiIndex: 1, ID: 319, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlMultiDrawElementsBaseVertexEXT = builder.FunctionInfo{ApiIndex: 1, ID: 320, ReturnType: protocol.Type_Void, Parameters: 6}
+var funcInfoGlMultiDrawElementsBaseVertexOES = builder.FunctionInfo{ApiIndex: 1, ID: 321, ReturnType: protocol.Type_Void, Parameters: 6}
+var funcInfoGlMultiDrawElementsEXT = builder.FunctionInfo{ApiIndex: 1, ID: 322, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlMultiDrawElementsIndirectEXT = builder.FunctionInfo{ApiIndex: 1, ID: 323, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlNamedFramebufferSampleLocationsfvNV = builder.FunctionInfo{ApiIndex: 1, ID: 324, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlPatchParameteriOES = builder.FunctionInfo{ApiIndex: 1, ID: 325, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlPathCommandsNV = builder.FunctionInfo{ApiIndex: 1, ID: 326, ReturnType: protocol.Type_Void, Parameters: 6}
+var funcInfoGlPathCoordsNV = builder.FunctionInfo{ApiIndex: 1, ID: 327, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlPathCoverDepthFuncNV = builder.FunctionInfo{ApiIndex: 1, ID: 328, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlPathDashArrayNV = builder.FunctionInfo{ApiIndex: 1, ID: 329, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlPathGlyphIndexArrayNV = builder.FunctionInfo{ApiIndex: 1, ID: 330, ReturnType: protocol.Type_Uint32, Parameters: 8}
+var funcInfoGlPathGlyphIndexRangeNV = builder.FunctionInfo{ApiIndex: 1, ID: 331, ReturnType: protocol.Type_Uint32, Parameters: 6}
+var funcInfoGlPathGlyphRangeNV = builder.FunctionInfo{ApiIndex: 1, ID: 332, ReturnType: protocol.Type_Void, Parameters: 9}
+var funcInfoGlPathGlyphsNV = builder.FunctionInfo{ApiIndex: 1, ID: 333, ReturnType: protocol.Type_Void, Parameters: 10}
+var funcInfoGlPathMemoryGlyphIndexArrayNV = builder.FunctionInfo{ApiIndex: 1, ID: 334, ReturnType: protocol.Type_Uint32, Parameters: 9}
+var funcInfoGlPathParameterfNV = builder.FunctionInfo{ApiIndex: 1, ID: 335, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlPathParameterfvNV = builder.FunctionInfo{ApiIndex: 1, ID: 336, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlPathParameteriNV = builder.FunctionInfo{ApiIndex: 1, ID: 337, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlPathParameterivNV = builder.FunctionInfo{ApiIndex: 1, ID: 338, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlPathStencilDepthOffsetNV = builder.FunctionInfo{ApiIndex: 1, ID: 339, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlPathStencilFuncNV = builder.FunctionInfo{ApiIndex: 1, ID: 340, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlPathStringNV = builder.FunctionInfo{ApiIndex: 1, ID: 341, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlPathSubCommandsNV = builder.FunctionInfo{ApiIndex: 1, ID: 342, ReturnType: protocol.Type_Void, Parameters: 8}
+var funcInfoGlPathSubCoordsNV = builder.FunctionInfo{ApiIndex: 1, ID: 343, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlPointAlongPathNV = builder.FunctionInfo{ApiIndex: 1, ID: 344, ReturnType: protocol.Type_Uint8, Parameters: 8}
+var funcInfoGlPolygonModeNV = builder.FunctionInfo{ApiIndex: 1, ID: 345, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlPopGroupMarkerEXT = builder.FunctionInfo{ApiIndex: 1, ID: 346, ReturnType: protocol.Type_Void, Parameters: 0}
+var funcInfoGlPrimitiveBoundingBoxOES = builder.FunctionInfo{ApiIndex: 1, ID: 347, ReturnType: protocol.Type_Void, Parameters: 8}
+var funcInfoGlProgramBinaryOES = builder.FunctionInfo{ApiIndex: 1, ID: 348, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramParameteriEXT = builder.FunctionInfo{ApiIndex: 1, ID: 349, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlProgramPathFragmentInputGenNV = builder.FunctionInfo{ApiIndex: 1, ID: 350, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlProgramUniform1fEXT = builder.FunctionInfo{ApiIndex: 1, ID: 351, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlProgramUniform1fvEXT = builder.FunctionInfo{ApiIndex: 1, ID: 352, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramUniform1iEXT = builder.FunctionInfo{ApiIndex: 1, ID: 353, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlProgramUniform1ivEXT = builder.FunctionInfo{ApiIndex: 1, ID: 354, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramUniform1uiEXT = builder.FunctionInfo{ApiIndex: 1, ID: 355, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlProgramUniform1uivEXT = builder.FunctionInfo{ApiIndex: 1, ID: 356, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramUniform2fEXT = builder.FunctionInfo{ApiIndex: 1, ID: 357, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramUniform2fvEXT = builder.FunctionInfo{ApiIndex: 1, ID: 358, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramUniform2iEXT = builder.FunctionInfo{ApiIndex: 1, ID: 359, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramUniform2ivEXT = builder.FunctionInfo{ApiIndex: 1, ID: 360, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramUniform2uiEXT = builder.FunctionInfo{ApiIndex: 1, ID: 361, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramUniform2uivEXT = builder.FunctionInfo{ApiIndex: 1, ID: 362, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramUniform3fEXT = builder.FunctionInfo{ApiIndex: 1, ID: 363, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlProgramUniform3fvEXT = builder.FunctionInfo{ApiIndex: 1, ID: 364, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramUniform3iEXT = builder.FunctionInfo{ApiIndex: 1, ID: 365, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlProgramUniform3ivEXT = builder.FunctionInfo{ApiIndex: 1, ID: 366, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramUniform3uiEXT = builder.FunctionInfo{ApiIndex: 1, ID: 367, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlProgramUniform3uivEXT = builder.FunctionInfo{ApiIndex: 1, ID: 368, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramUniform4fEXT = builder.FunctionInfo{ApiIndex: 1, ID: 369, ReturnType: protocol.Type_Void, Parameters: 6}
+var funcInfoGlProgramUniform4fvEXT = builder.FunctionInfo{ApiIndex: 1, ID: 370, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramUniform4iEXT = builder.FunctionInfo{ApiIndex: 1, ID: 371, ReturnType: protocol.Type_Void, Parameters: 6}
+var funcInfoGlProgramUniform4ivEXT = builder.FunctionInfo{ApiIndex: 1, ID: 372, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramUniform4uiEXT = builder.FunctionInfo{ApiIndex: 1, ID: 373, ReturnType: protocol.Type_Void, Parameters: 6}
+var funcInfoGlProgramUniform4uivEXT = builder.FunctionInfo{ApiIndex: 1, ID: 374, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramUniformHandleui64NV = builder.FunctionInfo{ApiIndex: 1, ID: 375, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlProgramUniformHandleui64vNV = builder.FunctionInfo{ApiIndex: 1, ID: 376, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramUniformMatrix2fvEXT = builder.FunctionInfo{ApiIndex: 1, ID: 377, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlProgramUniformMatrix2x3fvEXT = builder.FunctionInfo{ApiIndex: 1, ID: 378, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlProgramUniformMatrix2x4fvEXT = builder.FunctionInfo{ApiIndex: 1, ID: 379, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlProgramUniformMatrix3fvEXT = builder.FunctionInfo{ApiIndex: 1, ID: 380, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlProgramUniformMatrix3x2fvEXT = builder.FunctionInfo{ApiIndex: 1, ID: 381, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlProgramUniformMatrix3x4fvEXT = builder.FunctionInfo{ApiIndex: 1, ID: 382, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlProgramUniformMatrix4fvEXT = builder.FunctionInfo{ApiIndex: 1, ID: 383, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlProgramUniformMatrix4x2fvEXT = builder.FunctionInfo{ApiIndex: 1, ID: 384, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlProgramUniformMatrix4x3fvEXT = builder.FunctionInfo{ApiIndex: 1, ID: 385, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlPushGroupMarkerEXT = builder.FunctionInfo{ApiIndex: 1, ID: 386, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlQueryCounterEXT = builder.FunctionInfo{ApiIndex: 1, ID: 387, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlRasterSamplesEXT = builder.FunctionInfo{ApiIndex: 1, ID: 388, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlReadBufferIndexedEXT = builder.FunctionInfo{ApiIndex: 1, ID: 389, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlReadBufferNV = builder.FunctionInfo{ApiIndex: 1, ID: 390, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlReadnPixelsEXT = builder.FunctionInfo{ApiIndex: 1, ID: 391, ReturnType: protocol.Type_Void, Parameters: 8}
+var funcInfoGlReadnPixelsKHR = builder.FunctionInfo{ApiIndex: 1, ID: 392, ReturnType: protocol.Type_Void, Parameters: 8}
+var funcInfoGlRenderbufferStorageMultisampleANGLE = builder.FunctionInfo{ApiIndex: 1, ID: 393, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlRenderbufferStorageMultisampleAPPLE = builder.FunctionInfo{ApiIndex: 1, ID: 394, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlRenderbufferStorageMultisampleEXT = builder.FunctionInfo{ApiIndex: 1, ID: 395, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlRenderbufferStorageMultisampleIMG = builder.FunctionInfo{ApiIndex: 1, ID: 396, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlRenderbufferStorageMultisampleNV = builder.FunctionInfo{ApiIndex: 1, ID: 397, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlResolveDepthValuesNV = builder.FunctionInfo{ApiIndex: 1, ID: 398, ReturnType: protocol.Type_Void, Parameters: 0}
+var funcInfoGlResolveMultisampleFramebufferAPPLE = builder.FunctionInfo{ApiIndex: 1, ID: 399, ReturnType: protocol.Type_Void, Parameters: 0}
+var funcInfoGlSamplerParameterIivOES = builder.FunctionInfo{ApiIndex: 1, ID: 400, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlSamplerParameterIuivOES = builder.FunctionInfo{ApiIndex: 1, ID: 401, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlScissorArrayvNV = builder.FunctionInfo{ApiIndex: 1, ID: 402, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlScissorIndexedNV = builder.FunctionInfo{ApiIndex: 1, ID: 403, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlScissorIndexedvNV = builder.FunctionInfo{ApiIndex: 1, ID: 404, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlSelectPerfMonitorCountersAMD = builder.FunctionInfo{ApiIndex: 1, ID: 405, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlSetFenceNV = builder.FunctionInfo{ApiIndex: 1, ID: 406, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlStartTilingQCOM = builder.FunctionInfo{ApiIndex: 1, ID: 407, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlStencilFillPathInstancedNV = builder.FunctionInfo{ApiIndex: 1, ID: 408, ReturnType: protocol.Type_Void, Parameters: 8}
+var funcInfoGlStencilFillPathNV = builder.FunctionInfo{ApiIndex: 1, ID: 409, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlStencilStrokePathInstancedNV = builder.FunctionInfo{ApiIndex: 1, ID: 410, ReturnType: protocol.Type_Void, Parameters: 8}
+var funcInfoGlStencilStrokePathNV = builder.FunctionInfo{ApiIndex: 1, ID: 411, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlStencilThenCoverFillPathInstancedNV = builder.FunctionInfo{ApiIndex: 1, ID: 412, ReturnType: protocol.Type_Void, Parameters: 9}
+var funcInfoGlStencilThenCoverFillPathNV = builder.FunctionInfo{ApiIndex: 1, ID: 413, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlStencilThenCoverStrokePathInstancedNV = builder.FunctionInfo{ApiIndex: 1, ID: 414, ReturnType: protocol.Type_Void, Parameters: 9}
+var funcInfoGlStencilThenCoverStrokePathNV = builder.FunctionInfo{ApiIndex: 1, ID: 415, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlSubpixelPrecisionBiasNV = builder.FunctionInfo{ApiIndex: 1, ID: 416, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlTestFenceNV = builder.FunctionInfo{ApiIndex: 1, ID: 417, ReturnType: protocol.Type_Uint8, Parameters: 1}
+var funcInfoGlTexBufferOES = builder.FunctionInfo{ApiIndex: 1, ID: 418, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlTexBufferRangeOES = builder.FunctionInfo{ApiIndex: 1, ID: 419, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlTexImage3DOES = builder.FunctionInfo{ApiIndex: 1, ID: 420, ReturnType: protocol.Type_Void, Parameters: 10}
+var funcInfoGlTexPageCommitmentEXT = builder.FunctionInfo{ApiIndex: 1, ID: 421, ReturnType: protocol.Type_Void, Parameters: 9}
+var funcInfoGlTexParameterIivOES = builder.FunctionInfo{ApiIndex: 1, ID: 422, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlTexParameterIuivOES = builder.FunctionInfo{ApiIndex: 1, ID: 423, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlTexStorage1DEXT = builder.FunctionInfo{ApiIndex: 1, ID: 424, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlTexStorage2DEXT = builder.FunctionInfo{ApiIndex: 1, ID: 425, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlTexStorage3DEXT = builder.FunctionInfo{ApiIndex: 1, ID: 426, ReturnType: protocol.Type_Void, Parameters: 6}
+var funcInfoGlTexSubImage3DOES = builder.FunctionInfo{ApiIndex: 1, ID: 427, ReturnType: protocol.Type_Void, Parameters: 11}
+var funcInfoGlTextureStorage1DEXT = builder.FunctionInfo{ApiIndex: 1, ID: 428, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlTextureStorage2DEXT = builder.FunctionInfo{ApiIndex: 1, ID: 429, ReturnType: protocol.Type_Void, Parameters: 6}
+var funcInfoGlTextureStorage3DEXT = builder.FunctionInfo{ApiIndex: 1, ID: 430, ReturnType: protocol.Type_Void, Parameters: 7}
+var funcInfoGlTextureViewEXT = builder.FunctionInfo{ApiIndex: 1, ID: 431, ReturnType: protocol.Type_Void, Parameters: 8}
+var funcInfoGlTextureViewOES = builder.FunctionInfo{ApiIndex: 1, ID: 432, ReturnType: protocol.Type_Void, Parameters: 8}
+var funcInfoGlTransformPathNV = builder.FunctionInfo{ApiIndex: 1, ID: 433, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlUniformHandleui64NV = builder.FunctionInfo{ApiIndex: 1, ID: 434, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlUniformHandleui64vNV = builder.FunctionInfo{ApiIndex: 1, ID: 435, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlUniformMatrix2x3fvNV = builder.FunctionInfo{ApiIndex: 1, ID: 436, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlUniformMatrix2x4fvNV = builder.FunctionInfo{ApiIndex: 1, ID: 437, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlUniformMatrix3x2fvNV = builder.FunctionInfo{ApiIndex: 1, ID: 438, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlUniformMatrix3x4fvNV = builder.FunctionInfo{ApiIndex: 1, ID: 439, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlUniformMatrix4x2fvNV = builder.FunctionInfo{ApiIndex: 1, ID: 440, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlUniformMatrix4x3fvNV = builder.FunctionInfo{ApiIndex: 1, ID: 441, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlUnmapBufferOES = builder.FunctionInfo{ApiIndex: 1, ID: 442, ReturnType: protocol.Type_Uint8, Parameters: 1}
+var funcInfoGlUseProgramStagesEXT = builder.FunctionInfo{ApiIndex: 1, ID: 443, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlValidateProgramPipelineEXT = builder.FunctionInfo{ApiIndex: 1, ID: 444, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlVertexAttribDivisorANGLE = builder.FunctionInfo{ApiIndex: 1, ID: 445, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlVertexAttribDivisorEXT = builder.FunctionInfo{ApiIndex: 1, ID: 446, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlVertexAttribDivisorNV = builder.FunctionInfo{ApiIndex: 1, ID: 447, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlViewportArrayvNV = builder.FunctionInfo{ApiIndex: 1, ID: 448, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlViewportIndexedfNV = builder.FunctionInfo{ApiIndex: 1, ID: 449, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlViewportIndexedfvNV = builder.FunctionInfo{ApiIndex: 1, ID: 450, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlWaitSyncAPPLE = builder.FunctionInfo{ApiIndex: 1, ID: 451, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlWeightPathsNV = builder.FunctionInfo{ApiIndex: 1, ID: 452, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlClearPixelLocalStorageuiEXT = builder.FunctionInfo{ApiIndex: 1, ID: 453, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlClearTexImageEXT = builder.FunctionInfo{ApiIndex: 1, ID: 454, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlClearTexSubImageEXT = builder.FunctionInfo{ApiIndex: 1, ID: 455, ReturnType: protocol.Type_Void, Parameters: 11}
+var funcInfoGlConservativeRasterParameteriNV = builder.FunctionInfo{ApiIndex: 1, ID: 456, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlDepthRangeArrayfvOES = builder.FunctionInfo{ApiIndex: 1, ID: 457, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlDepthRangeIndexedfOES = builder.FunctionInfo{ApiIndex: 1, ID: 458, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlDrawTransformFeedbackEXT = builder.FunctionInfo{ApiIndex: 1, ID: 459, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlDrawTransformFeedbackInstancedEXT = builder.FunctionInfo{ApiIndex: 1, ID: 460, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlFramebufferPixelLocalStorageSizeEXT = builder.FunctionInfo{ApiIndex: 1, ID: 461, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlFramebufferTexture2DDownsampleIMG = builder.FunctionInfo{ApiIndex: 1, ID: 462, ReturnType: protocol.Type_Void, Parameters: 7}
+var funcInfoGlFramebufferTextureLayerDownsampleIMG = builder.FunctionInfo{ApiIndex: 1, ID: 463, ReturnType: protocol.Type_Void, Parameters: 7}
+var funcInfoGlFramebufferTextureMultisampleMultiviewOVR = builder.FunctionInfo{ApiIndex: 1, ID: 464, ReturnType: protocol.Type_Void, Parameters: 7}
+var funcInfoGlGetFloati_vOES = builder.FunctionInfo{ApiIndex: 1, ID: 465, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetFramebufferPixelLocalStorageSizeEXT = builder.FunctionInfo{ApiIndex: 1, ID: 466, ReturnType: protocol.Type_Int32, Parameters: 1}
+var funcInfoGlGetTextureHandleIMG = builder.FunctionInfo{ApiIndex: 1, ID: 467, ReturnType: protocol.Type_Uint64, Parameters: 1}
+var funcInfoGlGetTextureSamplerHandleIMG = builder.FunctionInfo{ApiIndex: 1, ID: 468, ReturnType: protocol.Type_Uint64, Parameters: 2}
+var funcInfoGlGetUniformi64vNV = builder.FunctionInfo{ApiIndex: 1, ID: 469, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlPolygonOffsetClampEXT = builder.FunctionInfo{ApiIndex: 1, ID: 470, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlProgramUniform1i64NV = builder.FunctionInfo{ApiIndex: 1, ID: 471, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlProgramUniform1i64vNV = builder.FunctionInfo{ApiIndex: 1, ID: 472, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramUniform1ui64NV = builder.FunctionInfo{ApiIndex: 1, ID: 473, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlProgramUniform1ui64vNV = builder.FunctionInfo{ApiIndex: 1, ID: 474, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramUniform2i64NV = builder.FunctionInfo{ApiIndex: 1, ID: 475, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramUniform2i64vNV = builder.FunctionInfo{ApiIndex: 1, ID: 476, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramUniform2ui64NV = builder.FunctionInfo{ApiIndex: 1, ID: 477, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramUniform2ui64vNV = builder.FunctionInfo{ApiIndex: 1, ID: 478, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramUniform3i64NV = builder.FunctionInfo{ApiIndex: 1, ID: 479, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlProgramUniform3i64vNV = builder.FunctionInfo{ApiIndex: 1, ID: 480, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramUniform3ui64NV = builder.FunctionInfo{ApiIndex: 1, ID: 481, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlProgramUniform3ui64vNV = builder.FunctionInfo{ApiIndex: 1, ID: 482, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramUniform4i64NV = builder.FunctionInfo{ApiIndex: 1, ID: 483, ReturnType: protocol.Type_Void, Parameters: 6}
+var funcInfoGlProgramUniform4i64vNV = builder.FunctionInfo{ApiIndex: 1, ID: 484, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramUniform4ui64NV = builder.FunctionInfo{ApiIndex: 1, ID: 485, ReturnType: protocol.Type_Void, Parameters: 6}
+var funcInfoGlProgramUniform4ui64vNV = builder.FunctionInfo{ApiIndex: 1, ID: 486, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramUniformHandleui64IMG = builder.FunctionInfo{ApiIndex: 1, ID: 487, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlProgramUniformHandleui64vIMG = builder.FunctionInfo{ApiIndex: 1, ID: 488, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlScissorArrayvOES = builder.FunctionInfo{ApiIndex: 1, ID: 489, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlScissorIndexedOES = builder.FunctionInfo{ApiIndex: 1, ID: 490, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlScissorIndexedvOES = builder.FunctionInfo{ApiIndex: 1, ID: 491, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlUniform1i64NV = builder.FunctionInfo{ApiIndex: 1, ID: 492, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlUniform1i64vNV = builder.FunctionInfo{ApiIndex: 1, ID: 493, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlUniform1ui64NV = builder.FunctionInfo{ApiIndex: 1, ID: 494, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlUniform1ui64vNV = builder.FunctionInfo{ApiIndex: 1, ID: 495, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlUniform2i64NV = builder.FunctionInfo{ApiIndex: 1, ID: 496, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlUniform2i64vNV = builder.FunctionInfo{ApiIndex: 1, ID: 497, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlUniform2ui64NV = builder.FunctionInfo{ApiIndex: 1, ID: 498, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlUniform2ui64vNV = builder.FunctionInfo{ApiIndex: 1, ID: 499, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlUniform3i64NV = builder.FunctionInfo{ApiIndex: 1, ID: 500, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlUniform3i64vNV = builder.FunctionInfo{ApiIndex: 1, ID: 501, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlUniform3ui64NV = builder.FunctionInfo{ApiIndex: 1, ID: 502, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlUniform3ui64vNV = builder.FunctionInfo{ApiIndex: 1, ID: 503, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlUniform4i64NV = builder.FunctionInfo{ApiIndex: 1, ID: 504, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlUniform4i64vNV = builder.FunctionInfo{ApiIndex: 1, ID: 505, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlUniform4ui64NV = builder.FunctionInfo{ApiIndex: 1, ID: 506, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlUniform4ui64vNV = builder.FunctionInfo{ApiIndex: 1, ID: 507, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlUniformHandleui64IMG = builder.FunctionInfo{ApiIndex: 1, ID: 508, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlUniformHandleui64vIMG = builder.FunctionInfo{ApiIndex: 1, ID: 509, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlViewportArrayvOES = builder.FunctionInfo{ApiIndex: 1, ID: 510, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlViewportIndexedfOES = builder.FunctionInfo{ApiIndex: 1, ID: 511, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlViewportIndexedfvOES = builder.FunctionInfo{ApiIndex: 1, ID: 512, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlViewportSwizzleNV = builder.FunctionInfo{ApiIndex: 1, ID: 513, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlWindowRectanglesEXT = builder.FunctionInfo{ApiIndex: 1, ID: 514, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlBlendBarrier = builder.FunctionInfo{ApiIndex: 1, ID: 515, ReturnType: protocol.Type_Void, Parameters: 0}
+var funcInfoGlBlendColor = builder.FunctionInfo{ApiIndex: 1, ID: 516, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlBlendEquation = builder.FunctionInfo{ApiIndex: 1, ID: 517, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlBlendEquationSeparate = builder.FunctionInfo{ApiIndex: 1, ID: 518, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlBlendEquationSeparatei = builder.FunctionInfo{ApiIndex: 1, ID: 519, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlBlendEquationi = builder.FunctionInfo{ApiIndex: 1, ID: 520, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlBlendFunc = builder.FunctionInfo{ApiIndex: 1, ID: 521, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlBlendFuncSeparate = builder.FunctionInfo{ApiIndex: 1, ID: 522, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlBlendFuncSeparatei = builder.FunctionInfo{ApiIndex: 1, ID: 523, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlBlendFunci = builder.FunctionInfo{ApiIndex: 1, ID: 524, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlDepthFunc = builder.FunctionInfo{ApiIndex: 1, ID: 525, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlSampleCoverage = builder.FunctionInfo{ApiIndex: 1, ID: 526, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlSampleMaski = builder.FunctionInfo{ApiIndex: 1, ID: 527, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlScissor = builder.FunctionInfo{ApiIndex: 1, ID: 528, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlStencilFunc = builder.FunctionInfo{ApiIndex: 1, ID: 529, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlStencilFuncSeparate = builder.FunctionInfo{ApiIndex: 1, ID: 530, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlStencilOp = builder.FunctionInfo{ApiIndex: 1, ID: 531, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlStencilOpSeparate = builder.FunctionInfo{ApiIndex: 1, ID: 532, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlBindFramebuffer = builder.FunctionInfo{ApiIndex: 1, ID: 533, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlBindRenderbuffer = builder.FunctionInfo{ApiIndex: 1, ID: 534, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlBlitFramebuffer = builder.FunctionInfo{ApiIndex: 1, ID: 535, ReturnType: protocol.Type_Void, Parameters: 10}
+var funcInfoGlCheckFramebufferStatus = builder.FunctionInfo{ApiIndex: 1, ID: 536, ReturnType: protocol.Type_Uint32, Parameters: 1}
+var funcInfoGlClear = builder.FunctionInfo{ApiIndex: 1, ID: 537, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlClearBufferfi = builder.FunctionInfo{ApiIndex: 1, ID: 538, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlClearBufferfv = builder.FunctionInfo{ApiIndex: 1, ID: 539, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlClearBufferiv = builder.FunctionInfo{ApiIndex: 1, ID: 540, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlClearBufferuiv = builder.FunctionInfo{ApiIndex: 1, ID: 541, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlClearColor = builder.FunctionInfo{ApiIndex: 1, ID: 542, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlClearDepthf = builder.FunctionInfo{ApiIndex: 1, ID: 543, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlClearStencil = builder.FunctionInfo{ApiIndex: 1, ID: 544, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlColorMask = builder.FunctionInfo{ApiIndex: 1, ID: 545, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlColorMaski = builder.FunctionInfo{ApiIndex: 1, ID: 546, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlDeleteFramebuffers = builder.FunctionInfo{ApiIndex: 1, ID: 547, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlDeleteRenderbuffers = builder.FunctionInfo{ApiIndex: 1, ID: 548, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlDepthMask = builder.FunctionInfo{ApiIndex: 1, ID: 549, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlDrawBuffers = builder.FunctionInfo{ApiIndex: 1, ID: 550, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlFramebufferParameteri = builder.FunctionInfo{ApiIndex: 1, ID: 551, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlFramebufferRenderbuffer = builder.FunctionInfo{ApiIndex: 1, ID: 552, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlFramebufferTexture = builder.FunctionInfo{ApiIndex: 1, ID: 553, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlFramebufferTexture2D = builder.FunctionInfo{ApiIndex: 1, ID: 554, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlFramebufferTextureLayer = builder.FunctionInfo{ApiIndex: 1, ID: 555, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlGenFramebuffers = builder.FunctionInfo{ApiIndex: 1, ID: 556, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlGenRenderbuffers = builder.FunctionInfo{ApiIndex: 1, ID: 557, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlGetFramebufferAttachmentParameteriv = builder.FunctionInfo{ApiIndex: 1, ID: 558, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlGetFramebufferParameteriv = builder.FunctionInfo{ApiIndex: 1, ID: 559, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetRenderbufferParameteriv = builder.FunctionInfo{ApiIndex: 1, ID: 560, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlInvalidateFramebuffer = builder.FunctionInfo{ApiIndex: 1, ID: 561, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlInvalidateSubFramebuffer = builder.FunctionInfo{ApiIndex: 1, ID: 562, ReturnType: protocol.Type_Void, Parameters: 7}
+var funcInfoGlIsFramebuffer = builder.FunctionInfo{ApiIndex: 1, ID: 563, ReturnType: protocol.Type_Uint8, Parameters: 1}
+var funcInfoGlIsRenderbuffer = builder.FunctionInfo{ApiIndex: 1, ID: 564, ReturnType: protocol.Type_Uint8, Parameters: 1}
+var funcInfoGlReadBuffer = builder.FunctionInfo{ApiIndex: 1, ID: 565, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlReadPixels = builder.FunctionInfo{ApiIndex: 1, ID: 566, ReturnType: protocol.Type_Void, Parameters: 7}
+var funcInfoGlReadnPixels = builder.FunctionInfo{ApiIndex: 1, ID: 567, ReturnType: protocol.Type_Void, Parameters: 8}
+var funcInfoGlRenderbufferStorage = builder.FunctionInfo{ApiIndex: 1, ID: 568, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlRenderbufferStorageMultisample = builder.FunctionInfo{ApiIndex: 1, ID: 569, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlStencilMask = builder.FunctionInfo{ApiIndex: 1, ID: 570, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlStencilMaskSeparate = builder.FunctionInfo{ApiIndex: 1, ID: 571, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlDisable = builder.FunctionInfo{ApiIndex: 1, ID: 572, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlDisablei = builder.FunctionInfo{ApiIndex: 1, ID: 573, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlEnable = builder.FunctionInfo{ApiIndex: 1, ID: 574, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlEnablei = builder.FunctionInfo{ApiIndex: 1, ID: 575, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlFinish = builder.FunctionInfo{ApiIndex: 1, ID: 576, ReturnType: protocol.Type_Void, Parameters: 0}
+var funcInfoGlFlush = builder.FunctionInfo{ApiIndex: 1, ID: 577, ReturnType: protocol.Type_Void, Parameters: 0}
+var funcInfoGlGetError = builder.FunctionInfo{ApiIndex: 1, ID: 578, ReturnType: protocol.Type_Uint32, Parameters: 0}
+var funcInfoGlGetGraphicsResetStatus = builder.FunctionInfo{ApiIndex: 1, ID: 579, ReturnType: protocol.Type_Uint32, Parameters: 0}
+var funcInfoGlHint = builder.FunctionInfo{ApiIndex: 1, ID: 580, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlActiveShaderProgram = builder.FunctionInfo{ApiIndex: 1, ID: 581, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlAttachShader = builder.FunctionInfo{ApiIndex: 1, ID: 582, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlBindAttribLocation = builder.FunctionInfo{ApiIndex: 1, ID: 583, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlBindProgramPipeline = builder.FunctionInfo{ApiIndex: 1, ID: 584, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlCompileShader = builder.FunctionInfo{ApiIndex: 1, ID: 585, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlCreateProgram = builder.FunctionInfo{ApiIndex: 1, ID: 586, ReturnType: protocol.Type_Uint32, Parameters: 0}
+var funcInfoGlCreateShader = builder.FunctionInfo{ApiIndex: 1, ID: 587, ReturnType: protocol.Type_Uint32, Parameters: 1}
+var funcInfoGlCreateShaderProgramv = builder.FunctionInfo{ApiIndex: 1, ID: 588, ReturnType: protocol.Type_Uint32, Parameters: 3}
+var funcInfoGlDeleteProgram = builder.FunctionInfo{ApiIndex: 1, ID: 589, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlDeleteProgramPipelines = builder.FunctionInfo{ApiIndex: 1, ID: 590, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlDeleteShader = builder.FunctionInfo{ApiIndex: 1, ID: 591, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlDetachShader = builder.FunctionInfo{ApiIndex: 1, ID: 592, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlDispatchCompute = builder.FunctionInfo{ApiIndex: 1, ID: 593, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlDispatchComputeIndirect = builder.FunctionInfo{ApiIndex: 1, ID: 594, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlGenProgramPipelines = builder.FunctionInfo{ApiIndex: 1, ID: 595, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlGetActiveAttrib = builder.FunctionInfo{ApiIndex: 1, ID: 596, ReturnType: protocol.Type_Void, Parameters: 7}
+var funcInfoGlGetActiveUniform = builder.FunctionInfo{ApiIndex: 1, ID: 597, ReturnType: protocol.Type_Void, Parameters: 7}
+var funcInfoGlGetActiveUniformBlockName = builder.FunctionInfo{ApiIndex: 1, ID: 598, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlGetActiveUniformBlockiv = builder.FunctionInfo{ApiIndex: 1, ID: 599, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlGetActiveUniformsiv = builder.FunctionInfo{ApiIndex: 1, ID: 600, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlGetAttachedShaders = builder.FunctionInfo{ApiIndex: 1, ID: 601, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlGetAttribLocation = builder.FunctionInfo{ApiIndex: 1, ID: 602, ReturnType: protocol.Type_Int32, Parameters: 2}
+var funcInfoGlGetFragDataLocation = builder.FunctionInfo{ApiIndex: 1, ID: 603, ReturnType: protocol.Type_Int32, Parameters: 2}
+var funcInfoGlGetProgramBinary = builder.FunctionInfo{ApiIndex: 1, ID: 604, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlGetProgramInfoLog = builder.FunctionInfo{ApiIndex: 1, ID: 605, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlGetProgramInterfaceiv = builder.FunctionInfo{ApiIndex: 1, ID: 606, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlGetProgramPipelineInfoLog = builder.FunctionInfo{ApiIndex: 1, ID: 607, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlGetProgramPipelineiv = builder.FunctionInfo{ApiIndex: 1, ID: 608, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetProgramResourceIndex = builder.FunctionInfo{ApiIndex: 1, ID: 609, ReturnType: protocol.Type_Uint32, Parameters: 3}
+var funcInfoGlGetProgramResourceLocation = builder.FunctionInfo{ApiIndex: 1, ID: 610, ReturnType: protocol.Type_Int32, Parameters: 3}
+var funcInfoGlGetProgramResourceName = builder.FunctionInfo{ApiIndex: 1, ID: 611, ReturnType: protocol.Type_Void, Parameters: 6}
+var funcInfoGlGetProgramResourceiv = builder.FunctionInfo{ApiIndex: 1, ID: 612, ReturnType: protocol.Type_Void, Parameters: 8}
+var funcInfoGlGetProgramiv = builder.FunctionInfo{ApiIndex: 1, ID: 613, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetShaderInfoLog = builder.FunctionInfo{ApiIndex: 1, ID: 614, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlGetShaderPrecisionFormat = builder.FunctionInfo{ApiIndex: 1, ID: 615, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlGetShaderSource = builder.FunctionInfo{ApiIndex: 1, ID: 616, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlGetShaderiv = builder.FunctionInfo{ApiIndex: 1, ID: 617, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetUniformBlockIndex = builder.FunctionInfo{ApiIndex: 1, ID: 618, ReturnType: protocol.Type_Uint32, Parameters: 2}
+var funcInfoGlGetUniformIndices = builder.FunctionInfo{ApiIndex: 1, ID: 619, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlGetUniformLocation = builder.FunctionInfo{ApiIndex: 1, ID: 620, ReturnType: protocol.Type_Int32, Parameters: 2}
+var funcInfoGlGetUniformfv = builder.FunctionInfo{ApiIndex: 1, ID: 621, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetUniformiv = builder.FunctionInfo{ApiIndex: 1, ID: 622, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetUniformuiv = builder.FunctionInfo{ApiIndex: 1, ID: 623, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetnUniformfv = builder.FunctionInfo{ApiIndex: 1, ID: 624, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlGetnUniformiv = builder.FunctionInfo{ApiIndex: 1, ID: 625, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlGetnUniformuiv = builder.FunctionInfo{ApiIndex: 1, ID: 626, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlIsProgram = builder.FunctionInfo{ApiIndex: 1, ID: 627, ReturnType: protocol.Type_Uint8, Parameters: 1}
+var funcInfoGlIsProgramPipeline = builder.FunctionInfo{ApiIndex: 1, ID: 628, ReturnType: protocol.Type_Uint8, Parameters: 1}
+var funcInfoGlIsShader = builder.FunctionInfo{ApiIndex: 1, ID: 629, ReturnType: protocol.Type_Uint8, Parameters: 1}
+var funcInfoGlLinkProgram = builder.FunctionInfo{ApiIndex: 1, ID: 630, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlMemoryBarrier = builder.FunctionInfo{ApiIndex: 1, ID: 631, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlMemoryBarrierByRegion = builder.FunctionInfo{ApiIndex: 1, ID: 632, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlProgramBinary = builder.FunctionInfo{ApiIndex: 1, ID: 633, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramParameteri = builder.FunctionInfo{ApiIndex: 1, ID: 634, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlProgramUniform1f = builder.FunctionInfo{ApiIndex: 1, ID: 635, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlProgramUniform1fv = builder.FunctionInfo{ApiIndex: 1, ID: 636, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramUniform1i = builder.FunctionInfo{ApiIndex: 1, ID: 637, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlProgramUniform1iv = builder.FunctionInfo{ApiIndex: 1, ID: 638, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramUniform1ui = builder.FunctionInfo{ApiIndex: 1, ID: 639, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlProgramUniform1uiv = builder.FunctionInfo{ApiIndex: 1, ID: 640, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramUniform2f = builder.FunctionInfo{ApiIndex: 1, ID: 641, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramUniform2fv = builder.FunctionInfo{ApiIndex: 1, ID: 642, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramUniform2i = builder.FunctionInfo{ApiIndex: 1, ID: 643, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramUniform2iv = builder.FunctionInfo{ApiIndex: 1, ID: 644, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramUniform2ui = builder.FunctionInfo{ApiIndex: 1, ID: 645, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramUniform2uiv = builder.FunctionInfo{ApiIndex: 1, ID: 646, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramUniform3f = builder.FunctionInfo{ApiIndex: 1, ID: 647, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlProgramUniform3fv = builder.FunctionInfo{ApiIndex: 1, ID: 648, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramUniform3i = builder.FunctionInfo{ApiIndex: 1, ID: 649, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlProgramUniform3iv = builder.FunctionInfo{ApiIndex: 1, ID: 650, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramUniform3ui = builder.FunctionInfo{ApiIndex: 1, ID: 651, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlProgramUniform3uiv = builder.FunctionInfo{ApiIndex: 1, ID: 652, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramUniform4f = builder.FunctionInfo{ApiIndex: 1, ID: 653, ReturnType: protocol.Type_Void, Parameters: 6}
+var funcInfoGlProgramUniform4fv = builder.FunctionInfo{ApiIndex: 1, ID: 654, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramUniform4i = builder.FunctionInfo{ApiIndex: 1, ID: 655, ReturnType: protocol.Type_Void, Parameters: 6}
+var funcInfoGlProgramUniform4iv = builder.FunctionInfo{ApiIndex: 1, ID: 656, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramUniform4ui = builder.FunctionInfo{ApiIndex: 1, ID: 657, ReturnType: protocol.Type_Void, Parameters: 6}
+var funcInfoGlProgramUniform4uiv = builder.FunctionInfo{ApiIndex: 1, ID: 658, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlProgramUniformMatrix2fv = builder.FunctionInfo{ApiIndex: 1, ID: 659, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlProgramUniformMatrix2x3fv = builder.FunctionInfo{ApiIndex: 1, ID: 660, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlProgramUniformMatrix2x4fv = builder.FunctionInfo{ApiIndex: 1, ID: 661, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlProgramUniformMatrix3fv = builder.FunctionInfo{ApiIndex: 1, ID: 662, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlProgramUniformMatrix3x2fv = builder.FunctionInfo{ApiIndex: 1, ID: 663, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlProgramUniformMatrix3x4fv = builder.FunctionInfo{ApiIndex: 1, ID: 664, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlProgramUniformMatrix4fv = builder.FunctionInfo{ApiIndex: 1, ID: 665, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlProgramUniformMatrix4x2fv = builder.FunctionInfo{ApiIndex: 1, ID: 666, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlProgramUniformMatrix4x3fv = builder.FunctionInfo{ApiIndex: 1, ID: 667, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlReleaseShaderCompiler = builder.FunctionInfo{ApiIndex: 1, ID: 668, ReturnType: protocol.Type_Void, Parameters: 0}
+var funcInfoGlShaderBinary = builder.FunctionInfo{ApiIndex: 1, ID: 669, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlShaderSource = builder.FunctionInfo{ApiIndex: 1, ID: 670, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlUniform1f = builder.FunctionInfo{ApiIndex: 1, ID: 671, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlUniform1fv = builder.FunctionInfo{ApiIndex: 1, ID: 672, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlUniform1i = builder.FunctionInfo{ApiIndex: 1, ID: 673, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlUniform1iv = builder.FunctionInfo{ApiIndex: 1, ID: 674, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlUniform1ui = builder.FunctionInfo{ApiIndex: 1, ID: 675, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlUniform1uiv = builder.FunctionInfo{ApiIndex: 1, ID: 676, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlUniform2f = builder.FunctionInfo{ApiIndex: 1, ID: 677, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlUniform2fv = builder.FunctionInfo{ApiIndex: 1, ID: 678, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlUniform2i = builder.FunctionInfo{ApiIndex: 1, ID: 679, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlUniform2iv = builder.FunctionInfo{ApiIndex: 1, ID: 680, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlUniform2ui = builder.FunctionInfo{ApiIndex: 1, ID: 681, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlUniform2uiv = builder.FunctionInfo{ApiIndex: 1, ID: 682, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlUniform3f = builder.FunctionInfo{ApiIndex: 1, ID: 683, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlUniform3fv = builder.FunctionInfo{ApiIndex: 1, ID: 684, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlUniform3i = builder.FunctionInfo{ApiIndex: 1, ID: 685, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlUniform3iv = builder.FunctionInfo{ApiIndex: 1, ID: 686, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlUniform3ui = builder.FunctionInfo{ApiIndex: 1, ID: 687, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlUniform3uiv = builder.FunctionInfo{ApiIndex: 1, ID: 688, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlUniform4f = builder.FunctionInfo{ApiIndex: 1, ID: 689, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlUniform4fv = builder.FunctionInfo{ApiIndex: 1, ID: 690, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlUniform4i = builder.FunctionInfo{ApiIndex: 1, ID: 691, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlUniform4iv = builder.FunctionInfo{ApiIndex: 1, ID: 692, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlUniform4ui = builder.FunctionInfo{ApiIndex: 1, ID: 693, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlUniform4uiv = builder.FunctionInfo{ApiIndex: 1, ID: 694, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlUniformBlockBinding = builder.FunctionInfo{ApiIndex: 1, ID: 695, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlUniformMatrix2fv = builder.FunctionInfo{ApiIndex: 1, ID: 696, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlUniformMatrix2x3fv = builder.FunctionInfo{ApiIndex: 1, ID: 697, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlUniformMatrix2x4fv = builder.FunctionInfo{ApiIndex: 1, ID: 698, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlUniformMatrix3fv = builder.FunctionInfo{ApiIndex: 1, ID: 699, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlUniformMatrix3x2fv = builder.FunctionInfo{ApiIndex: 1, ID: 700, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlUniformMatrix3x4fv = builder.FunctionInfo{ApiIndex: 1, ID: 701, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlUniformMatrix4fv = builder.FunctionInfo{ApiIndex: 1, ID: 702, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlUniformMatrix4x2fv = builder.FunctionInfo{ApiIndex: 1, ID: 703, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlUniformMatrix4x3fv = builder.FunctionInfo{ApiIndex: 1, ID: 704, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlUseProgram = builder.FunctionInfo{ApiIndex: 1, ID: 705, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlUseProgramStages = builder.FunctionInfo{ApiIndex: 1, ID: 706, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlValidateProgram = builder.FunctionInfo{ApiIndex: 1, ID: 707, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlValidateProgramPipeline = builder.FunctionInfo{ApiIndex: 1, ID: 708, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlCullFace = builder.FunctionInfo{ApiIndex: 1, ID: 709, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlDepthRangef = builder.FunctionInfo{ApiIndex: 1, ID: 710, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlFrontFace = builder.FunctionInfo{ApiIndex: 1, ID: 711, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlGetMultisamplefv = builder.FunctionInfo{ApiIndex: 1, ID: 712, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlLineWidth = builder.FunctionInfo{ApiIndex: 1, ID: 713, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlMinSampleShading = builder.FunctionInfo{ApiIndex: 1, ID: 714, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlPolygonOffset = builder.FunctionInfo{ApiIndex: 1, ID: 715, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlViewport = builder.FunctionInfo{ApiIndex: 1, ID: 716, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlGetBooleani_v = builder.FunctionInfo{ApiIndex: 1, ID: 717, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetBooleanv = builder.FunctionInfo{ApiIndex: 1, ID: 718, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlGetFloatv = builder.FunctionInfo{ApiIndex: 1, ID: 719, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlGetInteger64i_v = builder.FunctionInfo{ApiIndex: 1, ID: 720, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetInteger64v = builder.FunctionInfo{ApiIndex: 1, ID: 721, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlGetIntegeri_v = builder.FunctionInfo{ApiIndex: 1, ID: 722, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetIntegerv = builder.FunctionInfo{ApiIndex: 1, ID: 723, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlGetInternalformativ = builder.FunctionInfo{ApiIndex: 1, ID: 724, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlGetString = builder.FunctionInfo{ApiIndex: 1, ID: 725, ReturnType: protocol.Type_AbsolutePointer, Parameters: 1}
+var funcInfoGlGetStringi = builder.FunctionInfo{ApiIndex: 1, ID: 726, ReturnType: protocol.Type_AbsolutePointer, Parameters: 2}
+var funcInfoGlIsEnabled = builder.FunctionInfo{ApiIndex: 1, ID: 727, ReturnType: protocol.Type_Uint8, Parameters: 1}
+var funcInfoGlIsEnabledi = builder.FunctionInfo{ApiIndex: 1, ID: 728, ReturnType: protocol.Type_Uint8, Parameters: 2}
+var funcInfoGlClientWaitSync = builder.FunctionInfo{ApiIndex: 1, ID: 729, ReturnType: protocol.Type_Uint32, Parameters: 3}
+var funcInfoGlDeleteSync = builder.FunctionInfo{ApiIndex: 1, ID: 730, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlFenceSync = builder.FunctionInfo{ApiIndex: 1, ID: 731, ReturnType: protocol.Type_AbsolutePointer, Parameters: 2}
+var funcInfoGlGetSynciv = builder.FunctionInfo{ApiIndex: 1, ID: 732, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlIsSync = builder.FunctionInfo{ApiIndex: 1, ID: 733, ReturnType: protocol.Type_Uint8, Parameters: 1}
+var funcInfoGlWaitSync = builder.FunctionInfo{ApiIndex: 1, ID: 734, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlActiveTexture = builder.FunctionInfo{ApiIndex: 1, ID: 735, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlBindImageTexture = builder.FunctionInfo{ApiIndex: 1, ID: 736, ReturnType: protocol.Type_Void, Parameters: 7}
+var funcInfoGlBindSampler = builder.FunctionInfo{ApiIndex: 1, ID: 737, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlBindTexture = builder.FunctionInfo{ApiIndex: 1, ID: 738, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlCompressedTexImage2D = builder.FunctionInfo{ApiIndex: 1, ID: 739, ReturnType: protocol.Type_Void, Parameters: 8}
+var funcInfoGlCompressedTexImage3D = builder.FunctionInfo{ApiIndex: 1, ID: 740, ReturnType: protocol.Type_Void, Parameters: 9}
+var funcInfoGlCompressedTexSubImage2D = builder.FunctionInfo{ApiIndex: 1, ID: 741, ReturnType: protocol.Type_Void, Parameters: 9}
+var funcInfoGlCompressedTexSubImage3D = builder.FunctionInfo{ApiIndex: 1, ID: 742, ReturnType: protocol.Type_Void, Parameters: 11}
+var funcInfoGlCopyImageSubData = builder.FunctionInfo{ApiIndex: 1, ID: 743, ReturnType: protocol.Type_Void, Parameters: 15}
+var funcInfoGlCopyTexImage2D = builder.FunctionInfo{ApiIndex: 1, ID: 744, ReturnType: protocol.Type_Void, Parameters: 8}
+var funcInfoGlCopyTexSubImage2D = builder.FunctionInfo{ApiIndex: 1, ID: 745, ReturnType: protocol.Type_Void, Parameters: 8}
+var funcInfoGlCopyTexSubImage3D = builder.FunctionInfo{ApiIndex: 1, ID: 746, ReturnType: protocol.Type_Void, Parameters: 9}
+var funcInfoGlDeleteSamplers = builder.FunctionInfo{ApiIndex: 1, ID: 747, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlDeleteTextures = builder.FunctionInfo{ApiIndex: 1, ID: 748, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlGenSamplers = builder.FunctionInfo{ApiIndex: 1, ID: 749, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlGenTextures = builder.FunctionInfo{ApiIndex: 1, ID: 750, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlGenerateMipmap = builder.FunctionInfo{ApiIndex: 1, ID: 751, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlGetSamplerParameterIiv = builder.FunctionInfo{ApiIndex: 1, ID: 752, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetSamplerParameterIuiv = builder.FunctionInfo{ApiIndex: 1, ID: 753, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetSamplerParameterfv = builder.FunctionInfo{ApiIndex: 1, ID: 754, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetSamplerParameteriv = builder.FunctionInfo{ApiIndex: 1, ID: 755, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetTexLevelParameterfv = builder.FunctionInfo{ApiIndex: 1, ID: 756, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlGetTexLevelParameteriv = builder.FunctionInfo{ApiIndex: 1, ID: 757, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlGetTexParameterIiv = builder.FunctionInfo{ApiIndex: 1, ID: 758, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetTexParameterIuiv = builder.FunctionInfo{ApiIndex: 1, ID: 759, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetTexParameterfv = builder.FunctionInfo{ApiIndex: 1, ID: 760, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetTexParameteriv = builder.FunctionInfo{ApiIndex: 1, ID: 761, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlIsSampler = builder.FunctionInfo{ApiIndex: 1, ID: 762, ReturnType: protocol.Type_Uint8, Parameters: 1}
+var funcInfoGlIsTexture = builder.FunctionInfo{ApiIndex: 1, ID: 763, ReturnType: protocol.Type_Uint8, Parameters: 1}
+var funcInfoGlPixelStorei = builder.FunctionInfo{ApiIndex: 1, ID: 764, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlSamplerParameterIiv = builder.FunctionInfo{ApiIndex: 1, ID: 765, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlSamplerParameterIuiv = builder.FunctionInfo{ApiIndex: 1, ID: 766, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlSamplerParameterf = builder.FunctionInfo{ApiIndex: 1, ID: 767, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlSamplerParameterfv = builder.FunctionInfo{ApiIndex: 1, ID: 768, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlSamplerParameteri = builder.FunctionInfo{ApiIndex: 1, ID: 769, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlSamplerParameteriv = builder.FunctionInfo{ApiIndex: 1, ID: 770, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlTexBuffer = builder.FunctionInfo{ApiIndex: 1, ID: 771, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlTexBufferRange = builder.FunctionInfo{ApiIndex: 1, ID: 772, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlTexImage2D = builder.FunctionInfo{ApiIndex: 1, ID: 773, ReturnType: protocol.Type_Void, Parameters: 9}
+var funcInfoGlTexImage3D = builder.FunctionInfo{ApiIndex: 1, ID: 774, ReturnType: protocol.Type_Void, Parameters: 10}
+var funcInfoGlTexParameterIiv = builder.FunctionInfo{ApiIndex: 1, ID: 775, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlTexParameterIuiv = builder.FunctionInfo{ApiIndex: 1, ID: 776, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlTexParameterf = builder.FunctionInfo{ApiIndex: 1, ID: 777, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlTexParameterfv = builder.FunctionInfo{ApiIndex: 1, ID: 778, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlTexParameteri = builder.FunctionInfo{ApiIndex: 1, ID: 779, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlTexParameteriv = builder.FunctionInfo{ApiIndex: 1, ID: 780, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlTexStorage2D = builder.FunctionInfo{ApiIndex: 1, ID: 781, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlTexStorage2DMultisample = builder.FunctionInfo{ApiIndex: 1, ID: 782, ReturnType: protocol.Type_Void, Parameters: 6}
+var funcInfoGlTexStorage3D = builder.FunctionInfo{ApiIndex: 1, ID: 783, ReturnType: protocol.Type_Void, Parameters: 6}
+var funcInfoGlTexStorage3DMultisample = builder.FunctionInfo{ApiIndex: 1, ID: 784, ReturnType: protocol.Type_Void, Parameters: 7}
+var funcInfoGlTexSubImage2D = builder.FunctionInfo{ApiIndex: 1, ID: 785, ReturnType: protocol.Type_Void, Parameters: 9}
+var funcInfoGlTexSubImage3D = builder.FunctionInfo{ApiIndex: 1, ID: 786, ReturnType: protocol.Type_Void, Parameters: 11}
+var funcInfoGlBeginTransformFeedback = builder.FunctionInfo{ApiIndex: 1, ID: 787, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlBindTransformFeedback = builder.FunctionInfo{ApiIndex: 1, ID: 788, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlDeleteTransformFeedbacks = builder.FunctionInfo{ApiIndex: 1, ID: 789, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlEndTransformFeedback = builder.FunctionInfo{ApiIndex: 1, ID: 790, ReturnType: protocol.Type_Void, Parameters: 0}
+var funcInfoGlGenTransformFeedbacks = builder.FunctionInfo{ApiIndex: 1, ID: 791, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlGetTransformFeedbackVarying = builder.FunctionInfo{ApiIndex: 1, ID: 792, ReturnType: protocol.Type_Void, Parameters: 7}
+var funcInfoGlIsTransformFeedback = builder.FunctionInfo{ApiIndex: 1, ID: 793, ReturnType: protocol.Type_Uint8, Parameters: 1}
+var funcInfoGlPauseTransformFeedback = builder.FunctionInfo{ApiIndex: 1, ID: 794, ReturnType: protocol.Type_Void, Parameters: 0}
+var funcInfoGlResumeTransformFeedback = builder.FunctionInfo{ApiIndex: 1, ID: 795, ReturnType: protocol.Type_Void, Parameters: 0}
+var funcInfoGlTransformFeedbackVaryings = builder.FunctionInfo{ApiIndex: 1, ID: 796, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlBindVertexArray = builder.FunctionInfo{ApiIndex: 1, ID: 797, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlBindVertexBuffer = builder.FunctionInfo{ApiIndex: 1, ID: 798, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlDeleteVertexArrays = builder.FunctionInfo{ApiIndex: 1, ID: 799, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlDisableVertexAttribArray = builder.FunctionInfo{ApiIndex: 1, ID: 800, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlEnableVertexAttribArray = builder.FunctionInfo{ApiIndex: 1, ID: 801, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlGenVertexArrays = builder.FunctionInfo{ApiIndex: 1, ID: 802, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlGetVertexAttribIiv = builder.FunctionInfo{ApiIndex: 1, ID: 803, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetVertexAttribIuiv = builder.FunctionInfo{ApiIndex: 1, ID: 804, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetVertexAttribPointerv = builder.FunctionInfo{ApiIndex: 1, ID: 805, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetVertexAttribfv = builder.FunctionInfo{ApiIndex: 1, ID: 806, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetVertexAttribiv = builder.FunctionInfo{ApiIndex: 1, ID: 807, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlIsVertexArray = builder.FunctionInfo{ApiIndex: 1, ID: 808, ReturnType: protocol.Type_Uint8, Parameters: 1}
+var funcInfoGlVertexAttrib1f = builder.FunctionInfo{ApiIndex: 1, ID: 809, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlVertexAttrib1fv = builder.FunctionInfo{ApiIndex: 1, ID: 810, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlVertexAttrib2f = builder.FunctionInfo{ApiIndex: 1, ID: 811, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlVertexAttrib2fv = builder.FunctionInfo{ApiIndex: 1, ID: 812, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlVertexAttrib3f = builder.FunctionInfo{ApiIndex: 1, ID: 813, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlVertexAttrib3fv = builder.FunctionInfo{ApiIndex: 1, ID: 814, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlVertexAttrib4f = builder.FunctionInfo{ApiIndex: 1, ID: 815, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlVertexAttrib4fv = builder.FunctionInfo{ApiIndex: 1, ID: 816, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlVertexAttribBinding = builder.FunctionInfo{ApiIndex: 1, ID: 817, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlVertexAttribDivisor = builder.FunctionInfo{ApiIndex: 1, ID: 818, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlVertexAttribFormat = builder.FunctionInfo{ApiIndex: 1, ID: 819, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlVertexAttribI4i = builder.FunctionInfo{ApiIndex: 1, ID: 820, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlVertexAttribI4iv = builder.FunctionInfo{ApiIndex: 1, ID: 821, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlVertexAttribI4ui = builder.FunctionInfo{ApiIndex: 1, ID: 822, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlVertexAttribI4uiv = builder.FunctionInfo{ApiIndex: 1, ID: 823, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlVertexAttribIFormat = builder.FunctionInfo{ApiIndex: 1, ID: 824, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlVertexAttribIPointer = builder.FunctionInfo{ApiIndex: 1, ID: 825, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlVertexAttribPointer = builder.FunctionInfo{ApiIndex: 1, ID: 826, ReturnType: protocol.Type_Void, Parameters: 6}
+var funcInfoGlVertexBindingDivisor = builder.FunctionInfo{ApiIndex: 1, ID: 827, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlXCreateContext = builder.FunctionInfo{ApiIndex: 1, ID: 828, ReturnType: protocol.Type_AbsolutePointer, Parameters: 4}
+var funcInfoGlXCreateNewContext = builder.FunctionInfo{ApiIndex: 1, ID: 829, ReturnType: protocol.Type_AbsolutePointer, Parameters: 5}
+var funcInfoGlXMakeContextCurrent = builder.FunctionInfo{ApiIndex: 1, ID: 830, ReturnType: protocol.Type_Int64, Parameters: 4}
+var funcInfoGlXMakeCurrent = builder.FunctionInfo{ApiIndex: 1, ID: 831, ReturnType: protocol.Type_Int64, Parameters: 3}
+var funcInfoGlXSwapBuffers = builder.FunctionInfo{ApiIndex: 1, ID: 832, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlXQueryDrawable = builder.FunctionInfo{ApiIndex: 1, ID: 833, ReturnType: protocol.Type_Int64, Parameters: 4}
+var funcInfoWglCreateContext = builder.FunctionInfo{ApiIndex: 1, ID: 834, ReturnType: protocol.Type_AbsolutePointer, Parameters: 1}
+var funcInfoWglCreateContextAttribsARB = builder.FunctionInfo{ApiIndex: 1, ID: 835, ReturnType: protocol.Type_AbsolutePointer, Parameters: 3}
+var funcInfoWglMakeCurrent = builder.FunctionInfo{ApiIndex: 1, ID: 836, ReturnType: protocol.Type_Int64, Parameters: 2}
+var funcInfoWglSwapBuffers = builder.FunctionInfo{ApiIndex: 1, ID: 837, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoCGLCreateContext = builder.FunctionInfo{ApiIndex: 1, ID: 838, ReturnType: protocol.Type_Int64, Parameters: 3}
+var funcInfoCGLSetCurrentContext = builder.FunctionInfo{ApiIndex: 1, ID: 839, ReturnType: protocol.Type_Int64, Parameters: 1}
+var funcInfoCGLGetSurface = builder.FunctionInfo{ApiIndex: 1, ID: 840, ReturnType: protocol.Type_Int64, Parameters: 4}
+var funcInfoCGSGetSurfaceBounds = builder.FunctionInfo{ApiIndex: 1, ID: 841, ReturnType: protocol.Type_Int64, Parameters: 4}
+var funcInfoCGLFlushDrawable = builder.FunctionInfo{ApiIndex: 1, ID: 842, ReturnType: protocol.Type_Int64, Parameters: 1}
+var funcInfoGlGetQueryObjecti64v = builder.FunctionInfo{ApiIndex: 1, ID: 843, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetQueryObjectui64v = builder.FunctionInfo{ApiIndex: 1, ID: 844, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlTexStorage1D = builder.FunctionInfo{ApiIndex: 1, ID: 845, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlBindFragDataLocation = builder.FunctionInfo{ApiIndex: 1, ID: 846, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlAlphaFunc = builder.FunctionInfo{ApiIndex: 1, ID: 847, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlAlphaFuncx = builder.FunctionInfo{ApiIndex: 1, ID: 848, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlAlphaFuncxOES = builder.FunctionInfo{ApiIndex: 1, ID: 849, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlBindFramebufferOES = builder.FunctionInfo{ApiIndex: 1, ID: 850, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlBindRenderbufferOES = builder.FunctionInfo{ApiIndex: 1, ID: 851, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlBlendEquationOES = builder.FunctionInfo{ApiIndex: 1, ID: 852, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlBlendEquationSeparateOES = builder.FunctionInfo{ApiIndex: 1, ID: 853, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlBlendFuncSeparateOES = builder.FunctionInfo{ApiIndex: 1, ID: 854, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlCheckFramebufferStatusOES = builder.FunctionInfo{ApiIndex: 1, ID: 855, ReturnType: protocol.Type_Uint32, Parameters: 1}
+var funcInfoGlClearColorx = builder.FunctionInfo{ApiIndex: 1, ID: 856, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlClearColorxOES = builder.FunctionInfo{ApiIndex: 1, ID: 857, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlClearDepthfOES = builder.FunctionInfo{ApiIndex: 1, ID: 858, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlClearDepthx = builder.FunctionInfo{ApiIndex: 1, ID: 859, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlClearDepthxOES = builder.FunctionInfo{ApiIndex: 1, ID: 860, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlClientActiveTexture = builder.FunctionInfo{ApiIndex: 1, ID: 861, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlClipPlanef = builder.FunctionInfo{ApiIndex: 1, ID: 862, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlClipPlanefIMG = builder.FunctionInfo{ApiIndex: 1, ID: 863, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlClipPlanefOES = builder.FunctionInfo{ApiIndex: 1, ID: 864, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlClipPlanex = builder.FunctionInfo{ApiIndex: 1, ID: 865, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlClipPlanexIMG = builder.FunctionInfo{ApiIndex: 1, ID: 866, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlClipPlanexOES = builder.FunctionInfo{ApiIndex: 1, ID: 867, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlColor4f = builder.FunctionInfo{ApiIndex: 1, ID: 868, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlColor4ub = builder.FunctionInfo{ApiIndex: 1, ID: 869, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlColor4x = builder.FunctionInfo{ApiIndex: 1, ID: 870, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlColor4xOES = builder.FunctionInfo{ApiIndex: 1, ID: 871, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlColorPointer = builder.FunctionInfo{ApiIndex: 1, ID: 872, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlCurrentPaletteMatrixOES = builder.FunctionInfo{ApiIndex: 1, ID: 873, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlDeleteFramebuffersOES = builder.FunctionInfo{ApiIndex: 1, ID: 874, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlDeleteRenderbuffersOES = builder.FunctionInfo{ApiIndex: 1, ID: 875, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlDepthRangefOES = builder.FunctionInfo{ApiIndex: 1, ID: 876, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlDepthRangex = builder.FunctionInfo{ApiIndex: 1, ID: 877, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlDepthRangexOES = builder.FunctionInfo{ApiIndex: 1, ID: 878, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlDisableClientState = builder.FunctionInfo{ApiIndex: 1, ID: 879, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlDrawTexfOES = builder.FunctionInfo{ApiIndex: 1, ID: 880, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlDrawTexfvOES = builder.FunctionInfo{ApiIndex: 1, ID: 881, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlDrawTexiOES = builder.FunctionInfo{ApiIndex: 1, ID: 882, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlDrawTexivOES = builder.FunctionInfo{ApiIndex: 1, ID: 883, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlDrawTexsOES = builder.FunctionInfo{ApiIndex: 1, ID: 884, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlDrawTexsvOES = builder.FunctionInfo{ApiIndex: 1, ID: 885, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlDrawTexxOES = builder.FunctionInfo{ApiIndex: 1, ID: 886, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlDrawTexxvOES = builder.FunctionInfo{ApiIndex: 1, ID: 887, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlEnableClientState = builder.FunctionInfo{ApiIndex: 1, ID: 888, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlFogf = builder.FunctionInfo{ApiIndex: 1, ID: 889, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlFogfv = builder.FunctionInfo{ApiIndex: 1, ID: 890, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlFogx = builder.FunctionInfo{ApiIndex: 1, ID: 891, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlFogxOES = builder.FunctionInfo{ApiIndex: 1, ID: 892, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlFogxv = builder.FunctionInfo{ApiIndex: 1, ID: 893, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlFogxvOES = builder.FunctionInfo{ApiIndex: 1, ID: 894, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlFramebufferRenderbufferOES = builder.FunctionInfo{ApiIndex: 1, ID: 895, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlFramebufferTexture2DOES = builder.FunctionInfo{ApiIndex: 1, ID: 896, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlFrustumf = builder.FunctionInfo{ApiIndex: 1, ID: 897, ReturnType: protocol.Type_Void, Parameters: 6}
+var funcInfoGlFrustumfOES = builder.FunctionInfo{ApiIndex: 1, ID: 898, ReturnType: protocol.Type_Void, Parameters: 6}
+var funcInfoGlFrustumx = builder.FunctionInfo{ApiIndex: 1, ID: 899, ReturnType: protocol.Type_Void, Parameters: 6}
+var funcInfoGlFrustumxOES = builder.FunctionInfo{ApiIndex: 1, ID: 900, ReturnType: protocol.Type_Void, Parameters: 6}
+var funcInfoGlGenFramebuffersOES = builder.FunctionInfo{ApiIndex: 1, ID: 901, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlGenRenderbuffersOES = builder.FunctionInfo{ApiIndex: 1, ID: 902, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlGenerateMipmapOES = builder.FunctionInfo{ApiIndex: 1, ID: 903, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlGetClipPlanef = builder.FunctionInfo{ApiIndex: 1, ID: 904, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlGetClipPlanefOES = builder.FunctionInfo{ApiIndex: 1, ID: 905, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlGetClipPlanex = builder.FunctionInfo{ApiIndex: 1, ID: 906, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlGetClipPlanexOES = builder.FunctionInfo{ApiIndex: 1, ID: 907, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlGetFixedv = builder.FunctionInfo{ApiIndex: 1, ID: 908, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlGetFixedvOES = builder.FunctionInfo{ApiIndex: 1, ID: 909, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlGetFramebufferAttachmentParameterivOES = builder.FunctionInfo{ApiIndex: 1, ID: 910, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlGetLightfv = builder.FunctionInfo{ApiIndex: 1, ID: 911, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetLightxv = builder.FunctionInfo{ApiIndex: 1, ID: 912, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetLightxvOES = builder.FunctionInfo{ApiIndex: 1, ID: 913, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetMaterialfv = builder.FunctionInfo{ApiIndex: 1, ID: 914, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetMaterialxv = builder.FunctionInfo{ApiIndex: 1, ID: 915, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetMaterialxvOES = builder.FunctionInfo{ApiIndex: 1, ID: 916, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetRenderbufferParameterivOES = builder.FunctionInfo{ApiIndex: 1, ID: 917, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetTexEnvfv = builder.FunctionInfo{ApiIndex: 1, ID: 918, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetTexEnviv = builder.FunctionInfo{ApiIndex: 1, ID: 919, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetTexEnvxv = builder.FunctionInfo{ApiIndex: 1, ID: 920, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetTexEnvxvOES = builder.FunctionInfo{ApiIndex: 1, ID: 921, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetTexGenfvOES = builder.FunctionInfo{ApiIndex: 1, ID: 922, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetTexGenivOES = builder.FunctionInfo{ApiIndex: 1, ID: 923, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetTexGenxvOES = builder.FunctionInfo{ApiIndex: 1, ID: 924, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetTexParameterxv = builder.FunctionInfo{ApiIndex: 1, ID: 925, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlGetTexParameterxvOES = builder.FunctionInfo{ApiIndex: 1, ID: 926, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlIsFramebufferOES = builder.FunctionInfo{ApiIndex: 1, ID: 927, ReturnType: protocol.Type_Uint8, Parameters: 1}
+var funcInfoGlIsRenderbufferOES = builder.FunctionInfo{ApiIndex: 1, ID: 928, ReturnType: protocol.Type_Uint8, Parameters: 1}
+var funcInfoGlLightModelf = builder.FunctionInfo{ApiIndex: 1, ID: 929, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlLightModelfv = builder.FunctionInfo{ApiIndex: 1, ID: 930, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlLightModelx = builder.FunctionInfo{ApiIndex: 1, ID: 931, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlLightModelxOES = builder.FunctionInfo{ApiIndex: 1, ID: 932, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlLightModelxv = builder.FunctionInfo{ApiIndex: 1, ID: 933, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlLightModelxvOES = builder.FunctionInfo{ApiIndex: 1, ID: 934, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlLightf = builder.FunctionInfo{ApiIndex: 1, ID: 935, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlLightfv = builder.FunctionInfo{ApiIndex: 1, ID: 936, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlLightx = builder.FunctionInfo{ApiIndex: 1, ID: 937, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlLightxOES = builder.FunctionInfo{ApiIndex: 1, ID: 938, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlLightxv = builder.FunctionInfo{ApiIndex: 1, ID: 939, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlLightxvOES = builder.FunctionInfo{ApiIndex: 1, ID: 940, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlLineWidthx = builder.FunctionInfo{ApiIndex: 1, ID: 941, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlLineWidthxOES = builder.FunctionInfo{ApiIndex: 1, ID: 942, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlLoadIdentity = builder.FunctionInfo{ApiIndex: 1, ID: 943, ReturnType: protocol.Type_Void, Parameters: 0}
+var funcInfoGlLoadMatrixf = builder.FunctionInfo{ApiIndex: 1, ID: 944, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlLoadMatrixx = builder.FunctionInfo{ApiIndex: 1, ID: 945, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlLoadMatrixxOES = builder.FunctionInfo{ApiIndex: 1, ID: 946, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlLoadPaletteFromModelViewMatrixOES = builder.FunctionInfo{ApiIndex: 1, ID: 947, ReturnType: protocol.Type_Void, Parameters: 0}
+var funcInfoGlLogicOp = builder.FunctionInfo{ApiIndex: 1, ID: 948, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlMaterialf = builder.FunctionInfo{ApiIndex: 1, ID: 949, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlMaterialfv = builder.FunctionInfo{ApiIndex: 1, ID: 950, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlMaterialx = builder.FunctionInfo{ApiIndex: 1, ID: 951, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlMaterialxOES = builder.FunctionInfo{ApiIndex: 1, ID: 952, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlMaterialxv = builder.FunctionInfo{ApiIndex: 1, ID: 953, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlMaterialxvOES = builder.FunctionInfo{ApiIndex: 1, ID: 954, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlMatrixIndexPointerOES = builder.FunctionInfo{ApiIndex: 1, ID: 955, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlMatrixMode = builder.FunctionInfo{ApiIndex: 1, ID: 956, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlMultMatrixf = builder.FunctionInfo{ApiIndex: 1, ID: 957, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlMultMatrixx = builder.FunctionInfo{ApiIndex: 1, ID: 958, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlMultMatrixxOES = builder.FunctionInfo{ApiIndex: 1, ID: 959, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlMultiTexCoord4f = builder.FunctionInfo{ApiIndex: 1, ID: 960, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlMultiTexCoord4x = builder.FunctionInfo{ApiIndex: 1, ID: 961, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlMultiTexCoord4xOES = builder.FunctionInfo{ApiIndex: 1, ID: 962, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlNormal3f = builder.FunctionInfo{ApiIndex: 1, ID: 963, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlNormal3x = builder.FunctionInfo{ApiIndex: 1, ID: 964, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlNormal3xOES = builder.FunctionInfo{ApiIndex: 1, ID: 965, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlNormalPointer = builder.FunctionInfo{ApiIndex: 1, ID: 966, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlOrthof = builder.FunctionInfo{ApiIndex: 1, ID: 967, ReturnType: protocol.Type_Void, Parameters: 6}
+var funcInfoGlOrthofOES = builder.FunctionInfo{ApiIndex: 1, ID: 968, ReturnType: protocol.Type_Void, Parameters: 6}
+var funcInfoGlOrthox = builder.FunctionInfo{ApiIndex: 1, ID: 969, ReturnType: protocol.Type_Void, Parameters: 6}
+var funcInfoGlOrthoxOES = builder.FunctionInfo{ApiIndex: 1, ID: 970, ReturnType: protocol.Type_Void, Parameters: 6}
+var funcInfoGlPointParameterf = builder.FunctionInfo{ApiIndex: 1, ID: 971, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlPointParameterfv = builder.FunctionInfo{ApiIndex: 1, ID: 972, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlPointParameterx = builder.FunctionInfo{ApiIndex: 1, ID: 973, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlPointParameterxOES = builder.FunctionInfo{ApiIndex: 1, ID: 974, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlPointParameterxv = builder.FunctionInfo{ApiIndex: 1, ID: 975, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlPointParameterxvOES = builder.FunctionInfo{ApiIndex: 1, ID: 976, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlPointSize = builder.FunctionInfo{ApiIndex: 1, ID: 977, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlPointSizePointerOES = builder.FunctionInfo{ApiIndex: 1, ID: 978, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlPointSizex = builder.FunctionInfo{ApiIndex: 1, ID: 979, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlPointSizexOES = builder.FunctionInfo{ApiIndex: 1, ID: 980, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlPolygonOffsetx = builder.FunctionInfo{ApiIndex: 1, ID: 981, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlPolygonOffsetxOES = builder.FunctionInfo{ApiIndex: 1, ID: 982, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlPopMatrix = builder.FunctionInfo{ApiIndex: 1, ID: 983, ReturnType: protocol.Type_Void, Parameters: 0}
+var funcInfoGlPushMatrix = builder.FunctionInfo{ApiIndex: 1, ID: 984, ReturnType: protocol.Type_Void, Parameters: 0}
+var funcInfoGlQueryMatrixxOES = builder.FunctionInfo{ApiIndex: 1, ID: 985, ReturnType: protocol.Type_Uint32, Parameters: 2}
+var funcInfoGlRenderbufferStorageOES = builder.FunctionInfo{ApiIndex: 1, ID: 986, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlRotatef = builder.FunctionInfo{ApiIndex: 1, ID: 987, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlRotatex = builder.FunctionInfo{ApiIndex: 1, ID: 988, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlRotatexOES = builder.FunctionInfo{ApiIndex: 1, ID: 989, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlSampleCoveragex = builder.FunctionInfo{ApiIndex: 1, ID: 990, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlSampleCoveragexOES = builder.FunctionInfo{ApiIndex: 1, ID: 991, ReturnType: protocol.Type_Void, Parameters: 2}
+var funcInfoGlScalef = builder.FunctionInfo{ApiIndex: 1, ID: 992, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlScalex = builder.FunctionInfo{ApiIndex: 1, ID: 993, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlScalexOES = builder.FunctionInfo{ApiIndex: 1, ID: 994, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlShadeModel = builder.FunctionInfo{ApiIndex: 1, ID: 995, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoGlTexCoordPointer = builder.FunctionInfo{ApiIndex: 1, ID: 996, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlTexEnvf = builder.FunctionInfo{ApiIndex: 1, ID: 997, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlTexEnvfv = builder.FunctionInfo{ApiIndex: 1, ID: 998, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlTexEnvi = builder.FunctionInfo{ApiIndex: 1, ID: 999, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlTexEnviv = builder.FunctionInfo{ApiIndex: 1, ID: 1000, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlTexEnvx = builder.FunctionInfo{ApiIndex: 1, ID: 1001, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlTexEnvxOES = builder.FunctionInfo{ApiIndex: 1, ID: 1002, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlTexEnvxv = builder.FunctionInfo{ApiIndex: 1, ID: 1003, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlTexEnvxvOES = builder.FunctionInfo{ApiIndex: 1, ID: 1004, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlTexGenfOES = builder.FunctionInfo{ApiIndex: 1, ID: 1005, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlTexGenfvOES = builder.FunctionInfo{ApiIndex: 1, ID: 1006, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlTexGeniOES = builder.FunctionInfo{ApiIndex: 1, ID: 1007, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlTexGenivOES = builder.FunctionInfo{ApiIndex: 1, ID: 1008, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlTexGenxOES = builder.FunctionInfo{ApiIndex: 1, ID: 1009, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlTexGenxvOES = builder.FunctionInfo{ApiIndex: 1, ID: 1010, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlTexParameterx = builder.FunctionInfo{ApiIndex: 1, ID: 1011, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlTexParameterxOES = builder.FunctionInfo{ApiIndex: 1, ID: 1012, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlTexParameterxv = builder.FunctionInfo{ApiIndex: 1, ID: 1013, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlTexParameterxvOES = builder.FunctionInfo{ApiIndex: 1, ID: 1014, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlTranslatef = builder.FunctionInfo{ApiIndex: 1, ID: 1015, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlTranslatex = builder.FunctionInfo{ApiIndex: 1, ID: 1016, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlTranslatexOES = builder.FunctionInfo{ApiIndex: 1, ID: 1017, ReturnType: protocol.Type_Void, Parameters: 3}
+var funcInfoGlVertexPointer = builder.FunctionInfo{ApiIndex: 1, ID: 1018, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlWeightPointerOES = builder.FunctionInfo{ApiIndex: 1, ID: 1019, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlColorPointerBounds = builder.FunctionInfo{ApiIndex: 1, ID: 1020, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlNormalPointerBounds = builder.FunctionInfo{ApiIndex: 1, ID: 1021, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlTexCoordPointerBounds = builder.FunctionInfo{ApiIndex: 1, ID: 1022, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlVertexPointerBounds = builder.FunctionInfo{ApiIndex: 1, ID: 1023, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlPointSizePointerOESBounds = builder.FunctionInfo{ApiIndex: 1, ID: 1024, ReturnType: protocol.Type_Void, Parameters: 4}
+var funcInfoGlMatrixIndexPointerOESBounds = builder.FunctionInfo{ApiIndex: 1, ID: 1025, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoGlWeightPointerOESBounds = builder.FunctionInfo{ApiIndex: 1, ID: 1026, ReturnType: protocol.Type_Void, Parameters: 5}
+var funcInfoContextInfo = builder.FunctionInfo{ApiIndex: 1, ID: 0x10000 - 1034 + 1027, ReturnType: protocol.Type_Void, Parameters: 12}
+var funcInfoReplayCreateRenderer = builder.FunctionInfo{ApiIndex: 1, ID: 0x10000 - 1034 + 1028, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoReplayBindRenderer = builder.FunctionInfo{ApiIndex: 1, ID: 0x10000 - 1034 + 1029, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoReplayChangeBackbuffer = builder.FunctionInfo{ApiIndex: 1, ID: 0x10000 - 1034 + 1030, ReturnType: protocol.Type_Void, Parameters: 6}
+var funcInfoStartTimer = builder.FunctionInfo{ApiIndex: 1, ID: 0x10000 - 1034 + 1031, ReturnType: protocol.Type_Void, Parameters: 1}
+var funcInfoStopTimer = builder.FunctionInfo{ApiIndex: 1, ID: 0x10000 - 1034 + 1032, ReturnType: protocol.Type_Uint64, Parameters: 1}
+var funcInfoFlushPostBuffer = builder.FunctionInfo{ApiIndex: 1, ID: 0x10000 - 1034 + 1033, ReturnType: protocol.Type_Void, Parameters: 0}
func (c EGLTimeKHR) value(ϟb *builder.Builder, ϟa atom.Atom, ϟs *gfxapi.State) value.Value {
return value.U64(uint64(c))
@@ -1107,9 +1170,15 @@
func (c GLint64) value(ϟb *builder.Builder, ϟa atom.Atom, ϟs *gfxapi.State) value.Value {
return value.S64(int64(c))
}
+func (c GLint64EXT) value(ϟb *builder.Builder, ϟa atom.Atom, ϟs *gfxapi.State) value.Value {
+ return value.S64(int64(c))
+}
func (c GLuint64) value(ϟb *builder.Builder, ϟa atom.Atom, ϟs *gfxapi.State) value.Value {
return value.U64(uint64(c))
}
+func (c GLuint64EXT) value(ϟb *builder.Builder, ϟa atom.Atom, ϟs *gfxapi.State) value.Value {
+ return value.U64(uint64(c))
+}
func (c GLfixed) value(ϟb *builder.Builder, ϟa atom.Atom, ϟs *gfxapi.State) value.Value {
return value.S32(int32(c))
}
@@ -2138,6 +2207,23 @@
ctx.Rasterization.PrimitiveBoundingBox.Max = Vec4f{Elements: [4]GLfloat{maxX, maxY, maxZ, maxW}}
return nil
}
+func subObserveAttribList(ϟctx log.Context, ϟa atom.Atom, ϟo *atom.Observations, ϟs *gfxapi.State, ϟc *State, ϟd database.Database, ϟb *builder.Builder, attriblist EGLintᶜᵖ) error {
+ if (attriblist) != (EGLintᶜᵖ{}) {
+ done := MakeBoolˢ(uint64(1), ϟs)
+ done.Index(uint64(0), ϟs).Write(ϟctx, false, ϟa, ϟs, ϟd, ϟb)
+ for i := int32(0); i < int32(256); i++ {
+ if !(done.Index(uint64(0), ϟs).Read(ϟctx, ϟa, ϟs, ϟd, ϟb)) {
+ pair := attriblist.Slice(uint64((i)*(int32(2))), uint64(((i)*(int32(2)))+(int32(2))), ϟs)
+ if (EGLenum(pair.Index(uint64(0), ϟs).Read(ϟctx, ϟa, ϟs, ϟd, ϟb))) != (EGLenum_EGL_NONE) {
+ _ = pair.Index(uint64(1), ϟs).Read(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ } else {
+ done.Index(uint64(0), ϟs).Write(ϟctx, true, ϟa, ϟs, ϟd, ϟb)
+ }
+ }
+ }
+ }
+ return nil
+}
func subApplyProgramInfoExtra(ϟctx log.Context, ϟa atom.Atom, ϟo *atom.Observations, ϟs *gfxapi.State, ϟc *State, ϟd database.Database, ϟb *builder.Builder, programId ProgramId, info *ProgramInfo) error {
if (info) != ((*ProgramInfo)(nil)) {
ctx, ϟerr := subGetContext(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb)
@@ -2660,7 +2746,11 @@
}
}
switch internalformat {
- case GLenum_GL_DEPTH24_STENCIL8, GLenum_GL_DEPTH32F_STENCIL8, GLenum_GL_DEPTH_COMPONENT16, GLenum_GL_DEPTH_COMPONENT24, GLenum_GL_DEPTH_COMPONENT32F, GLenum_GL_R16I, GLenum_GL_R16UI, GLenum_GL_R32I, GLenum_GL_R32UI, GLenum_GL_R8, GLenum_GL_R8I, GLenum_GL_R8UI, GLenum_GL_RG16I, GLenum_GL_RG16UI, GLenum_GL_RG32I, GLenum_GL_RG32UI, GLenum_GL_RG8, GLenum_GL_RG8I, GLenum_GL_RG8UI, GLenum_GL_RGB10_A2, GLenum_GL_RGB10_A2UI, GLenum_GL_RGB565, GLenum_GL_RGB5_A1, GLenum_GL_RGB8, GLenum_GL_RGBA16I, GLenum_GL_RGBA16UI, GLenum_GL_RGBA32I, GLenum_GL_RGBA32UI, GLenum_GL_RGBA4, GLenum_GL_RGBA8, GLenum_GL_RGBA8I, GLenum_GL_RGBA8UI, GLenum_GL_SRGB8_ALPHA8, GLenum_GL_STENCIL_INDEX8:
+ case GLenum_GL_DEPTH_COMPONENT16, GLenum_GL_RGB565, GLenum_GL_RGB5_A1, GLenum_GL_RGBA4, GLenum_GL_STENCIL_INDEX8:
+ case GLenum_GL_DEPTH24_STENCIL8, GLenum_GL_DEPTH32F_STENCIL8, GLenum_GL_DEPTH_COMPONENT24, GLenum_GL_DEPTH_COMPONENT32F, GLenum_GL_R16I, GLenum_GL_R16UI, GLenum_GL_R32I, GLenum_GL_R32UI, GLenum_GL_R8, GLenum_GL_R8I, GLenum_GL_R8UI, GLenum_GL_RG16I, GLenum_GL_RG16UI, GLenum_GL_RG32I, GLenum_GL_RG32UI, GLenum_GL_RG8, GLenum_GL_RG8I, GLenum_GL_RG8UI, GLenum_GL_RGB10_A2, GLenum_GL_RGB10_A2UI, GLenum_GL_RGB8, GLenum_GL_RGBA16I, GLenum_GL_RGBA16UI, GLenum_GL_RGBA32I, GLenum_GL_RGBA32UI, GLenum_GL_RGBA8, GLenum_GL_RGBA8I, GLenum_GL_RGBA8UI, GLenum_GL_SRGB8_ALPHA8:
+ if ϟerr := subMinRequiredVersion(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, GLint(int32(3)), GLint(int32(0))); ϟerr != nil {
+ return ϟerr
+ }
case GLenum_GL_R16, GLenum_GL_RG16, GLenum_GL_RGBA16:
if ϟerr := subMinRequiredVersion(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, GLint(int32(3)), GLint(int32(1))); ϟerr != nil {
return ϟerr
@@ -2673,9 +2763,31 @@
return ϟerr
}
}
+ if ((width) < (GLsizei(int32(0)))) || ((height) < (GLsizei(int32(0)))) {
+ if ϟerr := subGlErrorInvalidValue(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb); ϟerr != nil {
+ return ϟerr
+ }
+ }
+ ctx, ϟerr := subGetContext(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb)
+ if ϟerr != nil {
+ return ϟerr
+ }
+ if ((width) > (GLsizei(ctx.Constants.MaxRenderbufferSize))) || ((height) > (GLsizei(ctx.Constants.MaxRenderbufferSize))) {
+ if ϟerr := subGlErrorInvalidValue(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb); ϟerr != nil {
+ return ϟerr
+ }
+ }
+ id := ctx.BoundRenderbuffers.Get(target)
+ if (id) == (RenderbufferId(uint32(0))) {
+ if ϟerr := subGlErrorInvalidOperation(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb); ϟerr != nil {
+ return ϟerr
+ }
+ }
+ rb := ctx.Instances.Renderbuffers.Get(id)
+ rb.InternalFormat = internalformat
+ rb.Width = width
+ rb.Height = height
_ = samples
- _ = width
- _ = height
return nil
}
func subImageSize(ϟctx log.Context, ϟa atom.Atom, ϟo *atom.Observations, ϟs *gfxapi.State, ϟc *State, ϟd database.Database, ϟb *builder.Builder, width uint32, height uint32, format GLenum, ty GLenum) (uint32, error) {
@@ -6833,6 +6945,11 @@
p.Index(uint64(1), ϟs).Write(ϟctx, GLint(s.BorderColor.Elements[uint64(1)]), ϟa, ϟs, ϟd, ϟb)
p.Index(uint64(2), ϟs).Write(ϟctx, GLint(s.BorderColor.Elements[uint64(2)]), ϟa, ϟs, ϟd, ϟb)
p.Index(uint64(3), ϟs).Write(ϟctx, GLint(s.BorderColor.Elements[uint64(3)]), ϟa, ϟs, ϟd, ϟb)
+ case GLenum_GL_TEXTURE_MAX_ANISOTROPY_EXT:
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_EXT_texture_filter_anisotropic); ϟerr != nil {
+ return ϟerr
+ }
+ params.Slice(uint64(0), uint64(1), ϟs).Index(uint64(0), ϟs).Write(ϟctx, GLint(s.MaxAnisotropy), ϟa, ϟs, ϟd, ϟb)
default:
if ϟerr := subGlErrorInvalidEnum(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, pname); ϟerr != nil {
return ϟerr
@@ -6874,6 +6991,11 @@
p.Index(uint64(1), ϟs).Write(ϟctx, GLuint(s.BorderColor.Elements[uint64(1)]), ϟa, ϟs, ϟd, ϟb)
p.Index(uint64(2), ϟs).Write(ϟctx, GLuint(s.BorderColor.Elements[uint64(2)]), ϟa, ϟs, ϟd, ϟb)
p.Index(uint64(3), ϟs).Write(ϟctx, GLuint(s.BorderColor.Elements[uint64(3)]), ϟa, ϟs, ϟd, ϟb)
+ case GLenum_GL_TEXTURE_MAX_ANISOTROPY_EXT:
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_EXT_texture_filter_anisotropic); ϟerr != nil {
+ return ϟerr
+ }
+ params.Slice(uint64(0), uint64(1), ϟs).Index(uint64(0), ϟs).Write(ϟctx, GLuint(s.MaxAnisotropy), ϟa, ϟs, ϟd, ϟb)
default:
if ϟerr := subGlErrorInvalidEnum(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, pname); ϟerr != nil {
return ϟerr
@@ -7174,6 +7296,11 @@
if ϟerr := subMinRequiredVersion(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, GLint(int32(3)), GLint(int32(2))); ϟerr != nil {
return ϟerr
}
+ case GLenum_GL_TEXTURE_MAX_ANISOTROPY_EXT:
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_EXT_texture_filter_anisotropic); ϟerr != nil {
+ return ϟerr
+ }
+ s.MaxAnisotropy = GLfloat(params.Slice(uint64(0), uint64(1), ϟs).Index(uint64(0), ϟs).Read(ϟctx, ϟa, ϟs, ϟd, ϟb))
default:
if ϟerr := subGlErrorInvalidEnum(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, pname); ϟerr != nil {
return ϟerr
@@ -7210,6 +7337,11 @@
if ϟerr := subMinRequiredVersion(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, GLint(int32(3)), GLint(int32(2))); ϟerr != nil {
return ϟerr
}
+ case GLenum_GL_TEXTURE_MAX_ANISOTROPY_EXT:
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_EXT_texture_filter_anisotropic); ϟerr != nil {
+ return ϟerr
+ }
+ s.MaxAnisotropy = GLfloat(params.Slice(uint64(0), uint64(1), ϟs).Index(uint64(0), ϟs).Read(ϟctx, ϟa, ϟs, ϟd, ϟb))
default:
if ϟerr := subGlErrorInvalidEnum(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, pname); ϟerr != nil {
return ϟerr
@@ -12768,6 +12900,11 @@
p.Index(uint64(1), ϟs).Write(ϟctx, s.BorderColor.Elements[uint64(1)], ϟa, ϟs, ϟd, ϟb)
p.Index(uint64(2), ϟs).Write(ϟctx, s.BorderColor.Elements[uint64(2)], ϟa, ϟs, ϟd, ϟb)
p.Index(uint64(3), ϟs).Write(ϟctx, s.BorderColor.Elements[uint64(3)], ϟa, ϟs, ϟd, ϟb)
+ case GLenum_GL_TEXTURE_MAX_ANISOTROPY_EXT:
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_EXT_texture_filter_anisotropic); ϟerr != nil {
+ return ϟerr
+ }
+ params.Slice(uint64(0), uint64(1), ϟs).Index(uint64(0), ϟs).Write(ϟctx, s.MaxAnisotropy, ϟa, ϟs, ϟd, ϟb)
default:
if ϟerr := subGlErrorInvalidEnum(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, pname); ϟerr != nil {
return ϟerr
@@ -12936,6 +13073,11 @@
if ϟerr := subMinRequiredVersion(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, GLint(int32(3)), GLint(int32(2))); ϟerr != nil {
return ϟerr
}
+ case GLenum_GL_TEXTURE_MAX_ANISOTROPY_EXT:
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_EXT_texture_filter_anisotropic); ϟerr != nil {
+ return ϟerr
+ }
+ s.MaxAnisotropy = params.Elements[uint64(0)]
default:
if ϟerr := subGlErrorInvalidEnum(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, pname); ϟerr != nil {
return ϟerr
@@ -12972,6 +13114,11 @@
if ϟerr := subMinRequiredVersion(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, GLint(int32(3)), GLint(int32(2))); ϟerr != nil {
return ϟerr
}
+ case GLenum_GL_TEXTURE_MAX_ANISOTROPY_EXT:
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_EXT_texture_filter_anisotropic); ϟerr != nil {
+ return ϟerr
+ }
+ s.MaxAnisotropy = params.Slice(uint64(0), uint64(1), ϟs).Index(uint64(0), ϟs).Read(ϟctx, ϟa, ϟs, ϟd, ϟb)
default:
if ϟerr := subGlErrorInvalidEnum(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, pname); ϟerr != nil {
return ϟerr
@@ -13008,6 +13155,11 @@
if ϟerr := subMinRequiredVersion(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, GLint(int32(3)), GLint(int32(2))); ϟerr != nil {
return ϟerr
}
+ case GLenum_GL_TEXTURE_MAX_ANISOTROPY_EXT:
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_EXT_texture_filter_anisotropic); ϟerr != nil {
+ return ϟerr
+ }
+ s.MaxAnisotropy = GLfloat(params.Elements[uint64(0)])
default:
if ϟerr := subGlErrorInvalidEnum(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, pname); ϟerr != nil {
return ϟerr
@@ -14856,6 +15008,10 @@
if ϟerr := subMinRequiredVersion(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, GLint(int32(3)), GLint(int32(2))); ϟerr != nil {
return ϟerr
}
+ case GLenum_GL_TIMESTAMP_EXT:
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_EXT_disjoint_timer_query); ϟerr != nil {
+ return ϟerr
+ }
default:
if ϟerr := subGlErrorInvalidEnum(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ϟa.Target); ϟerr != nil {
return ϟerr
@@ -14876,6 +15032,11 @@
} else {
ϟa.Value.Slice(uint64(0), uint64(1), ϟs).Index(uint64(0), ϟs).Write(ϟctx, GLint(int32(0)), ϟa, ϟs, ϟd, ϟb)
}
+ case GLenum_GL_QUERY_COUNTER_BITS_EXT:
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_EXT_disjoint_timer_query); ϟerr != nil {
+ return ϟerr
+ }
+ ϟa.Value.Slice(uint64(0), uint64(1), ϟs).Index(uint64(0), ϟs).Write(ϟctx, ϟa.Value.Slice(uint64(0), uint64(1), ϟs).Index(uint64(0), ϟs).Read(ϟctx, ϟa, ϟs, ϟd, nil), ϟa, ϟs, ϟd, ϟb)
default:
if ϟerr := subGlErrorInvalidEnum(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ϟa.Parameter); ϟerr != nil {
return ϟerr
@@ -16442,8 +16603,15 @@
ϟo := ϟa.Extras().Observations()
_ = ϟc
ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subObserveAttribList(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ϟa.AttribList); ϟerr != nil {
+ return ϟerr
+ }
ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
- ϟa.NumConfig.Slice(uint64(0), uint64(1), ϟs).Index(uint64(0), ϟs).Write(ϟctx, ϟa.NumConfig.Slice(uint64(0), uint64(1), ϟs).Index(uint64(0), ϟs).Read(ϟctx, ϟa, ϟs, ϟd, nil), ϟa, ϟs, ϟd, ϟb)
+ num := ϟa.NumConfig.Slice(uint64(0), uint64(1), ϟs).Index(uint64(0), ϟs).Read(ϟctx, ϟa, ϟs, ϟd, nil)
+ ϟa.NumConfig.Slice(uint64(0), uint64(1), ϟs).Index(uint64(0), ϟs).Write(ϟctx, num, ϟa, ϟs, ϟd, ϟb)
+ if (ϟa.Configs) != (EGLConfigᵖ{}) {
+ ϟa.Configs.Slice(uint64(int32(0)), uint64(num), ϟs).OnWrite(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ }
_ = ϟa.Result
return nil
}
@@ -16485,6 +16653,9 @@
ϟo := ϟa.Extras().Observations()
_ = ϟc
ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subObserveAttribList(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ϟa.AttribList); ϟerr != nil {
+ return ϟerr
+ }
ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
context := ϟa.Result
_res_0, ϟerr := subCreateContext(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb)
@@ -16506,6 +16677,9 @@
ϟo := ϟa.Extras().Observations()
_ = ϟc
ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subObserveAttribList(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ϟa.AttribList); ϟerr != nil {
+ return ϟerr
+ }
ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
_ = ϟa.Result
return nil
@@ -16521,6 +16695,9 @@
ϟo := ϟa.Extras().Observations()
_ = ϟc
ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subObserveAttribList(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ϟa.AttribList); ϟerr != nil {
+ return ϟerr
+ }
ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
_ = ϟa.Result
return nil
@@ -16536,6 +16713,9 @@
ϟo := ϟa.Extras().Observations()
_ = ϟc
ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subObserveAttribList(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ϟa.AttribList); ϟerr != nil {
+ return ϟerr
+ }
ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
_ = ϟa.Result
return nil
@@ -16551,6 +16731,9 @@
ϟo := ϟa.Extras().Observations()
_ = ϟc
ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subObserveAttribList(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ϟa.AttribList); ϟerr != nil {
+ return ϟerr
+ }
ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
_ = ϟa.Result
return nil
@@ -16566,6 +16749,9 @@
ϟo := ϟa.Extras().Observations()
_ = ϟc
ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subObserveAttribList(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ϟa.AttribList); ϟerr != nil {
+ return ϟerr
+ }
ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
_ = ϟa.Result
return nil
@@ -16627,6 +16813,11 @@
_ = ϟc
ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ num := ϟa.NumConfig.Slice(uint64(0), uint64(1), ϟs).Index(uint64(0), ϟs).Read(ϟctx, ϟa, ϟs, ϟd, nil)
+ ϟa.NumConfig.Slice(uint64(0), uint64(1), ϟs).Index(uint64(0), ϟs).Write(ϟctx, num, ϟa, ϟs, ϟd, ϟb)
+ if (ϟa.Configs) != (EGLConfigᵖ{}) {
+ ϟa.Configs.Slice(uint64(int32(0)), uint64(num), ϟs).OnWrite(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ }
_ = ϟa.Result
return nil
}
@@ -17040,8 +17231,15 @@
if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_EGL_KHR_image_base); ϟerr != nil {
return ϟerr
}
+ if ϟerr := subObserveAttribList(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ϟa.AttribList); ϟerr != nil {
+ return ϟerr
+ }
ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
- _ = ϟa.Result
+ img := ϟa.Result
+ if (ϟa.Target) == (EGLenum_EGL_NATIVE_BUFFER_ANDROID) {
+ ϟc.EGLImages[img] = (externs{ϟctx, ϟa, ϟs, ϟd, ϟb}.GetAndroidNativeBufferExtra(Voidᵖ(ϟa.Buffer)))
+ }
+ _ = img
return nil
}
@@ -17063,6 +17261,37 @@
return nil
}
+var _ = atom.Atom(&EglCreateNativeClientBufferANDROID{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for eglCreateNativeClientBufferANDROID.
+// If ϟb is not nil, Mutate also emits the replay instructions to call eglCreateNativeClientBufferANDROID().
+// Upon returning the eglCreateNativeClientBufferANDROID() return value will be stored on the stack.
+func (ϟa *EglCreateNativeClientBufferANDROID) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_EGL_ANDROID_create_native_client_buffer); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟerr := subObserveAttribList(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ϟa.AttribList); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ _ = ϟa.Result
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke eglCreateNativeClientBufferANDROID().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+// The eglCreateNativeClientBufferANDROID() return value will be stored on the stack.
+func (ϟa *EglCreateNativeClientBufferANDROID) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.AttribList.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoEglCreateNativeClientBufferANDROID)
+}
+
var _ = atom.Atom(&GlActiveShaderProgramEXT{}) // interface compliance check
// Mutate performs the necessary state-mutation and memory observations for glActiveShaderProgramEXT.
// If ϟb is not nil, Mutate also emits the replay instructions to call glActiveShaderProgramEXT().
@@ -18563,7 +18792,7 @@
ϟo := ϟa.Extras().Observations()
_ = ϟc
ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
- if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_OES_draw_buffers_indexed); ϟerr != nil {
+ if ϟerr := subRequiresExtension2(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_OES_draw_buffers_indexed, ExtensionId_GL_OES_viewport_array); ϟerr != nil {
return ϟerr
}
if ϟerr := subDisablei(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ϟa.Target, ϟa.Index); ϟerr != nil {
@@ -19213,6 +19442,28 @@
if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_OES_EGL_image); ϟerr != nil {
return ϟerr
}
+ if (ϟa.Target) != (GLenum_GL_TEXTURE_2D) {
+ if ϟerr := subGlErrorInvalidEnum(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ϟa.Target); ϟerr != nil {
+ return ϟerr
+ }
+ }
+ if ϟc.EGLImages.Contains(EGLImageKHR(ϟa.Image)) {
+ info := ϟc.EGLImages.Get(EGLImageKHR(ϟa.Image))
+ t, ϟerr := subGetBoundTextureOrErrorInvalidEnum(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ϟa.Target)
+ if ϟerr != nil {
+ return ϟerr
+ }
+ fmt := GLenum_GL_RGB
+ ty := GLenum_GL_UNSIGNED_BYTE
+ t.OnAccess(ϟs).TexelFormat = fmt
+ t.OnAccess(ϟs).TexelType = ty
+ _res_0, ϟerr := subImageSize(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, info.Width, info.Height, fmt, ty)
+ if ϟerr != nil {
+ return ϟerr
+ }
+ t.OnAccess(ϟs).Texture2D[GLint(int32(0))] = Image{Width: GLsizei(info.Width), Height: GLsizei(info.Height), Size: _res_0, TexelFormat: fmt, TexelType: ty}
+ t.OnAccess(ϟs).EGLImage = ϟa.Image
+ }
if ϟb != nil {
ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
}
@@ -19290,7 +19541,7 @@
ϟo := ϟa.Extras().Observations()
_ = ϟc
ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
- if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_OES_draw_buffers_indexed); ϟerr != nil {
+ if ϟerr := subRequiresExtension2(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_OES_draw_buffers_indexed, ExtensionId_GL_OES_viewport_array); ϟerr != nil {
return ϟerr
}
if ϟerr := subEnablei(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ϟa.Target, ϟa.Index); ϟerr != nil {
@@ -19943,6 +20194,9 @@
if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_EXT_multisampled_render_to_texture); ϟerr != nil {
return ϟerr
}
+ if ϟerr := subFramebufferTexture2D(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ϟa.Target, ϟa.Attachment, ϟa.Textarget, ϟa.Texture, ϟa.Level); ϟerr != nil {
+ return ϟerr
+ }
if ϟb != nil {
ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
}
@@ -22148,7 +22402,7 @@
ϟo := ϟa.Extras().Observations()
_ = ϟc
ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
- if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_OES_draw_buffers_indexed); ϟerr != nil {
+ if ϟerr := subRequiresExtension2(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_OES_draw_buffers_indexed, ExtensionId_GL_OES_viewport_array); ϟerr != nil {
return ϟerr
}
_res_0, ϟerr := subIsEnabledi(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ϟa.Target, ϟa.Index)
@@ -27358,6 +27612,1731 @@
ϟb.Call(funcInfoGlWeightPathsNV)
}
+var _ = atom.Atom(&GlClearPixelLocalStorageuiEXT{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glClearPixelLocalStorageuiEXT.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glClearPixelLocalStorageuiEXT().
+func (ϟa *GlClearPixelLocalStorageuiEXT) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_EXT_shader_pixel_local_storage2); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glClearPixelLocalStorageuiEXT().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlClearPixelLocalStorageuiEXT) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Offset.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.N.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Values.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlClearPixelLocalStorageuiEXT)
+}
+
+var _ = atom.Atom(&GlClearTexImageEXT{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glClearTexImageEXT.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glClearTexImageEXT().
+func (ϟa *GlClearTexImageEXT) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_EXT_clear_texture); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glClearTexImageEXT().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlClearTexImageEXT) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Texture.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Level.value(ϟb, ϟa, ϟs))
+ ϟb.Push(value.U32(ϟa.Format))
+ ϟb.Push(value.U32(ϟa.Type))
+ ϟb.Push(ϟa.Data.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlClearTexImageEXT)
+}
+
+var _ = atom.Atom(&GlClearTexSubImageEXT{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glClearTexSubImageEXT.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glClearTexSubImageEXT().
+func (ϟa *GlClearTexSubImageEXT) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_EXT_clear_texture); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glClearTexSubImageEXT().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlClearTexSubImageEXT) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Texture.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Level.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Xoffset.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Yoffset.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Zoffset.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Width.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Height.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Depth.value(ϟb, ϟa, ϟs))
+ ϟb.Push(value.U32(ϟa.Format))
+ ϟb.Push(value.U32(ϟa.Type))
+ ϟb.Push(ϟa.Data.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlClearTexSubImageEXT)
+}
+
+var _ = atom.Atom(&GlConservativeRasterParameteriNV{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glConservativeRasterParameteriNV.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glConservativeRasterParameteriNV().
+func (ϟa *GlConservativeRasterParameteriNV) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_NV_conservative_raster_pre_snap_triangles); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glConservativeRasterParameteriNV().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlConservativeRasterParameteriNV) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(value.U32(ϟa.Pname))
+ ϟb.Push(ϟa.Param.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlConservativeRasterParameteriNV)
+}
+
+var _ = atom.Atom(&GlDepthRangeArrayfvOES{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glDepthRangeArrayfvOES.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glDepthRangeArrayfvOES().
+func (ϟa *GlDepthRangeArrayfvOES) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_OES_viewport_array); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glDepthRangeArrayfvOES().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlDepthRangeArrayfvOES) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.First.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Count.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.V.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlDepthRangeArrayfvOES)
+}
+
+var _ = atom.Atom(&GlDepthRangeIndexedfOES{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glDepthRangeIndexedfOES.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glDepthRangeIndexedfOES().
+func (ϟa *GlDepthRangeIndexedfOES) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_OES_viewport_array); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glDepthRangeIndexedfOES().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlDepthRangeIndexedfOES) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Index.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.N.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.F.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlDepthRangeIndexedfOES)
+}
+
+var _ = atom.Atom(&GlDrawTransformFeedbackEXT{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glDrawTransformFeedbackEXT.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glDrawTransformFeedbackEXT().
+func (ϟa *GlDrawTransformFeedbackEXT) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_EXT_draw_transform_feedback); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glDrawTransformFeedbackEXT().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlDrawTransformFeedbackEXT) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(value.U32(ϟa.Mode))
+ ϟb.Push(ϟa.Id.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlDrawTransformFeedbackEXT)
+}
+
+var _ = atom.Atom(&GlDrawTransformFeedbackInstancedEXT{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glDrawTransformFeedbackInstancedEXT.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glDrawTransformFeedbackInstancedEXT().
+func (ϟa *GlDrawTransformFeedbackInstancedEXT) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_EXT_draw_transform_feedback); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glDrawTransformFeedbackInstancedEXT().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlDrawTransformFeedbackInstancedEXT) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(value.U32(ϟa.Mode))
+ ϟb.Push(ϟa.Id.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Instancecount.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlDrawTransformFeedbackInstancedEXT)
+}
+
+var _ = atom.Atom(&GlFramebufferPixelLocalStorageSizeEXT{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glFramebufferPixelLocalStorageSizeEXT.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glFramebufferPixelLocalStorageSizeEXT().
+func (ϟa *GlFramebufferPixelLocalStorageSizeEXT) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_EXT_shader_pixel_local_storage2); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glFramebufferPixelLocalStorageSizeEXT().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlFramebufferPixelLocalStorageSizeEXT) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Target.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Size.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlFramebufferPixelLocalStorageSizeEXT)
+}
+
+var _ = atom.Atom(&GlFramebufferTexture2DDownsampleIMG{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glFramebufferTexture2DDownsampleIMG.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glFramebufferTexture2DDownsampleIMG().
+func (ϟa *GlFramebufferTexture2DDownsampleIMG) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_IMG_framebuffer_downsample); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glFramebufferTexture2DDownsampleIMG().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlFramebufferTexture2DDownsampleIMG) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(value.U32(ϟa.Target))
+ ϟb.Push(value.U32(ϟa.Attachment))
+ ϟb.Push(value.U32(ϟa.Textarget))
+ ϟb.Push(ϟa.Texture.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Level.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Xscale.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Yscale.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlFramebufferTexture2DDownsampleIMG)
+}
+
+var _ = atom.Atom(&GlFramebufferTextureLayerDownsampleIMG{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glFramebufferTextureLayerDownsampleIMG.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glFramebufferTextureLayerDownsampleIMG().
+func (ϟa *GlFramebufferTextureLayerDownsampleIMG) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_IMG_framebuffer_downsample); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glFramebufferTextureLayerDownsampleIMG().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlFramebufferTextureLayerDownsampleIMG) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(value.U32(ϟa.Target))
+ ϟb.Push(value.U32(ϟa.Attachment))
+ ϟb.Push(ϟa.Texture.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Level.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Layer.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Xscale.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Yscale.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlFramebufferTextureLayerDownsampleIMG)
+}
+
+var _ = atom.Atom(&GlFramebufferTextureMultisampleMultiviewOVR{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glFramebufferTextureMultisampleMultiviewOVR.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glFramebufferTextureMultisampleMultiviewOVR().
+func (ϟa *GlFramebufferTextureMultisampleMultiviewOVR) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_OVR_multiview_multisampled_render_to_texture); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glFramebufferTextureMultisampleMultiviewOVR().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlFramebufferTextureMultisampleMultiviewOVR) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(value.U32(ϟa.Target))
+ ϟb.Push(value.U32(ϟa.Attachment))
+ ϟb.Push(ϟa.Texture.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Level.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Samples.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.BaseViewIndex.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.NumViews.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlFramebufferTextureMultisampleMultiviewOVR)
+}
+
+var _ = atom.Atom(&GlGetFloati_vOES{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glGetFloati_vOES.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glGetFloati_vOES().
+func (ϟa *GlGetFloati_vOES) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_OES_viewport_array); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glGetFloati_vOES().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlGetFloati_vOES) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(value.U32(ϟa.Target))
+ ϟb.Push(ϟa.Index.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Data.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlGetFloati_vOES)
+}
+
+var _ = atom.Atom(&GlGetFramebufferPixelLocalStorageSizeEXT{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glGetFramebufferPixelLocalStorageSizeEXT.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glGetFramebufferPixelLocalStorageSizeEXT().
+// Upon returning the glGetFramebufferPixelLocalStorageSizeEXT() return value will be stored on the stack.
+func (ϟa *GlGetFramebufferPixelLocalStorageSizeEXT) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_EXT_shader_pixel_local_storage2); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ _ = ϟa.Result
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glGetFramebufferPixelLocalStorageSizeEXT().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+// The glGetFramebufferPixelLocalStorageSizeEXT() return value will be stored on the stack.
+func (ϟa *GlGetFramebufferPixelLocalStorageSizeEXT) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Target.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlGetFramebufferPixelLocalStorageSizeEXT)
+}
+
+var _ = atom.Atom(&GlGetTextureHandleIMG{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glGetTextureHandleIMG.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glGetTextureHandleIMG().
+// Upon returning the glGetTextureHandleIMG() return value will be stored on the stack.
+func (ϟa *GlGetTextureHandleIMG) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_IMG_bindless_texture); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ _ = ϟa.Result
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glGetTextureHandleIMG().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+// The glGetTextureHandleIMG() return value will be stored on the stack.
+func (ϟa *GlGetTextureHandleIMG) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Texture.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlGetTextureHandleIMG)
+}
+
+var _ = atom.Atom(&GlGetTextureSamplerHandleIMG{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glGetTextureSamplerHandleIMG.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glGetTextureSamplerHandleIMG().
+// Upon returning the glGetTextureSamplerHandleIMG() return value will be stored on the stack.
+func (ϟa *GlGetTextureSamplerHandleIMG) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_IMG_bindless_texture); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ _ = ϟa.Result
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glGetTextureSamplerHandleIMG().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+// The glGetTextureSamplerHandleIMG() return value will be stored on the stack.
+func (ϟa *GlGetTextureSamplerHandleIMG) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Texture.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Sampler.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlGetTextureSamplerHandleIMG)
+}
+
+var _ = atom.Atom(&GlGetUniformi64vNV{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glGetUniformi64vNV.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glGetUniformi64vNV().
+func (ϟa *GlGetUniformi64vNV) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_NV_gpu_shader5); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glGetUniformi64vNV().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlGetUniformi64vNV) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Program.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Location.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Params.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlGetUniformi64vNV)
+}
+
+var _ = atom.Atom(&GlPolygonOffsetClampEXT{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glPolygonOffsetClampEXT.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glPolygonOffsetClampEXT().
+func (ϟa *GlPolygonOffsetClampEXT) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_EXT_polygon_offset_clamp); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glPolygonOffsetClampEXT().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlPolygonOffsetClampEXT) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Factor.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Units.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Clamp.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlPolygonOffsetClampEXT)
+}
+
+var _ = atom.Atom(&GlProgramUniform1i64NV{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glProgramUniform1i64NV.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glProgramUniform1i64NV().
+func (ϟa *GlProgramUniform1i64NV) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_NV_gpu_shader5); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glProgramUniform1i64NV().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlProgramUniform1i64NV) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Program.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Location.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.X.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlProgramUniform1i64NV)
+}
+
+var _ = atom.Atom(&GlProgramUniform1i64vNV{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glProgramUniform1i64vNV.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glProgramUniform1i64vNV().
+func (ϟa *GlProgramUniform1i64vNV) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_NV_gpu_shader5); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glProgramUniform1i64vNV().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlProgramUniform1i64vNV) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Program.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Location.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Count.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Value.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlProgramUniform1i64vNV)
+}
+
+var _ = atom.Atom(&GlProgramUniform1ui64NV{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glProgramUniform1ui64NV.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glProgramUniform1ui64NV().
+func (ϟa *GlProgramUniform1ui64NV) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_NV_gpu_shader5); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glProgramUniform1ui64NV().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlProgramUniform1ui64NV) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Program.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Location.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.X.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlProgramUniform1ui64NV)
+}
+
+var _ = atom.Atom(&GlProgramUniform1ui64vNV{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glProgramUniform1ui64vNV.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glProgramUniform1ui64vNV().
+func (ϟa *GlProgramUniform1ui64vNV) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_NV_gpu_shader5); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glProgramUniform1ui64vNV().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlProgramUniform1ui64vNV) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Program.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Location.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Count.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Value.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlProgramUniform1ui64vNV)
+}
+
+var _ = atom.Atom(&GlProgramUniform2i64NV{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glProgramUniform2i64NV.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glProgramUniform2i64NV().
+func (ϟa *GlProgramUniform2i64NV) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_NV_gpu_shader5); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glProgramUniform2i64NV().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlProgramUniform2i64NV) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Program.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Location.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.X.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Y.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlProgramUniform2i64NV)
+}
+
+var _ = atom.Atom(&GlProgramUniform2i64vNV{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glProgramUniform2i64vNV.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glProgramUniform2i64vNV().
+func (ϟa *GlProgramUniform2i64vNV) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_NV_gpu_shader5); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glProgramUniform2i64vNV().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlProgramUniform2i64vNV) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Program.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Location.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Count.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Value.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlProgramUniform2i64vNV)
+}
+
+var _ = atom.Atom(&GlProgramUniform2ui64NV{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glProgramUniform2ui64NV.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glProgramUniform2ui64NV().
+func (ϟa *GlProgramUniform2ui64NV) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_NV_gpu_shader5); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glProgramUniform2ui64NV().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlProgramUniform2ui64NV) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Program.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Location.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.X.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Y.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlProgramUniform2ui64NV)
+}
+
+var _ = atom.Atom(&GlProgramUniform2ui64vNV{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glProgramUniform2ui64vNV.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glProgramUniform2ui64vNV().
+func (ϟa *GlProgramUniform2ui64vNV) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_NV_gpu_shader5); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glProgramUniform2ui64vNV().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlProgramUniform2ui64vNV) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Program.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Location.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Count.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Value.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlProgramUniform2ui64vNV)
+}
+
+var _ = atom.Atom(&GlProgramUniform3i64NV{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glProgramUniform3i64NV.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glProgramUniform3i64NV().
+func (ϟa *GlProgramUniform3i64NV) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_NV_gpu_shader5); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glProgramUniform3i64NV().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlProgramUniform3i64NV) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Program.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Location.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.X.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Y.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Z.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlProgramUniform3i64NV)
+}
+
+var _ = atom.Atom(&GlProgramUniform3i64vNV{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glProgramUniform3i64vNV.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glProgramUniform3i64vNV().
+func (ϟa *GlProgramUniform3i64vNV) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_NV_gpu_shader5); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glProgramUniform3i64vNV().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlProgramUniform3i64vNV) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Program.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Location.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Count.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Value.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlProgramUniform3i64vNV)
+}
+
+var _ = atom.Atom(&GlProgramUniform3ui64NV{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glProgramUniform3ui64NV.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glProgramUniform3ui64NV().
+func (ϟa *GlProgramUniform3ui64NV) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_NV_gpu_shader5); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glProgramUniform3ui64NV().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlProgramUniform3ui64NV) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Program.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Location.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.X.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Y.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Z.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlProgramUniform3ui64NV)
+}
+
+var _ = atom.Atom(&GlProgramUniform3ui64vNV{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glProgramUniform3ui64vNV.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glProgramUniform3ui64vNV().
+func (ϟa *GlProgramUniform3ui64vNV) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_NV_gpu_shader5); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glProgramUniform3ui64vNV().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlProgramUniform3ui64vNV) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Program.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Location.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Count.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Value.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlProgramUniform3ui64vNV)
+}
+
+var _ = atom.Atom(&GlProgramUniform4i64NV{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glProgramUniform4i64NV.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glProgramUniform4i64NV().
+func (ϟa *GlProgramUniform4i64NV) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_NV_gpu_shader5); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glProgramUniform4i64NV().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlProgramUniform4i64NV) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Program.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Location.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.X.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Y.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Z.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.W.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlProgramUniform4i64NV)
+}
+
+var _ = atom.Atom(&GlProgramUniform4i64vNV{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glProgramUniform4i64vNV.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glProgramUniform4i64vNV().
+func (ϟa *GlProgramUniform4i64vNV) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_NV_gpu_shader5); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glProgramUniform4i64vNV().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlProgramUniform4i64vNV) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Program.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Location.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Count.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Value.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlProgramUniform4i64vNV)
+}
+
+var _ = atom.Atom(&GlProgramUniform4ui64NV{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glProgramUniform4ui64NV.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glProgramUniform4ui64NV().
+func (ϟa *GlProgramUniform4ui64NV) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_NV_gpu_shader5); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glProgramUniform4ui64NV().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlProgramUniform4ui64NV) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Program.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Location.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.X.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Y.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Z.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.W.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlProgramUniform4ui64NV)
+}
+
+var _ = atom.Atom(&GlProgramUniform4ui64vNV{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glProgramUniform4ui64vNV.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glProgramUniform4ui64vNV().
+func (ϟa *GlProgramUniform4ui64vNV) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_NV_gpu_shader5); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glProgramUniform4ui64vNV().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlProgramUniform4ui64vNV) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Program.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Location.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Count.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Value.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlProgramUniform4ui64vNV)
+}
+
+var _ = atom.Atom(&GlProgramUniformHandleui64IMG{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glProgramUniformHandleui64IMG.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glProgramUniformHandleui64IMG().
+func (ϟa *GlProgramUniformHandleui64IMG) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_IMG_bindless_texture); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glProgramUniformHandleui64IMG().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlProgramUniformHandleui64IMG) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Program.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Location.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Value.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlProgramUniformHandleui64IMG)
+}
+
+var _ = atom.Atom(&GlProgramUniformHandleui64vIMG{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glProgramUniformHandleui64vIMG.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glProgramUniformHandleui64vIMG().
+func (ϟa *GlProgramUniformHandleui64vIMG) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_IMG_bindless_texture); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glProgramUniformHandleui64vIMG().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlProgramUniformHandleui64vIMG) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Program.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Location.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Count.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Values.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlProgramUniformHandleui64vIMG)
+}
+
+var _ = atom.Atom(&GlScissorArrayvOES{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glScissorArrayvOES.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glScissorArrayvOES().
+func (ϟa *GlScissorArrayvOES) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_OES_viewport_array); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glScissorArrayvOES().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlScissorArrayvOES) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.First.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Count.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.V.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlScissorArrayvOES)
+}
+
+var _ = atom.Atom(&GlScissorIndexedOES{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glScissorIndexedOES.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glScissorIndexedOES().
+func (ϟa *GlScissorIndexedOES) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_OES_viewport_array); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glScissorIndexedOES().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlScissorIndexedOES) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Index.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Left.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Bottom.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Width.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Height.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlScissorIndexedOES)
+}
+
+var _ = atom.Atom(&GlScissorIndexedvOES{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glScissorIndexedvOES.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glScissorIndexedvOES().
+func (ϟa *GlScissorIndexedvOES) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_OES_viewport_array); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glScissorIndexedvOES().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlScissorIndexedvOES) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Index.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.V.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlScissorIndexedvOES)
+}
+
+var _ = atom.Atom(&GlUniform1i64NV{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glUniform1i64NV.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glUniform1i64NV().
+func (ϟa *GlUniform1i64NV) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_NV_gpu_shader5); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glUniform1i64NV().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlUniform1i64NV) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Location.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.X.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlUniform1i64NV)
+}
+
+var _ = atom.Atom(&GlUniform1i64vNV{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glUniform1i64vNV.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glUniform1i64vNV().
+func (ϟa *GlUniform1i64vNV) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_NV_gpu_shader5); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glUniform1i64vNV().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlUniform1i64vNV) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Location.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Count.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Value.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlUniform1i64vNV)
+}
+
+var _ = atom.Atom(&GlUniform1ui64NV{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glUniform1ui64NV.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glUniform1ui64NV().
+func (ϟa *GlUniform1ui64NV) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_NV_gpu_shader5); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glUniform1ui64NV().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlUniform1ui64NV) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Location.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.X.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlUniform1ui64NV)
+}
+
+var _ = atom.Atom(&GlUniform1ui64vNV{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glUniform1ui64vNV.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glUniform1ui64vNV().
+func (ϟa *GlUniform1ui64vNV) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_NV_gpu_shader5); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glUniform1ui64vNV().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlUniform1ui64vNV) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Location.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Count.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Value.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlUniform1ui64vNV)
+}
+
+var _ = atom.Atom(&GlUniform2i64NV{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glUniform2i64NV.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glUniform2i64NV().
+func (ϟa *GlUniform2i64NV) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_NV_gpu_shader5); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glUniform2i64NV().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlUniform2i64NV) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Location.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.X.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Y.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlUniform2i64NV)
+}
+
+var _ = atom.Atom(&GlUniform2i64vNV{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glUniform2i64vNV.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glUniform2i64vNV().
+func (ϟa *GlUniform2i64vNV) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_NV_gpu_shader5); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glUniform2i64vNV().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlUniform2i64vNV) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Location.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Count.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Value.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlUniform2i64vNV)
+}
+
+var _ = atom.Atom(&GlUniform2ui64NV{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glUniform2ui64NV.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glUniform2ui64NV().
+func (ϟa *GlUniform2ui64NV) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_NV_gpu_shader5); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glUniform2ui64NV().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlUniform2ui64NV) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Location.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.X.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Y.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlUniform2ui64NV)
+}
+
+var _ = atom.Atom(&GlUniform2ui64vNV{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glUniform2ui64vNV.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glUniform2ui64vNV().
+func (ϟa *GlUniform2ui64vNV) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_NV_gpu_shader5); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glUniform2ui64vNV().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlUniform2ui64vNV) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Location.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Count.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Value.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlUniform2ui64vNV)
+}
+
+var _ = atom.Atom(&GlUniform3i64NV{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glUniform3i64NV.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glUniform3i64NV().
+func (ϟa *GlUniform3i64NV) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_NV_gpu_shader5); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glUniform3i64NV().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlUniform3i64NV) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Location.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.X.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Y.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Z.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlUniform3i64NV)
+}
+
+var _ = atom.Atom(&GlUniform3i64vNV{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glUniform3i64vNV.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glUniform3i64vNV().
+func (ϟa *GlUniform3i64vNV) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_NV_gpu_shader5); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glUniform3i64vNV().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlUniform3i64vNV) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Location.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Count.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Value.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlUniform3i64vNV)
+}
+
+var _ = atom.Atom(&GlUniform3ui64NV{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glUniform3ui64NV.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glUniform3ui64NV().
+func (ϟa *GlUniform3ui64NV) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_NV_gpu_shader5); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glUniform3ui64NV().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlUniform3ui64NV) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Location.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.X.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Y.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Z.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlUniform3ui64NV)
+}
+
+var _ = atom.Atom(&GlUniform3ui64vNV{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glUniform3ui64vNV.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glUniform3ui64vNV().
+func (ϟa *GlUniform3ui64vNV) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_NV_gpu_shader5); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glUniform3ui64vNV().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlUniform3ui64vNV) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Location.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Count.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Value.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlUniform3ui64vNV)
+}
+
+var _ = atom.Atom(&GlUniform4i64NV{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glUniform4i64NV.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glUniform4i64NV().
+func (ϟa *GlUniform4i64NV) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_NV_gpu_shader5); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glUniform4i64NV().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlUniform4i64NV) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Location.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.X.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Y.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Z.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.W.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlUniform4i64NV)
+}
+
+var _ = atom.Atom(&GlUniform4i64vNV{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glUniform4i64vNV.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glUniform4i64vNV().
+func (ϟa *GlUniform4i64vNV) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_NV_gpu_shader5); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glUniform4i64vNV().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlUniform4i64vNV) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Location.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Count.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Value.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlUniform4i64vNV)
+}
+
+var _ = atom.Atom(&GlUniform4ui64NV{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glUniform4ui64NV.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glUniform4ui64NV().
+func (ϟa *GlUniform4ui64NV) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_NV_gpu_shader5); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glUniform4ui64NV().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlUniform4ui64NV) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Location.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.X.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Y.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Z.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.W.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlUniform4ui64NV)
+}
+
+var _ = atom.Atom(&GlUniform4ui64vNV{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glUniform4ui64vNV.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glUniform4ui64vNV().
+func (ϟa *GlUniform4ui64vNV) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_NV_gpu_shader5); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glUniform4ui64vNV().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlUniform4ui64vNV) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Location.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Count.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Value.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlUniform4ui64vNV)
+}
+
+var _ = atom.Atom(&GlUniformHandleui64IMG{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glUniformHandleui64IMG.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glUniformHandleui64IMG().
+func (ϟa *GlUniformHandleui64IMG) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_IMG_bindless_texture); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glUniformHandleui64IMG().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlUniformHandleui64IMG) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Location.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Value.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlUniformHandleui64IMG)
+}
+
+var _ = atom.Atom(&GlUniformHandleui64vIMG{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glUniformHandleui64vIMG.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glUniformHandleui64vIMG().
+func (ϟa *GlUniformHandleui64vIMG) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_IMG_bindless_texture); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glUniformHandleui64vIMG().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlUniformHandleui64vIMG) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Location.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Count.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Value.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlUniformHandleui64vIMG)
+}
+
+var _ = atom.Atom(&GlViewportArrayvOES{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glViewportArrayvOES.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glViewportArrayvOES().
+func (ϟa *GlViewportArrayvOES) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_OES_viewport_array); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glViewportArrayvOES().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlViewportArrayvOES) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.First.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Count.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.V.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlViewportArrayvOES)
+}
+
+var _ = atom.Atom(&GlViewportIndexedfOES{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glViewportIndexedfOES.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glViewportIndexedfOES().
+func (ϟa *GlViewportIndexedfOES) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_OES_viewport_array); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glViewportIndexedfOES().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlViewportIndexedfOES) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Index.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.X.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Y.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.W.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.H.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlViewportIndexedfOES)
+}
+
+var _ = atom.Atom(&GlViewportIndexedfvOES{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glViewportIndexedfvOES.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glViewportIndexedfvOES().
+func (ϟa *GlViewportIndexedfvOES) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_OES_viewport_array); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glViewportIndexedfvOES().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlViewportIndexedfvOES) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Index.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.V.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlViewportIndexedfvOES)
+}
+
+var _ = atom.Atom(&GlViewportSwizzleNV{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glViewportSwizzleNV.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glViewportSwizzleNV().
+func (ϟa *GlViewportSwizzleNV) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_NV_viewport_swizzle); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glViewportSwizzleNV().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlViewportSwizzleNV) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(ϟa.Index.value(ϟb, ϟa, ϟs))
+ ϟb.Push(value.U32(ϟa.Swizzlex))
+ ϟb.Push(value.U32(ϟa.Swizzley))
+ ϟb.Push(value.U32(ϟa.Swizzlez))
+ ϟb.Push(value.U32(ϟa.Swizzlew))
+ ϟb.Call(funcInfoGlViewportSwizzleNV)
+}
+
+var _ = atom.Atom(&GlWindowRectanglesEXT{}) // interface compliance check
+// Mutate performs the necessary state-mutation and memory observations for glWindowRectanglesEXT.
+// If ϟb is not nil, Mutate also emits the replay instructions to call glWindowRectanglesEXT().
+func (ϟa *GlWindowRectanglesEXT) Mutate(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) error {
+ ϟc := GetState(ϟs)
+ ϟo := ϟa.Extras().Observations()
+ _ = ϟc
+ ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_EXT_window_rectangles); ϟerr != nil {
+ return ϟerr
+ }
+ if ϟb != nil {
+ ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
+ }
+ ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
+ return nil
+}
+
+// Call builds the replay instructions to push the arguments to the stack and invoke glWindowRectanglesEXT().
+// Unlike Mutate(), Call() does not perform any state-mutation or memory observations to ϟs.
+func (ϟa *GlWindowRectanglesEXT) Call(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ ϟb.Push(value.U32(ϟa.Mode))
+ ϟb.Push(ϟa.Count.value(ϟb, ϟa, ϟs))
+ ϟb.Push(ϟa.Box.value(ϟb, ϟa, ϟs))
+ ϟb.Call(funcInfoGlWindowRectanglesEXT)
+}
+
var _ = atom.Atom(&GlBlendBarrier{}) // interface compliance check
// Mutate performs the necessary state-mutation and memory observations for glBlendBarrier.
// If ϟb is not nil, Mutate also emits the replay instructions to call glBlendBarrier().
@@ -29469,55 +31448,9 @@
if ϟerr := subMinRequiredVersion(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, GLint(int32(2)), GLint(int32(0))); ϟerr != nil {
return ϟerr
}
- switch ϟa.Target {
- case GLenum_GL_RENDERBUFFER:
- default:
- if ϟerr := subGlErrorInvalidEnum(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ϟa.Target); ϟerr != nil {
- return ϟerr
- }
- }
- switch ϟa.Internalformat {
- case GLenum_GL_DEPTH_COMPONENT16, GLenum_GL_RGB565, GLenum_GL_RGB5_A1, GLenum_GL_RGBA4, GLenum_GL_STENCIL_INDEX8:
- case GLenum_GL_DEPTH24_STENCIL8, GLenum_GL_DEPTH32F_STENCIL8, GLenum_GL_DEPTH_COMPONENT24, GLenum_GL_DEPTH_COMPONENT32F, GLenum_GL_R16I, GLenum_GL_R16UI, GLenum_GL_R32I, GLenum_GL_R32UI, GLenum_GL_R8, GLenum_GL_R8I, GLenum_GL_R8UI, GLenum_GL_RG16I, GLenum_GL_RG16UI, GLenum_GL_RG32I, GLenum_GL_RG32UI, GLenum_GL_RG8, GLenum_GL_RG8I, GLenum_GL_RG8UI, GLenum_GL_RGB10_A2, GLenum_GL_RGB10_A2UI, GLenum_GL_RGB8, GLenum_GL_RGBA16I, GLenum_GL_RGBA16UI, GLenum_GL_RGBA32I, GLenum_GL_RGBA32UI, GLenum_GL_RGBA8, GLenum_GL_RGBA8I, GLenum_GL_RGBA8UI, GLenum_GL_SRGB8_ALPHA8:
- if ϟerr := subMinRequiredVersion(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, GLint(int32(3)), GLint(int32(0))); ϟerr != nil {
- return ϟerr
- }
- case GLenum_GL_R16, GLenum_GL_RG16, GLenum_GL_RGBA16:
- if ϟerr := subMinRequiredVersion(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, GLint(int32(3)), GLint(int32(1))); ϟerr != nil {
- return ϟerr
- }
- if ϟerr := subRequiresExtension(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ExtensionId_GL_EXT_texture_norm16); ϟerr != nil {
- return ϟerr
- }
- default:
- if ϟerr := subGlErrorInvalidEnum(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ϟa.Internalformat); ϟerr != nil {
- return ϟerr
- }
- }
- if ((ϟa.Width) < (GLsizei(int32(0)))) || ((ϟa.Height) < (GLsizei(int32(0)))) {
- if ϟerr := subGlErrorInvalidValue(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb); ϟerr != nil {
- return ϟerr
- }
- }
- ctx, ϟerr := subGetContext(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb)
- if ϟerr != nil {
+ if ϟerr := subRenderbufferStorageMultisample(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, ϟa.Target, GLsizei(int32(0)), ϟa.Internalformat, ϟa.Width, ϟa.Height); ϟerr != nil {
return ϟerr
}
- if ((ϟa.Width) > (GLsizei(ctx.Constants.MaxRenderbufferSize))) || ((ϟa.Height) > (GLsizei(ctx.Constants.MaxRenderbufferSize))) {
- if ϟerr := subGlErrorInvalidValue(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb); ϟerr != nil {
- return ϟerr
- }
- }
- id := ctx.BoundRenderbuffers.Get(ϟa.Target)
- if (id) == (RenderbufferId(uint32(0))) {
- if ϟerr := subGlErrorInvalidOperation(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb); ϟerr != nil {
- return ϟerr
- }
- }
- rb := ctx.Instances.Renderbuffers.Get(id)
- rb.InternalFormat = ϟa.Internalformat
- rb.Width = ϟa.Width
- rb.Height = ϟa.Height
if ϟb != nil {
ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
}
@@ -36733,7 +38666,7 @@
ϟo.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
for i := GLsizei(int32(0)); i < ϟa.Count; i++ {
id := SamplerId(ϟa.Samplers.Slice(uint64(GLsizei(int32(0))), uint64(ϟa.Count), ϟs).Index(uint64(i), ϟs).Read(ϟctx, ϟa, ϟs, ϟd, nil))
- ctx.Instances.Samplers[id] = &Sampler{BorderColor: Vec4f{Elements: [4]GLfloat{GLfloat(float32(0)), GLfloat(float32(0)), GLfloat(float32(0)), GLfloat(float32(0))}}, MinFilter: GLenum_GL_NEAREST_MIPMAP_LINEAR, MagFilter: GLenum_GL_LINEAR, WrapS: GLenum_GL_REPEAT, WrapT: GLenum_GL_REPEAT, WrapR: GLenum_GL_REPEAT, MinLod: GLfloat(float32(-1000)), MaxLod: GLfloat(float32(1000)), CompareMode: GLenum_GL_NONE, CompareFunc: GLenum_GL_LEQUAL}
+ ctx.Instances.Samplers[id] = &Sampler{BorderColor: Vec4f{Elements: [4]GLfloat{GLfloat(float32(0)), GLfloat(float32(0)), GLfloat(float32(0)), GLfloat(float32(0))}}, MinFilter: GLenum_GL_NEAREST_MIPMAP_LINEAR, MagFilter: GLenum_GL_LINEAR, WrapS: GLenum_GL_REPEAT, WrapT: GLenum_GL_REPEAT, WrapR: GLenum_GL_REPEAT, MinLod: GLfloat(float32(-1000)), MaxLod: GLfloat(float32(1000)), CompareMode: GLenum_GL_NONE, CompareFunc: GLenum_GL_LEQUAL, MaxAnisotropy: GLfloat(float32(1))}
s.Index(uint64(i), ϟs).Write(ϟctx, id, ϟa, ϟs, ϟd, ϟb)
}
return nil
diff --git a/gapid/gfxapi/gles/snippets.base64 b/gapid/gfxapi/gles/snippets.base64
index fae22fd..58ba084 100644
--- a/gapid/gfxapi/gles/snippets.base64
+++ b/gapid/gfxapi/gles/snippets.base64
@@ -1 +1 @@
-AwhzbmlwcGV0cwxBdG9tU25pcHBldHMAArAGAxNDR1NHZXRTdXJmYWNlQm91bmRzAQMFCHNuaXBwZXRzDE9ic2VydmF0aW9ucwACAwZQBQcIc25pcHBldHMIcGFydFBhdGgAAgNQBwkIc25pcHBldHMJZmllbGRQYXRoAAIDsAkLCHNuaXBwZXRzDHJlbGF0aXZlUGF0aAABsBNDR1NHZXRTdXJmYWNlQm91bmRzBmJvdW5kcwQBAgIOZWdsTWFrZUN1cnJlbnQAAhtlZ2xTd2FwQnVmZmVyc1dpdGhEYW1hZ2VLSFIBCwQNBg8IEQobZWdsU3dhcEJ1ZmZlcnNXaXRoRGFtYWdlS0hSBXJlY3RzBAEAAg9nbEFjdGl2ZVRleHR1cmUBEw0Ic25pcHBldHMGTGFiZWxzAAIDBrAVCBcKD2dsQWN0aXZlVGV4dHVyZQR1bml0IAtHTF9URVhUVVJFMAtHTF9URVhUVVJFMQxHTF9URVhUVVJFMTAMR0xfVEVYVFVSRTExDEdMX1RFWFRVUkUxMgxHTF9URVhUVVJFMTMMR0xfVEVYVFVSRTE0DEdMX1RFWFRVUkUxNQxHTF9URVhUVVJFMTYMR0xfVEVYVFVSRTE3DEdMX1RFWFRVUkUxOAxHTF9URVhUVVJFMTkLR0xfVEVYVFVSRTIMR0xfVEVYVFVSRTIwDEdMX1RFWFRVUkUyMQxHTF9URVhUVVJFMjIMR0xfVEVYVFVSRTIzDEdMX1RFWFRVUkUyNAxHTF9URVhUVVJFMjUMR0xfVEVYVFVSRTI2DEdMX1RFWFRVUkUyNwxHTF9URVhUVVJFMjgMR0xfVEVYVFVSRTI5C0dMX1RFWFRVUkUzDEdMX1RFWFRVUkUzMAxHTF9URVhUVVJFMzELR0xfVEVYVFVSRTQLR0xfVEVYVFVSRTULR0xfVEVYVFVSRTYLR0xfVEVYVFVSRTcLR0xfVEVYVFVSRTgLR0xfVEVYVFVSRTkCDGdsQmVnaW5RdWVyeQEZDBsIHQoMZ2xCZWdpblF1ZXJ5BnRhcmdldAQVR0xfQU5ZX1NBTVBMRVNfUEFTU0VEIkdMX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkUoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1BSSU1JVElWRVNfV1JJVFRFThdHTF9QUklNSVRJVkVTX0dFTkVSQVRFRAIYZ2xCZWdpblRyYW5zZm9ybUZlZWRiYWNrAR8MIQgjChhnbEJlZ2luVHJhbnNmb3JtRmVlZGJhY2sNcHJpbWl0aXZlTW9kZQMIR0xfTElORVMJR0xfUE9JTlRTDEdMX1RSSUFOR0xFUwIMZ2xCaW5kQnVmZmVyASUMJwgpCgxnbEJpbmRCdWZmZXIGdGFyZ2V0DQ9HTF9BUlJBWV9CVUZGRVIXR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVITR0xfQ09QWV9SRUFEX0JVRkZFUhRHTF9DT1BZX1dSSVRFX0JVRkZFUhRHTF9QSVhFTF9QQUNLX0JVRkZFUhZHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSHEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIRR0xfVU5JRk9STV9CVUZGRVIYR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSG0dMX0RJU1BBVENIX0lORElSRUNUX0JVRkZFUhdHTF9EUkFXX0lORElSRUNUX0JVRkZFUhhHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVIRR0xfVEVYVFVSRV9CVUZGRVICEGdsQmluZEJ1ZmZlckJhc2UBKwwtCC8KEGdsQmluZEJ1ZmZlckJhc2UGdGFyZ2V0BBxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSEUdMX1VOSUZPUk1fQlVGRkVSGEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUhhHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVICEWdsQmluZEJ1ZmZlclJhbmdlATEMMwg1ChFnbEJpbmRCdWZmZXJSYW5nZQZ0YXJnZXQEHEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIRR0xfVU5JRk9STV9CVUZGRVIYR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSGEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUgIRZ2xCaW5kRnJhbWVidWZmZXIBNww5CDsKEWdsQmluZEZyYW1lYnVmZmVyBnRhcmdldAMTR0xfUkVBRF9GUkFNRUJVRkZFUhNHTF9EUkFXX0ZSQU1FQlVGRkVSDkdMX0ZSQU1FQlVGRkVSAhJnbEJpbmRJbWFnZVRleHR1cmUCPQw/CEEKEmdsQmluZEltYWdlVGV4dHVyZQZhY2Nlc3MDDEdMX1JFQURfT05MWQ1HTF9SRUFEX1dSSVRFDUdMX1dSSVRFX09OTFlDDEUIRwoSZ2xCaW5kSW1hZ2VUZXh0dXJlBmZvcm1hdA0HR0xfUjMyRgdHTF9SMzJJCEdMX1IzMlVJCkdMX1JHQkExNkYKR0xfUkdCQTE2SQtHTF9SR0JBMTZVSQpHTF9SR0JBMzJGCkdMX1JHQkEzMkkLR0xfUkdCQTMyVUkIR0xfUkdCQTgJR0xfUkdCQThJCkdMX1JHQkE4VUkOR0xfUkdCQThfU05PUk0CEmdsQmluZFJlbmRlcmJ1ZmZlcgFJDEsITQoSZ2xCaW5kUmVuZGVyYnVmZmVyBnRhcmdldAEPR0xfUkVOREVSQlVGRkVSAg1nbEJpbmRTYW1wbGVyAU8MUQhTCg1nbEJpbmRTYW1wbGVyBWluZGV4AQtHTF9URVhUVVJFMAINZ2xCaW5kVGV4dHVyZQFVDFcIWQoNZ2xCaW5kVGV4dHVyZQZ0YXJnZXQJF0dMX1RFWFRVUkVfRVhURVJOQUxfT0VTDUdMX1RFWFRVUkVfMkQTR0xfVEVYVFVSRV8yRF9BUlJBWRlHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFH0dMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVkNR0xfVEVYVFVSRV8zRBFHTF9URVhUVVJFX0JVRkZFUhNHTF9URVhUVVJFX0NVQkVfTUFQGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVkCF2dsQmluZFRyYW5zZm9ybUZlZWRiYWNrAVsMXQhfChdnbEJpbmRUcmFuc2Zvcm1GZWVkYmFjawZ0YXJnZXQBFUdMX1RSQU5TRk9STV9GRUVEQkFDSwIPZ2xCbGVuZEVxdWF0aW9uAWEMYwhlCg9nbEJsZW5kRXF1YXRpb24IZXF1YXRpb24FC0dMX0ZVTkNfQUREGEdMX0ZVTkNfUkVWRVJTRV9TVUJUUkFDVBBHTF9GVU5DX1NVQlRSQUNUBkdMX01BWAZHTF9NSU4CF2dsQmxlbmRFcXVhdGlvblNlcGFyYXRlAmcMaQhrChdnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZQNyZ2IFC0dMX0ZVTkNfQUREGEdMX0ZVTkNfUkVWRVJTRV9TVUJUUkFDVBBHTF9GVU5DX1NVQlRSQUNUBkdMX01BWAZHTF9NSU5tDG8IcQoXZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUFYWxwaGEFC0dMX0ZVTkNfQUREGEdMX0ZVTkNfUkVWRVJTRV9TVUJUUkFDVBBHTF9GVU5DX1NVQlRSQUNUBkdMX01BWAZHTF9NSU4CGGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlaQJzDHUIdwoYZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVpB21vZGVSR0IFC0dMX0ZVTkNfQUREGEdMX0ZVTkNfUkVWRVJTRV9TVUJUUkFDVBBHTF9GVU5DX1NVQlRSQUNUBkdMX01BWAZHTF9NSU55DHsIfQoYZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVpCW1vZGVBbHBoYQULR0xfRlVOQ19BREQYR0xfRlVOQ19SRVZFUlNFX1NVQlRSQUNUEEdMX0ZVTkNfU1VCVFJBQ1QGR0xfTUFYBkdMX01JTgIbZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVpRVhUAn8MgIEIgIMKG2dsQmxlbmRFcXVhdGlvblNlcGFyYXRlaUVYVAdtb2RlUkdCBQtHTF9GVU5DX0FERBhHTF9GVU5DX1JFVkVSU0VfU1VCVFJBQ1QQR0xfRlVOQ19TVUJUUkFDVAZHTF9NQVgGR0xfTUlOgIUMgIcIgIkKG2dsQmxlbmRFcXVhdGlvblNlcGFyYXRlaUVYVAltb2RlQWxwaGEFC0dMX0ZVTkNfQUREGEdMX0ZVTkNfUkVWRVJTRV9TVUJUUkFDVBBHTF9GVU5DX1NVQlRSQUNUBkdMX01BWAZHTF9NSU4CG2dsQmxlbmRFcXVhdGlvblNlcGFyYXRlaU9FUwKAiwyAjQiAjwobZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVpT0VTB21vZGVSR0IFC0dMX0ZVTkNfQUREGEdMX0ZVTkNfUkVWRVJTRV9TVUJUUkFDVBBHTF9GVU5DX1NVQlRSQUNUBkdMX01BWAZHTF9NSU6AkQyAkwiAlQobZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVpT0VTCW1vZGVBbHBoYQULR0xfRlVOQ19BREQYR0xfRlVOQ19SRVZFUlNFX1NVQlRSQUNUEEdMX0ZVTkNfU1VCVFJBQ1QGR0xfTUFYBkdMX01JTgIQZ2xCbGVuZEVxdWF0aW9uaQGAlwyAmQiAmwoQZ2xCbGVuZEVxdWF0aW9uaQRtb2RlBQtHTF9GVU5DX0FERBhHTF9GVU5DX1JFVkVSU0VfU1VCVFJBQ1QQR0xfRlVOQ19TVUJUUkFDVAZHTF9NQVgGR0xfTUlOAhNnbEJsZW5kRXF1YXRpb25pRVhUAYCdDICfCIChChNnbEJsZW5kRXF1YXRpb25pRVhUBG1vZGUFC0dMX0ZVTkNfQUREGEdMX0ZVTkNfUkVWRVJTRV9TVUJUUkFDVBBHTF9GVU5DX1NVQlRSQUNUBkdMX01BWAZHTF9NSU4CE2dsQmxlbmRFcXVhdGlvbmlPRVMBgKMMgKUIgKcKE2dsQmxlbmRFcXVhdGlvbmlPRVMEbW9kZQULR0xfRlVOQ19BREQYR0xfRlVOQ19SRVZFUlNFX1NVQlRSQUNUEEdMX0ZVTkNfU1VCVFJBQ1QGR0xfTUFYBkdMX01JTgILZ2xCbGVuZEZ1bmMCgKkMgKsIgK0KC2dsQmxlbmRGdW5jCnNyY19mYWN0b3IPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPgK8MgLEIgLMKC2dsQmxlbmRGdW5jCmRzdF9mYWN0b3IPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPAhNnbEJsZW5kRnVuY1NlcGFyYXRlBIC1DIC3CIC5ChNnbEJsZW5kRnVuY1NlcGFyYXRlDnNyY19mYWN0b3JfcmdiDxFHTF9DT05TVEFOVF9BTFBIQRFHTF9DT05TVEFOVF9DT0xPUgxHTF9EU1RfQUxQSEEMR0xfRFNUX0NPTE9SBkdMX09ORRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEbR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SFkdMX09ORV9NSU5VU19EU1RfQUxQSEEWR0xfT05FX01JTlVTX0RTVF9DT0xPUhZHTF9PTkVfTUlOVVNfU1JDX0FMUEhBFkdMX09ORV9NSU5VU19TUkNfQ09MT1IMR0xfU1JDX0FMUEhBFUdMX1NSQ19BTFBIQV9TQVRVUkFURQxHTF9TUkNfQ09MT1IHR0xfWkVST4C7DIC9CIC/ChNnbEJsZW5kRnVuY1NlcGFyYXRlDmRzdF9mYWN0b3JfcmdiDxFHTF9DT05TVEFOVF9BTFBIQRFHTF9DT05TVEFOVF9DT0xPUgxHTF9EU1RfQUxQSEEMR0xfRFNUX0NPTE9SBkdMX09ORRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEbR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SFkdMX09ORV9NSU5VU19EU1RfQUxQSEEWR0xfT05FX01JTlVTX0RTVF9DT0xPUhZHTF9PTkVfTUlOVVNfU1JDX0FMUEhBFkdMX09ORV9NSU5VU19TUkNfQ09MT1IMR0xfU1JDX0FMUEhBFUdMX1NSQ19BTFBIQV9TQVRVUkFURQxHTF9TUkNfQ09MT1IHR0xfWkVST4DBDIDDCIDFChNnbEJsZW5kRnVuY1NlcGFyYXRlEHNyY19mYWN0b3JfYWxwaGEPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPgMcMgMkIgMsKE2dsQmxlbmRGdW5jU2VwYXJhdGUQZHN0X2ZhY3Rvcl9hbHBoYQ8RR0xfQ09OU1RBTlRfQUxQSEERR0xfQ09OU1RBTlRfQ09MT1IMR0xfRFNUX0FMUEhBDEdMX0RTVF9DT0xPUgZHTF9PTkUbR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBG0dMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUhZHTF9PTkVfTUlOVVNfRFNUX0FMUEhBFkdMX09ORV9NSU5VU19EU1RfQ09MT1IWR0xfT05FX01JTlVTX1NSQ19BTFBIQRZHTF9PTkVfTUlOVVNfU1JDX0NPTE9SDEdMX1NSQ19BTFBIQRVHTF9TUkNfQUxQSEFfU0FUVVJBVEUMR0xfU1JDX0NPTE9SB0dMX1pFUk8CFGdsQmxlbmRGdW5jU2VwYXJhdGVpBIDNDIDPCIDRChRnbEJsZW5kRnVuY1NlcGFyYXRlaQZzcmNSR0IPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPgNMMgNUIgNcKFGdsQmxlbmRGdW5jU2VwYXJhdGVpBmRzdFJHQg8RR0xfQ09OU1RBTlRfQUxQSEERR0xfQ09OU1RBTlRfQ09MT1IMR0xfRFNUX0FMUEhBDEdMX0RTVF9DT0xPUgZHTF9PTkUbR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBG0dMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUhZHTF9PTkVfTUlOVVNfRFNUX0FMUEhBFkdMX09ORV9NSU5VU19EU1RfQ09MT1IWR0xfT05FX01JTlVTX1NSQ19BTFBIQRZHTF9PTkVfTUlOVVNfU1JDX0NPTE9SDEdMX1NSQ19BTFBIQRVHTF9TUkNfQUxQSEFfU0FUVVJBVEUMR0xfU1JDX0NPTE9SB0dMX1pFUk+A2QyA2wiA3QoUZ2xCbGVuZEZ1bmNTZXBhcmF0ZWkIc3JjQWxwaGEPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPgN8MgOEIgOMKFGdsQmxlbmRGdW5jU2VwYXJhdGVpCGRzdEFscGhhDxFHTF9DT05TVEFOVF9BTFBIQRFHTF9DT05TVEFOVF9DT0xPUgxHTF9EU1RfQUxQSEEMR0xfRFNUX0NPTE9SBkdMX09ORRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEbR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SFkdMX09ORV9NSU5VU19EU1RfQUxQSEEWR0xfT05FX01JTlVTX0RTVF9DT0xPUhZHTF9PTkVfTUlOVVNfU1JDX0FMUEhBFkdMX09ORV9NSU5VU19TUkNfQ09MT1IMR0xfU1JDX0FMUEhBFUdMX1NSQ19BTFBIQV9TQVRVUkFURQxHTF9TUkNfQ09MT1IHR0xfWkVSTwIXZ2xCbGVuZEZ1bmNTZXBhcmF0ZWlFWFQEgOUMgOcIgOkKF2dsQmxlbmRGdW5jU2VwYXJhdGVpRVhUBnNyY1JHQg8RR0xfQ09OU1RBTlRfQUxQSEERR0xfQ09OU1RBTlRfQ09MT1IMR0xfRFNUX0FMUEhBDEdMX0RTVF9DT0xPUgZHTF9PTkUbR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBG0dMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUhZHTF9PTkVfTUlOVVNfRFNUX0FMUEhBFkdMX09ORV9NSU5VU19EU1RfQ09MT1IWR0xfT05FX01JTlVTX1NSQ19BTFBIQRZHTF9PTkVfTUlOVVNfU1JDX0NPTE9SDEdMX1NSQ19BTFBIQRVHTF9TUkNfQUxQSEFfU0FUVVJBVEUMR0xfU1JDX0NPTE9SB0dMX1pFUk+A6wyA7QiA7woXZ2xCbGVuZEZ1bmNTZXBhcmF0ZWlFWFQGZHN0UkdCDxFHTF9DT05TVEFOVF9BTFBIQRFHTF9DT05TVEFOVF9DT0xPUgxHTF9EU1RfQUxQSEEMR0xfRFNUX0NPTE9SBkdMX09ORRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEbR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SFkdMX09ORV9NSU5VU19EU1RfQUxQSEEWR0xfT05FX01JTlVTX0RTVF9DT0xPUhZHTF9PTkVfTUlOVVNfU1JDX0FMUEhBFkdMX09ORV9NSU5VU19TUkNfQ09MT1IMR0xfU1JDX0FMUEhBFUdMX1NSQ19BTFBIQV9TQVRVUkFURQxHTF9TUkNfQ09MT1IHR0xfWkVST4DxDIDzCID1ChdnbEJsZW5kRnVuY1NlcGFyYXRlaUVYVAhzcmNBbHBoYQ8RR0xfQ09OU1RBTlRfQUxQSEERR0xfQ09OU1RBTlRfQ09MT1IMR0xfRFNUX0FMUEhBDEdMX0RTVF9DT0xPUgZHTF9PTkUbR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBG0dMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUhZHTF9PTkVfTUlOVVNfRFNUX0FMUEhBFkdMX09ORV9NSU5VU19EU1RfQ09MT1IWR0xfT05FX01JTlVTX1NSQ19BTFBIQRZHTF9PTkVfTUlOVVNfU1JDX0NPTE9SDEdMX1NSQ19BTFBIQRVHTF9TUkNfQUxQSEFfU0FUVVJBVEUMR0xfU1JDX0NPTE9SB0dMX1pFUk+A9wyA+QiA+woXZ2xCbGVuZEZ1bmNTZXBhcmF0ZWlFWFQIZHN0QWxwaGEPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPAhdnbEJsZW5kRnVuY1NlcGFyYXRlaU9FUwSA/QyA/wiBAQoXZ2xCbGVuZEZ1bmNTZXBhcmF0ZWlPRVMGc3JjUkdCDxFHTF9DT05TVEFOVF9BTFBIQRFHTF9DT05TVEFOVF9DT0xPUgxHTF9EU1RfQUxQSEEMR0xfRFNUX0NPTE9SBkdMX09ORRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEbR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SFkdMX09ORV9NSU5VU19EU1RfQUxQSEEWR0xfT05FX01JTlVTX0RTVF9DT0xPUhZHTF9PTkVfTUlOVVNfU1JDX0FMUEhBFkdMX09ORV9NSU5VU19TUkNfQ09MT1IMR0xfU1JDX0FMUEhBFUdMX1NSQ19BTFBIQV9TQVRVUkFURQxHTF9TUkNfQ09MT1IHR0xfWkVST4EDDIEFCIEHChdnbEJsZW5kRnVuY1NlcGFyYXRlaU9FUwZkc3RSR0IPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPgQkMgQsIgQ0KF2dsQmxlbmRGdW5jU2VwYXJhdGVpT0VTCHNyY0FscGhhDxFHTF9DT05TVEFOVF9BTFBIQRFHTF9DT05TVEFOVF9DT0xPUgxHTF9EU1RfQUxQSEEMR0xfRFNUX0NPTE9SBkdMX09ORRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEbR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SFkdMX09ORV9NSU5VU19EU1RfQUxQSEEWR0xfT05FX01JTlVTX0RTVF9DT0xPUhZHTF9PTkVfTUlOVVNfU1JDX0FMUEhBFkdMX09ORV9NSU5VU19TUkNfQ09MT1IMR0xfU1JDX0FMUEhBFUdMX1NSQ19BTFBIQV9TQVRVUkFURQxHTF9TUkNfQ09MT1IHR0xfWkVST4EPDIERCIETChdnbEJsZW5kRnVuY1NlcGFyYXRlaU9FUwhkc3RBbHBoYQ8RR0xfQ09OU1RBTlRfQUxQSEERR0xfQ09OU1RBTlRfQ09MT1IMR0xfRFNUX0FMUEhBDEdMX0RTVF9DT0xPUgZHTF9PTkUbR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBG0dMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUhZHTF9PTkVfTUlOVVNfRFNUX0FMUEhBFkdMX09ORV9NSU5VU19EU1RfQ09MT1IWR0xfT05FX01JTlVTX1NSQ19BTFBIQRZHTF9PTkVfTUlOVVNfU1JDX0NPTE9SDEdMX1NSQ19BTFBIQRVHTF9TUkNfQUxQSEFfU0FUVVJBVEUMR0xfU1JDX0NPTE9SB0dMX1pFUk8CDGdsQmxlbmRGdW5jaQKBFQyBFwiBGQoMZ2xCbGVuZEZ1bmNpA3NyYw8RR0xfQ09OU1RBTlRfQUxQSEERR0xfQ09OU1RBTlRfQ09MT1IMR0xfRFNUX0FMUEhBDEdMX0RTVF9DT0xPUgZHTF9PTkUbR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBG0dMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUhZHTF9PTkVfTUlOVVNfRFNUX0FMUEhBFkdMX09ORV9NSU5VU19EU1RfQ09MT1IWR0xfT05FX01JTlVTX1NSQ19BTFBIQRZHTF9PTkVfTUlOVVNfU1JDX0NPTE9SDEdMX1NSQ19BTFBIQRVHTF9TUkNfQUxQSEFfU0FUVVJBVEUMR0xfU1JDX0NPTE9SB0dMX1pFUk+BGwyBHQiBHwoMZ2xCbGVuZEZ1bmNpA2RzdA8RR0xfQ09OU1RBTlRfQUxQSEERR0xfQ09OU1RBTlRfQ09MT1IMR0xfRFNUX0FMUEhBDEdMX0RTVF9DT0xPUgZHTF9PTkUbR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBG0dMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUhZHTF9PTkVfTUlOVVNfRFNUX0FMUEhBFkdMX09ORV9NSU5VU19EU1RfQ09MT1IWR0xfT05FX01JTlVTX1NSQ19BTFBIQRZHTF9PTkVfTUlOVVNfU1JDX0NPTE9SDEdMX1NSQ19BTFBIQRVHTF9TUkNfQUxQSEFfU0FUVVJBVEUMR0xfU1JDX0NPTE9SB0dMX1pFUk8CD2dsQmxlbmRGdW5jaUVYVAKBIQyBIwiBJQoPZ2xCbGVuZEZ1bmNpRVhUA3NyYw8RR0xfQ09OU1RBTlRfQUxQSEERR0xfQ09OU1RBTlRfQ09MT1IMR0xfRFNUX0FMUEhBDEdMX0RTVF9DT0xPUgZHTF9PTkUbR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBG0dMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUhZHTF9PTkVfTUlOVVNfRFNUX0FMUEhBFkdMX09ORV9NSU5VU19EU1RfQ09MT1IWR0xfT05FX01JTlVTX1NSQ19BTFBIQRZHTF9PTkVfTUlOVVNfU1JDX0NPTE9SDEdMX1NSQ19BTFBIQRVHTF9TUkNfQUxQSEFfU0FUVVJBVEUMR0xfU1JDX0NPTE9SB0dMX1pFUk+BJwyBKQiBKwoPZ2xCbGVuZEZ1bmNpRVhUA2RzdA8RR0xfQ09OU1RBTlRfQUxQSEERR0xfQ09OU1RBTlRfQ09MT1IMR0xfRFNUX0FMUEhBDEdMX0RTVF9DT0xPUgZHTF9PTkUbR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBG0dMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUhZHTF9PTkVfTUlOVVNfRFNUX0FMUEhBFkdMX09ORV9NSU5VU19EU1RfQ09MT1IWR0xfT05FX01JTlVTX1NSQ19BTFBIQRZHTF9PTkVfTUlOVVNfU1JDX0NPTE9SDEdMX1NSQ19BTFBIQRVHTF9TUkNfQUxQSEFfU0FUVVJBVEUMR0xfU1JDX0NPTE9SB0dMX1pFUk8CD2dsQmxlbmRGdW5jaU9FUwKBLQyBLwiBMQoPZ2xCbGVuZEZ1bmNpT0VTA3NyYw8RR0xfQ09OU1RBTlRfQUxQSEERR0xfQ09OU1RBTlRfQ09MT1IMR0xfRFNUX0FMUEhBDEdMX0RTVF9DT0xPUgZHTF9PTkUbR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBG0dMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUhZHTF9PTkVfTUlOVVNfRFNUX0FMUEhBFkdMX09ORV9NSU5VU19EU1RfQ09MT1IWR0xfT05FX01JTlVTX1NSQ19BTFBIQRZHTF9PTkVfTUlOVVNfU1JDX0NPTE9SDEdMX1NSQ19BTFBIQRVHTF9TUkNfQUxQSEFfU0FUVVJBVEUMR0xfU1JDX0NPTE9SB0dMX1pFUk+BMwyBNQiBNwoPZ2xCbGVuZEZ1bmNpT0VTA2RzdA8RR0xfQ09OU1RBTlRfQUxQSEERR0xfQ09OU1RBTlRfQ09MT1IMR0xfRFNUX0FMUEhBDEdMX0RTVF9DT0xPUgZHTF9PTkUbR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBG0dMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUhZHTF9PTkVfTUlOVVNfRFNUX0FMUEhBFkdMX09ORV9NSU5VU19EU1RfQ09MT1IWR0xfT05FX01JTlVTX1NSQ19BTFBIQRZHTF9PTkVfTUlOVVNfU1JDX0NPTE9SDEdMX1NSQ19BTFBIQRVHTF9TUkNfQUxQSEFfU0FUVVJBVEUMR0xfU1JDX0NPTE9SB0dMX1pFUk8CEWdsQmxpdEZyYW1lYnVmZmVyAoE5DIE7CIE9ChFnbEJsaXRGcmFtZWJ1ZmZlcgRtYXNrAxNHTF9DT0xPUl9CVUZGRVJfQklUE0dMX0RFUFRIX0JVRkZFUl9CSVQVR0xfU1RFTkNJTF9CVUZGRVJfQklUgT8MgUEIgUMKEWdsQmxpdEZyYW1lYnVmZmVyBmZpbHRlcgIJR0xfTElORUFSCkdMX05FQVJFU1QCE2dsQmxpdEZyYW1lYnVmZmVyTlYCgUUMgUcIgUkKE2dsQmxpdEZyYW1lYnVmZmVyTlYEbWFzawMTR0xfQ09MT1JfQlVGRkVSX0JJVBNHTF9ERVBUSF9CVUZGRVJfQklUFUdMX1NURU5DSUxfQlVGRkVSX0JJVIFLDIFNCIFPChNnbEJsaXRGcmFtZWJ1ZmZlck5WBmZpbHRlcgIJR0xfTElORUFSCkdMX05FQVJFU1QCDGdsQnVmZmVyRGF0YQKBUQyBUwiBVQoMZ2xCdWZmZXJEYXRhBnRhcmdldA0PR0xfQVJSQVlfQlVGRkVSF0dMX0VMRU1FTlRfQVJSQVlfQlVGRkVSE0dMX0NPUFlfUkVBRF9CVUZGRVIUR0xfQ09QWV9XUklURV9CVUZGRVIUR0xfUElYRUxfUEFDS19CVUZGRVIWR0xfUElYRUxfVU5QQUNLX0JVRkZFUhxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSEUdMX1VOSUZPUk1fQlVGRkVSGEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUhtHTF9ESVNQQVRDSF9JTkRJUkVDVF9CVUZGRVIXR0xfRFJBV19JTkRJUkVDVF9CVUZGRVIYR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSEUdMX1RFWFRVUkVfQlVGRkVSgVcMgVkIgVsKDGdsQnVmZmVyRGF0YQV1c2FnZQkPR0xfRFlOQU1JQ19EUkFXDkdMX1NUQVRJQ19EUkFXDkdMX1NUUkVBTV9EUkFXD0dMX0RZTkFNSUNfQ09QWQ9HTF9EWU5BTUlDX1JFQUQOR0xfU1RBVElDX0NPUFkOR0xfU1RBVElDX1JFQUQOR0xfU1RSRUFNX0NPUFkOR0xfU1RSRUFNX1JFQUQCD2dsQnVmZmVyU3ViRGF0YQKBXQyBXwiBYQoPZ2xCdWZmZXJTdWJEYXRhBnRhcmdldA0PR0xfQVJSQVlfQlVGRkVSF0dMX0VMRU1FTlRfQVJSQVlfQlVGRkVSE0dMX0NPUFlfUkVBRF9CVUZGRVIUR0xfQ09QWV9XUklURV9CVUZGRVIUR0xfUElYRUxfUEFDS19CVUZGRVIWR0xfUElYRUxfVU5QQUNLX0JVRkZFUhxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSEUdMX1VOSUZPUk1fQlVGRkVSGEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUhtHTF9ESVNQQVRDSF9JTkRJUkVDVF9CVUZGRVIXR0xfRFJBV19JTkRJUkVDVF9CVUZGRVIYR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSEUdMX1RFWFRVUkVfQlVGRkVSgWMEgWUGgWcIgWkKD2dsQnVmZmVyU3ViRGF0YQRkYXRhBAICAAIYZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzAYFrDIFtCIFvChhnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMGdGFyZ2V0Aw5HTF9GUkFNRUJVRkZFUhNHTF9EUkFXX0ZSQU1FQlVGRkVSE0dMX1JFQURfRlJBTUVCVUZGRVICB2dsQ2xlYXIBgXEMgXMIgXUKB2dsQ2xlYXIEbWFzawMTR0xfQ09MT1JfQlVGRkVSX0JJVBNHTF9ERVBUSF9CVUZGRVJfQklUFUdMX1NURU5DSUxfQlVGRkVSX0JJVAIPZ2xDbGVhckJ1ZmZlcmZpAYF3DIF5CIF7Cg9nbENsZWFyQnVmZmVyZmkGYnVmZmVyARBHTF9ERVBUSF9TVEVOQ0lMAg9nbENsZWFyQnVmZmVyZnYCgX0MgX8IgYEKD2dsQ2xlYXJCdWZmZXJmdgZidWZmZXICCEdMX0NPTE9SCEdMX0RFUFRIgYMEgYUGgYcIgYkKD2dsQ2xlYXJCdWZmZXJmdgV2YWx1ZQQBAAIPZ2xDbGVhckJ1ZmZlcml2AoGLDIGNCIGPCg9nbENsZWFyQnVmZmVyaXYGYnVmZmVyAghHTF9DT0xPUgpHTF9TVEVOQ0lMgZEEgZMGgZUIgZcKD2dsQ2xlYXJCdWZmZXJpdgV2YWx1ZQQBAAIQZ2xDbGVhckJ1ZmZlcnVpdgKBmQyBmwiBnQoQZ2xDbGVhckJ1ZmZlcnVpdgZidWZmZXIBCEdMX0NPTE9SgZ8EgaEGgaMIgaUKEGdsQ2xlYXJCdWZmZXJ1aXYFdmFsdWUEAQACEGdsQ2xpZW50V2FpdFN5bmMBgacMgakIgasKEGdsQ2xpZW50V2FpdFN5bmMJc3luY0ZsYWdzARpHTF9TWU5DX0ZMVVNIX0NPTU1BTkRTX0JJVAIVZ2xDbGllbnRXYWl0U3luY0FQUExFAYGtDIGvCIGxChVnbENsaWVudFdhaXRTeW5jQVBQTEUEZmxhZwEaR0xfU1lOQ19GTFVTSF9DT01NQU5EU19CSVQCFmdsQ29tcHJlc3NlZFRleEltYWdlMkQDgbMMgbUIgbcKFmdsQ29tcHJlc3NlZFRleEltYWdlMkQGdGFyZ2V0Bw1HTF9URVhUVVJFXzJEHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWB5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1keR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWB5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1keR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9agbkMgbsIgb0KFmdsQ29tcHJlc3NlZFRleEltYWdlMkQGZm9ybWF0LhVHTF9DT01QUkVTU0VEX1IxMV9FQUMWR0xfQ09NUFJFU1NFRF9SRzExX0VBQxdHTF9DT01QUkVTU0VEX1JHQjhfRVRDMitHTF9DT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyHEdMX0NPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMcR0xfQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQx1HTF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQyNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQxhHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzIsR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIOR0xfQVRDX1JHQl9BTUQeR0xfQVRDX1JHQkFfRVhQTElDSVRfQUxQSEFfQU1EIkdMX0FUQ19SR0JBX0lOVEVSUE9MQVRFRF9BTFBIQV9BTUQQR0xfRVRDMV9SR0I4X09FUx1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMBxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDYcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg4JUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTAkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NiRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDglR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4H0dMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFSBvwSBwQaBwwiBxQoWZ2xDb21wcmVzc2VkVGV4SW1hZ2UyRARkYXRhBAEAAhZnbENvbXByZXNzZWRUZXhJbWFnZTNEA4HHDIHJCIHLChZnbENvbXByZXNzZWRUZXhJbWFnZTNEBnRhcmdldAMTR0xfVEVYVFVSRV8yRF9BUlJBWQ1HTF9URVhUVVJFXzNEGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVmBzQyBzwiB0QoWZ2xDb21wcmVzc2VkVGV4SW1hZ2UzRA5pbnRlcm5hbGZvcm1hdCoVR0xfQ09NUFJFU1NFRF9SMTFfRUFDFkdMX0NPTVBSRVNTRURfUkcxMV9FQUMXR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIrR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMhxHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDHEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMdR0xfQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUMjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMYR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyLEdMX0NPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwHEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDUcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NhxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4HUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyG0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzR4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDglR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMCRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDUkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTIjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDgfR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVIHTBIHVBoHXCIHZChZnbENvbXByZXNzZWRUZXhJbWFnZTNEBGRhdGEEAQACGWdsQ29tcHJlc3NlZFRleEltYWdlM0RPRVMDgdsMgd0Igd8KGWdsQ29tcHJlc3NlZFRleEltYWdlM0RPRVMGdGFyZ2V0AxNHTF9URVhUVVJFXzJEX0FSUkFZDUdMX1RFWFRVUkVfM0QZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWYHhDIHjCIHlChlnbENvbXByZXNzZWRUZXhJbWFnZTNET0VTDmludGVybmFsZm9ybWF0KhVHTF9DT01QUkVTU0VEX1IxMV9FQUMWR0xfQ09NUFJFU1NFRF9SRzExX0VBQxdHTF9DT01QUkVTU0VEX1JHQjhfRVRDMitHTF9DT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyHEdMX0NPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMcR0xfQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQx1HTF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQyNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQxhHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzIsR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTAcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NRxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDgdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTAdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTIbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4OCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwJEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NSRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDYkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4JUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTAlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OB9HTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUgecEgekGgesIge0KGWdsQ29tcHJlc3NlZFRleEltYWdlM0RPRVMEZGF0YQQBAAIZZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRAOB7wyB8QiB8woZZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRAZ0YXJnZXQHDUdMX1RFWFRVUkVfMkQeR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWR5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1oeR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWR5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1qB9QyB9wiB+QoZZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRAZmb3JtYXQrFUdMX0NPTVBSRVNTRURfUjExX0VBQxZHTF9DT01QUkVTU0VEX1JHMTFfRUFDF0dMX0NPTVBSRVNTRURfUkdCOF9FVEMyK0dMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIcR0xfQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQxxHTF9DT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDHUdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDGEdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMixHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMh1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMBxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDYcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg4JUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTAkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NiRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDglR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4EEdMX0VUQzFfUkdCOF9PRVMfR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVIH7BIH9BoH/CIIBChlnbENvbXByZXNzZWRUZXhTdWJJbWFnZTJEBGRhdGEEAQACGWdsQ29tcHJlc3NlZFRleFN1YkltYWdlM0QDggMMggUIggcKGWdsQ29tcHJlc3NlZFRleFN1YkltYWdlM0QGdGFyZ2V0AxNHTF9URVhUVVJFXzJEX0FSUkFZDUdMX1RFWFRVUkVfM0QZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWYIJDIILCIINChlnbENvbXByZXNzZWRUZXhTdWJJbWFnZTNEBmZvcm1hdCoVR0xfQ09NUFJFU1NFRF9SMTFfRUFDFkdMX0NPTVBSRVNTRURfUkcxMV9FQUMXR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIrR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMhxHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDHEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMdR0xfQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUMjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMYR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyLEdMX0NPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwHEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDUcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NhxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4HUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyG0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzR4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDglR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMCRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDUkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTIjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDgfR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVIIPBIIRBoITCIIVChlnbENvbXByZXNzZWRUZXhTdWJJbWFnZTNEBGRhdGEEAQACHGdsQ29tcHJlc3NlZFRleFN1YkltYWdlM0RPRVMDghcMghkIghsKHGdsQ29tcHJlc3NlZFRleFN1YkltYWdlM0RPRVMGdGFyZ2V0AxNHTF9URVhUVVJFXzJEX0FSUkFZDUdMX1RFWFRVUkVfM0QZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWYIdDIIfCIIhChxnbENvbXByZXNzZWRUZXhTdWJJbWFnZTNET0VTBmZvcm1hdCoVR0xfQ09NUFJFU1NFRF9SMTFfRUFDFkdMX0NPTVBSRVNTRURfUkcxMV9FQUMXR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIrR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMhxHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDHEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMdR0xfQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUMjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMYR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyLEdMX0NPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwHEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDUcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NhxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4HUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyG0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzR4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDglR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMCRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDUkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTIjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDgfR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVIIjBIIlBoInCIIpChxnbENvbXByZXNzZWRUZXhTdWJJbWFnZTNET0VTBGRhdGEEAQACE2dsQ29weUJ1ZmZlclN1YkRhdGECgisMgi0Igi8KE2dsQ29weUJ1ZmZlclN1YkRhdGEKcmVhZFRhcmdldA0PR0xfQVJSQVlfQlVGRkVSF0dMX0VMRU1FTlRfQVJSQVlfQlVGRkVSE0dMX0NPUFlfUkVBRF9CVUZGRVIUR0xfQ09QWV9XUklURV9CVUZGRVIUR0xfUElYRUxfUEFDS19CVUZGRVIWR0xfUElYRUxfVU5QQUNLX0JVRkZFUhxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSEUdMX1VOSUZPUk1fQlVGRkVSGEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUhtHTF9ESVNQQVRDSF9JTkRJUkVDVF9CVUZGRVIXR0xfRFJBV19JTkRJUkVDVF9CVUZGRVIYR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSEUdMX1RFWFRVUkVfQlVGRkVSgjEMgjMIgjUKE2dsQ29weUJ1ZmZlclN1YkRhdGELd3JpdGVUYXJnZXQND0dMX0FSUkFZX0JVRkZFUhdHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUhNHTF9DT1BZX1JFQURfQlVGRkVSFEdMX0NPUFlfV1JJVEVfQlVGRkVSFEdMX1BJWEVMX1BBQ0tfQlVGRkVSFkdMX1BJWEVMX1VOUEFDS19CVUZGRVIcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUhFHTF9VTklGT1JNX0JVRkZFUhhHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVIbR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSF0dMX0RSQVdfSU5ESVJFQ1RfQlVGRkVSGEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUhFHTF9URVhUVVJFX0JVRkZFUgIVZ2xDb3B5QnVmZmVyU3ViRGF0YU5WAoI3DII5CII7ChVnbENvcHlCdWZmZXJTdWJEYXRhTlYKcmVhZFRhcmdldA0PR0xfQVJSQVlfQlVGRkVSF0dMX0VMRU1FTlRfQVJSQVlfQlVGRkVSE0dMX0NPUFlfUkVBRF9CVUZGRVIUR0xfQ09QWV9XUklURV9CVUZGRVIUR0xfUElYRUxfUEFDS19CVUZGRVIWR0xfUElYRUxfVU5QQUNLX0JVRkZFUhxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSEUdMX1VOSUZPUk1fQlVGRkVSGEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUhtHTF9ESVNQQVRDSF9JTkRJUkVDVF9CVUZGRVIXR0xfRFJBV19JTkRJUkVDVF9CVUZGRVIYR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSEUdMX1RFWFRVUkVfQlVGRkVSgj0Mgj8IgkEKFWdsQ29weUJ1ZmZlclN1YkRhdGFOVgt3cml0ZVRhcmdldA0PR0xfQVJSQVlfQlVGRkVSF0dMX0VMRU1FTlRfQVJSQVlfQlVGRkVSE0dMX0NPUFlfUkVBRF9CVUZGRVIUR0xfQ09QWV9XUklURV9CVUZGRVIUR0xfUElYRUxfUEFDS19CVUZGRVIWR0xfUElYRUxfVU5QQUNLX0JVRkZFUhxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSEUdMX1VOSUZPUk1fQlVGRkVSGEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUhtHTF9ESVNQQVRDSF9JTkRJUkVDVF9CVUZGRVIXR0xfRFJBV19JTkRJUkVDVF9CVUZGRVIYR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSEUdMX1RFWFRVUkVfQlVGRkVSAhJnbENvcHlJbWFnZVN1YkRhdGECgkMMgkUIgkcKEmdsQ29weUltYWdlU3ViRGF0YQlzcmNUYXJnZXQID0dMX1JFTkRFUkJVRkZFUg1HTF9URVhUVVJFXzJEE0dMX1RFWFRVUkVfMkRfQVJSQVkZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZDUdMX1RFWFRVUkVfM0QTR0xfVEVYVFVSRV9DVUJFX01BUBlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZgkkMgksIgk0KEmdsQ29weUltYWdlU3ViRGF0YQlkc3RUYXJnZXQID0dMX1JFTkRFUkJVRkZFUg1HTF9URVhUVVJFXzJEE0dMX1RFWFRVUkVfMkRfQVJSQVkZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZDUdMX1RFWFRVUkVfM0QTR0xfVEVYVFVSRV9DVUJFX01BUBlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZAhVnbENvcHlJbWFnZVN1YkRhdGFFWFQCgk8MglEIglMKFWdsQ29weUltYWdlU3ViRGF0YUVYVAlzcmNUYXJnZXQID0dMX1JFTkRFUkJVRkZFUg1HTF9URVhUVVJFXzJEE0dMX1RFWFRVUkVfMkRfQVJSQVkZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZDUdMX1RFWFRVUkVfM0QTR0xfVEVYVFVSRV9DVUJFX01BUBlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZglUMglcIglkKFWdsQ29weUltYWdlU3ViRGF0YUVYVAlkc3RUYXJnZXQID0dMX1JFTkRFUkJVRkZFUg1HTF9URVhUVVJFXzJEE0dMX1RFWFRVUkVfMkRfQVJSQVkZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZDUdMX1RFWFRVUkVfM0QTR0xfVEVYVFVSRV9DVUJFX01BUBlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZAhVnbENvcHlJbWFnZVN1YkRhdGFPRVMCglsMgl0Igl8KFWdsQ29weUltYWdlU3ViRGF0YU9FUwlzcmNUYXJnZXQID0dMX1JFTkRFUkJVRkZFUg1HTF9URVhUVVJFXzJEE0dMX1RFWFRVUkVfMkRfQVJSQVkZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZDUdMX1RFWFRVUkVfM0QTR0xfVEVYVFVSRV9DVUJFX01BUBlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZgmEMgmMIgmUKFWdsQ29weUltYWdlU3ViRGF0YU9FUwlkc3RUYXJnZXQID0dMX1JFTkRFUkJVRkZFUg1HTF9URVhUVVJFXzJEE0dMX1RFWFRVUkVfMkRfQVJSQVkZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZDUdMX1RFWFRVUkVfM0QTR0xfVEVYVFVSRV9DVUJFX01BUBlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZAhBnbENvcHlUZXhJbWFnZTJEAoJnDIJpCIJrChBnbENvcHlUZXhJbWFnZTJEBnRhcmdldAcNR0xfVEVYVFVSRV8yRB5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1geR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWh5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1geR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWoJtDIJvCIJxChBnbENvcHlUZXhJbWFnZTJEDmludGVybmFsZm9ybWF0IghHTF9BTFBIQQxHTF9MVU1JTkFOQ0USR0xfTFVNSU5BTkNFX0FMUEhBBkdMX1JHQgdHTF9SR0JBB0dMX1IxNkkIR0xfUjE2VUkHR0xfUjMySQhHTF9SMzJVSQVHTF9SOAZHTF9SOEkHR0xfUjhVSQhHTF9SRzE2SQlHTF9SRzE2VUkIR0xfUkczMkkJR0xfUkczMlVJBkdMX1JHOAdHTF9SRzhJCEdMX1JHOFVJC0dMX1JHQjEwX0EyDUdMX1JHQjEwX0EyVUkJR0xfUkdCNTY1CkdMX1JHQjVfQTEHR0xfUkdCOApHTF9SR0JBMTZJC0dMX1JHQkExNlVJCkdMX1JHQkEzMkkLR0xfUkdCQTMyVUkIR0xfUkdCQTQIR0xfUkdCQTgJR0xfUkdCQThJCkdMX1JHQkE4VUkIR0xfU1JHQjgPR0xfU1JHQjhfQUxQSEE4AhNnbENvcHlUZXhTdWJJbWFnZTJEAYJzDIJ1CIJ3ChNnbENvcHlUZXhTdWJJbWFnZTJEBnRhcmdldA8NR0xfVEVYVFVSRV8yRB5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1geR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWh5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1geR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWhdHTF9URVhUVVJFX0VYVEVSTkFMX09FUxNHTF9URVhUVVJFXzJEX0FSUkFZGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWQ1HTF9URVhUVVJFXzNEEUdMX1RFWFRVUkVfQlVGRkVSE0dMX1RFWFRVUkVfQ1VCRV9NQVAZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWQITZ2xDb3B5VGV4U3ViSW1hZ2UzRAGCeQyCewiCfQoTZ2xDb3B5VGV4U3ViSW1hZ2UzRAZ0YXJnZXQPE0dMX1RFWFRVUkVfMkRfQVJSQVkNR0xfVEVYVFVSRV8zRBlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZDUdMX1RFWFRVUkVfMkQeR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWR5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1oeR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWR5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1oXR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZEUdMX1RFWFRVUkVfQlVGRkVSE0dMX1RFWFRVUkVfQ1VCRV9NQVACFmdsQ29weVRleFN1YkltYWdlM0RPRVMBgn8MgoEIgoMKFmdsQ29weVRleFN1YkltYWdlM0RPRVMGdGFyZ2V0DxNHTF9URVhUVVJFXzJEX0FSUkFZDUdMX1RFWFRVUkVfM0QZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWQ1HTF9URVhUVVJFXzJEHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWB5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1keR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWB5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1keR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aF0dMX1RFWFRVUkVfRVhURVJOQUxfT0VTGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWRFHTF9URVhUVVJFX0JVRkZFUhNHTF9URVhUVVJFX0NVQkVfTUFQAg5nbENyZWF0ZVNoYWRlcgGChQyChwiCiQoOZ2xDcmVhdGVTaGFkZXIEdHlwZQYSR0xfRlJBR01FTlRfU0hBREVSEEdMX1ZFUlRFWF9TSEFERVIRR0xfQ09NUFVURV9TSEFERVISR0xfR0VPTUVUUllfU0hBREVSFkdMX1RFU1NfQ09OVFJPTF9TSEFERVIZR0xfVEVTU19FVkFMVUFUSU9OX1NIQURFUgIWZ2xDcmVhdGVTaGFkZXJQcm9ncmFtdgGCiwyCjQiCjwoWZ2xDcmVhdGVTaGFkZXJQcm9ncmFtdgR0eXBlBhFHTF9DT01QVVRFX1NIQURFUhJHTF9GUkFHTUVOVF9TSEFERVIQR0xfVkVSVEVYX1NIQURFUhJHTF9HRU9NRVRSWV9TSEFERVIWR0xfVEVTU19DT05UUk9MX1NIQURFUhlHTF9URVNTX0VWQUxVQVRJT05fU0hBREVSAgpnbEN1bGxGYWNlAYKRDIKTCIKVCgpnbEN1bGxGYWNlBG1vZGUDB0dMX0JBQ0sIR0xfRlJPTlQRR0xfRlJPTlRfQU5EX0JBQ0sCFWdsRGVidWdNZXNzYWdlQ29udHJvbASClwyCmQiCmwoVZ2xEZWJ1Z01lc3NhZ2VDb250cm9sBnNvdXJjZQcTR0xfREVCVUdfU09VUkNFX0FQSRtHTF9ERUJVR19TT1VSQ0VfQVBQTElDQVRJT04VR0xfREVCVUdfU09VUkNFX09USEVSH0dMX0RFQlVHX1NPVVJDRV9TSEFERVJfQ09NUElMRVIbR0xfREVCVUdfU09VUkNFX1RISVJEX1BBUlRZHUdMX0RFQlVHX1NPVVJDRV9XSU5ET1dfU1lTVEVNDEdMX0RPTlRfQ0FSRYKdDIKfCIKhChVnbERlYnVnTWVzc2FnZUNvbnRyb2wEdHlwZQohR0xfREVCVUdfVFlQRV9ERVBSRUNBVEVEX0JFSEFWSU9SE0dMX0RFQlVHX1RZUEVfRVJST1IUR0xfREVCVUdfVFlQRV9NQVJLRVITR0xfREVCVUdfVFlQRV9PVEhFUhlHTF9ERUJVR19UWVBFX1BFUkZPUk1BTkNFF0dMX0RFQlVHX1RZUEVfUE9QX0dST1VQGUdMX0RFQlVHX1RZUEVfUE9SVEFCSUxJVFkYR0xfREVCVUdfVFlQRV9QVVNIX0dST1VQIEdMX0RFQlVHX1RZUEVfVU5ERUZJTkVEX0JFSEFWSU9SDEdMX0RPTlRfQ0FSRYKjDIKlCIKnChVnbERlYnVnTWVzc2FnZUNvbnRyb2wIc2V2ZXJpdHkFFkdMX0RFQlVHX1NFVkVSSVRZX0hJR0gVR0xfREVCVUdfU0VWRVJJVFlfTE9XGEdMX0RFQlVHX1NFVkVSSVRZX01FRElVTR5HTF9ERUJVR19TRVZFUklUWV9OT1RJRklDQVRJT04MR0xfRE9OVF9DQVJFgqkEgqsGgq0Igq8KFWdsRGVidWdNZXNzYWdlQ29udHJvbANpZHMEAQACGGdsRGVidWdNZXNzYWdlQ29udHJvbEtIUgSCsQyCswiCtQoYZ2xEZWJ1Z01lc3NhZ2VDb250cm9sS0hSBnNvdXJjZQcTR0xfREVCVUdfU09VUkNFX0FQSRtHTF9ERUJVR19TT1VSQ0VfQVBQTElDQVRJT04VR0xfREVCVUdfU09VUkNFX09USEVSH0dMX0RFQlVHX1NPVVJDRV9TSEFERVJfQ09NUElMRVIbR0xfREVCVUdfU09VUkNFX1RISVJEX1BBUlRZHUdMX0RFQlVHX1NPVVJDRV9XSU5ET1dfU1lTVEVNDEdMX0RPTlRfQ0FSRYK3DIK5CIK7ChhnbERlYnVnTWVzc2FnZUNvbnRyb2xLSFIEdHlwZQohR0xfREVCVUdfVFlQRV9ERVBSRUNBVEVEX0JFSEFWSU9SE0dMX0RFQlVHX1RZUEVfRVJST1IUR0xfREVCVUdfVFlQRV9NQVJLRVITR0xfREVCVUdfVFlQRV9PVEhFUhlHTF9ERUJVR19UWVBFX1BFUkZPUk1BTkNFF0dMX0RFQlVHX1RZUEVfUE9QX0dST1VQGUdMX0RFQlVHX1RZUEVfUE9SVEFCSUxJVFkYR0xfREVCVUdfVFlQRV9QVVNIX0dST1VQIEdMX0RFQlVHX1RZUEVfVU5ERUZJTkVEX0JFSEFWSU9SDEdMX0RPTlRfQ0FSRYK9DIK/CILBChhnbERlYnVnTWVzc2FnZUNvbnRyb2xLSFIIc2V2ZXJpdHkFFkdMX0RFQlVHX1NFVkVSSVRZX0hJR0gVR0xfREVCVUdfU0VWRVJJVFlfTE9XGEdMX0RFQlVHX1NFVkVSSVRZX01FRElVTR5HTF9ERUJVR19TRVZFUklUWV9OT1RJRklDQVRJT04MR0xfRE9OVF9DQVJFgsMEgsUGgscIgskKGGdsRGVidWdNZXNzYWdlQ29udHJvbEtIUgNpZHMEAQACFGdsRGVidWdNZXNzYWdlSW5zZXJ0BILLDILNCILPChRnbERlYnVnTWVzc2FnZUluc2VydAZzb3VyY2UCG0dMX0RFQlVHX1NPVVJDRV9BUFBMSUNBVElPThtHTF9ERUJVR19TT1VSQ0VfVEhJUkRfUEFSVFmC0QyC0wiC1QoUZ2xEZWJ1Z01lc3NhZ2VJbnNlcnQEdHlwZQkhR0xfREVCVUdfVFlQRV9ERVBSRUNBVEVEX0JFSEFWSU9SE0dMX0RFQlVHX1RZUEVfRVJST1IUR0xfREVCVUdfVFlQRV9NQVJLRVITR0xfREVCVUdfVFlQRV9PVEhFUhlHTF9ERUJVR19UWVBFX1BFUkZPUk1BTkNFF0dMX0RFQlVHX1RZUEVfUE9QX0dST1VQGUdMX0RFQlVHX1RZUEVfUE9SVEFCSUxJVFkYR0xfREVCVUdfVFlQRV9QVVNIX0dST1VQIEdMX0RFQlVHX1RZUEVfVU5ERUZJTkVEX0JFSEFWSU9SgtcMgtkIgtsKFGdsRGVidWdNZXNzYWdlSW5zZXJ0CHNldmVyaXR5BBZHTF9ERUJVR19TRVZFUklUWV9ISUdIFUdMX0RFQlVHX1NFVkVSSVRZX0xPVxhHTF9ERUJVR19TRVZFUklUWV9NRURJVU0eR0xfREVCVUdfU0VWRVJJVFlfTk9USUZJQ0FUSU9Ogt0Egt8GguEIguMKFGdsRGVidWdNZXNzYWdlSW5zZXJ0B21lc3NhZ2UEAQACF2dsRGVidWdNZXNzYWdlSW5zZXJ0S0hSBILlDILnCILpChdnbERlYnVnTWVzc2FnZUluc2VydEtIUgZzb3VyY2UCG0dMX0RFQlVHX1NPVVJDRV9BUFBMSUNBVElPThtHTF9ERUJVR19TT1VSQ0VfVEhJUkRfUEFSVFmC6wyC7QiC7woXZ2xEZWJ1Z01lc3NhZ2VJbnNlcnRLSFIEdHlwZQkhR0xfREVCVUdfVFlQRV9ERVBSRUNBVEVEX0JFSEFWSU9SE0dMX0RFQlVHX1RZUEVfRVJST1IUR0xfREVCVUdfVFlQRV9NQVJLRVITR0xfREVCVUdfVFlQRV9PVEhFUhlHTF9ERUJVR19UWVBFX1BFUkZPUk1BTkNFF0dMX0RFQlVHX1RZUEVfUE9QX0dST1VQGUdMX0RFQlVHX1RZUEVfUE9SVEFCSUxJVFkYR0xfREVCVUdfVFlQRV9QVVNIX0dST1VQIEdMX0RFQlVHX1RZUEVfVU5ERUZJTkVEX0JFSEFWSU9SgvEMgvMIgvUKF2dsRGVidWdNZXNzYWdlSW5zZXJ0S0hSCHNldmVyaXR5BBZHTF9ERUJVR19TRVZFUklUWV9ISUdIFUdMX0RFQlVHX1NFVkVSSVRZX0xPVxhHTF9ERUJVR19TRVZFUklUWV9NRURJVU0eR0xfREVCVUdfU0VWRVJJVFlfTk9USUZJQ0FUSU9OgvcEgvkGgvsIgv0KF2dsRGVidWdNZXNzYWdlSW5zZXJ0S0hSB21lc3NhZ2UEAQACFGdsRGVsZXRlRnJhbWVidWZmZXJzAAIYZ2xEZWxldGVQcm9ncmFtUGlwZWxpbmVzAYL/BIMBBoMDCIMFChhnbERlbGV0ZVByb2dyYW1QaXBlbGluZXMJcGlwZWxpbmVzBAEAAgtnbERlcHRoRnVuYwGDBwyDCQiDCwoLZ2xEZXB0aEZ1bmMIZnVuY3Rpb24ICUdMX0FMV0FZUwhHTF9FUVVBTAlHTF9HRVFVQUwKR0xfR1JFQVRFUglHTF9MRVFVQUwHR0xfTEVTUwhHTF9ORVZFUgtHTF9OT1RFUVVBTAIJZ2xEaXNhYmxlAYMNDIMPCIMRCglnbERpc2FibGUKY2FwYWJpbGl0eRAIR0xfQkxFTkQMR0xfQ1VMTF9GQUNFDUdMX0RFUFRIX1RFU1QJR0xfRElUSEVSFkdMX1BPTFlHT05fT0ZGU0VUX0ZJTEwbR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFEkdMX1NBTVBMRV9DT1ZFUkFHRQ9HTF9TQ0lTU09SX1RFU1QPR0xfU1RFTkNJTF9URVNUIEdMX1BSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYFUdMX1JBU1RFUklaRVJfRElTQ0FSRA5HTF9TQU1QTEVfTUFTSw9HTF9ERUJVR19PVVRQVVQbR0xfREVCVUdfT1VUUFVUX1NZTkNIUk9OT1VTEkdMX0FMUEhBX1RFU1RfUUNPTRdHTF9GUkFNRUJVRkZFUl9TUkdCX0VYVAIaZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkAAgpnbERpc2FibGVpAYMTDIMVCIMXCgpnbERpc2FibGVpCmNhcGFiaWxpdHkQCEdMX0JMRU5EDEdMX0NVTExfRkFDRQ1HTF9ERVBUSF9URVNUCUdMX0RJVEhFUhZHTF9QT0xZR09OX09GRlNFVF9GSUxMG0dMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRRJHTF9TQU1QTEVfQ09WRVJBR0UPR0xfU0NJU1NPUl9URVNUD0dMX1NURU5DSUxfVEVTVCBHTF9QUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWBVHTF9SQVNURVJJWkVSX0RJU0NBUkQOR0xfU0FNUExFX01BU0sPR0xfREVCVUdfT1VUUFVUG0dMX0RFQlVHX09VVFBVVF9TWU5DSFJPTk9VUxJHTF9BTFBIQV9URVNUX1FDT00XR0xfRlJBTUVCVUZGRVJfU1JHQl9FWFQCDWdsRGlzYWJsZWlFWFQBgxkMgxsIgx0KDWdsRGlzYWJsZWlFWFQGdGFyZ2V0EAhHTF9CTEVORAxHTF9DVUxMX0ZBQ0UNR0xfREVQVEhfVEVTVAlHTF9ESVRIRVIWR0xfUE9MWUdPTl9PRkZTRVRfRklMTBtHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0USR0xfU0FNUExFX0NPVkVSQUdFD0dMX1NDSVNTT1JfVEVTVA9HTF9TVEVOQ0lMX1RFU1QgR0xfUFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgVR0xfUkFTVEVSSVpFUl9ESVNDQVJEDkdMX1NBTVBMRV9NQVNLD0dMX0RFQlVHX09VVFBVVBtHTF9ERUJVR19PVVRQVVRfU1lOQ0hST05PVVMSR0xfQUxQSEFfVEVTVF9RQ09NF0dMX0ZSQU1FQlVGRkVSX1NSR0JfRVhUAgxnbERpc2FibGVpTlYBgx8MgyEIgyMKDGdsRGlzYWJsZWlOVgZ0YXJnZXQQCEdMX0JMRU5EDEdMX0NVTExfRkFDRQ1HTF9ERVBUSF9URVNUCUdMX0RJVEhFUhZHTF9QT0xZR09OX09GRlNFVF9GSUxMG0dMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRRJHTF9TQU1QTEVfQ09WRVJBR0UPR0xfU0NJU1NPUl9URVNUD0dMX1NURU5DSUxfVEVTVCBHTF9QUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWBVHTF9SQVNURVJJWkVSX0RJU0NBUkQOR0xfU0FNUExFX01BU0sPR0xfREVCVUdfT1VUUFVUG0dMX0RFQlVHX09VVFBVVF9TWU5DSFJPTk9VUxJHTF9BTFBIQV9URVNUX1FDT00XR0xfRlJBTUVCVUZGRVJfU1JHQl9FWFQCDWdsRGlzYWJsZWlPRVMBgyUMgycIgykKDWdsRGlzYWJsZWlPRVMGdGFyZ2V0EAhHTF9CTEVORAxHTF9DVUxMX0ZBQ0UNR0xfREVQVEhfVEVTVAlHTF9ESVRIRVIWR0xfUE9MWUdPTl9PRkZTRVRfRklMTBtHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0USR0xfU0FNUExFX0NPVkVSQUdFD0dMX1NDSVNTT1JfVEVTVA9HTF9TVEVOQ0lMX1RFU1QgR0xfUFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgVR0xfUkFTVEVSSVpFUl9ESVNDQVJEDkdMX1NBTVBMRV9NQVNLD0dMX0RFQlVHX09VVFBVVBtHTF9ERUJVR19PVVRQVVRfU1lOQ0hST05PVVMSR0xfQUxQSEFfVEVTVF9RQ09NF0dMX0ZSQU1FQlVGRkVSX1NSR0JfRVhUAhdnbERpc2NhcmRGcmFtZWJ1ZmZlckVYVAKDKwyDLQiDLwoXZ2xEaXNjYXJkRnJhbWVidWZmZXJFWFQGdGFyZ2V0Aw5HTF9GUkFNRUJVRkZFUhNHTF9EUkFXX0ZSQU1FQlVGRkVSE0dMX1JFQURfRlJBTUVCVUZGRVKDMQyDMwaDNQaDNwiDOQoXZ2xEaXNjYXJkRnJhbWVidWZmZXJFWFQLYXR0YWNobWVudHMEAhYIR0xfQ09MT1IIR0xfREVQVEgKR0xfU1RFTkNJTBRHTF9DT0xPUl9BVFRBQ0hNRU5UMBRHTF9DT0xPUl9BVFRBQ0hNRU5UMRVHTF9DT0xPUl9BVFRBQ0hNRU5UMTAVR0xfQ09MT1JfQVRUQUNITUVOVDExFUdMX0NPTE9SX0FUVEFDSE1FTlQxMhVHTF9DT0xPUl9BVFRBQ0hNRU5UMTMVR0xfQ09MT1JfQVRUQUNITUVOVDE0FUdMX0NPTE9SX0FUVEFDSE1FTlQxNRRHTF9DT0xPUl9BVFRBQ0hNRU5UMhRHTF9DT0xPUl9BVFRBQ0hNRU5UMxRHTF9DT0xPUl9BVFRBQ0hNRU5UNBRHTF9DT0xPUl9BVFRBQ0hNRU5UNRRHTF9DT0xPUl9BVFRBQ0hNRU5UNhRHTF9DT0xPUl9BVFRBQ0hNRU5UNxRHTF9DT0xPUl9BVFRBQ0hNRU5UOBRHTF9DT0xPUl9BVFRBQ0hNRU5UORNHTF9ERVBUSF9BVFRBQ0hNRU5UG0dMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVBVHTF9TVEVOQ0lMX0FUVEFDSE1FTlQCDGdsRHJhd0FycmF5cwGDOwyDPQiDPwoMZ2xEcmF3QXJyYXlzCWRyYXdfbW9kZQwIR0xfTElORVMMR0xfTElORV9MT09QDUdMX0xJTkVfU1RSSVAJR0xfUE9JTlRTDEdMX1RSSUFOR0xFUw9HTF9UUklBTkdMRV9GQU4RR0xfVFJJQU5HTEVfU1RSSVASR0xfTElORVNfQURKQUNFTkNZF0dMX0xJTkVfU1RSSVBfQURKQUNFTkNZCkdMX1BBVENIRVMWR0xfVFJJQU5HTEVTX0FESkFDRU5DWRtHTF9UUklBTkdMRV9TVFJJUF9BREpBQ0VOQ1kCFGdsRHJhd0FycmF5c0luZGlyZWN0AYNBDINDCINFChRnbERyYXdBcnJheXNJbmRpcmVjdAlkcmF3X21vZGUMCEdMX0xJTkVTDEdMX0xJTkVfTE9PUA1HTF9MSU5FX1NUUklQCUdMX1BPSU5UUwxHTF9UUklBTkdMRVMPR0xfVFJJQU5HTEVfRkFOEUdMX1RSSUFOR0xFX1NUUklQEkdMX0xJTkVTX0FESkFDRU5DWRdHTF9MSU5FX1NUUklQX0FESkFDRU5DWQpHTF9QQVRDSEVTFkdMX1RSSUFOR0xFU19BREpBQ0VOQ1kbR0xfVFJJQU5HTEVfU1RSSVBfQURKQUNFTkNZAhVnbERyYXdBcnJheXNJbnN0YW5jZWQBg0cMg0kIg0sKFWdsRHJhd0FycmF5c0luc3RhbmNlZAlkcmF3X21vZGUMCEdMX0xJTkVTDEdMX0xJTkVfTE9PUA1HTF9MSU5FX1NUUklQCUdMX1BPSU5UUwxHTF9UUklBTkdMRVMPR0xfVFJJQU5HTEVfRkFOEUdMX1RSSUFOR0xFX1NUUklQEkdMX0xJTkVTX0FESkFDRU5DWRdHTF9MSU5FX1NUUklQX0FESkFDRU5DWQpHTF9QQVRDSEVTFkdMX1RSSUFOR0xFU19BREpBQ0VOQ1kbR0xfVFJJQU5HTEVfU1RSSVBfQURKQUNFTkNZAhpnbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRQGDTQyDTwiDUQoaZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUEbW9kZQwIR0xfTElORVMMR0xfTElORV9MT09QDUdMX0xJTkVfU1RSSVAJR0xfUE9JTlRTDEdMX1RSSUFOR0xFUw9HTF9UUklBTkdMRV9GQU4RR0xfVFJJQU5HTEVfU1RSSVASR0xfTElORVNfQURKQUNFTkNZF0dMX0xJTkVfU1RSSVBfQURKQUNFTkNZCkdMX1BBVENIRVMWR0xfVFJJQU5HTEVTX0FESkFDRU5DWRtHTF9UUklBTkdMRV9TVFJJUF9BREpBQ0VOQ1kCGGdsRHJhd0FycmF5c0luc3RhbmNlZEVYVAGDUwyDVQiDVwoYZ2xEcmF3QXJyYXlzSW5zdGFuY2VkRVhUBG1vZGUMCEdMX0xJTkVTDEdMX0xJTkVfTE9PUA1HTF9MSU5FX1NUUklQCUdMX1BPSU5UUwxHTF9UUklBTkdMRVMPR0xfVFJJQU5HTEVfRkFOEUdMX1RSSUFOR0xFX1NUUklQEkdMX0xJTkVTX0FESkFDRU5DWRdHTF9MSU5FX1NUUklQX0FESkFDRU5DWQpHTF9QQVRDSEVTFkdMX1RSSUFOR0xFU19BREpBQ0VOQ1kbR0xfVFJJQU5HTEVfU1RSSVBfQURKQUNFTkNZAhdnbERyYXdBcnJheXNJbnN0YW5jZWROVgGDWQyDWwiDXQoXZ2xEcmF3QXJyYXlzSW5zdGFuY2VkTlYEbW9kZQwIR0xfTElORVMMR0xfTElORV9MT09QDUdMX0xJTkVfU1RSSVAJR0xfUE9JTlRTDEdMX1RSSUFOR0xFUw9HTF9UUklBTkdMRV9GQU4RR0xfVFJJQU5HTEVfU1RSSVASR0xfTElORVNfQURKQUNFTkNZF0dMX0xJTkVfU1RSSVBfQURKQUNFTkNZCkdMX1BBVENIRVMWR0xfVFJJQU5HTEVTX0FESkFDRU5DWRtHTF9UUklBTkdMRV9TVFJJUF9BREpBQ0VOQ1kCDWdsRHJhd0J1ZmZlcnMBg18Mg2EGg2MGg2UIg2cKDWdsRHJhd0J1ZmZlcnMEYnVmcwQCAQdHTF9OT05FAhBnbERyYXdCdWZmZXJzRVhUAYNpDINrBoNtBoNvCINxChBnbERyYXdCdWZmZXJzRVhUBGJ1ZnMEAgEHR0xfTk9ORQIPZ2xEcmF3QnVmZmVyc05WAYNzDIN1BoN3BoN5CIN7Cg9nbERyYXdCdWZmZXJzTlYEYnVmcwQCAQdHTF9OT05FAg5nbERyYXdFbGVtZW50cwODfQyDfwiDgQoOZ2xEcmF3RWxlbWVudHMJZHJhd19tb2RlDAhHTF9MSU5FUwxHTF9MSU5FX0xPT1ANR0xfTElORV9TVFJJUAlHTF9QT0lOVFMMR0xfVFJJQU5HTEVTD0dMX1RSSUFOR0xFX0ZBThFHTF9UUklBTkdMRV9TVFJJUBJHTF9MSU5FU19BREpBQ0VOQ1kXR0xfTElORV9TVFJJUF9BREpBQ0VOQ1kKR0xfUEFUQ0hFUxZHTF9UUklBTkdMRVNfQURKQUNFTkNZG0dMX1RSSUFOR0xFX1NUUklQX0FESkFDRU5DWYODDIOFCIOHCg5nbERyYXdFbGVtZW50cwxpbmRpY2VzX3R5cGUDEEdMX1VOU0lHTkVEX0JZVEURR0xfVU5TSUdORURfU0hPUlQPR0xfVU5TSUdORURfSU5Ug4kEg4sGg40Ig48KDmdsRHJhd0VsZW1lbnRzB2luZGljZXMEAQACGGdsRHJhd0VsZW1lbnRzQmFzZVZlcnRleAODkQyDkwiDlQoYZ2xEcmF3RWxlbWVudHNCYXNlVmVydGV4CWRyYXdfbW9kZQwIR0xfTElORVMMR0xfTElORV9MT09QDUdMX0xJTkVfU1RSSVAJR0xfUE9JTlRTDEdMX1RSSUFOR0xFUw9HTF9UUklBTkdMRV9GQU4RR0xfVFJJQU5HTEVfU1RSSVASR0xfTElORVNfQURKQUNFTkNZF0dMX0xJTkVfU1RSSVBfQURKQUNFTkNZCkdMX1BBVENIRVMWR0xfVFJJQU5HTEVTX0FESkFDRU5DWRtHTF9UUklBTkdMRV9TVFJJUF9BREpBQ0VOQ1mDlwyDmQiDmwoYZ2xEcmF3RWxlbWVudHNCYXNlVmVydGV4DGluZGljZXNfdHlwZQMQR0xfVU5TSUdORURfQllURRFHTF9VTlNJR05FRF9TSE9SVA9HTF9VTlNJR05FRF9JTlSDnQSDnwaDoQiDowoYZ2xEcmF3RWxlbWVudHNCYXNlVmVydGV4B2luZGljZXMEAQACG2dsRHJhd0VsZW1lbnRzQmFzZVZlcnRleEVYVAODpQyDpwiDqQobZ2xEcmF3RWxlbWVudHNCYXNlVmVydGV4RVhUBG1vZGUMCEdMX0xJTkVTDEdMX0xJTkVfTE9PUA1HTF9MSU5FX1NUUklQCUdMX1BPSU5UUwxHTF9UUklBTkdMRVMPR0xfVFJJQU5HTEVfRkFOEUdMX1RSSUFOR0xFX1NUUklQEkdMX0xJTkVTX0FESkFDRU5DWRdHTF9MSU5FX1NUUklQX0FESkFDRU5DWQpHTF9QQVRDSEVTFkdMX1RSSUFOR0xFU19BREpBQ0VOQ1kbR0xfVFJJQU5HTEVfU1RSSVBfQURKQUNFTkNZg6sMg60Ig68KG2dsRHJhd0VsZW1lbnRzQmFzZVZlcnRleEVYVAR0eXBlAxBHTF9VTlNJR05FRF9CWVRFEUdMX1VOU0lHTkVEX1NIT1JUD0dMX1VOU0lHTkVEX0lOVIOxBIOzBoO1CIO3ChtnbERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhFWFQHaW5kaWNlcwQBAAIbZ2xEcmF3RWxlbWVudHNCYXNlVmVydGV4T0VTA4O5DIO7CIO9ChtnbERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhPRVMEbW9kZQwIR0xfTElORVMMR0xfTElORV9MT09QDUdMX0xJTkVfU1RSSVAJR0xfUE9JTlRTDEdMX1RSSUFOR0xFUw9HTF9UUklBTkdMRV9GQU4RR0xfVFJJQU5HTEVfU1RSSVASR0xfTElORVNfQURKQUNFTkNZF0dMX0xJTkVfU1RSSVBfQURKQUNFTkNZCkdMX1BBVENIRVMWR0xfVFJJQU5HTEVTX0FESkFDRU5DWRtHTF9UUklBTkdMRV9TVFJJUF9BREpBQ0VOQ1mDvwyDwQiDwwobZ2xEcmF3RWxlbWVudHNCYXNlVmVydGV4T0VTBHR5cGUDEEdMX1VOU0lHTkVEX0JZVEURR0xfVU5TSUdORURfU0hPUlQPR0xfVU5TSUdORURfSU5Ug8UEg8cGg8kIg8sKG2dsRHJhd0VsZW1lbnRzQmFzZVZlcnRleE9FUwdpbmRpY2VzBAEAAhZnbERyYXdFbGVtZW50c0luZGlyZWN0AoPNDIPPCIPRChZnbERyYXdFbGVtZW50c0luZGlyZWN0CWRyYXdfbW9kZQwIR0xfTElORVMMR0xfTElORV9MT09QDUdMX0xJTkVfU1RSSVAJR0xfUE9JTlRTDEdMX1RSSUFOR0xFUw9HTF9UUklBTkdMRV9GQU4RR0xfVFJJQU5HTEVfU1RSSVASR0xfTElORVNfQURKQUNFTkNZF0dMX0xJTkVfU1RSSVBfQURKQUNFTkNZCkdMX1BBVENIRVMWR0xfVFJJQU5HTEVTX0FESkFDRU5DWRtHTF9UUklBTkdMRV9TVFJJUF9BREpBQ0VOQ1mD0wyD1QiD1woWZ2xEcmF3RWxlbWVudHNJbmRpcmVjdAxpbmRpY2VzX3R5cGUDEEdMX1VOU0lHTkVEX0JZVEURR0xfVU5TSUdORURfU0hPUlQPR0xfVU5TSUdORURfSU5UAhdnbERyYXdFbGVtZW50c0luc3RhbmNlZAOD2QyD2wiD3QoXZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWQJZHJhd19tb2RlDAhHTF9MSU5FUwxHTF9MSU5FX0xPT1ANR0xfTElORV9TVFJJUAlHTF9QT0lOVFMMR0xfVFJJQU5HTEVTD0dMX1RSSUFOR0xFX0ZBThFHTF9UUklBTkdMRV9TVFJJUBJHTF9MSU5FU19BREpBQ0VOQ1kXR0xfTElORV9TVFJJUF9BREpBQ0VOQ1kKR0xfUEFUQ0hFUxZHTF9UUklBTkdMRVNfQURKQUNFTkNZG0dMX1RSSUFOR0xFX1NUUklQX0FESkFDRU5DWYPfDIPhCIPjChdnbERyYXdFbGVtZW50c0luc3RhbmNlZAxpbmRpY2VzX3R5cGUDEEdMX1VOU0lHTkVEX0JZVEURR0xfVU5TSUdORURfU0hPUlQPR0xfVU5TSUdORURfSU5Ug+UEg+cGg+kIg+sKF2dsRHJhd0VsZW1lbnRzSW5zdGFuY2VkB2luZGljZXMEAQACHGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUDg+0Mg+8Ig/EKHGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUEbW9kZQwIR0xfTElORVMMR0xfTElORV9MT09QDUdMX0xJTkVfU1RSSVAJR0xfUE9JTlRTDEdMX1RSSUFOR0xFUw9HTF9UUklBTkdMRV9GQU4RR0xfVFJJQU5HTEVfU1RSSVASR0xfTElORVNfQURKQUNFTkNZF0dMX0xJTkVfU1RSSVBfQURKQUNFTkNZCkdMX1BBVENIRVMWR0xfVFJJQU5HTEVTX0FESkFDRU5DWRtHTF9UUklBTkdMRV9TVFJJUF9BREpBQ0VOQ1mD8wyD9QiD9wocZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRQR0eXBlAxBHTF9VTlNJR05FRF9CWVRFEUdMX1VOU0lHTkVEX1NIT1JUD0dMX1VOU0lHTkVEX0lOVIP5BIP7BoP9CIP/ChxnbERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFB2luZGljZXMEAQACIWdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleAOEAQyEAwiEBQohZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4CWRyYXdfbW9kZQwIR0xfTElORVMMR0xfTElORV9MT09QDUdMX0xJTkVfU1RSSVAJR0xfUE9JTlRTDEdMX1RSSUFOR0xFUw9HTF9UUklBTkdMRV9GQU4RR0xfVFJJQU5HTEVfU1RSSVASR0xfTElORVNfQURKQUNFTkNZF0dMX0xJTkVfU1RSSVBfQURKQUNFTkNZCkdMX1BBVENIRVMWR0xfVFJJQU5HTEVTX0FESkFDRU5DWRtHTF9UUklBTkdMRV9TVFJJUF9BREpBQ0VOQ1mEBwyECQiECwohZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4DGluZGljZXNfdHlwZQMQR0xfVU5TSUdORURfQllURRFHTF9VTlNJR05FRF9TSE9SVA9HTF9VTlNJR05FRF9JTlSEDQSEDwaEEQiEEwohZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4B2luZGljZXMEAQACJGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleEVYVAOEFQyEFwiEGQokZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4RVhUBG1vZGUMCEdMX0xJTkVTDEdMX0xJTkVfTE9PUA1HTF9MSU5FX1NUUklQCUdMX1BPSU5UUwxHTF9UUklBTkdMRVMPR0xfVFJJQU5HTEVfRkFOEUdMX1RSSUFOR0xFX1NUUklQEkdMX0xJTkVTX0FESkFDRU5DWRdHTF9MSU5FX1NUUklQX0FESkFDRU5DWQpHTF9QQVRDSEVTFkdMX1RSSUFOR0xFU19BREpBQ0VOQ1kbR0xfVFJJQU5HTEVfU1RSSVBfQURKQUNFTkNZhBsMhB0IhB8KJGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleEVYVAR0eXBlAxBHTF9VTlNJR05FRF9CWVRFEUdMX1VOU0lHTkVEX1NIT1JUD0dMX1VOU0lHTkVEX0lOVIQhBIQjBoQlCIQnCiRnbERyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhFWFQHaW5kaWNlcwQBAAIkZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4T0VTA4QpDIQrCIQtCiRnbERyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhPRVMEbW9kZQwIR0xfTElORVMMR0xfTElORV9MT09QDUdMX0xJTkVfU1RSSVAJR0xfUE9JTlRTDEdMX1RSSUFOR0xFUw9HTF9UUklBTkdMRV9GQU4RR0xfVFJJQU5HTEVfU1RSSVASR0xfTElORVNfQURKQUNFTkNZF0dMX0xJTkVfU1RSSVBfQURKQUNFTkNZCkdMX1BBVENIRVMWR0xfVFJJQU5HTEVTX0FESkFDRU5DWRtHTF9UUklBTkdMRV9TVFJJUF9BREpBQ0VOQ1mELwyEMQiEMwokZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4T0VTBHR5cGUDEEdMX1VOU0lHTkVEX0JZVEURR0xfVU5TSUdORURfU0hPUlQPR0xfVU5TSUdORURfSU5UhDUEhDcGhDkIhDsKJGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleE9FUwdpbmRpY2VzBAEAAhpnbERyYXdFbGVtZW50c0luc3RhbmNlZEVYVAOEPQyEPwiEQQoaZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRFWFQEbW9kZQwIR0xfTElORVMMR0xfTElORV9MT09QDUdMX0xJTkVfU1RSSVAJR0xfUE9JTlRTDEdMX1RSSUFOR0xFUw9HTF9UUklBTkdMRV9GQU4RR0xfVFJJQU5HTEVfU1RSSVASR0xfTElORVNfQURKQUNFTkNZF0dMX0xJTkVfU1RSSVBfQURKQUNFTkNZCkdMX1BBVENIRVMWR0xfVFJJQU5HTEVTX0FESkFDRU5DWRtHTF9UUklBTkdMRV9TVFJJUF9BREpBQ0VOQ1mEQwyERQiERwoaZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRFWFQEdHlwZQMQR0xfVU5TSUdORURfQllURRFHTF9VTlNJR05FRF9TSE9SVA9HTF9VTlNJR05FRF9JTlSESQSESwaETQiETwoaZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRFWFQHaW5kaWNlcwQBAAIZZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWROVgOEUQyEUwiEVQoZZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWROVgRtb2RlDAhHTF9MSU5FUwxHTF9MSU5FX0xPT1ANR0xfTElORV9TVFJJUAlHTF9QT0lOVFMMR0xfVFJJQU5HTEVTD0dMX1RSSUFOR0xFX0ZBThFHTF9UUklBTkdMRV9TVFJJUBJHTF9MSU5FU19BREpBQ0VOQ1kXR0xfTElORV9TVFJJUF9BREpBQ0VOQ1kKR0xfUEFUQ0hFUxZHTF9UUklBTkdMRVNfQURKQUNFTkNZG0dMX1RSSUFOR0xFX1NUUklQX0FESkFDRU5DWYRXDIRZCIRbChlnbERyYXdFbGVtZW50c0luc3RhbmNlZE5WBHR5cGUDEEdMX1VOU0lHTkVEX0JZVEURR0xfVU5TSUdORURfU0hPUlQPR0xfVU5TSUdORURfSU5UhF0EhF8GhGEIhGMKGWdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkTlYHaW5kaWNlcwQBAAITZ2xEcmF3UmFuZ2VFbGVtZW50cwOEZQyEZwiEaQoTZ2xEcmF3UmFuZ2VFbGVtZW50cwlkcmF3X21vZGUMCEdMX0xJTkVTDEdMX0xJTkVfTE9PUA1HTF9MSU5FX1NUUklQCUdMX1BPSU5UUwxHTF9UUklBTkdMRVMPR0xfVFJJQU5HTEVfRkFOEUdMX1RSSUFOR0xFX1NUUklQEkdMX0xJTkVTX0FESkFDRU5DWRdHTF9MSU5FX1NUUklQX0FESkFDRU5DWQpHTF9QQVRDSEVTFkdMX1RSSUFOR0xFU19BREpBQ0VOQ1kbR0xfVFJJQU5HTEVfU1RSSVBfQURKQUNFTkNZhGsMhG0IhG8KE2dsRHJhd1JhbmdlRWxlbWVudHMMaW5kaWNlc190eXBlAxBHTF9VTlNJR05FRF9CWVRFEUdMX1VOU0lHTkVEX1NIT1JUD0dMX1VOU0lHTkVEX0lOVIRxBIRzBoR1CIR3ChNnbERyYXdSYW5nZUVsZW1lbnRzB2luZGljZXMEAQACHWdsRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4A4R5DIR7CIR9Ch1nbERyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleAlkcmF3X21vZGUMCEdMX0xJTkVTDEdMX0xJTkVfTE9PUA1HTF9MSU5FX1NUUklQCUdMX1BPSU5UUwxHTF9UUklBTkdMRVMPR0xfVFJJQU5HTEVfRkFOEUdMX1RSSUFOR0xFX1NUUklQEkdMX0xJTkVTX0FESkFDRU5DWRdHTF9MSU5FX1NUUklQX0FESkFDRU5DWQpHTF9QQVRDSEVTFkdMX1RSSUFOR0xFU19BREpBQ0VOQ1kbR0xfVFJJQU5HTEVfU1RSSVBfQURKQUNFTkNZhH8MhIEIhIMKHWdsRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4DGluZGljZXNfdHlwZQMQR0xfVU5TSUdORURfQllURRFHTF9VTlNJR05FRF9TSE9SVA9HTF9VTlNJR05FRF9JTlSEhQSEhwaEiQiEiwodZ2xEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXgHaW5kaWNlcwQBAAIgZ2xEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXhFWFQDhI0MhI8IhJEKIGdsRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4RVhUBG1vZGUMCEdMX0xJTkVTDEdMX0xJTkVfTE9PUA1HTF9MSU5FX1NUUklQCUdMX1BPSU5UUwxHTF9UUklBTkdMRVMPR0xfVFJJQU5HTEVfRkFOEUdMX1RSSUFOR0xFX1NUUklQEkdMX0xJTkVTX0FESkFDRU5DWRdHTF9MSU5FX1NUUklQX0FESkFDRU5DWQpHTF9QQVRDSEVTFkdMX1RSSUFOR0xFU19BREpBQ0VOQ1kbR0xfVFJJQU5HTEVfU1RSSVBfQURKQUNFTkNZhJMMhJUIhJcKIGdsRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4RVhUBHR5cGUDEEdMX1VOU0lHTkVEX0JZVEURR0xfVU5TSUdORURfU0hPUlQPR0xfVU5TSUdORURfSU5UhJkEhJsGhJ0IhJ8KIGdsRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4RVhUB2luZGljZXMEAQACIGdsRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4T0VTA4ShDISjCISlCiBnbERyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleE9FUwRtb2RlDAhHTF9MSU5FUwxHTF9MSU5FX0xPT1ANR0xfTElORV9TVFJJUAlHTF9QT0lOVFMMR0xfVFJJQU5HTEVTD0dMX1RSSUFOR0xFX0ZBThFHTF9UUklBTkdMRV9TVFJJUBJHTF9MSU5FU19BREpBQ0VOQ1kXR0xfTElORV9TVFJJUF9BREpBQ0VOQ1kKR0xfUEFUQ0hFUxZHTF9UUklBTkdMRVNfQURKQUNFTkNZG0dMX1RSSUFOR0xFX1NUUklQX0FESkFDRU5DWYSnDISpCISrCiBnbERyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleE9FUwR0eXBlAxBHTF9VTlNJR05FRF9CWVRFEUdMX1VOU0lHTkVEX1NIT1JUD0dMX1VOU0lHTkVEX0lOVIStBISvBoSxCISzCiBnbERyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleE9FUwdpbmRpY2VzBAEAAghnbEVuYWJsZQGEtQyEtwiEuQoIZ2xFbmFibGUKY2FwYWJpbGl0eRAIR0xfQkxFTkQMR0xfQ1VMTF9GQUNFDUdMX0RFUFRIX1RFU1QJR0xfRElUSEVSFkdMX1BPTFlHT05fT0ZGU0VUX0ZJTEwbR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFEkdMX1NBTVBMRV9DT1ZFUkFHRQ9HTF9TQ0lTU09SX1RFU1QPR0xfU1RFTkNJTF9URVNUIEdMX1BSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYFUdMX1JBU1RFUklaRVJfRElTQ0FSRA5HTF9TQU1QTEVfTUFTSw9HTF9ERUJVR19PVVRQVVQbR0xfREVCVUdfT1VUUFVUX1NZTkNIUk9OT1VTEkdMX0FMUEhBX1RFU1RfUUNPTRdHTF9GUkFNRUJVRkZFUl9TUkdCX0VYVAIZZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheQACCWdsRW5hYmxlaQGEuwyEvQiEvwoJZ2xFbmFibGVpCmNhcGFiaWxpdHkQCEdMX0JMRU5EDEdMX0NVTExfRkFDRQ1HTF9ERVBUSF9URVNUCUdMX0RJVEhFUhZHTF9QT0xZR09OX09GRlNFVF9GSUxMG0dMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRRJHTF9TQU1QTEVfQ09WRVJBR0UPR0xfU0NJU1NPUl9URVNUD0dMX1NURU5DSUxfVEVTVCBHTF9QUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWBVHTF9SQVNURVJJWkVSX0RJU0NBUkQOR0xfU0FNUExFX01BU0sPR0xfREVCVUdfT1VUUFVUG0dMX0RFQlVHX09VVFBVVF9TWU5DSFJPTk9VUxJHTF9BTFBIQV9URVNUX1FDT00XR0xfRlJBTUVCVUZGRVJfU1JHQl9FWFQCDGdsRW5hYmxlaUVYVAGEwQyEwwiExQoMZ2xFbmFibGVpRVhUBnRhcmdldBAIR0xfQkxFTkQMR0xfQ1VMTF9GQUNFDUdMX0RFUFRIX1RFU1QJR0xfRElUSEVSFkdMX1BPTFlHT05fT0ZGU0VUX0ZJTEwbR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFEkdMX1NBTVBMRV9DT1ZFUkFHRQ9HTF9TQ0lTU09SX1RFU1QPR0xfU1RFTkNJTF9URVNUIEdMX1BSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYFUdMX1JBU1RFUklaRVJfRElTQ0FSRA5HTF9TQU1QTEVfTUFTSw9HTF9ERUJVR19PVVRQVVQbR0xfREVCVUdfT1VUUFVUX1NZTkNIUk9OT1VTEkdMX0FMUEhBX1RFU1RfUUNPTRdHTF9GUkFNRUJVRkZFUl9TUkdCX0VYVAILZ2xFbmFibGVpTlYBhMcMhMkIhMsKC2dsRW5hYmxlaU5WBnRhcmdldBAIR0xfQkxFTkQMR0xfQ1VMTF9GQUNFDUdMX0RFUFRIX1RFU1QJR0xfRElUSEVSFkdMX1BPTFlHT05fT0ZGU0VUX0ZJTEwbR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFEkdMX1NBTVBMRV9DT1ZFUkFHRQ9HTF9TQ0lTU09SX1RFU1QPR0xfU1RFTkNJTF9URVNUIEdMX1BSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYFUdMX1JBU1RFUklaRVJfRElTQ0FSRA5HTF9TQU1QTEVfTUFTSw9HTF9ERUJVR19PVVRQVVQbR0xfREVCVUdfT1VUUFVUX1NZTkNIUk9OT1VTEkdMX0FMUEhBX1RFU1RfUUNPTRdHTF9GUkFNRUJVRkZFUl9TUkdCX0VYVAIMZ2xFbmFibGVpT0VTAYTNDITPCITRCgxnbEVuYWJsZWlPRVMGdGFyZ2V0EAhHTF9CTEVORAxHTF9DVUxMX0ZBQ0UNR0xfREVQVEhfVEVTVAlHTF9ESVRIRVIWR0xfUE9MWUdPTl9PRkZTRVRfRklMTBtHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0USR0xfU0FNUExFX0NPVkVSQUdFD0dMX1NDSVNTT1JfVEVTVA9HTF9TVEVOQ0lMX1RFU1QgR0xfUFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgVR0xfUkFTVEVSSVpFUl9ESVNDQVJEDkdMX1NBTVBMRV9NQVNLD0dMX0RFQlVHX09VVFBVVBtHTF9ERUJVR19PVVRQVVRfU1lOQ0hST05PVVMSR0xfQUxQSEFfVEVTVF9RQ09NF0dMX0ZSQU1FQlVGRkVSX1NSR0JfRVhUAgpnbEVuZFF1ZXJ5AYTTDITVCITXCgpnbEVuZFF1ZXJ5BnRhcmdldAQVR0xfQU5ZX1NBTVBMRVNfUEFTU0VEIkdMX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkUoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1BSSU1JVElWRVNfV1JJVFRFThdHTF9QUklNSVRJVkVTX0dFTkVSQVRFRAILZ2xGZW5jZVN5bmMBhNkMhNsIhN0KC2dsRmVuY2VTeW5jCWNvbmRpdGlvbgEdR0xfU1lOQ19HUFVfQ09NTUFORFNfQ09NUExFVEUCEGdsRmVuY2VTeW5jQVBQTEUBhN8MhOEIhOMKEGdsRmVuY2VTeW5jQVBQTEUJY29uZGl0aW9uAR1HTF9TWU5DX0dQVV9DT01NQU5EU19DT01QTEVURQIYZ2xGbHVzaE1hcHBlZEJ1ZmZlclJhbmdlAYTlDITnCITpChhnbEZsdXNoTWFwcGVkQnVmZmVyUmFuZ2UGdGFyZ2V0DQ9HTF9BUlJBWV9CVUZGRVIXR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVITR0xfQ09QWV9SRUFEX0JVRkZFUhRHTF9DT1BZX1dSSVRFX0JVRkZFUhRHTF9QSVhFTF9QQUNLX0JVRkZFUhZHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSHEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIRR0xfVU5JRk9STV9CVUZGRVIYR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSG0dMX0RJU1BBVENIX0lORElSRUNUX0JVRkZFUhdHTF9EUkFXX0lORElSRUNUX0JVRkZFUhhHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVIRR0xfVEVYVFVSRV9CVUZGRVICG2dsRmx1c2hNYXBwZWRCdWZmZXJSYW5nZUVYVAGE6wyE7QiE7wobZ2xGbHVzaE1hcHBlZEJ1ZmZlclJhbmdlRVhUBnRhcmdldA0PR0xfQVJSQVlfQlVGRkVSF0dMX0VMRU1FTlRfQVJSQVlfQlVGRkVSE0dMX0NPUFlfUkVBRF9CVUZGRVIUR0xfQ09QWV9XUklURV9CVUZGRVIUR0xfUElYRUxfUEFDS19CVUZGRVIWR0xfUElYRUxfVU5QQUNLX0JVRkZFUhxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSEUdMX1VOSUZPUk1fQlVGRkVSGEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUhtHTF9ESVNQQVRDSF9JTkRJUkVDVF9CVUZGRVIXR0xfRFJBV19JTkRJUkVDVF9CVUZGRVIYR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSEUdMX1RFWFRVUkVfQlVGRkVSAhdnbEZyYW1lYnVmZmVyUGFyYW1ldGVyaQKE8QyE8wiE9QoXZ2xGcmFtZWJ1ZmZlclBhcmFtZXRlcmkGdGFyZ2V0Aw5HTF9GUkFNRUJVRkZFUhNHTF9EUkFXX0ZSQU1FQlVGRkVSE0dMX1JFQURfRlJBTUVCVUZGRVKE9wyE+QiE+woXZ2xGcmFtZWJ1ZmZlclBhcmFtZXRlcmkFcG5hbWUFLUdMX0ZSQU1FQlVGRkVSX0RFRkFVTFRfRklYRURfU0FNUExFX0xPQ0FUSU9OUx1HTF9GUkFNRUJVRkZFUl9ERUZBVUxUX0hFSUdIVB5HTF9GUkFNRUJVRkZFUl9ERUZBVUxUX1NBTVBMRVMcR0xfRlJBTUVCVUZGRVJfREVGQVVMVF9XSURUSB1HTF9GUkFNRUJVRkZFUl9ERUZBVUxUX0xBWUVSUwIZZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcgOE/QyE/wiFAQoZZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlchJmcmFtZWJ1ZmZlcl90YXJnZXQDDkdMX0ZSQU1FQlVGRkVSE0dMX0RSQVdfRlJBTUVCVUZGRVITR0xfUkVBRF9GUkFNRUJVRkZFUoUDDIUFCIUHChlnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyFmZyYW1lYnVmZmVyX2F0dGFjaG1lbnQTE0dMX0RFUFRIX0FUVEFDSE1FTlQVR0xfU1RFTkNJTF9BVFRBQ0hNRU5UFEdMX0NPTE9SX0FUVEFDSE1FTlQwFEdMX0NPTE9SX0FUVEFDSE1FTlQxFUdMX0NPTE9SX0FUVEFDSE1FTlQxMBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTEVR0xfQ09MT1JfQVRUQUNITUVOVDEyFUdMX0NPTE9SX0FUVEFDSE1FTlQxMxVHTF9DT0xPUl9BVFRBQ0hNRU5UMTQVR0xfQ09MT1JfQVRUQUNITUVOVDE1FEdMX0NPTE9SX0FUVEFDSE1FTlQyFEdMX0NPTE9SX0FUVEFDSE1FTlQzFEdMX0NPTE9SX0FUVEFDSE1FTlQ0FEdMX0NPTE9SX0FUVEFDSE1FTlQ1FEdMX0NPTE9SX0FUVEFDSE1FTlQ2FEdMX0NPTE9SX0FUVEFDSE1FTlQ3FEdMX0NPTE9SX0FUVEFDSE1FTlQ4FEdMX0NPTE9SX0FUVEFDSE1FTlQ5G0dMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVIUJDIULCIUNChlnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyE3JlbmRlcmJ1ZmZlcl90YXJnZXQBD0dMX1JFTkRFUkJVRkZFUgIUZ2xGcmFtZWJ1ZmZlclRleHR1cmUChQ8MhREIhRMKFGdsRnJhbWVidWZmZXJUZXh0dXJlBnRhcmdldAMOR0xfRlJBTUVCVUZGRVITR0xfRFJBV19GUkFNRUJVRkZFUhNHTF9SRUFEX0ZSQU1FQlVGRkVShRUMhRcIhRkKFGdsRnJhbWVidWZmZXJUZXh0dXJlCmF0dGFjaG1lbnQTE0dMX0RFUFRIX0FUVEFDSE1FTlQVR0xfU1RFTkNJTF9BVFRBQ0hNRU5UFEdMX0NPTE9SX0FUVEFDSE1FTlQwFEdMX0NPTE9SX0FUVEFDSE1FTlQxFUdMX0NPTE9SX0FUVEFDSE1FTlQxMBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTEVR0xfQ09MT1JfQVRUQUNITUVOVDEyFUdMX0NPTE9SX0FUVEFDSE1FTlQxMxVHTF9DT0xPUl9BVFRBQ0hNRU5UMTQVR0xfQ09MT1JfQVRUQUNITUVOVDE1FEdMX0NPTE9SX0FUVEFDSE1FTlQyFEdMX0NPTE9SX0FUVEFDSE1FTlQzFEdMX0NPTE9SX0FUVEFDSE1FTlQ0FEdMX0NPTE9SX0FUVEFDSE1FTlQ1FEdMX0NPTE9SX0FUVEFDSE1FTlQ2FEdMX0NPTE9SX0FUVEFDSE1FTlQ3FEdMX0NPTE9SX0FUVEFDSE1FTlQ4FEdMX0NPTE9SX0FUVEFDSE1FTlQ5G0dMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVAIWZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRAOFGwyFHQiFHwoWZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRBJmcmFtZWJ1ZmZlcl90YXJnZXQDDkdMX0ZSQU1FQlVGRkVSE0dMX0RSQVdfRlJBTUVCVUZGRVITR0xfUkVBRF9GUkFNRUJVRkZFUoUhDIUjCIUlChZnbEZyYW1lYnVmZmVyVGV4dHVyZTJEFmZyYW1lYnVmZmVyX2F0dGFjaG1lbnQTE0dMX0RFUFRIX0FUVEFDSE1FTlQVR0xfU1RFTkNJTF9BVFRBQ0hNRU5UFEdMX0NPTE9SX0FUVEFDSE1FTlQwFEdMX0NPTE9SX0FUVEFDSE1FTlQxFUdMX0NPTE9SX0FUVEFDSE1FTlQxMBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTEVR0xfQ09MT1JfQVRUQUNITUVOVDEyFUdMX0NPTE9SX0FUVEFDSE1FTlQxMxVHTF9DT0xPUl9BVFRBQ0hNRU5UMTQVR0xfQ09MT1JfQVRUQUNITUVOVDE1FEdMX0NPTE9SX0FUVEFDSE1FTlQyFEdMX0NPTE9SX0FUVEFDSE1FTlQzFEdMX0NPTE9SX0FUVEFDSE1FTlQ0FEdMX0NPTE9SX0FUVEFDSE1FTlQ1FEdMX0NPTE9SX0FUVEFDSE1FTlQ2FEdMX0NPTE9SX0FUVEFDSE1FTlQ3FEdMX0NPTE9SX0FUVEFDSE1FTlQ4FEdMX0NPTE9SX0FUVEFDSE1FTlQ5G0dMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVIUnDIUpCIUrChZnbEZyYW1lYnVmZmVyVGV4dHVyZTJEDnRleHR1cmVfdGFyZ2V0CA1HTF9URVhUVVJFXzJEHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWB5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1keR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWB5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1keR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUCGWdsRnJhbWVidWZmZXJUZXh0dXJlMkRPRVMDhS0MhS8IhTEKGWdsRnJhbWVidWZmZXJUZXh0dXJlMkRPRVMGdGFyZ2V0Aw5HTF9GUkFNRUJVRkZFUhNHTF9EUkFXX0ZSQU1FQlVGRkVSE0dMX1JFQURfRlJBTUVCVUZGRVKFMwyFNQiFNwoZZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRE9FUwphdHRhY2htZW50ExNHTF9ERVBUSF9BVFRBQ0hNRU5UFUdMX1NURU5DSUxfQVRUQUNITUVOVBRHTF9DT0xPUl9BVFRBQ0hNRU5UMBRHTF9DT0xPUl9BVFRBQ0hNRU5UMRVHTF9DT0xPUl9BVFRBQ0hNRU5UMTAVR0xfQ09MT1JfQVRUQUNITUVOVDExFUdMX0NPTE9SX0FUVEFDSE1FTlQxMhVHTF9DT0xPUl9BVFRBQ0hNRU5UMTMVR0xfQ09MT1JfQVRUQUNITUVOVDE0FUdMX0NPTE9SX0FUVEFDSE1FTlQxNRRHTF9DT0xPUl9BVFRBQ0hNRU5UMhRHTF9DT0xPUl9BVFRBQ0hNRU5UMxRHTF9DT0xPUl9BVFRBQ0hNRU5UNBRHTF9DT0xPUl9BVFRBQ0hNRU5UNRRHTF9DT0xPUl9BVFRBQ0hNRU5UNhRHTF9DT0xPUl9BVFRBQ0hNRU5UNxRHTF9DT0xPUl9BVFRBQ0hNRU5UOBRHTF9DT0xPUl9BVFRBQ0hNRU5UORtHTF9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlSFOQyFOwiFPQoZZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRE9FUwl0ZXh0YXJnZXQIDUdMX1RFWFRVUkVfMkQeR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWR5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1oeR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWR5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1oZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRQIXZ2xGcmFtZWJ1ZmZlclRleHR1cmVFWFQChT8MhUEIhUMKF2dsRnJhbWVidWZmZXJUZXh0dXJlRVhUBnRhcmdldAMOR0xfRlJBTUVCVUZGRVITR0xfRFJBV19GUkFNRUJVRkZFUhNHTF9SRUFEX0ZSQU1FQlVGRkVShUUMhUcIhUkKF2dsRnJhbWVidWZmZXJUZXh0dXJlRVhUCmF0dGFjaG1lbnQTE0dMX0RFUFRIX0FUVEFDSE1FTlQVR0xfU1RFTkNJTF9BVFRBQ0hNRU5UFEdMX0NPTE9SX0FUVEFDSE1FTlQwFEdMX0NPTE9SX0FUVEFDSE1FTlQxFUdMX0NPTE9SX0FUVEFDSE1FTlQxMBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTEVR0xfQ09MT1JfQVRUQUNITUVOVDEyFUdMX0NPTE9SX0FUVEFDSE1FTlQxMxVHTF9DT0xPUl9BVFRBQ0hNRU5UMTQVR0xfQ09MT1JfQVRUQUNITUVOVDE1FEdMX0NPTE9SX0FUVEFDSE1FTlQyFEdMX0NPTE9SX0FUVEFDSE1FTlQzFEdMX0NPTE9SX0FUVEFDSE1FTlQ0FEdMX0NPTE9SX0FUVEFDSE1FTlQ1FEdMX0NPTE9SX0FUVEFDSE1FTlQ2FEdMX0NPTE9SX0FUVEFDSE1FTlQ3FEdMX0NPTE9SX0FUVEFDSE1FTlQ4FEdMX0NPTE9SX0FUVEFDSE1FTlQ5G0dMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVAIZZ2xGcmFtZWJ1ZmZlclRleHR1cmVMYXllcgKFSwyFTQiFTwoZZ2xGcmFtZWJ1ZmZlclRleHR1cmVMYXllcgZ0YXJnZXQDDkdMX0ZSQU1FQlVGRkVSE0dMX0RSQVdfRlJBTUVCVUZGRVITR0xfUkVBRF9GUkFNRUJVRkZFUoVRDIVTCIVVChlnbEZyYW1lYnVmZmVyVGV4dHVyZUxheWVyCmF0dGFjaG1lbnQTE0dMX0RFUFRIX0FUVEFDSE1FTlQVR0xfU1RFTkNJTF9BVFRBQ0hNRU5UFEdMX0NPTE9SX0FUVEFDSE1FTlQwFEdMX0NPTE9SX0FUVEFDSE1FTlQxFUdMX0NPTE9SX0FUVEFDSE1FTlQxMBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTEVR0xfQ09MT1JfQVRUQUNITUVOVDEyFUdMX0NPTE9SX0FUVEFDSE1FTlQxMxVHTF9DT0xPUl9BVFRBQ0hNRU5UMTQVR0xfQ09MT1JfQVRUQUNITUVOVDE1FEdMX0NPTE9SX0FUVEFDSE1FTlQyFEdMX0NPTE9SX0FUVEFDSE1FTlQzFEdMX0NPTE9SX0FUVEFDSE1FTlQ0FEdMX0NPTE9SX0FUVEFDSE1FTlQ1FEdMX0NPTE9SX0FUVEFDSE1FTlQ2FEdMX0NPTE9SX0FUVEFDSE1FTlQ3FEdMX0NPTE9SX0FUVEFDSE1FTlQ4FEdMX0NPTE9SX0FUVEFDSE1FTlQ5G0dMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVAIXZ2xGcmFtZWJ1ZmZlclRleHR1cmVPRVMChVcMhVkIhVsKF2dsRnJhbWVidWZmZXJUZXh0dXJlT0VTBnRhcmdldAMOR0xfRlJBTUVCVUZGRVITR0xfRFJBV19GUkFNRUJVRkZFUhNHTF9SRUFEX0ZSQU1FQlVGRkVShV0MhV8IhWEKF2dsRnJhbWVidWZmZXJUZXh0dXJlT0VTCmF0dGFjaG1lbnQTE0dMX0RFUFRIX0FUVEFDSE1FTlQVR0xfU1RFTkNJTF9BVFRBQ0hNRU5UFEdMX0NPTE9SX0FUVEFDSE1FTlQwFEdMX0NPTE9SX0FUVEFDSE1FTlQxFUdMX0NPTE9SX0FUVEFDSE1FTlQxMBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTEVR0xfQ09MT1JfQVRUQUNITUVOVDEyFUdMX0NPTE9SX0FUVEFDSE1FTlQxMxVHTF9DT0xPUl9BVFRBQ0hNRU5UMTQVR0xfQ09MT1JfQVRUQUNITUVOVDE1FEdMX0NPTE9SX0FUVEFDSE1FTlQyFEdMX0NPTE9SX0FUVEFDSE1FTlQzFEdMX0NPTE9SX0FUVEFDSE1FTlQ0FEdMX0NPTE9SX0FUVEFDSE1FTlQ1FEdMX0NPTE9SX0FUVEFDSE1FTlQ2FEdMX0NPTE9SX0FUVEFDSE1FTlQ3FEdMX0NPTE9SX0FUVEFDSE1FTlQ4FEdMX0NPTE9SX0FUVEFDSE1FTlQ5G0dMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVAILZ2xGcm9udEZhY2UBhWMMhWUIhWcKC2dsRnJvbnRGYWNlC29yaWVudGF0aW9uAgZHTF9DQ1cFR0xfQ1cCFWdsR2VuUHJvZ3JhbVBpcGVsaW5lcwGFaQSFawaFbQiFbwoVZ2xHZW5Qcm9ncmFtUGlwZWxpbmVzCXBpcGVsaW5lcwQBAgIQZ2xHZW5lcmF0ZU1pcG1hcAGFcQyFcwiFdQoQZ2xHZW5lcmF0ZU1pcG1hcAZ0YXJnZXQFDUdMX1RFWFRVUkVfMkQTR0xfVEVYVFVSRV9DVUJFX01BUBNHTF9URVhUVVJFXzJEX0FSUkFZDUdMX1RFWFRVUkVfM0QZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWQIRZ2xHZXRBY3RpdmVBdHRyaWIBhXcEhXkGhXsIhX0KEWdsR2V0QWN0aXZlQXR0cmliBG5hbWUEAQICEmdsR2V0QWN0aXZlVW5pZm9ybQGFfwSFgQaFgwiFhQoSZ2xHZXRBY3RpdmVVbmlmb3JtBG5hbWUEAQICG2dsR2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZQGFhwSFiQaFiwiFjQobZ2xHZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lBG5hbWUEAQICGWdsR2V0QWN0aXZlVW5pZm9ybUJsb2NraXYBhY8MhZEIhZMKGWdsR2V0QWN0aXZlVW5pZm9ybUJsb2NraXYOcGFyYW1ldGVyX25hbWUHIEdMX1VOSUZPUk1fQkxPQ0tfQUNUSVZFX1VOSUZPUk1TJ0dMX1VOSUZPUk1fQkxPQ0tfQUNUSVZFX1VOSUZPUk1fSU5ESUNFUxhHTF9VTklGT1JNX0JMT0NLX0JJTkRJTkcaR0xfVU5JRk9STV9CTE9DS19EQVRBX1NJWkUcR0xfVU5JRk9STV9CTE9DS19OQU1FX0xFTkdUSC5HTF9VTklGT1JNX0JMT0NLX1JFRkVSRU5DRURfQllfRlJBR01FTlRfU0hBREVSLEdMX1VOSUZPUk1fQkxPQ0tfUkVGRVJFTkNFRF9CWV9WRVJURVhfU0hBREVSAhVnbEdldEFjdGl2ZVVuaWZvcm1zaXYDhZUEhZcGhZkIhZsKFWdsR2V0QWN0aXZlVW5pZm9ybXNpdg91bmlmb3JtX2luZGljZXMEAQCFnQyFnwiFoQoVZ2xHZXRBY3RpdmVVbmlmb3Jtc2l2DnBhcmFtZXRlcl9uYW1lCBdHTF9VTklGT1JNX0FSUkFZX1NUUklERRZHTF9VTklGT1JNX0JMT0NLX0lOREVYF0dMX1VOSUZPUk1fSVNfUk9XX01BSk9SGEdMX1VOSUZPUk1fTUFUUklYX1NUUklERRZHTF9VTklGT1JNX05BTUVfTEVOR1RIEUdMX1VOSUZPUk1fT0ZGU0VUD0dMX1VOSUZPUk1fU0laRQ9HTF9VTklGT1JNX1RZUEWFowSFpQaFpwiFqQoVZ2xHZXRBY3RpdmVVbmlmb3Jtc2l2CnBhcmFtZXRlcnMEAQICD2dsR2V0Qm9vbGVhbmlfdgKFqwyFrQiFrwoPZ2xHZXRCb29sZWFuaV92BXBhcmFtgSoRR0xfQUNUSVZFX1RFWFRVUkUbR0xfQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFG0dMX0FMSUFTRURfUE9JTlRfU0laRV9SQU5HRQ1HTF9BTFBIQV9CSVRTF0dMX0FSUkFZX0JVRkZFUl9CSU5ESU5HIEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9CSU5ESU5HHUdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TSVpFHkdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TVEFSVAhHTF9CTEVORA5HTF9CTEVORF9DT0xPUhJHTF9CTEVORF9EU1RfQUxQSEEQR0xfQkxFTkRfRFNUX1JHQhdHTF9CTEVORF9FUVVBVElPTl9BTFBIQRVHTF9CTEVORF9FUVVBVElPTl9SR0ISR0xfQkxFTkRfU1JDX0FMUEhBEEdMX0JMRU5EX1NSQ19SR0IMR0xfQkxVRV9CSVRTFEdMX0NPTE9SX0NMRUFSX1ZBTFVFEkdMX0NPTE9SX1dSSVRFTUFTSx1HTF9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUxBHTF9DT05URVhUX0ZMQUdTGEdMX0NPTlRFWFRfUk9CVVNUX0FDQ0VTUxtHTF9DT1BZX1JFQURfQlVGRkVSX0JJTkRJTkccR0xfQ09QWV9XUklURV9CVUZGRVJfQklORElORwxHTF9DVUxMX0ZBQ0URR0xfQ1VMTF9GQUNFX01PREUSR0xfQ1VSUkVOVF9QUk9HUkFNGkdMX0RFQlVHX0dST1VQX1NUQUNLX0RFUFRIGEdMX0RFQlVHX0xPR0dFRF9NRVNTQUdFUyNHTF9ERUJVR19ORVhUX0xPR0dFRF9NRVNTQUdFX0xFTkdUSA1HTF9ERVBUSF9CSVRTFEdMX0RFUFRIX0NMRUFSX1ZBTFVFDUdMX0RFUFRIX0ZVTkMOR0xfREVQVEhfUkFOR0UNR0xfREVQVEhfVEVTVBJHTF9ERVBUSF9XUklURU1BU0sjR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSX0JJTkRJTkcJR0xfRElUSEVSDkdMX0RSQVdfQlVGRkVSD0dMX0RSQVdfQlVGRkVSMA9HTF9EUkFXX0JVRkZFUjEPR0xfRFJBV19CVUZGRVIyD0dMX0RSQVdfQlVGRkVSMw9HTF9EUkFXX0JVRkZFUjQPR0xfRFJBV19CVUZGRVI1D0dMX0RSQVdfQlVGRkVSNg9HTF9EUkFXX0JVRkZFUjcPR0xfRFJBV19CVUZGRVI4D0dMX0RSQVdfQlVGRkVSORBHTF9EUkFXX0JVRkZFUjEwEEdMX0RSQVdfQlVGRkVSMTEQR0xfRFJBV19CVUZGRVIxMhBHTF9EUkFXX0JVRkZFUjEzEEdMX0RSQVdfQlVGRkVSMTQQR0xfRFJBV19CVUZGRVIxNRtHTF9EUkFXX0ZSQU1FQlVGRkVSX0JJTkRJTkcfR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORyVHTF9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVF9CSVRTIkdMX0ZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlQNR0xfRlJPTlRfRkFDRRdHTF9HRU5FUkFURV9NSVBNQVBfSElOVA1HTF9HUkVFTl9CSVRTFUdMX0lNQUdFX0JJTkRJTkdfTkFNRRZHTF9JTUFHRV9CSU5ESU5HX0xFVkVMGEdMX0lNQUdFX0JJTkRJTkdfTEFZRVJFRBZHTF9JTUFHRV9CSU5ESU5HX0xBWUVSF0dMX0lNQUdFX0JJTkRJTkdfQUNDRVNTF0dMX0lNQUdFX0JJTkRJTkdfRk9STUFUI0dMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfRk9STUFUIUdMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfVFlQRRlHTF9MQVlFUl9QUk9WT0tJTkdfVkVSVEVYDUdMX0xJTkVfV0lEVEgqR0xfUFJJTUlUSVZFX1JFU1RBUlRfRk9SX1BBVENIRVNfU1VQUE9SVEVEEEdMX01BSk9SX1ZFUlNJT04WR0xfTUFYXzNEX1RFWFRVUkVfU0laRRtHTF9NQVhfQVJSQVlfVEVYVFVSRV9MQVlFUlMlR0xfTUFYX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9CSU5ESU5HUyFHTF9NQVhfQVRPTUlDX0NPVU5URVJfQlVGRkVSX1NJWkUmR0xfTUFYX0NPTUJJTkVEX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMYR0xfTUFYX0NPTE9SX0FUVEFDSE1FTlRTHEdMX01BWF9DT0xPUl9URVhUVVJFX1NBTVBMRVMcR0xfTUFYX0RFUFRIX1RFWFRVUkVfU0FNUExFUx9HTF9NQVhfQ09NQklORURfQVRPTUlDX0NPVU5URVJTEkdMX01BWF9JTUFHRV9VTklUUypHTF9NQVhfQ09NQklORURfQ09NUFVURV9VTklGT1JNX0NPTVBPTkVOVFMrR0xfTUFYX0NPTUJJTkVEX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UUytHTF9NQVhfQ09NQklORURfR0VPTUVUUllfVU5JRk9STV9DT01QT05FTlRTJUdMX01BWF9DT01CSU5FRF9TSEFERVJfU1RPUkFHRV9CTE9DS1MvR0xfTUFYX0NPTUJJTkVEX1RFU1NfQ09OVFJPTF9VTklGT1JNX0NPTVBPTkVOVFMyR0xfTUFYX0NPTUJJTkVEX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0NPTVBPTkVOVFMjR0xfTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMnR0xfTUFYX0NPTUJJTkVEX1NIQURFUl9PVVRQVVRfUkVTT1VSQ0VTHkdMX01BWF9DT01CSU5FRF9VTklGT1JNX0JMT0NLUylHTF9NQVhfQ09NQklORURfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUyVHTF9NQVhfQ09NUFVURV9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTHkdMX01BWF9DT01QVVRFX0FUT01JQ19DT1VOVEVSUx1HTF9NQVhfQ09NUFVURV9JTUFHRV9VTklGT1JNUx5HTF9NQVhfQ09NQklORURfSU1BR0VfVU5JRk9STVMkR0xfTUFYX0NPTVBVVEVfU0hBREVSX1NUT1JBR0VfQkxPQ0tTIkdMX01BWF9DT01QVVRFX1RFWFRVUkVfSU1BR0VfVU5JVFMhR0xfTUFYX0NPTVBVVEVfU0hBUkVEX01FTU9SWV9TSVpFHUdMX01BWF9DT01QVVRFX1VOSUZPUk1fQkxPQ0tTIUdMX01BWF9DT01QVVRFX1VOSUZPUk1fQ09NUE9ORU5UUx9HTF9NQVhfQ09NUFVURV9XT1JLX0dST1VQX0NPVU5UJUdMX01BWF9DT01QVVRFX1dPUktfR1JPVVBfSU5WT0NBVElPTlMeR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9TSVpFHEdMX01BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUeR0xfTUFYX0RFQlVHX0dST1VQX1NUQUNLX0RFUFRIHEdMX01BWF9ERUJVR19MT0dHRURfTUVTU0FHRVMbR0xfTUFYX0RFQlVHX01FU1NBR0VfTEVOR1RIE0dMX01BWF9EUkFXX0JVRkZFUlMUR0xfTUFYX0VMRU1FTlRfSU5ERVgXR0xfTUFYX0VMRU1FTlRTX0lORElDRVMYR0xfTUFYX0VMRU1FTlRTX1ZFUlRJQ0VTJkdMX01BWF9GUkFHTUVOVF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTH0dMX01BWF9GUkFHTUVOVF9BVE9NSUNfQ09VTlRFUlMeR0xfTUFYX0ZSQUdNRU5UX0lNQUdFX1VOSUZPUk1TIEdMX01BWF9GUkFHTUVOVF9JTlBVVF9DT01QT05FTlRTJEdMX01BWF9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVCVHTF9NQVhfRlJBR01FTlRfU0hBREVSX1NUT1JBR0VfQkxPQ0tTJEdMX01JTl9QUk9HUkFNX1RFWFRVUkVfR0FUSEVSX09GRlNFVCRHTF9NQVhfUFJPR1JBTV9URVhUVVJFX0dBVEhFUl9PRkZTRVQeR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQkxPQ0tTIkdMX01BWF9GUkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFMfR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUxlHTF9NQVhfRlJBTUVCVUZGRVJfSEVJR0hUGUdMX01BWF9GUkFNRUJVRkZFUl9MQVlFUlMaR0xfTUFYX0ZSQU1FQlVGRkVSX1NBTVBMRVMYR0xfTUFYX0ZSQU1FQlVGRkVSX1dJRFRIJkdMX01BWF9HRU9NRVRSWV9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTH0dMX01BWF9HRU9NRVRSWV9BVE9NSUNfQ09VTlRFUlMeR0xfTUFYX0dFT01FVFJZX0lNQUdFX1VOSUZPUk1TIEdMX01BWF9HRU9NRVRSWV9JTlBVVF9DT01QT05FTlRTIUdMX01BWF9HRU9NRVRSWV9PVVRQVVRfQ09NUE9ORU5UUx9HTF9NQVhfR0VPTUVUUllfT1VUUFVUX1ZFUlRJQ0VTIkdMX01BWF9HRU9NRVRSWV9TSEFERVJfSU5WT0NBVElPTlMlR0xfTUFYX0dFT01FVFJZX1NIQURFUl9TVE9SQUdFX0JMT0NLUyNHTF9NQVhfR0VPTUVUUllfVEVYVFVSRV9JTUFHRV9VTklUUydHTF9NQVhfR0VPTUVUUllfVE9UQUxfT1VUUFVUX0NPTVBPTkVOVFMeR0xfTUFYX0dFT01FVFJZX1VOSUZPUk1fQkxPQ0tTIkdMX01BWF9HRU9NRVRSWV9VTklGT1JNX0NPTVBPTkVOVFMWR0xfTUFYX0lOVEVHRVJfU0FNUExFUxNHTF9NQVhfTEFCRUxfTEVOR1RIG0dMX01BWF9QUk9HUkFNX1RFWEVMX09GRlNFVBhHTF9NQVhfUkVOREVSQlVGRkVSX1NJWkUYR0xfTUFYX1NBTVBMRV9NQVNLX1dPUkRTDkdMX01BWF9TQU1QTEVTGkdMX01BWF9TRVJWRVJfV0FJVF9USU1FT1VUIEdMX01BWF9TSEFERVJfU1RPUkFHRV9CTE9DS19TSVpFJUdMX01BWF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfQklORElOR1MqR0xfTUFYX1RFU1NfQ09OVFJPTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTI0dMX01BWF9URVNTX0NPTlRST0xfQVRPTUlDX0NPVU5URVJTIkdMX01BWF9URVNTX0NPTlRST0xfSU1BR0VfVU5JRk9STVMkR0xfTUFYX1RFU1NfQ09OVFJPTF9JTlBVVF9DT01QT05FTlRTJUdMX01BWF9URVNTX0NPTlRST0xfT1VUUFVUX0NPTVBPTkVOVFMpR0xfTUFYX1RFU1NfQ09OVFJPTF9TSEFERVJfU1RPUkFHRV9CTE9DS1MnR0xfTUFYX1RFU1NfQ09OVFJPTF9URVhUVVJFX0lNQUdFX1VOSVRTK0dMX01BWF9URVNTX0NPTlRST0xfVE9UQUxfT1VUUFVUX0NPTVBPTkVOVFMiR0xfTUFYX1RFU1NfQ09OVFJPTF9VTklGT1JNX0JMT0NLUyZHTF9NQVhfVEVTU19DT05UUk9MX1VOSUZPUk1fQ09NUE9ORU5UUy1HTF9NQVhfVEVTU19FVkFMVUFUSU9OX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMmR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9BVE9NSUNfQ09VTlRFUlMlR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9JTUFHRV9VTklGT1JNUydHTF9NQVhfVEVTU19FVkFMVUFUSU9OX0lOUFVUX0NPTVBPTkVOVFMoR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9PVVRQVVRfQ09NUE9ORU5UUyxHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1NIQURFUl9TVE9SQUdFX0JMT0NLUypHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1RFWFRVUkVfSU1BR0VfVU5JVFMlR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0JMT0NLUylHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1VOSUZPUk1fQ09NUE9ORU5UUxVHTF9NQVhfVEVTU19HRU5fTEVWRUwVR0xfTUFYX1BBVENIX1ZFUlRJQ0VTHEdMX01BWF9URVNTX1BBVENIX0NPTVBPTkVOVFMaR0xfTUFYX1RFWFRVUkVfQlVGRkVSX1NJWkUaR0xfTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMXR0xfTUFYX1RFWFRVUkVfTE9EX0JJQVMTR0xfTUFYX1RFWFRVUkVfU0laRTBHTF9NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX0lOVEVSTEVBVkVEX0NPTVBPTkVOVFMqR0xfTUFYX1RSQU5TRk9STV9GRUVEQkFDS19TRVBBUkFURV9BVFRSSUJTLUdMX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQ09NUE9ORU5UUxlHTF9NQVhfVU5JRk9STV9CTE9DS19TSVpFHkdMX01BWF9VTklGT1JNX0JVRkZFUl9CSU5ESU5HUxhHTF9NQVhfVU5JRk9STV9MT0NBVElPTlMZR0xfTUFYX1ZBUllJTkdfQ09NUE9ORU5UUxZHTF9NQVhfVkFSWUlOR19WRUNUT1JTHUdMX01BWF9WRVJURVhfQVRPTUlDX0NPVU5URVJTJEdMX01BWF9WRVJURVhfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx1HTF9NQVhfVkVSVEVYX0FUVFJJQl9CSU5ESU5HUxtHTF9NQVhfVkVSVEVYX0FUVFJJQl9TVFJJREUkR0xfTUFYX1ZFUlRFWF9BVFRSSUJfUkVMQVRJVkVfT0ZGU0VUFUdMX01BWF9WRVJURVhfQVRUUklCUxxHTF9NQVhfVkVSVEVYX0lNQUdFX1VOSUZPUk1TH0dMX01BWF9WRVJURVhfT1VUUFVUX0NPTVBPTkVOVFMjR0xfTUFYX1ZFUlRFWF9TSEFERVJfU1RPUkFHRV9CTE9DS1MhR0xfTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTHEdMX01BWF9WRVJURVhfVU5JRk9STV9CTE9DS1MgR0xfTUFYX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFMdR0xfTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMUR0xfTUFYX1ZJRVdQT1JUX0RJTVMkR0xfTUlOX0ZSQUdNRU5UX0lOVEVSUE9MQVRJT05fT0ZGU0VUG0dMX01JTl9QUk9HUkFNX1RFWEVMX09GRlNFVBtHTF9NSU5fU0FNUExFX1NIQURJTkdfVkFMVUUQR0xfTUlOT1JfVkVSU0lPTh9HTF9NVUxUSVNBTVBMRV9MSU5FX1dJRFRIX1JBTkdFJUdMX01VTFRJU0FNUExFX0xJTkVfV0lEVEhfR1JBTlVMQVJJVFkhR0xfTlVNX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTEUdMX05VTV9FWFRFTlNJT05THUdMX05VTV9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTHEdMX05VTV9TSEFERVJfQklOQVJZX0ZPUk1BVFMRR0xfUEFDS19BTElHTk1FTlQUR0xfUEFDS19JTUFHRV9IRUlHSFQSR0xfUEFDS19ST1dfTEVOR1RIE0dMX1BBQ0tfU0tJUF9JTUFHRVMTR0xfUEFDS19TS0lQX1BJWEVMUxFHTF9QQUNLX1NLSVBfUk9XUxFHTF9QQVRDSF9WRVJUSUNFUxxHTF9QSVhFTF9QQUNLX0JVRkZFUl9CSU5ESU5HHkdMX1BJWEVMX1VOUEFDS19CVUZGRVJfQklORElORxhHTF9QT0xZR09OX09GRlNFVF9GQUNUT1IWR0xfUE9MWUdPTl9PRkZTRVRfRklMTBdHTF9QT0xZR09OX09GRlNFVF9VTklUUxlHTF9QUklNSVRJVkVfQk9VTkRJTkdfQk9YIEdMX1BSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYGUdMX1BST0dSQU1fQklOQVJZX0ZPUk1BVFMbR0xfUFJPR1JBTV9QSVBFTElORV9CSU5ESU5HFUdMX1JBU1RFUklaRVJfRElTQ0FSRA5HTF9SRUFEX0JVRkZFUhtHTF9SRUFEX0ZSQU1FQlVGRkVSX0JJTkRJTkcLR0xfUkVEX0JJVFMXR0xfUkVOREVSQlVGRkVSX0JJTkRJTkceR0xfUkVTRVRfTk9USUZJQ0FUSU9OX1NUUkFURUdZG0dMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRRFHTF9TQU1QTEVfQlVGRkVSUxJHTF9TQU1QTEVfQ09WRVJBR0UZR0xfU0FNUExFX0NPVkVSQUdFX0lOVkVSVBhHTF9TQU1QTEVfQ09WRVJBR0VfVkFMVUURR0xfU0FNUExFX1NIQURJTkcSR0xfU0FNUExFUl9CSU5ESU5HCkdMX1NBTVBMRVMOR0xfU0NJU1NPUl9CT1gPR0xfU0NJU1NPUl9URVNUGEdMX1NIQURFUl9CSU5BUllfRk9STUFUUxJHTF9TSEFERVJfQ09NUElMRVIgR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX0JJTkRJTkcpR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX09GRlNFVF9BTElHTk1FTlQdR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX1NJWkUeR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX1NUQVJUFEdMX1NURU5DSUxfQkFDS19GQUlMFEdMX1NURU5DSUxfQkFDS19GVU5DH0dMX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZBSUwfR0xfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTUxNHTF9TVEVOQ0lMX0JBQ0tfUkVGGkdMX1NURU5DSUxfQkFDS19WQUxVRV9NQVNLGUdMX1NURU5DSUxfQkFDS19XUklURU1BU0sPR0xfU1RFTkNJTF9CSVRTFkdMX1NURU5DSUxfQ0xFQVJfVkFMVUUPR0xfU1RFTkNJTF9GQUlMD0dMX1NURU5DSUxfRlVOQxpHTF9TVEVOQ0lMX1BBU1NfREVQVEhfRkFJTBpHTF9TVEVOQ0lMX1BBU1NfREVQVEhfUEFTUw5HTF9TVEVOQ0lMX1JFRg9HTF9TVEVOQ0lMX1RFU1QVR0xfU1RFTkNJTF9WQUxVRV9NQVNLFEdMX1NURU5DSUxfV1JJVEVNQVNLEEdMX1NVQlBJWEVMX0JJVFMVR0xfVEVYVFVSRV9CSU5ESU5HXzJEH0dMX1RFWFRVUkVfQklORElOR19FWFRFUk5BTF9PRVMbR0xfVEVYVFVSRV9CSU5ESU5HXzJEX0FSUkFZIUdMX1RFWFRVUkVfQklORElOR18yRF9NVUxUSVNBTVBMRSdHTF9URVhUVVJFX0JJTkRJTkdfMkRfTVVMVElTQU1QTEVfQVJSQVkVR0xfVEVYVFVSRV9CSU5ESU5HXzNEGUdMX1RFWFRVUkVfQklORElOR19CVUZGRVIbR0xfVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQIUdMX1RFWFRVUkVfQklORElOR19DVUJFX01BUF9BUlJBWRlHTF9URVhUVVJFX0JVRkZFUl9CSU5ESU5HIkdMX1RFWFRVUkVfQlVGRkVSX09GRlNFVF9BTElHTk1FTlQcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0FDVElWRR1HTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQklORElORyRHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkchR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TSVpFIkdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU1RBUlQcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1BBVVNFRBlHTF9VTklGT1JNX0JVRkZFUl9CSU5ESU5HIkdMX1VOSUZPUk1fQlVGRkVSX09GRlNFVF9BTElHTk1FTlQWR0xfVU5JRk9STV9CVUZGRVJfU0laRRdHTF9VTklGT1JNX0JVRkZFUl9TVEFSVBNHTF9VTlBBQ0tfQUxJR05NRU5UFkdMX1VOUEFDS19JTUFHRV9IRUlHSFQUR0xfVU5QQUNLX1JPV19MRU5HVEgVR0xfVU5QQUNLX1NLSVBfSU1BR0VTFUdMX1VOUEFDS19TS0lQX1BJWEVMUxNHTF9VTlBBQ0tfU0tJUF9ST1dTF0dMX1ZFUlRFWF9BUlJBWV9CSU5ESU5HGUdMX1ZFUlRFWF9CSU5ESU5HX0RJVklTT1IYR0xfVkVSVEVYX0JJTkRJTkdfT0ZGU0VUGEdMX1ZFUlRFWF9CSU5ESU5HX1NUUklERQtHTF9WSUVXUE9SVCFHTF9NQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQTR0xfR1BVX0RJU0pPSU5UX0VYVIWxBIWzBoW1CIW3Cg9nbEdldEJvb2xlYW5pX3YGdmFsdWVzBAECAg1nbEdldEJvb2xlYW52AoW5DIW7CIW9Cg1nbEdldEJvb2xlYW52BXBhcmFtgSoRR0xfQUNUSVZFX1RFWFRVUkUbR0xfQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFG0dMX0FMSUFTRURfUE9JTlRfU0laRV9SQU5HRQ1HTF9BTFBIQV9CSVRTF0dMX0FSUkFZX0JVRkZFUl9CSU5ESU5HIEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9CSU5ESU5HHUdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TSVpFHkdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TVEFSVAhHTF9CTEVORA5HTF9CTEVORF9DT0xPUhJHTF9CTEVORF9EU1RfQUxQSEEQR0xfQkxFTkRfRFNUX1JHQhdHTF9CTEVORF9FUVVBVElPTl9BTFBIQRVHTF9CTEVORF9FUVVBVElPTl9SR0ISR0xfQkxFTkRfU1JDX0FMUEhBEEdMX0JMRU5EX1NSQ19SR0IMR0xfQkxVRV9CSVRTFEdMX0NPTE9SX0NMRUFSX1ZBTFVFEkdMX0NPTE9SX1dSSVRFTUFTSx1HTF9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUxBHTF9DT05URVhUX0ZMQUdTGEdMX0NPTlRFWFRfUk9CVVNUX0FDQ0VTUxtHTF9DT1BZX1JFQURfQlVGRkVSX0JJTkRJTkccR0xfQ09QWV9XUklURV9CVUZGRVJfQklORElORwxHTF9DVUxMX0ZBQ0URR0xfQ1VMTF9GQUNFX01PREUSR0xfQ1VSUkVOVF9QUk9HUkFNGkdMX0RFQlVHX0dST1VQX1NUQUNLX0RFUFRIGEdMX0RFQlVHX0xPR0dFRF9NRVNTQUdFUyNHTF9ERUJVR19ORVhUX0xPR0dFRF9NRVNTQUdFX0xFTkdUSA1HTF9ERVBUSF9CSVRTFEdMX0RFUFRIX0NMRUFSX1ZBTFVFDUdMX0RFUFRIX0ZVTkMOR0xfREVQVEhfUkFOR0UNR0xfREVQVEhfVEVTVBJHTF9ERVBUSF9XUklURU1BU0sjR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSX0JJTkRJTkcJR0xfRElUSEVSDkdMX0RSQVdfQlVGRkVSD0dMX0RSQVdfQlVGRkVSMA9HTF9EUkFXX0JVRkZFUjEPR0xfRFJBV19CVUZGRVIyD0dMX0RSQVdfQlVGRkVSMw9HTF9EUkFXX0JVRkZFUjQPR0xfRFJBV19CVUZGRVI1D0dMX0RSQVdfQlVGRkVSNg9HTF9EUkFXX0JVRkZFUjcPR0xfRFJBV19CVUZGRVI4D0dMX0RSQVdfQlVGRkVSORBHTF9EUkFXX0JVRkZFUjEwEEdMX0RSQVdfQlVGRkVSMTEQR0xfRFJBV19CVUZGRVIxMhBHTF9EUkFXX0JVRkZFUjEzEEdMX0RSQVdfQlVGRkVSMTQQR0xfRFJBV19CVUZGRVIxNRtHTF9EUkFXX0ZSQU1FQlVGRkVSX0JJTkRJTkcfR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORyVHTF9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVF9CSVRTIkdMX0ZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlQNR0xfRlJPTlRfRkFDRRdHTF9HRU5FUkFURV9NSVBNQVBfSElOVA1HTF9HUkVFTl9CSVRTFUdMX0lNQUdFX0JJTkRJTkdfTkFNRRZHTF9JTUFHRV9CSU5ESU5HX0xFVkVMGEdMX0lNQUdFX0JJTkRJTkdfTEFZRVJFRBZHTF9JTUFHRV9CSU5ESU5HX0xBWUVSF0dMX0lNQUdFX0JJTkRJTkdfQUNDRVNTF0dMX0lNQUdFX0JJTkRJTkdfRk9STUFUI0dMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfRk9STUFUIUdMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfVFlQRRlHTF9MQVlFUl9QUk9WT0tJTkdfVkVSVEVYDUdMX0xJTkVfV0lEVEgqR0xfUFJJTUlUSVZFX1JFU1RBUlRfRk9SX1BBVENIRVNfU1VQUE9SVEVEEEdMX01BSk9SX1ZFUlNJT04WR0xfTUFYXzNEX1RFWFRVUkVfU0laRRtHTF9NQVhfQVJSQVlfVEVYVFVSRV9MQVlFUlMlR0xfTUFYX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9CSU5ESU5HUyFHTF9NQVhfQVRPTUlDX0NPVU5URVJfQlVGRkVSX1NJWkUmR0xfTUFYX0NPTUJJTkVEX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMYR0xfTUFYX0NPTE9SX0FUVEFDSE1FTlRTHEdMX01BWF9DT0xPUl9URVhUVVJFX1NBTVBMRVMcR0xfTUFYX0RFUFRIX1RFWFRVUkVfU0FNUExFUx9HTF9NQVhfQ09NQklORURfQVRPTUlDX0NPVU5URVJTEkdMX01BWF9JTUFHRV9VTklUUypHTF9NQVhfQ09NQklORURfQ09NUFVURV9VTklGT1JNX0NPTVBPTkVOVFMrR0xfTUFYX0NPTUJJTkVEX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UUytHTF9NQVhfQ09NQklORURfR0VPTUVUUllfVU5JRk9STV9DT01QT05FTlRTJUdMX01BWF9DT01CSU5FRF9TSEFERVJfU1RPUkFHRV9CTE9DS1MvR0xfTUFYX0NPTUJJTkVEX1RFU1NfQ09OVFJPTF9VTklGT1JNX0NPTVBPTkVOVFMyR0xfTUFYX0NPTUJJTkVEX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0NPTVBPTkVOVFMjR0xfTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMnR0xfTUFYX0NPTUJJTkVEX1NIQURFUl9PVVRQVVRfUkVTT1VSQ0VTHkdMX01BWF9DT01CSU5FRF9VTklGT1JNX0JMT0NLUylHTF9NQVhfQ09NQklORURfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUyVHTF9NQVhfQ09NUFVURV9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTHkdMX01BWF9DT01QVVRFX0FUT01JQ19DT1VOVEVSUx1HTF9NQVhfQ09NUFVURV9JTUFHRV9VTklGT1JNUx5HTF9NQVhfQ09NQklORURfSU1BR0VfVU5JRk9STVMkR0xfTUFYX0NPTVBVVEVfU0hBREVSX1NUT1JBR0VfQkxPQ0tTIkdMX01BWF9DT01QVVRFX1RFWFRVUkVfSU1BR0VfVU5JVFMhR0xfTUFYX0NPTVBVVEVfU0hBUkVEX01FTU9SWV9TSVpFHUdMX01BWF9DT01QVVRFX1VOSUZPUk1fQkxPQ0tTIUdMX01BWF9DT01QVVRFX1VOSUZPUk1fQ09NUE9ORU5UUx9HTF9NQVhfQ09NUFVURV9XT1JLX0dST1VQX0NPVU5UJUdMX01BWF9DT01QVVRFX1dPUktfR1JPVVBfSU5WT0NBVElPTlMeR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9TSVpFHEdMX01BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUeR0xfTUFYX0RFQlVHX0dST1VQX1NUQUNLX0RFUFRIHEdMX01BWF9ERUJVR19MT0dHRURfTUVTU0FHRVMbR0xfTUFYX0RFQlVHX01FU1NBR0VfTEVOR1RIE0dMX01BWF9EUkFXX0JVRkZFUlMUR0xfTUFYX0VMRU1FTlRfSU5ERVgXR0xfTUFYX0VMRU1FTlRTX0lORElDRVMYR0xfTUFYX0VMRU1FTlRTX1ZFUlRJQ0VTJkdMX01BWF9GUkFHTUVOVF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTH0dMX01BWF9GUkFHTUVOVF9BVE9NSUNfQ09VTlRFUlMeR0xfTUFYX0ZSQUdNRU5UX0lNQUdFX1VOSUZPUk1TIEdMX01BWF9GUkFHTUVOVF9JTlBVVF9DT01QT05FTlRTJEdMX01BWF9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVCVHTF9NQVhfRlJBR01FTlRfU0hBREVSX1NUT1JBR0VfQkxPQ0tTJEdMX01JTl9QUk9HUkFNX1RFWFRVUkVfR0FUSEVSX09GRlNFVCRHTF9NQVhfUFJPR1JBTV9URVhUVVJFX0dBVEhFUl9PRkZTRVQeR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQkxPQ0tTIkdMX01BWF9GUkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFMfR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUxlHTF9NQVhfRlJBTUVCVUZGRVJfSEVJR0hUGUdMX01BWF9GUkFNRUJVRkZFUl9MQVlFUlMaR0xfTUFYX0ZSQU1FQlVGRkVSX1NBTVBMRVMYR0xfTUFYX0ZSQU1FQlVGRkVSX1dJRFRIJkdMX01BWF9HRU9NRVRSWV9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTH0dMX01BWF9HRU9NRVRSWV9BVE9NSUNfQ09VTlRFUlMeR0xfTUFYX0dFT01FVFJZX0lNQUdFX1VOSUZPUk1TIEdMX01BWF9HRU9NRVRSWV9JTlBVVF9DT01QT05FTlRTIUdMX01BWF9HRU9NRVRSWV9PVVRQVVRfQ09NUE9ORU5UUx9HTF9NQVhfR0VPTUVUUllfT1VUUFVUX1ZFUlRJQ0VTIkdMX01BWF9HRU9NRVRSWV9TSEFERVJfSU5WT0NBVElPTlMlR0xfTUFYX0dFT01FVFJZX1NIQURFUl9TVE9SQUdFX0JMT0NLUyNHTF9NQVhfR0VPTUVUUllfVEVYVFVSRV9JTUFHRV9VTklUUydHTF9NQVhfR0VPTUVUUllfVE9UQUxfT1VUUFVUX0NPTVBPTkVOVFMeR0xfTUFYX0dFT01FVFJZX1VOSUZPUk1fQkxPQ0tTIkdMX01BWF9HRU9NRVRSWV9VTklGT1JNX0NPTVBPTkVOVFMWR0xfTUFYX0lOVEVHRVJfU0FNUExFUxNHTF9NQVhfTEFCRUxfTEVOR1RIG0dMX01BWF9QUk9HUkFNX1RFWEVMX09GRlNFVBhHTF9NQVhfUkVOREVSQlVGRkVSX1NJWkUYR0xfTUFYX1NBTVBMRV9NQVNLX1dPUkRTDkdMX01BWF9TQU1QTEVTGkdMX01BWF9TRVJWRVJfV0FJVF9USU1FT1VUIEdMX01BWF9TSEFERVJfU1RPUkFHRV9CTE9DS19TSVpFJUdMX01BWF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfQklORElOR1MqR0xfTUFYX1RFU1NfQ09OVFJPTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTI0dMX01BWF9URVNTX0NPTlRST0xfQVRPTUlDX0NPVU5URVJTIkdMX01BWF9URVNTX0NPTlRST0xfSU1BR0VfVU5JRk9STVMkR0xfTUFYX1RFU1NfQ09OVFJPTF9JTlBVVF9DT01QT05FTlRTJUdMX01BWF9URVNTX0NPTlRST0xfT1VUUFVUX0NPTVBPTkVOVFMpR0xfTUFYX1RFU1NfQ09OVFJPTF9TSEFERVJfU1RPUkFHRV9CTE9DS1MnR0xfTUFYX1RFU1NfQ09OVFJPTF9URVhUVVJFX0lNQUdFX1VOSVRTK0dMX01BWF9URVNTX0NPTlRST0xfVE9UQUxfT1VUUFVUX0NPTVBPTkVOVFMiR0xfTUFYX1RFU1NfQ09OVFJPTF9VTklGT1JNX0JMT0NLUyZHTF9NQVhfVEVTU19DT05UUk9MX1VOSUZPUk1fQ09NUE9ORU5UUy1HTF9NQVhfVEVTU19FVkFMVUFUSU9OX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMmR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9BVE9NSUNfQ09VTlRFUlMlR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9JTUFHRV9VTklGT1JNUydHTF9NQVhfVEVTU19FVkFMVUFUSU9OX0lOUFVUX0NPTVBPTkVOVFMoR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9PVVRQVVRfQ09NUE9ORU5UUyxHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1NIQURFUl9TVE9SQUdFX0JMT0NLUypHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1RFWFRVUkVfSU1BR0VfVU5JVFMlR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0JMT0NLUylHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1VOSUZPUk1fQ09NUE9ORU5UUxVHTF9NQVhfVEVTU19HRU5fTEVWRUwVR0xfTUFYX1BBVENIX1ZFUlRJQ0VTHEdMX01BWF9URVNTX1BBVENIX0NPTVBPTkVOVFMaR0xfTUFYX1RFWFRVUkVfQlVGRkVSX1NJWkUaR0xfTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMXR0xfTUFYX1RFWFRVUkVfTE9EX0JJQVMTR0xfTUFYX1RFWFRVUkVfU0laRTBHTF9NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX0lOVEVSTEVBVkVEX0NPTVBPTkVOVFMqR0xfTUFYX1RSQU5TRk9STV9GRUVEQkFDS19TRVBBUkFURV9BVFRSSUJTLUdMX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQ09NUE9ORU5UUxlHTF9NQVhfVU5JRk9STV9CTE9DS19TSVpFHkdMX01BWF9VTklGT1JNX0JVRkZFUl9CSU5ESU5HUxhHTF9NQVhfVU5JRk9STV9MT0NBVElPTlMZR0xfTUFYX1ZBUllJTkdfQ09NUE9ORU5UUxZHTF9NQVhfVkFSWUlOR19WRUNUT1JTHUdMX01BWF9WRVJURVhfQVRPTUlDX0NPVU5URVJTJEdMX01BWF9WRVJURVhfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx1HTF9NQVhfVkVSVEVYX0FUVFJJQl9CSU5ESU5HUxtHTF9NQVhfVkVSVEVYX0FUVFJJQl9TVFJJREUkR0xfTUFYX1ZFUlRFWF9BVFRSSUJfUkVMQVRJVkVfT0ZGU0VUFUdMX01BWF9WRVJURVhfQVRUUklCUxxHTF9NQVhfVkVSVEVYX0lNQUdFX1VOSUZPUk1TH0dMX01BWF9WRVJURVhfT1VUUFVUX0NPTVBPTkVOVFMjR0xfTUFYX1ZFUlRFWF9TSEFERVJfU1RPUkFHRV9CTE9DS1MhR0xfTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTHEdMX01BWF9WRVJURVhfVU5JRk9STV9CTE9DS1MgR0xfTUFYX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFMdR0xfTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMUR0xfTUFYX1ZJRVdQT1JUX0RJTVMkR0xfTUlOX0ZSQUdNRU5UX0lOVEVSUE9MQVRJT05fT0ZGU0VUG0dMX01JTl9QUk9HUkFNX1RFWEVMX09GRlNFVBtHTF9NSU5fU0FNUExFX1NIQURJTkdfVkFMVUUQR0xfTUlOT1JfVkVSU0lPTh9HTF9NVUxUSVNBTVBMRV9MSU5FX1dJRFRIX1JBTkdFJUdMX01VTFRJU0FNUExFX0xJTkVfV0lEVEhfR1JBTlVMQVJJVFkhR0xfTlVNX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTEUdMX05VTV9FWFRFTlNJT05THUdMX05VTV9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTHEdMX05VTV9TSEFERVJfQklOQVJZX0ZPUk1BVFMRR0xfUEFDS19BTElHTk1FTlQUR0xfUEFDS19JTUFHRV9IRUlHSFQSR0xfUEFDS19ST1dfTEVOR1RIE0dMX1BBQ0tfU0tJUF9JTUFHRVMTR0xfUEFDS19TS0lQX1BJWEVMUxFHTF9QQUNLX1NLSVBfUk9XUxFHTF9QQVRDSF9WRVJUSUNFUxxHTF9QSVhFTF9QQUNLX0JVRkZFUl9CSU5ESU5HHkdMX1BJWEVMX1VOUEFDS19CVUZGRVJfQklORElORxhHTF9QT0xZR09OX09GRlNFVF9GQUNUT1IWR0xfUE9MWUdPTl9PRkZTRVRfRklMTBdHTF9QT0xZR09OX09GRlNFVF9VTklUUxlHTF9QUklNSVRJVkVfQk9VTkRJTkdfQk9YIEdMX1BSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYGUdMX1BST0dSQU1fQklOQVJZX0ZPUk1BVFMbR0xfUFJPR1JBTV9QSVBFTElORV9CSU5ESU5HFUdMX1JBU1RFUklaRVJfRElTQ0FSRA5HTF9SRUFEX0JVRkZFUhtHTF9SRUFEX0ZSQU1FQlVGRkVSX0JJTkRJTkcLR0xfUkVEX0JJVFMXR0xfUkVOREVSQlVGRkVSX0JJTkRJTkceR0xfUkVTRVRfTk9USUZJQ0FUSU9OX1NUUkFURUdZG0dMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRRFHTF9TQU1QTEVfQlVGRkVSUxJHTF9TQU1QTEVfQ09WRVJBR0UZR0xfU0FNUExFX0NPVkVSQUdFX0lOVkVSVBhHTF9TQU1QTEVfQ09WRVJBR0VfVkFMVUURR0xfU0FNUExFX1NIQURJTkcSR0xfU0FNUExFUl9CSU5ESU5HCkdMX1NBTVBMRVMOR0xfU0NJU1NPUl9CT1gPR0xfU0NJU1NPUl9URVNUGEdMX1NIQURFUl9CSU5BUllfRk9STUFUUxJHTF9TSEFERVJfQ09NUElMRVIgR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX0JJTkRJTkcpR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX09GRlNFVF9BTElHTk1FTlQdR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX1NJWkUeR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX1NUQVJUFEdMX1NURU5DSUxfQkFDS19GQUlMFEdMX1NURU5DSUxfQkFDS19GVU5DH0dMX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZBSUwfR0xfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTUxNHTF9TVEVOQ0lMX0JBQ0tfUkVGGkdMX1NURU5DSUxfQkFDS19WQUxVRV9NQVNLGUdMX1NURU5DSUxfQkFDS19XUklURU1BU0sPR0xfU1RFTkNJTF9CSVRTFkdMX1NURU5DSUxfQ0xFQVJfVkFMVUUPR0xfU1RFTkNJTF9GQUlMD0dMX1NURU5DSUxfRlVOQxpHTF9TVEVOQ0lMX1BBU1NfREVQVEhfRkFJTBpHTF9TVEVOQ0lMX1BBU1NfREVQVEhfUEFTUw5HTF9TVEVOQ0lMX1JFRg9HTF9TVEVOQ0lMX1RFU1QVR0xfU1RFTkNJTF9WQUxVRV9NQVNLFEdMX1NURU5DSUxfV1JJVEVNQVNLEEdMX1NVQlBJWEVMX0JJVFMVR0xfVEVYVFVSRV9CSU5ESU5HXzJEH0dMX1RFWFRVUkVfQklORElOR19FWFRFUk5BTF9PRVMbR0xfVEVYVFVSRV9CSU5ESU5HXzJEX0FSUkFZIUdMX1RFWFRVUkVfQklORElOR18yRF9NVUxUSVNBTVBMRSdHTF9URVhUVVJFX0JJTkRJTkdfMkRfTVVMVElTQU1QTEVfQVJSQVkVR0xfVEVYVFVSRV9CSU5ESU5HXzNEGUdMX1RFWFRVUkVfQklORElOR19CVUZGRVIbR0xfVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQIUdMX1RFWFRVUkVfQklORElOR19DVUJFX01BUF9BUlJBWRlHTF9URVhUVVJFX0JVRkZFUl9CSU5ESU5HIkdMX1RFWFRVUkVfQlVGRkVSX09GRlNFVF9BTElHTk1FTlQcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0FDVElWRR1HTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQklORElORyRHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkchR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TSVpFIkdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU1RBUlQcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1BBVVNFRBlHTF9VTklGT1JNX0JVRkZFUl9CSU5ESU5HIkdMX1VOSUZPUk1fQlVGRkVSX09GRlNFVF9BTElHTk1FTlQWR0xfVU5JRk9STV9CVUZGRVJfU0laRRdHTF9VTklGT1JNX0JVRkZFUl9TVEFSVBNHTF9VTlBBQ0tfQUxJR05NRU5UFkdMX1VOUEFDS19JTUFHRV9IRUlHSFQUR0xfVU5QQUNLX1JPV19MRU5HVEgVR0xfVU5QQUNLX1NLSVBfSU1BR0VTFUdMX1VOUEFDS19TS0lQX1BJWEVMUxNHTF9VTlBBQ0tfU0tJUF9ST1dTF0dMX1ZFUlRFWF9BUlJBWV9CSU5ESU5HGUdMX1ZFUlRFWF9CSU5ESU5HX0RJVklTT1IYR0xfVkVSVEVYX0JJTkRJTkdfT0ZGU0VUGEdMX1ZFUlRFWF9CSU5ESU5HX1NUUklERQtHTF9WSUVXUE9SVCFHTF9NQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQTR0xfR1BVX0RJU0pPSU5UX0VYVIW/BIXBBoXDCIXFCg1nbEdldEJvb2xlYW52BnZhbHVlcwQBAgIYZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpNjR2AoXHDIXJCIXLChhnbEdldEJ1ZmZlclBhcmFtZXRlcmk2NHYGdGFyZ2V0DQ9HTF9BUlJBWV9CVUZGRVIXR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVITR0xfQ09QWV9SRUFEX0JVRkZFUhRHTF9DT1BZX1dSSVRFX0JVRkZFUhRHTF9QSVhFTF9QQUNLX0JVRkZFUhZHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSHEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIRR0xfVU5JRk9STV9CVUZGRVIYR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSG0dMX0RJU1BBVENIX0lORElSRUNUX0JVRkZFUhdHTF9EUkFXX0lORElSRUNUX0JVRkZFUhhHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVIRR0xfVEVYVFVSRV9CVUZGRVKFzQyFzwiF0QoYZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpNjR2CXBhcmFtZXRlcgYOR0xfQlVGRkVSX1NJWkUPR0xfQlVGRkVSX1VTQUdFFkdMX0JVRkZFUl9BQ0NFU1NfRkxBR1MQR0xfQlVGRkVSX01BUFBFRBRHTF9CVUZGRVJfTUFQX0xFTkdUSBRHTF9CVUZGRVJfTUFQX09GRlNFVAIWZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdgKF0wyF1QiF1woWZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdgZ0YXJnZXQND0dMX0FSUkFZX0JVRkZFUhdHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUhNHTF9DT1BZX1JFQURfQlVGRkVSFEdMX0NPUFlfV1JJVEVfQlVGRkVSFEdMX1BJWEVMX1BBQ0tfQlVGRkVSFkdMX1BJWEVMX1VOUEFDS19CVUZGRVIcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUhFHTF9VTklGT1JNX0JVRkZFUhhHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVIbR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSF0dMX0RSQVdfSU5ESVJFQ1RfQlVGRkVSGEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUhFHTF9URVhUVVJFX0JVRkZFUoXZDIXbCIXdChZnbEdldEJ1ZmZlclBhcmFtZXRlcml2CXBhcmFtZXRlcgYOR0xfQlVGRkVSX1NJWkUPR0xfQlVGRkVSX1VTQUdFFkdMX0JVRkZFUl9BQ0NFU1NfRkxBR1MQR0xfQlVGRkVSX01BUFBFRBRHTF9CVUZGRVJfTUFQX0xFTkdUSBRHTF9CVUZGRVJfTUFQX09GRlNFVAITZ2xHZXRCdWZmZXJQb2ludGVydgOF3wyF4QiF4woTZ2xHZXRCdWZmZXJQb2ludGVydgZ0YXJnZXQND0dMX0FSUkFZX0JVRkZFUhNHTF9DT1BZX1JFQURfQlVGRkVSFEdMX0NPUFlfV1JJVEVfQlVGRkVSF0dMX0VMRU1FTlRfQVJSQVlfQlVGRkVSFEdMX1BJWEVMX1BBQ0tfQlVGRkVSFkdMX1BJWEVMX1VOUEFDS19CVUZGRVIcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUhFHTF9VTklGT1JNX0JVRkZFUhhHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVIbR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSF0dMX0RSQVdfSU5ESVJFQ1RfQlVGRkVSGEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUhFHTF9URVhUVVJFX0JVRkZFUoXlDIXnCIXpChNnbEdldEJ1ZmZlclBvaW50ZXJ2BXBuYW1lARVHTF9CVUZGRVJfTUFQX1BPSU5URVKF6wSF7QaF7wiF8QoTZ2xHZXRCdWZmZXJQb2ludGVydgZwYXJhbXMEAQICFmdsR2V0QnVmZmVyUG9pbnRlcnZPRVMDhfMMhfUIhfcKFmdsR2V0QnVmZmVyUG9pbnRlcnZPRVMGdGFyZ2V0DQ9HTF9BUlJBWV9CVUZGRVITR0xfQ09QWV9SRUFEX0JVRkZFUhRHTF9DT1BZX1dSSVRFX0JVRkZFUhdHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUhRHTF9QSVhFTF9QQUNLX0JVRkZFUhZHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSHEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIRR0xfVU5JRk9STV9CVUZGRVIYR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSG0dMX0RJU1BBVENIX0lORElSRUNUX0JVRkZFUhdHTF9EUkFXX0lORElSRUNUX0JVRkZFUhhHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVIRR0xfVEVYVFVSRV9CVUZGRVKF+QyF+wiF/QoWZ2xHZXRCdWZmZXJQb2ludGVydk9FUwVwbmFtZQEVR0xfQlVGRkVSX01BUF9QT0lOVEVShf8EhgEGhgMIhgUKFmdsR2V0QnVmZmVyUG9pbnRlcnZPRVMGcGFyYW1zBAECAhRnbEdldERlYnVnTWVzc2FnZUxvZwaGBwSGCQaGCwiGDQoUZ2xHZXREZWJ1Z01lc3NhZ2VMb2cHc291cmNlcwQBAoYPBIYRBoYTCIYVChRnbEdldERlYnVnTWVzc2FnZUxvZwV0eXBlcwQBAoYXBIYZBoYbCIYdChRnbEdldERlYnVnTWVzc2FnZUxvZwNpZHMEAQKGHwSGIQaGIwiGJQoUZ2xHZXREZWJ1Z01lc3NhZ2VMb2cKc2V2ZXJpdGllcwQBAoYnBIYpBoYrCIYtChRnbEdldERlYnVnTWVzc2FnZUxvZwdsZW5ndGhzBAEChi8EhjEGhjMIhjUKFGdsR2V0RGVidWdNZXNzYWdlTG9nCm1lc3NhZ2VMb2cEAQICF2dsR2V0RGVidWdNZXNzYWdlTG9nS0hSBoY3BIY5BoY7CIY9ChdnbEdldERlYnVnTWVzc2FnZUxvZ0tIUgdzb3VyY2VzBAEChj8EhkEGhkMIhkUKF2dsR2V0RGVidWdNZXNzYWdlTG9nS0hSBXR5cGVzBAEChkcEhkkGhksIhk0KF2dsR2V0RGVidWdNZXNzYWdlTG9nS0hSA2lkcwQBAoZPBIZRBoZTCIZVChdnbEdldERlYnVnTWVzc2FnZUxvZ0tIUgpzZXZlcml0aWVzBAEChlcEhlkGhlsIhl0KF2dsR2V0RGVidWdNZXNzYWdlTG9nS0hSB2xlbmd0aHMEAQKGXwSGYQaGYwiGZQoXZ2xHZXREZWJ1Z01lc3NhZ2VMb2dLSFIKbWVzc2FnZUxvZwQBAgILZ2xHZXRGbG9hdHYChmcMhmkIhmsKC2dsR2V0RmxvYXR2BXBhcmFtgSoRR0xfQUNUSVZFX1RFWFRVUkUbR0xfQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFG0dMX0FMSUFTRURfUE9JTlRfU0laRV9SQU5HRQ1HTF9BTFBIQV9CSVRTF0dMX0FSUkFZX0JVRkZFUl9CSU5ESU5HIEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9CSU5ESU5HHUdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TSVpFHkdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TVEFSVAhHTF9CTEVORA5HTF9CTEVORF9DT0xPUhJHTF9CTEVORF9EU1RfQUxQSEEQR0xfQkxFTkRfRFNUX1JHQhdHTF9CTEVORF9FUVVBVElPTl9BTFBIQRVHTF9CTEVORF9FUVVBVElPTl9SR0ISR0xfQkxFTkRfU1JDX0FMUEhBEEdMX0JMRU5EX1NSQ19SR0IMR0xfQkxVRV9CSVRTFEdMX0NPTE9SX0NMRUFSX1ZBTFVFEkdMX0NPTE9SX1dSSVRFTUFTSx1HTF9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUxBHTF9DT05URVhUX0ZMQUdTGEdMX0NPTlRFWFRfUk9CVVNUX0FDQ0VTUxtHTF9DT1BZX1JFQURfQlVGRkVSX0JJTkRJTkccR0xfQ09QWV9XUklURV9CVUZGRVJfQklORElORwxHTF9DVUxMX0ZBQ0URR0xfQ1VMTF9GQUNFX01PREUSR0xfQ1VSUkVOVF9QUk9HUkFNGkdMX0RFQlVHX0dST1VQX1NUQUNLX0RFUFRIGEdMX0RFQlVHX0xPR0dFRF9NRVNTQUdFUyNHTF9ERUJVR19ORVhUX0xPR0dFRF9NRVNTQUdFX0xFTkdUSA1HTF9ERVBUSF9CSVRTFEdMX0RFUFRIX0NMRUFSX1ZBTFVFDUdMX0RFUFRIX0ZVTkMOR0xfREVQVEhfUkFOR0UNR0xfREVQVEhfVEVTVBJHTF9ERVBUSF9XUklURU1BU0sjR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSX0JJTkRJTkcJR0xfRElUSEVSDkdMX0RSQVdfQlVGRkVSD0dMX0RSQVdfQlVGRkVSMA9HTF9EUkFXX0JVRkZFUjEPR0xfRFJBV19CVUZGRVIyD0dMX0RSQVdfQlVGRkVSMw9HTF9EUkFXX0JVRkZFUjQPR0xfRFJBV19CVUZGRVI1D0dMX0RSQVdfQlVGRkVSNg9HTF9EUkFXX0JVRkZFUjcPR0xfRFJBV19CVUZGRVI4D0dMX0RSQVdfQlVGRkVSORBHTF9EUkFXX0JVRkZFUjEwEEdMX0RSQVdfQlVGRkVSMTEQR0xfRFJBV19CVUZGRVIxMhBHTF9EUkFXX0JVRkZFUjEzEEdMX0RSQVdfQlVGRkVSMTQQR0xfRFJBV19CVUZGRVIxNRtHTF9EUkFXX0ZSQU1FQlVGRkVSX0JJTkRJTkcfR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORyVHTF9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVF9CSVRTIkdMX0ZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlQNR0xfRlJPTlRfRkFDRRdHTF9HRU5FUkFURV9NSVBNQVBfSElOVA1HTF9HUkVFTl9CSVRTFUdMX0lNQUdFX0JJTkRJTkdfTkFNRRZHTF9JTUFHRV9CSU5ESU5HX0xFVkVMGEdMX0lNQUdFX0JJTkRJTkdfTEFZRVJFRBZHTF9JTUFHRV9CSU5ESU5HX0xBWUVSF0dMX0lNQUdFX0JJTkRJTkdfQUNDRVNTF0dMX0lNQUdFX0JJTkRJTkdfRk9STUFUI0dMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfRk9STUFUIUdMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfVFlQRRlHTF9MQVlFUl9QUk9WT0tJTkdfVkVSVEVYDUdMX0xJTkVfV0lEVEgqR0xfUFJJTUlUSVZFX1JFU1RBUlRfRk9SX1BBVENIRVNfU1VQUE9SVEVEEEdMX01BSk9SX1ZFUlNJT04WR0xfTUFYXzNEX1RFWFRVUkVfU0laRRtHTF9NQVhfQVJSQVlfVEVYVFVSRV9MQVlFUlMlR0xfTUFYX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9CSU5ESU5HUyFHTF9NQVhfQVRPTUlDX0NPVU5URVJfQlVGRkVSX1NJWkUmR0xfTUFYX0NPTUJJTkVEX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMYR0xfTUFYX0NPTE9SX0FUVEFDSE1FTlRTHEdMX01BWF9DT0xPUl9URVhUVVJFX1NBTVBMRVMcR0xfTUFYX0RFUFRIX1RFWFRVUkVfU0FNUExFUx9HTF9NQVhfQ09NQklORURfQVRPTUlDX0NPVU5URVJTEkdMX01BWF9JTUFHRV9VTklUUypHTF9NQVhfQ09NQklORURfQ09NUFVURV9VTklGT1JNX0NPTVBPTkVOVFMrR0xfTUFYX0NPTUJJTkVEX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UUytHTF9NQVhfQ09NQklORURfR0VPTUVUUllfVU5JRk9STV9DT01QT05FTlRTJUdMX01BWF9DT01CSU5FRF9TSEFERVJfU1RPUkFHRV9CTE9DS1MvR0xfTUFYX0NPTUJJTkVEX1RFU1NfQ09OVFJPTF9VTklGT1JNX0NPTVBPTkVOVFMyR0xfTUFYX0NPTUJJTkVEX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0NPTVBPTkVOVFMjR0xfTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMnR0xfTUFYX0NPTUJJTkVEX1NIQURFUl9PVVRQVVRfUkVTT1VSQ0VTHkdMX01BWF9DT01CSU5FRF9VTklGT1JNX0JMT0NLUylHTF9NQVhfQ09NQklORURfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUyVHTF9NQVhfQ09NUFVURV9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTHkdMX01BWF9DT01QVVRFX0FUT01JQ19DT1VOVEVSUx1HTF9NQVhfQ09NUFVURV9JTUFHRV9VTklGT1JNUx5HTF9NQVhfQ09NQklORURfSU1BR0VfVU5JRk9STVMkR0xfTUFYX0NPTVBVVEVfU0hBREVSX1NUT1JBR0VfQkxPQ0tTIkdMX01BWF9DT01QVVRFX1RFWFRVUkVfSU1BR0VfVU5JVFMhR0xfTUFYX0NPTVBVVEVfU0hBUkVEX01FTU9SWV9TSVpFHUdMX01BWF9DT01QVVRFX1VOSUZPUk1fQkxPQ0tTIUdMX01BWF9DT01QVVRFX1VOSUZPUk1fQ09NUE9ORU5UUx9HTF9NQVhfQ09NUFVURV9XT1JLX0dST1VQX0NPVU5UJUdMX01BWF9DT01QVVRFX1dPUktfR1JPVVBfSU5WT0NBVElPTlMeR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9TSVpFHEdMX01BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUeR0xfTUFYX0RFQlVHX0dST1VQX1NUQUNLX0RFUFRIHEdMX01BWF9ERUJVR19MT0dHRURfTUVTU0FHRVMbR0xfTUFYX0RFQlVHX01FU1NBR0VfTEVOR1RIE0dMX01BWF9EUkFXX0JVRkZFUlMUR0xfTUFYX0VMRU1FTlRfSU5ERVgXR0xfTUFYX0VMRU1FTlRTX0lORElDRVMYR0xfTUFYX0VMRU1FTlRTX1ZFUlRJQ0VTJkdMX01BWF9GUkFHTUVOVF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTH0dMX01BWF9GUkFHTUVOVF9BVE9NSUNfQ09VTlRFUlMeR0xfTUFYX0ZSQUdNRU5UX0lNQUdFX1VOSUZPUk1TIEdMX01BWF9GUkFHTUVOVF9JTlBVVF9DT01QT05FTlRTJEdMX01BWF9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVCVHTF9NQVhfRlJBR01FTlRfU0hBREVSX1NUT1JBR0VfQkxPQ0tTJEdMX01JTl9QUk9HUkFNX1RFWFRVUkVfR0FUSEVSX09GRlNFVCRHTF9NQVhfUFJPR1JBTV9URVhUVVJFX0dBVEhFUl9PRkZTRVQeR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQkxPQ0tTIkdMX01BWF9GUkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFMfR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUxlHTF9NQVhfRlJBTUVCVUZGRVJfSEVJR0hUGUdMX01BWF9GUkFNRUJVRkZFUl9MQVlFUlMaR0xfTUFYX0ZSQU1FQlVGRkVSX1NBTVBMRVMYR0xfTUFYX0ZSQU1FQlVGRkVSX1dJRFRIJkdMX01BWF9HRU9NRVRSWV9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTH0dMX01BWF9HRU9NRVRSWV9BVE9NSUNfQ09VTlRFUlMeR0xfTUFYX0dFT01FVFJZX0lNQUdFX1VOSUZPUk1TIEdMX01BWF9HRU9NRVRSWV9JTlBVVF9DT01QT05FTlRTIUdMX01BWF9HRU9NRVRSWV9PVVRQVVRfQ09NUE9ORU5UUx9HTF9NQVhfR0VPTUVUUllfT1VUUFVUX1ZFUlRJQ0VTIkdMX01BWF9HRU9NRVRSWV9TSEFERVJfSU5WT0NBVElPTlMlR0xfTUFYX0dFT01FVFJZX1NIQURFUl9TVE9SQUdFX0JMT0NLUyNHTF9NQVhfR0VPTUVUUllfVEVYVFVSRV9JTUFHRV9VTklUUydHTF9NQVhfR0VPTUVUUllfVE9UQUxfT1VUUFVUX0NPTVBPTkVOVFMeR0xfTUFYX0dFT01FVFJZX1VOSUZPUk1fQkxPQ0tTIkdMX01BWF9HRU9NRVRSWV9VTklGT1JNX0NPTVBPTkVOVFMWR0xfTUFYX0lOVEVHRVJfU0FNUExFUxNHTF9NQVhfTEFCRUxfTEVOR1RIG0dMX01BWF9QUk9HUkFNX1RFWEVMX09GRlNFVBhHTF9NQVhfUkVOREVSQlVGRkVSX1NJWkUYR0xfTUFYX1NBTVBMRV9NQVNLX1dPUkRTDkdMX01BWF9TQU1QTEVTGkdMX01BWF9TRVJWRVJfV0FJVF9USU1FT1VUIEdMX01BWF9TSEFERVJfU1RPUkFHRV9CTE9DS19TSVpFJUdMX01BWF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfQklORElOR1MqR0xfTUFYX1RFU1NfQ09OVFJPTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTI0dMX01BWF9URVNTX0NPTlRST0xfQVRPTUlDX0NPVU5URVJTIkdMX01BWF9URVNTX0NPTlRST0xfSU1BR0VfVU5JRk9STVMkR0xfTUFYX1RFU1NfQ09OVFJPTF9JTlBVVF9DT01QT05FTlRTJUdMX01BWF9URVNTX0NPTlRST0xfT1VUUFVUX0NPTVBPTkVOVFMpR0xfTUFYX1RFU1NfQ09OVFJPTF9TSEFERVJfU1RPUkFHRV9CTE9DS1MnR0xfTUFYX1RFU1NfQ09OVFJPTF9URVhUVVJFX0lNQUdFX1VOSVRTK0dMX01BWF9URVNTX0NPTlRST0xfVE9UQUxfT1VUUFVUX0NPTVBPTkVOVFMiR0xfTUFYX1RFU1NfQ09OVFJPTF9VTklGT1JNX0JMT0NLUyZHTF9NQVhfVEVTU19DT05UUk9MX1VOSUZPUk1fQ09NUE9ORU5UUy1HTF9NQVhfVEVTU19FVkFMVUFUSU9OX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMmR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9BVE9NSUNfQ09VTlRFUlMlR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9JTUFHRV9VTklGT1JNUydHTF9NQVhfVEVTU19FVkFMVUFUSU9OX0lOUFVUX0NPTVBPTkVOVFMoR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9PVVRQVVRfQ09NUE9ORU5UUyxHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1NIQURFUl9TVE9SQUdFX0JMT0NLUypHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1RFWFRVUkVfSU1BR0VfVU5JVFMlR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0JMT0NLUylHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1VOSUZPUk1fQ09NUE9ORU5UUxVHTF9NQVhfVEVTU19HRU5fTEVWRUwVR0xfTUFYX1BBVENIX1ZFUlRJQ0VTHEdMX01BWF9URVNTX1BBVENIX0NPTVBPTkVOVFMaR0xfTUFYX1RFWFRVUkVfQlVGRkVSX1NJWkUaR0xfTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMXR0xfTUFYX1RFWFRVUkVfTE9EX0JJQVMTR0xfTUFYX1RFWFRVUkVfU0laRTBHTF9NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX0lOVEVSTEVBVkVEX0NPTVBPTkVOVFMqR0xfTUFYX1RSQU5TRk9STV9GRUVEQkFDS19TRVBBUkFURV9BVFRSSUJTLUdMX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQ09NUE9ORU5UUxlHTF9NQVhfVU5JRk9STV9CTE9DS19TSVpFHkdMX01BWF9VTklGT1JNX0JVRkZFUl9CSU5ESU5HUxhHTF9NQVhfVU5JRk9STV9MT0NBVElPTlMZR0xfTUFYX1ZBUllJTkdfQ09NUE9ORU5UUxZHTF9NQVhfVkFSWUlOR19WRUNUT1JTHUdMX01BWF9WRVJURVhfQVRPTUlDX0NPVU5URVJTJEdMX01BWF9WRVJURVhfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx1HTF9NQVhfVkVSVEVYX0FUVFJJQl9CSU5ESU5HUxtHTF9NQVhfVkVSVEVYX0FUVFJJQl9TVFJJREUkR0xfTUFYX1ZFUlRFWF9BVFRSSUJfUkVMQVRJVkVfT0ZGU0VUFUdMX01BWF9WRVJURVhfQVRUUklCUxxHTF9NQVhfVkVSVEVYX0lNQUdFX1VOSUZPUk1TH0dMX01BWF9WRVJURVhfT1VUUFVUX0NPTVBPTkVOVFMjR0xfTUFYX1ZFUlRFWF9TSEFERVJfU1RPUkFHRV9CTE9DS1MhR0xfTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTHEdMX01BWF9WRVJURVhfVU5JRk9STV9CTE9DS1MgR0xfTUFYX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFMdR0xfTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMUR0xfTUFYX1ZJRVdQT1JUX0RJTVMkR0xfTUlOX0ZSQUdNRU5UX0lOVEVSUE9MQVRJT05fT0ZGU0VUG0dMX01JTl9QUk9HUkFNX1RFWEVMX09GRlNFVBtHTF9NSU5fU0FNUExFX1NIQURJTkdfVkFMVUUQR0xfTUlOT1JfVkVSU0lPTh9HTF9NVUxUSVNBTVBMRV9MSU5FX1dJRFRIX1JBTkdFJUdMX01VTFRJU0FNUExFX0xJTkVfV0lEVEhfR1JBTlVMQVJJVFkhR0xfTlVNX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTEUdMX05VTV9FWFRFTlNJT05THUdMX05VTV9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTHEdMX05VTV9TSEFERVJfQklOQVJZX0ZPUk1BVFMRR0xfUEFDS19BTElHTk1FTlQUR0xfUEFDS19JTUFHRV9IRUlHSFQSR0xfUEFDS19ST1dfTEVOR1RIE0dMX1BBQ0tfU0tJUF9JTUFHRVMTR0xfUEFDS19TS0lQX1BJWEVMUxFHTF9QQUNLX1NLSVBfUk9XUxFHTF9QQVRDSF9WRVJUSUNFUxxHTF9QSVhFTF9QQUNLX0JVRkZFUl9CSU5ESU5HHkdMX1BJWEVMX1VOUEFDS19CVUZGRVJfQklORElORxhHTF9QT0xZR09OX09GRlNFVF9GQUNUT1IWR0xfUE9MWUdPTl9PRkZTRVRfRklMTBdHTF9QT0xZR09OX09GRlNFVF9VTklUUxlHTF9QUklNSVRJVkVfQk9VTkRJTkdfQk9YIEdMX1BSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYGUdMX1BST0dSQU1fQklOQVJZX0ZPUk1BVFMbR0xfUFJPR1JBTV9QSVBFTElORV9CSU5ESU5HFUdMX1JBU1RFUklaRVJfRElTQ0FSRA5HTF9SRUFEX0JVRkZFUhtHTF9SRUFEX0ZSQU1FQlVGRkVSX0JJTkRJTkcLR0xfUkVEX0JJVFMXR0xfUkVOREVSQlVGRkVSX0JJTkRJTkceR0xfUkVTRVRfTk9USUZJQ0FUSU9OX1NUUkFURUdZG0dMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRRFHTF9TQU1QTEVfQlVGRkVSUxJHTF9TQU1QTEVfQ09WRVJBR0UZR0xfU0FNUExFX0NPVkVSQUdFX0lOVkVSVBhHTF9TQU1QTEVfQ09WRVJBR0VfVkFMVUURR0xfU0FNUExFX1NIQURJTkcSR0xfU0FNUExFUl9CSU5ESU5HCkdMX1NBTVBMRVMOR0xfU0NJU1NPUl9CT1gPR0xfU0NJU1NPUl9URVNUGEdMX1NIQURFUl9CSU5BUllfRk9STUFUUxJHTF9TSEFERVJfQ09NUElMRVIgR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX0JJTkRJTkcpR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX09GRlNFVF9BTElHTk1FTlQdR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX1NJWkUeR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX1NUQVJUFEdMX1NURU5DSUxfQkFDS19GQUlMFEdMX1NURU5DSUxfQkFDS19GVU5DH0dMX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZBSUwfR0xfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTUxNHTF9TVEVOQ0lMX0JBQ0tfUkVGGkdMX1NURU5DSUxfQkFDS19WQUxVRV9NQVNLGUdMX1NURU5DSUxfQkFDS19XUklURU1BU0sPR0xfU1RFTkNJTF9CSVRTFkdMX1NURU5DSUxfQ0xFQVJfVkFMVUUPR0xfU1RFTkNJTF9GQUlMD0dMX1NURU5DSUxfRlVOQxpHTF9TVEVOQ0lMX1BBU1NfREVQVEhfRkFJTBpHTF9TVEVOQ0lMX1BBU1NfREVQVEhfUEFTUw5HTF9TVEVOQ0lMX1JFRg9HTF9TVEVOQ0lMX1RFU1QVR0xfU1RFTkNJTF9WQUxVRV9NQVNLFEdMX1NURU5DSUxfV1JJVEVNQVNLEEdMX1NVQlBJWEVMX0JJVFMVR0xfVEVYVFVSRV9CSU5ESU5HXzJEH0dMX1RFWFRVUkVfQklORElOR19FWFRFUk5BTF9PRVMbR0xfVEVYVFVSRV9CSU5ESU5HXzJEX0FSUkFZIUdMX1RFWFRVUkVfQklORElOR18yRF9NVUxUSVNBTVBMRSdHTF9URVhUVVJFX0JJTkRJTkdfMkRfTVVMVElTQU1QTEVfQVJSQVkVR0xfVEVYVFVSRV9CSU5ESU5HXzNEGUdMX1RFWFRVUkVfQklORElOR19CVUZGRVIbR0xfVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQIUdMX1RFWFRVUkVfQklORElOR19DVUJFX01BUF9BUlJBWRlHTF9URVhUVVJFX0JVRkZFUl9CSU5ESU5HIkdMX1RFWFRVUkVfQlVGRkVSX09GRlNFVF9BTElHTk1FTlQcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0FDVElWRR1HTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQklORElORyRHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkchR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TSVpFIkdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU1RBUlQcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1BBVVNFRBlHTF9VTklGT1JNX0JVRkZFUl9CSU5ESU5HIkdMX1VOSUZPUk1fQlVGRkVSX09GRlNFVF9BTElHTk1FTlQWR0xfVU5JRk9STV9CVUZGRVJfU0laRRdHTF9VTklGT1JNX0JVRkZFUl9TVEFSVBNHTF9VTlBBQ0tfQUxJR05NRU5UFkdMX1VOUEFDS19JTUFHRV9IRUlHSFQUR0xfVU5QQUNLX1JPV19MRU5HVEgVR0xfVU5QQUNLX1NLSVBfSU1BR0VTFUdMX1VOUEFDS19TS0lQX1BJWEVMUxNHTF9VTlBBQ0tfU0tJUF9ST1dTF0dMX1ZFUlRFWF9BUlJBWV9CSU5ESU5HGUdMX1ZFUlRFWF9CSU5ESU5HX0RJVklTT1IYR0xfVkVSVEVYX0JJTkRJTkdfT0ZGU0VUGEdMX1ZFUlRFWF9CSU5ESU5HX1NUUklERQtHTF9WSUVXUE9SVCFHTF9NQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQTR0xfR1BVX0RJU0pPSU5UX0VYVIZtBIZvBoZxCIZzCgtnbEdldEZsb2F0dgZ2YWx1ZXMEAQICJWdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYDhnUMhncIhnkKJWdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYSZnJhbWVidWZmZXJfdGFyZ2V0Aw5HTF9GUkFNRUJVRkZFUhNHTF9EUkFXX0ZSQU1FQlVGRkVSE0dMX1JFQURfRlJBTUVCVUZGRVKGewyGfQiGfwolZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdgphdHRhY2htZW50FhRHTF9DT0xPUl9BVFRBQ0hNRU5UMBNHTF9ERVBUSF9BVFRBQ0hNRU5UFUdMX1NURU5DSUxfQVRUQUNITUVOVAdHTF9CQUNLFEdMX0NPTE9SX0FUVEFDSE1FTlQxFUdMX0NPTE9SX0FUVEFDSE1FTlQxMBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTEVR0xfQ09MT1JfQVRUQUNITUVOVDEyFUdMX0NPTE9SX0FUVEFDSE1FTlQxMxVHTF9DT0xPUl9BVFRBQ0hNRU5UMTQVR0xfQ09MT1JfQVRUQUNITUVOVDE1FEdMX0NPTE9SX0FUVEFDSE1FTlQyFEdMX0NPTE9SX0FUVEFDSE1FTlQzFEdMX0NPTE9SX0FUVEFDSE1FTlQ0FEdMX0NPTE9SX0FUVEFDSE1FTlQ1FEdMX0NPTE9SX0FUVEFDSE1FTlQ2FEdMX0NPTE9SX0FUVEFDSE1FTlQ3FEdMX0NPTE9SX0FUVEFDSE1FTlQ4FEdMX0NPTE9SX0FUVEFDSE1FTlQ5CEdMX0RFUFRIG0dMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVApHTF9TVEVOQ0lMhoEMhoMIhoUKJWdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYJcGFyYW1ldGVyDiVHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FJUdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUvR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0UnR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMJEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQUxQSEFfU0laRSNHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0JMVUVfU0laRShHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5HKEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09NUE9ORU5UX1RZUEUkR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9ERVBUSF9TSVpFJEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfR1JFRU5fU0laRSJHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1JFRF9TSVpFJkdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfU1RFTkNJTF9TSVpFJ0dMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MQVlFUiFHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0xBWUVSRUQCG2dsR2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdgKGhwyGiQiGiwobZ2xHZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2BnRhcmdldAMOR0xfRlJBTUVCVUZGRVITR0xfRFJBV19GUkFNRUJVRkZFUhNHTF9SRUFEX0ZSQU1FQlVGRkVSho0Mho8IhpEKG2dsR2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdgVwbmFtZQUtR0xfRlJBTUVCVUZGRVJfREVGQVVMVF9GSVhFRF9TQU1QTEVfTE9DQVRJT05THUdMX0ZSQU1FQlVGRkVSX0RFRkFVTFRfSEVJR0hUHkdMX0ZSQU1FQlVGRkVSX0RFRkFVTFRfU0FNUExFUxxHTF9GUkFNRUJVRkZFUl9ERUZBVUxUX1dJRFRIHUdMX0ZSQU1FQlVGRkVSX0RFRkFVTFRfTEFZRVJTAhFnbEdldEludGVnZXI2NGlfdgKGkwyGlQiGlwoRZ2xHZXRJbnRlZ2VyNjRpX3YFcGFyYW2BKhFHTF9BQ1RJVkVfVEVYVFVSRRtHTF9BTElBU0VEX0xJTkVfV0lEVEhfUkFOR0UbR0xfQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFDUdMX0FMUEhBX0JJVFMXR0xfQVJSQVlfQlVGRkVSX0JJTkRJTkcgR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSX0JJTkRJTkcdR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSX1NJWkUeR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSX1NUQVJUCEdMX0JMRU5EDkdMX0JMRU5EX0NPTE9SEkdMX0JMRU5EX0RTVF9BTFBIQRBHTF9CTEVORF9EU1RfUkdCF0dMX0JMRU5EX0VRVUFUSU9OX0FMUEhBFUdMX0JMRU5EX0VRVUFUSU9OX1JHQhJHTF9CTEVORF9TUkNfQUxQSEEQR0xfQkxFTkRfU1JDX1JHQgxHTF9CTFVFX0JJVFMUR0xfQ09MT1JfQ0xFQVJfVkFMVUUSR0xfQ09MT1JfV1JJVEVNQVNLHUdMX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTEEdMX0NPTlRFWFRfRkxBR1MYR0xfQ09OVEVYVF9ST0JVU1RfQUNDRVNTG0dMX0NPUFlfUkVBRF9CVUZGRVJfQklORElORxxHTF9DT1BZX1dSSVRFX0JVRkZFUl9CSU5ESU5HDEdMX0NVTExfRkFDRRFHTF9DVUxMX0ZBQ0VfTU9ERRJHTF9DVVJSRU5UX1BST0dSQU0aR0xfREVCVUdfR1JPVVBfU1RBQ0tfREVQVEgYR0xfREVCVUdfTE9HR0VEX01FU1NBR0VTI0dMX0RFQlVHX05FWFRfTE9HR0VEX01FU1NBR0VfTEVOR1RIDUdMX0RFUFRIX0JJVFMUR0xfREVQVEhfQ0xFQVJfVkFMVUUNR0xfREVQVEhfRlVOQw5HTF9ERVBUSF9SQU5HRQ1HTF9ERVBUSF9URVNUEkdMX0RFUFRIX1dSSVRFTUFTSyNHTF9ESVNQQVRDSF9JTkRJUkVDVF9CVUZGRVJfQklORElORwlHTF9ESVRIRVIOR0xfRFJBV19CVUZGRVIPR0xfRFJBV19CVUZGRVIwD0dMX0RSQVdfQlVGRkVSMQ9HTF9EUkFXX0JVRkZFUjIPR0xfRFJBV19CVUZGRVIzD0dMX0RSQVdfQlVGRkVSNA9HTF9EUkFXX0JVRkZFUjUPR0xfRFJBV19CVUZGRVI2D0dMX0RSQVdfQlVGRkVSNw9HTF9EUkFXX0JVRkZFUjgPR0xfRFJBV19CVUZGRVI5EEdMX0RSQVdfQlVGRkVSMTAQR0xfRFJBV19CVUZGRVIxMRBHTF9EUkFXX0JVRkZFUjEyEEdMX0RSQVdfQlVGRkVSMTMQR0xfRFJBV19CVUZGRVIxNBBHTF9EUkFXX0JVRkZFUjE1G0dMX0RSQVdfRlJBTUVCVUZGRVJfQklORElORx9HTF9FTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HJUdMX0ZSQUdNRU5UX0lOVEVSUE9MQVRJT05fT0ZGU0VUX0JJVFMiR0xfRlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVA1HTF9GUk9OVF9GQUNFF0dMX0dFTkVSQVRFX01JUE1BUF9ISU5UDUdMX0dSRUVOX0JJVFMVR0xfSU1BR0VfQklORElOR19OQU1FFkdMX0lNQUdFX0JJTkRJTkdfTEVWRUwYR0xfSU1BR0VfQklORElOR19MQVlFUkVEFkdMX0lNQUdFX0JJTkRJTkdfTEFZRVIXR0xfSU1BR0VfQklORElOR19BQ0NFU1MXR0xfSU1BR0VfQklORElOR19GT1JNQVQjR0xfSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9GT1JNQVQhR0xfSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9UWVBFGUdMX0xBWUVSX1BST1ZPS0lOR19WRVJURVgNR0xfTElORV9XSURUSCpHTF9QUklNSVRJVkVfUkVTVEFSVF9GT1JfUEFUQ0hFU19TVVBQT1JURUQQR0xfTUFKT1JfVkVSU0lPThZHTF9NQVhfM0RfVEVYVFVSRV9TSVpFG0dMX01BWF9BUlJBWV9URVhUVVJFX0xBWUVSUyVHTF9NQVhfQVRPTUlDX0NPVU5URVJfQlVGRkVSX0JJTkRJTkdTIUdMX01BWF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfU0laRSZHTF9NQVhfQ09NQklORURfQVRPTUlDX0NPVU5URVJfQlVGRkVSUxhHTF9NQVhfQ09MT1JfQVRUQUNITUVOVFMcR0xfTUFYX0NPTE9SX1RFWFRVUkVfU0FNUExFUxxHTF9NQVhfREVQVEhfVEVYVFVSRV9TQU1QTEVTH0dMX01BWF9DT01CSU5FRF9BVE9NSUNfQ09VTlRFUlMSR0xfTUFYX0lNQUdFX1VOSVRTKkdMX01BWF9DT01CSU5FRF9DT01QVVRFX1VOSUZPUk1fQ09NUE9ORU5UUytHTF9NQVhfQ09NQklORURfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTK0dMX01BWF9DT01CSU5FRF9HRU9NRVRSWV9VTklGT1JNX0NPTVBPTkVOVFMlR0xfTUFYX0NPTUJJTkVEX1NIQURFUl9TVE9SQUdFX0JMT0NLUy9HTF9NQVhfQ09NQklORURfVEVTU19DT05UUk9MX1VOSUZPUk1fQ09NUE9ORU5UUzJHTF9NQVhfQ09NQklORURfVEVTU19FVkFMVUFUSU9OX1VOSUZPUk1fQ09NUE9ORU5UUyNHTF9NQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUydHTF9NQVhfQ09NQklORURfU0hBREVSX09VVFBVVF9SRVNPVVJDRVMeR0xfTUFYX0NPTUJJTkVEX1VOSUZPUk1fQkxPQ0tTKUdMX01BWF9DT01CSU5FRF9WRVJURVhfVU5JRk9STV9DT01QT05FTlRTJUdMX01BWF9DT01QVVRFX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMeR0xfTUFYX0NPTVBVVEVfQVRPTUlDX0NPVU5URVJTHUdMX01BWF9DT01QVVRFX0lNQUdFX1VOSUZPUk1THkdMX01BWF9DT01CSU5FRF9JTUFHRV9VTklGT1JNUyRHTF9NQVhfQ09NUFVURV9TSEFERVJfU1RPUkFHRV9CTE9DS1MiR0xfTUFYX0NPTVBVVEVfVEVYVFVSRV9JTUFHRV9VTklUUyFHTF9NQVhfQ09NUFVURV9TSEFSRURfTUVNT1JZX1NJWkUdR0xfTUFYX0NPTVBVVEVfVU5JRk9STV9CTE9DS1MhR0xfTUFYX0NPTVBVVEVfVU5JRk9STV9DT01QT05FTlRTH0dMX01BWF9DT01QVVRFX1dPUktfR1JPVVBfQ09VTlQlR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9JTlZPQ0FUSU9OUx5HTF9NQVhfQ09NUFVURV9XT1JLX0dST1VQX1NJWkUcR0xfTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRR5HTF9NQVhfREVCVUdfR1JPVVBfU1RBQ0tfREVQVEgcR0xfTUFYX0RFQlVHX0xPR0dFRF9NRVNTQUdFUxtHTF9NQVhfREVCVUdfTUVTU0FHRV9MRU5HVEgTR0xfTUFYX0RSQVdfQlVGRkVSUxRHTF9NQVhfRUxFTUVOVF9JTkRFWBdHTF9NQVhfRUxFTUVOVFNfSU5ESUNFUxhHTF9NQVhfRUxFTUVOVFNfVkVSVElDRVMmR0xfTUFYX0ZSQUdNRU5UX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMfR0xfTUFYX0ZSQUdNRU5UX0FUT01JQ19DT1VOVEVSUx5HTF9NQVhfRlJBR01FTlRfSU1BR0VfVU5JRk9STVMgR0xfTUFYX0ZSQUdNRU5UX0lOUFVUX0NPTVBPTkVOVFMkR0xfTUFYX0ZSQUdNRU5UX0lOVEVSUE9MQVRJT05fT0ZGU0VUJUdMX01BWF9GUkFHTUVOVF9TSEFERVJfU1RPUkFHRV9CTE9DS1MkR0xfTUlOX1BST0dSQU1fVEVYVFVSRV9HQVRIRVJfT0ZGU0VUJEdMX01BWF9QUk9HUkFNX1RFWFRVUkVfR0FUSEVSX09GRlNFVB5HTF9NQVhfRlJBR01FTlRfVU5JRk9STV9CTE9DS1MiR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UUx9HTF9NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTGUdMX01BWF9GUkFNRUJVRkZFUl9IRUlHSFQZR0xfTUFYX0ZSQU1FQlVGRkVSX0xBWUVSUxpHTF9NQVhfRlJBTUVCVUZGRVJfU0FNUExFUxhHTF9NQVhfRlJBTUVCVUZGRVJfV0lEVEgmR0xfTUFYX0dFT01FVFJZX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMfR0xfTUFYX0dFT01FVFJZX0FUT01JQ19DT1VOVEVSUx5HTF9NQVhfR0VPTUVUUllfSU1BR0VfVU5JRk9STVMgR0xfTUFYX0dFT01FVFJZX0lOUFVUX0NPTVBPTkVOVFMhR0xfTUFYX0dFT01FVFJZX09VVFBVVF9DT01QT05FTlRTH0dMX01BWF9HRU9NRVRSWV9PVVRQVVRfVkVSVElDRVMiR0xfTUFYX0dFT01FVFJZX1NIQURFUl9JTlZPQ0FUSU9OUyVHTF9NQVhfR0VPTUVUUllfU0hBREVSX1NUT1JBR0VfQkxPQ0tTI0dMX01BWF9HRU9NRVRSWV9URVhUVVJFX0lNQUdFX1VOSVRTJ0dMX01BWF9HRU9NRVRSWV9UT1RBTF9PVVRQVVRfQ09NUE9ORU5UUx5HTF9NQVhfR0VPTUVUUllfVU5JRk9STV9CTE9DS1MiR0xfTUFYX0dFT01FVFJZX1VOSUZPUk1fQ09NUE9ORU5UUxZHTF9NQVhfSU5URUdFUl9TQU1QTEVTE0dMX01BWF9MQUJFTF9MRU5HVEgbR0xfTUFYX1BST0dSQU1fVEVYRUxfT0ZGU0VUGEdMX01BWF9SRU5ERVJCVUZGRVJfU0laRRhHTF9NQVhfU0FNUExFX01BU0tfV09SRFMOR0xfTUFYX1NBTVBMRVMaR0xfTUFYX1NFUlZFUl9XQUlUX1RJTUVPVVQgR0xfTUFYX1NIQURFUl9TVE9SQUdFX0JMT0NLX1NJWkUlR0xfTUFYX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9CSU5ESU5HUypHTF9NQVhfVEVTU19DT05UUk9MX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMjR0xfTUFYX1RFU1NfQ09OVFJPTF9BVE9NSUNfQ09VTlRFUlMiR0xfTUFYX1RFU1NfQ09OVFJPTF9JTUFHRV9VTklGT1JNUyRHTF9NQVhfVEVTU19DT05UUk9MX0lOUFVUX0NPTVBPTkVOVFMlR0xfTUFYX1RFU1NfQ09OVFJPTF9PVVRQVVRfQ09NUE9ORU5UUylHTF9NQVhfVEVTU19DT05UUk9MX1NIQURFUl9TVE9SQUdFX0JMT0NLUydHTF9NQVhfVEVTU19DT05UUk9MX1RFWFRVUkVfSU1BR0VfVU5JVFMrR0xfTUFYX1RFU1NfQ09OVFJPTF9UT1RBTF9PVVRQVVRfQ09NUE9ORU5UUyJHTF9NQVhfVEVTU19DT05UUk9MX1VOSUZPUk1fQkxPQ0tTJkdMX01BWF9URVNTX0NPTlRST0xfVU5JRk9STV9DT01QT05FTlRTLUdMX01BWF9URVNTX0VWQUxVQVRJT05fQVRPTUlDX0NPVU5URVJfQlVGRkVSUyZHTF9NQVhfVEVTU19FVkFMVUFUSU9OX0FUT01JQ19DT1VOVEVSUyVHTF9NQVhfVEVTU19FVkFMVUFUSU9OX0lNQUdFX1VOSUZPUk1TJ0dMX01BWF9URVNTX0VWQUxVQVRJT05fSU5QVVRfQ09NUE9ORU5UUyhHTF9NQVhfVEVTU19FVkFMVUFUSU9OX09VVFBVVF9DT01QT05FTlRTLEdMX01BWF9URVNTX0VWQUxVQVRJT05fU0hBREVSX1NUT1JBR0VfQkxPQ0tTKkdMX01BWF9URVNTX0VWQUxVQVRJT05fVEVYVFVSRV9JTUFHRV9VTklUUyVHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1VOSUZPUk1fQkxPQ0tTKUdMX01BWF9URVNTX0VWQUxVQVRJT05fVU5JRk9STV9DT01QT05FTlRTFUdMX01BWF9URVNTX0dFTl9MRVZFTBVHTF9NQVhfUEFUQ0hfVkVSVElDRVMcR0xfTUFYX1RFU1NfUEFUQ0hfQ09NUE9ORU5UUxpHTF9NQVhfVEVYVFVSRV9CVUZGRVJfU0laRRpHTF9NQVhfVEVYVFVSRV9JTUFHRV9VTklUUxdHTF9NQVhfVEVYVFVSRV9MT0RfQklBUxNHTF9NQVhfVEVYVFVSRV9TSVpFMEdMX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfSU5URVJMRUFWRURfQ09NUE9ORU5UUypHTF9NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFSQVRFX0FUVFJJQlMtR0xfTUFYX1RSQU5TRk9STV9GRUVEQkFDS19TRVBBUkFURV9DT01QT05FTlRTGUdMX01BWF9VTklGT1JNX0JMT0NLX1NJWkUeR0xfTUFYX1VOSUZPUk1fQlVGRkVSX0JJTkRJTkdTGEdMX01BWF9VTklGT1JNX0xPQ0FUSU9OUxlHTF9NQVhfVkFSWUlOR19DT01QT05FTlRTFkdMX01BWF9WQVJZSU5HX1ZFQ1RPUlMdR0xfTUFYX1ZFUlRFWF9BVE9NSUNfQ09VTlRFUlMkR0xfTUFYX1ZFUlRFWF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTHUdMX01BWF9WRVJURVhfQVRUUklCX0JJTkRJTkdTG0dMX01BWF9WRVJURVhfQVRUUklCX1NUUklERSRHTF9NQVhfVkVSVEVYX0FUVFJJQl9SRUxBVElWRV9PRkZTRVQVR0xfTUFYX1ZFUlRFWF9BVFRSSUJTHEdMX01BWF9WRVJURVhfSU1BR0VfVU5JRk9STVMfR0xfTUFYX1ZFUlRFWF9PVVRQVVRfQ09NUE9ORU5UUyNHTF9NQVhfVkVSVEVYX1NIQURFUl9TVE9SQUdFX0JMT0NLUyFHTF9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFMcR0xfTUFYX1ZFUlRFWF9VTklGT1JNX0JMT0NLUyBHTF9NQVhfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUx1HTF9NQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUxRHTF9NQVhfVklFV1BPUlRfRElNUyRHTF9NSU5fRlJBR01FTlRfSU5URVJQT0xBVElPTl9PRkZTRVQbR0xfTUlOX1BST0dSQU1fVEVYRUxfT0ZGU0VUG0dMX01JTl9TQU1QTEVfU0hBRElOR19WQUxVRRBHTF9NSU5PUl9WRVJTSU9OH0dMX01VTFRJU0FNUExFX0xJTkVfV0lEVEhfUkFOR0UlR0xfTVVMVElTQU1QTEVfTElORV9XSURUSF9HUkFOVUxBUklUWSFHTF9OVU1fQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMRR0xfTlVNX0VYVEVOU0lPTlMdR0xfTlVNX1BST0dSQU1fQklOQVJZX0ZPUk1BVFMcR0xfTlVNX1NIQURFUl9CSU5BUllfRk9STUFUUxFHTF9QQUNLX0FMSUdOTUVOVBRHTF9QQUNLX0lNQUdFX0hFSUdIVBJHTF9QQUNLX1JPV19MRU5HVEgTR0xfUEFDS19TS0lQX0lNQUdFUxNHTF9QQUNLX1NLSVBfUElYRUxTEUdMX1BBQ0tfU0tJUF9ST1dTEUdMX1BBVENIX1ZFUlRJQ0VTHEdMX1BJWEVMX1BBQ0tfQlVGRkVSX0JJTkRJTkceR0xfUElYRUxfVU5QQUNLX0JVRkZFUl9CSU5ESU5HGEdMX1BPTFlHT05fT0ZGU0VUX0ZBQ1RPUhZHTF9QT0xZR09OX09GRlNFVF9GSUxMF0dMX1BPTFlHT05fT0ZGU0VUX1VOSVRTGUdMX1BSSU1JVElWRV9CT1VORElOR19CT1ggR0xfUFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgZR0xfUFJPR1JBTV9CSU5BUllfRk9STUFUUxtHTF9QUk9HUkFNX1BJUEVMSU5FX0JJTkRJTkcVR0xfUkFTVEVSSVpFUl9ESVNDQVJEDkdMX1JFQURfQlVGRkVSG0dMX1JFQURfRlJBTUVCVUZGRVJfQklORElORwtHTF9SRURfQklUUxdHTF9SRU5ERVJCVUZGRVJfQklORElORx5HTF9SRVNFVF9OT1RJRklDQVRJT05fU1RSQVRFR1kbR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFEUdMX1NBTVBMRV9CVUZGRVJTEkdMX1NBTVBMRV9DT1ZFUkFHRRlHTF9TQU1QTEVfQ09WRVJBR0VfSU5WRVJUGEdMX1NBTVBMRV9DT1ZFUkFHRV9WQUxVRRFHTF9TQU1QTEVfU0hBRElORxJHTF9TQU1QTEVSX0JJTkRJTkcKR0xfU0FNUExFUw5HTF9TQ0lTU09SX0JPWA9HTF9TQ0lTU09SX1RFU1QYR0xfU0hBREVSX0JJTkFSWV9GT1JNQVRTEkdMX1NIQURFUl9DT01QSUxFUiBHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfQklORElORylHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVB1HTF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfU0laRR5HTF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfU1RBUlQUR0xfU1RFTkNJTF9CQUNLX0ZBSUwUR0xfU1RFTkNJTF9CQUNLX0ZVTkMfR0xfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfRkFJTB9HTF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9QQVNTE0dMX1NURU5DSUxfQkFDS19SRUYaR0xfU1RFTkNJTF9CQUNLX1ZBTFVFX01BU0sZR0xfU1RFTkNJTF9CQUNLX1dSSVRFTUFTSw9HTF9TVEVOQ0lMX0JJVFMWR0xfU1RFTkNJTF9DTEVBUl9WQUxVRQ9HTF9TVEVOQ0lMX0ZBSUwPR0xfU1RFTkNJTF9GVU5DGkdMX1NURU5DSUxfUEFTU19ERVBUSF9GQUlMGkdMX1NURU5DSUxfUEFTU19ERVBUSF9QQVNTDkdMX1NURU5DSUxfUkVGD0dMX1NURU5DSUxfVEVTVBVHTF9TVEVOQ0lMX1ZBTFVFX01BU0sUR0xfU1RFTkNJTF9XUklURU1BU0sQR0xfU1VCUElYRUxfQklUUxVHTF9URVhUVVJFX0JJTkRJTkdfMkQfR0xfVEVYVFVSRV9CSU5ESU5HX0VYVEVSTkFMX09FUxtHTF9URVhUVVJFX0JJTkRJTkdfMkRfQVJSQVkhR0xfVEVYVFVSRV9CSU5ESU5HXzJEX01VTFRJU0FNUExFJ0dMX1RFWFRVUkVfQklORElOR18yRF9NVUxUSVNBTVBMRV9BUlJBWRVHTF9URVhUVVJFX0JJTkRJTkdfM0QZR0xfVEVYVFVSRV9CSU5ESU5HX0JVRkZFUhtHTF9URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVAhR0xfVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQX0FSUkFZGUdMX1RFWFRVUkVfQlVGRkVSX0JJTkRJTkciR0xfVEVYVFVSRV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVBxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQUNUSVZFHUdMX1RSQU5TRk9STV9GRUVEQkFDS19CSU5ESU5HJEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfQklORElORyFHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NJWkUiR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TVEFSVBxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfUEFVU0VEGUdMX1VOSUZPUk1fQlVGRkVSX0JJTkRJTkciR0xfVU5JRk9STV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVBZHTF9VTklGT1JNX0JVRkZFUl9TSVpFF0dMX1VOSUZPUk1fQlVGRkVSX1NUQVJUE0dMX1VOUEFDS19BTElHTk1FTlQWR0xfVU5QQUNLX0lNQUdFX0hFSUdIVBRHTF9VTlBBQ0tfUk9XX0xFTkdUSBVHTF9VTlBBQ0tfU0tJUF9JTUFHRVMVR0xfVU5QQUNLX1NLSVBfUElYRUxTE0dMX1VOUEFDS19TS0lQX1JPV1MXR0xfVkVSVEVYX0FSUkFZX0JJTkRJTkcZR0xfVkVSVEVYX0JJTkRJTkdfRElWSVNPUhhHTF9WRVJURVhfQklORElOR19PRkZTRVQYR0xfVkVSVEVYX0JJTkRJTkdfU1RSSURFC0dMX1ZJRVdQT1JUIUdMX01BWF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVBNHTF9HUFVfRElTSk9JTlRfRVhUhpkEhpsGhp0Ihp8KEWdsR2V0SW50ZWdlcjY0aV92BnZhbHVlcwQBAgIPZ2xHZXRJbnRlZ2VyNjR2AoahDIajCIalCg9nbEdldEludGVnZXI2NHYFcGFyYW2BKhFHTF9BQ1RJVkVfVEVYVFVSRRtHTF9BTElBU0VEX0xJTkVfV0lEVEhfUkFOR0UbR0xfQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFDUdMX0FMUEhBX0JJVFMXR0xfQVJSQVlfQlVGRkVSX0JJTkRJTkcgR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSX0JJTkRJTkcdR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSX1NJWkUeR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSX1NUQVJUCEdMX0JMRU5EDkdMX0JMRU5EX0NPTE9SEkdMX0JMRU5EX0RTVF9BTFBIQRBHTF9CTEVORF9EU1RfUkdCF0dMX0JMRU5EX0VRVUFUSU9OX0FMUEhBFUdMX0JMRU5EX0VRVUFUSU9OX1JHQhJHTF9CTEVORF9TUkNfQUxQSEEQR0xfQkxFTkRfU1JDX1JHQgxHTF9CTFVFX0JJVFMUR0xfQ09MT1JfQ0xFQVJfVkFMVUUSR0xfQ09MT1JfV1JJVEVNQVNLHUdMX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTEEdMX0NPTlRFWFRfRkxBR1MYR0xfQ09OVEVYVF9ST0JVU1RfQUNDRVNTG0dMX0NPUFlfUkVBRF9CVUZGRVJfQklORElORxxHTF9DT1BZX1dSSVRFX0JVRkZFUl9CSU5ESU5HDEdMX0NVTExfRkFDRRFHTF9DVUxMX0ZBQ0VfTU9ERRJHTF9DVVJSRU5UX1BST0dSQU0aR0xfREVCVUdfR1JPVVBfU1RBQ0tfREVQVEgYR0xfREVCVUdfTE9HR0VEX01FU1NBR0VTI0dMX0RFQlVHX05FWFRfTE9HR0VEX01FU1NBR0VfTEVOR1RIDUdMX0RFUFRIX0JJVFMUR0xfREVQVEhfQ0xFQVJfVkFMVUUNR0xfREVQVEhfRlVOQw5HTF9ERVBUSF9SQU5HRQ1HTF9ERVBUSF9URVNUEkdMX0RFUFRIX1dSSVRFTUFTSyNHTF9ESVNQQVRDSF9JTkRJUkVDVF9CVUZGRVJfQklORElORwlHTF9ESVRIRVIOR0xfRFJBV19CVUZGRVIPR0xfRFJBV19CVUZGRVIwD0dMX0RSQVdfQlVGRkVSMQ9HTF9EUkFXX0JVRkZFUjIPR0xfRFJBV19CVUZGRVIzD0dMX0RSQVdfQlVGRkVSNA9HTF9EUkFXX0JVRkZFUjUPR0xfRFJBV19CVUZGRVI2D0dMX0RSQVdfQlVGRkVSNw9HTF9EUkFXX0JVRkZFUjgPR0xfRFJBV19CVUZGRVI5EEdMX0RSQVdfQlVGRkVSMTAQR0xfRFJBV19CVUZGRVIxMRBHTF9EUkFXX0JVRkZFUjEyEEdMX0RSQVdfQlVGRkVSMTMQR0xfRFJBV19CVUZGRVIxNBBHTF9EUkFXX0JVRkZFUjE1G0dMX0RSQVdfRlJBTUVCVUZGRVJfQklORElORx9HTF9FTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HJUdMX0ZSQUdNRU5UX0lOVEVSUE9MQVRJT05fT0ZGU0VUX0JJVFMiR0xfRlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVA1HTF9GUk9OVF9GQUNFF0dMX0dFTkVSQVRFX01JUE1BUF9ISU5UDUdMX0dSRUVOX0JJVFMVR0xfSU1BR0VfQklORElOR19OQU1FFkdMX0lNQUdFX0JJTkRJTkdfTEVWRUwYR0xfSU1BR0VfQklORElOR19MQVlFUkVEFkdMX0lNQUdFX0JJTkRJTkdfTEFZRVIXR0xfSU1BR0VfQklORElOR19BQ0NFU1MXR0xfSU1BR0VfQklORElOR19GT1JNQVQjR0xfSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9GT1JNQVQhR0xfSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9UWVBFGUdMX0xBWUVSX1BST1ZPS0lOR19WRVJURVgNR0xfTElORV9XSURUSCpHTF9QUklNSVRJVkVfUkVTVEFSVF9GT1JfUEFUQ0hFU19TVVBQT1JURUQQR0xfTUFKT1JfVkVSU0lPThZHTF9NQVhfM0RfVEVYVFVSRV9TSVpFG0dMX01BWF9BUlJBWV9URVhUVVJFX0xBWUVSUyVHTF9NQVhfQVRPTUlDX0NPVU5URVJfQlVGRkVSX0JJTkRJTkdTIUdMX01BWF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfU0laRSZHTF9NQVhfQ09NQklORURfQVRPTUlDX0NPVU5URVJfQlVGRkVSUxhHTF9NQVhfQ09MT1JfQVRUQUNITUVOVFMcR0xfTUFYX0NPTE9SX1RFWFRVUkVfU0FNUExFUxxHTF9NQVhfREVQVEhfVEVYVFVSRV9TQU1QTEVTH0dMX01BWF9DT01CSU5FRF9BVE9NSUNfQ09VTlRFUlMSR0xfTUFYX0lNQUdFX1VOSVRTKkdMX01BWF9DT01CSU5FRF9DT01QVVRFX1VOSUZPUk1fQ09NUE9ORU5UUytHTF9NQVhfQ09NQklORURfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTK0dMX01BWF9DT01CSU5FRF9HRU9NRVRSWV9VTklGT1JNX0NPTVBPTkVOVFMlR0xfTUFYX0NPTUJJTkVEX1NIQURFUl9TVE9SQUdFX0JMT0NLUy9HTF9NQVhfQ09NQklORURfVEVTU19DT05UUk9MX1VOSUZPUk1fQ09NUE9ORU5UUzJHTF9NQVhfQ09NQklORURfVEVTU19FVkFMVUFUSU9OX1VOSUZPUk1fQ09NUE9ORU5UUyNHTF9NQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUydHTF9NQVhfQ09NQklORURfU0hBREVSX09VVFBVVF9SRVNPVVJDRVMeR0xfTUFYX0NPTUJJTkVEX1VOSUZPUk1fQkxPQ0tTKUdMX01BWF9DT01CSU5FRF9WRVJURVhfVU5JRk9STV9DT01QT05FTlRTJUdMX01BWF9DT01QVVRFX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMeR0xfTUFYX0NPTVBVVEVfQVRPTUlDX0NPVU5URVJTHUdMX01BWF9DT01QVVRFX0lNQUdFX1VOSUZPUk1THkdMX01BWF9DT01CSU5FRF9JTUFHRV9VTklGT1JNUyRHTF9NQVhfQ09NUFVURV9TSEFERVJfU1RPUkFHRV9CTE9DS1MiR0xfTUFYX0NPTVBVVEVfVEVYVFVSRV9JTUFHRV9VTklUUyFHTF9NQVhfQ09NUFVURV9TSEFSRURfTUVNT1JZX1NJWkUdR0xfTUFYX0NPTVBVVEVfVU5JRk9STV9CTE9DS1MhR0xfTUFYX0NPTVBVVEVfVU5JRk9STV9DT01QT05FTlRTH0dMX01BWF9DT01QVVRFX1dPUktfR1JPVVBfQ09VTlQlR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9JTlZPQ0FUSU9OUx5HTF9NQVhfQ09NUFVURV9XT1JLX0dST1VQX1NJWkUcR0xfTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRR5HTF9NQVhfREVCVUdfR1JPVVBfU1RBQ0tfREVQVEgcR0xfTUFYX0RFQlVHX0xPR0dFRF9NRVNTQUdFUxtHTF9NQVhfREVCVUdfTUVTU0FHRV9MRU5HVEgTR0xfTUFYX0RSQVdfQlVGRkVSUxRHTF9NQVhfRUxFTUVOVF9JTkRFWBdHTF9NQVhfRUxFTUVOVFNfSU5ESUNFUxhHTF9NQVhfRUxFTUVOVFNfVkVSVElDRVMmR0xfTUFYX0ZSQUdNRU5UX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMfR0xfTUFYX0ZSQUdNRU5UX0FUT01JQ19DT1VOVEVSUx5HTF9NQVhfRlJBR01FTlRfSU1BR0VfVU5JRk9STVMgR0xfTUFYX0ZSQUdNRU5UX0lOUFVUX0NPTVBPTkVOVFMkR0xfTUFYX0ZSQUdNRU5UX0lOVEVSUE9MQVRJT05fT0ZGU0VUJUdMX01BWF9GUkFHTUVOVF9TSEFERVJfU1RPUkFHRV9CTE9DS1MkR0xfTUlOX1BST0dSQU1fVEVYVFVSRV9HQVRIRVJfT0ZGU0VUJEdMX01BWF9QUk9HUkFNX1RFWFRVUkVfR0FUSEVSX09GRlNFVB5HTF9NQVhfRlJBR01FTlRfVU5JRk9STV9CTE9DS1MiR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UUx9HTF9NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTGUdMX01BWF9GUkFNRUJVRkZFUl9IRUlHSFQZR0xfTUFYX0ZSQU1FQlVGRkVSX0xBWUVSUxpHTF9NQVhfRlJBTUVCVUZGRVJfU0FNUExFUxhHTF9NQVhfRlJBTUVCVUZGRVJfV0lEVEgmR0xfTUFYX0dFT01FVFJZX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMfR0xfTUFYX0dFT01FVFJZX0FUT01JQ19DT1VOVEVSUx5HTF9NQVhfR0VPTUVUUllfSU1BR0VfVU5JRk9STVMgR0xfTUFYX0dFT01FVFJZX0lOUFVUX0NPTVBPTkVOVFMhR0xfTUFYX0dFT01FVFJZX09VVFBVVF9DT01QT05FTlRTH0dMX01BWF9HRU9NRVRSWV9PVVRQVVRfVkVSVElDRVMiR0xfTUFYX0dFT01FVFJZX1NIQURFUl9JTlZPQ0FUSU9OUyVHTF9NQVhfR0VPTUVUUllfU0hBREVSX1NUT1JBR0VfQkxPQ0tTI0dMX01BWF9HRU9NRVRSWV9URVhUVVJFX0lNQUdFX1VOSVRTJ0dMX01BWF9HRU9NRVRSWV9UT1RBTF9PVVRQVVRfQ09NUE9ORU5UUx5HTF9NQVhfR0VPTUVUUllfVU5JRk9STV9CTE9DS1MiR0xfTUFYX0dFT01FVFJZX1VOSUZPUk1fQ09NUE9ORU5UUxZHTF9NQVhfSU5URUdFUl9TQU1QTEVTE0dMX01BWF9MQUJFTF9MRU5HVEgbR0xfTUFYX1BST0dSQU1fVEVYRUxfT0ZGU0VUGEdMX01BWF9SRU5ERVJCVUZGRVJfU0laRRhHTF9NQVhfU0FNUExFX01BU0tfV09SRFMOR0xfTUFYX1NBTVBMRVMaR0xfTUFYX1NFUlZFUl9XQUlUX1RJTUVPVVQgR0xfTUFYX1NIQURFUl9TVE9SQUdFX0JMT0NLX1NJWkUlR0xfTUFYX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9CSU5ESU5HUypHTF9NQVhfVEVTU19DT05UUk9MX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMjR0xfTUFYX1RFU1NfQ09OVFJPTF9BVE9NSUNfQ09VTlRFUlMiR0xfTUFYX1RFU1NfQ09OVFJPTF9JTUFHRV9VTklGT1JNUyRHTF9NQVhfVEVTU19DT05UUk9MX0lOUFVUX0NPTVBPTkVOVFMlR0xfTUFYX1RFU1NfQ09OVFJPTF9PVVRQVVRfQ09NUE9ORU5UUylHTF9NQVhfVEVTU19DT05UUk9MX1NIQURFUl9TVE9SQUdFX0JMT0NLUydHTF9NQVhfVEVTU19DT05UUk9MX1RFWFRVUkVfSU1BR0VfVU5JVFMrR0xfTUFYX1RFU1NfQ09OVFJPTF9UT1RBTF9PVVRQVVRfQ09NUE9ORU5UUyJHTF9NQVhfVEVTU19DT05UUk9MX1VOSUZPUk1fQkxPQ0tTJkdMX01BWF9URVNTX0NPTlRST0xfVU5JRk9STV9DT01QT05FTlRTLUdMX01BWF9URVNTX0VWQUxVQVRJT05fQVRPTUlDX0NPVU5URVJfQlVGRkVSUyZHTF9NQVhfVEVTU19FVkFMVUFUSU9OX0FUT01JQ19DT1VOVEVSUyVHTF9NQVhfVEVTU19FVkFMVUFUSU9OX0lNQUdFX1VOSUZPUk1TJ0dMX01BWF9URVNTX0VWQUxVQVRJT05fSU5QVVRfQ09NUE9ORU5UUyhHTF9NQVhfVEVTU19FVkFMVUFUSU9OX09VVFBVVF9DT01QT05FTlRTLEdMX01BWF9URVNTX0VWQUxVQVRJT05fU0hBREVSX1NUT1JBR0VfQkxPQ0tTKkdMX01BWF9URVNTX0VWQUxVQVRJT05fVEVYVFVSRV9JTUFHRV9VTklUUyVHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1VOSUZPUk1fQkxPQ0tTKUdMX01BWF9URVNTX0VWQUxVQVRJT05fVU5JRk9STV9DT01QT05FTlRTFUdMX01BWF9URVNTX0dFTl9MRVZFTBVHTF9NQVhfUEFUQ0hfVkVSVElDRVMcR0xfTUFYX1RFU1NfUEFUQ0hfQ09NUE9ORU5UUxpHTF9NQVhfVEVYVFVSRV9CVUZGRVJfU0laRRpHTF9NQVhfVEVYVFVSRV9JTUFHRV9VTklUUxdHTF9NQVhfVEVYVFVSRV9MT0RfQklBUxNHTF9NQVhfVEVYVFVSRV9TSVpFMEdMX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfSU5URVJMRUFWRURfQ09NUE9ORU5UUypHTF9NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFSQVRFX0FUVFJJQlMtR0xfTUFYX1RSQU5TRk9STV9GRUVEQkFDS19TRVBBUkFURV9DT01QT05FTlRTGUdMX01BWF9VTklGT1JNX0JMT0NLX1NJWkUeR0xfTUFYX1VOSUZPUk1fQlVGRkVSX0JJTkRJTkdTGEdMX01BWF9VTklGT1JNX0xPQ0FUSU9OUxlHTF9NQVhfVkFSWUlOR19DT01QT05FTlRTFkdMX01BWF9WQVJZSU5HX1ZFQ1RPUlMdR0xfTUFYX1ZFUlRFWF9BVE9NSUNfQ09VTlRFUlMkR0xfTUFYX1ZFUlRFWF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTHUdMX01BWF9WRVJURVhfQVRUUklCX0JJTkRJTkdTG0dMX01BWF9WRVJURVhfQVRUUklCX1NUUklERSRHTF9NQVhfVkVSVEVYX0FUVFJJQl9SRUxBVElWRV9PRkZTRVQVR0xfTUFYX1ZFUlRFWF9BVFRSSUJTHEdMX01BWF9WRVJURVhfSU1BR0VfVU5JRk9STVMfR0xfTUFYX1ZFUlRFWF9PVVRQVVRfQ09NUE9ORU5UUyNHTF9NQVhfVkVSVEVYX1NIQURFUl9TVE9SQUdFX0JMT0NLUyFHTF9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFMcR0xfTUFYX1ZFUlRFWF9VTklGT1JNX0JMT0NLUyBHTF9NQVhfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUx1HTF9NQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUxRHTF9NQVhfVklFV1BPUlRfRElNUyRHTF9NSU5fRlJBR01FTlRfSU5URVJQT0xBVElPTl9PRkZTRVQbR0xfTUlOX1BST0dSQU1fVEVYRUxfT0ZGU0VUG0dMX01JTl9TQU1QTEVfU0hBRElOR19WQUxVRRBHTF9NSU5PUl9WRVJTSU9OH0dMX01VTFRJU0FNUExFX0xJTkVfV0lEVEhfUkFOR0UlR0xfTVVMVElTQU1QTEVfTElORV9XSURUSF9HUkFOVUxBUklUWSFHTF9OVU1fQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMRR0xfTlVNX0VYVEVOU0lPTlMdR0xfTlVNX1BST0dSQU1fQklOQVJZX0ZPUk1BVFMcR0xfTlVNX1NIQURFUl9CSU5BUllfRk9STUFUUxFHTF9QQUNLX0FMSUdOTUVOVBRHTF9QQUNLX0lNQUdFX0hFSUdIVBJHTF9QQUNLX1JPV19MRU5HVEgTR0xfUEFDS19TS0lQX0lNQUdFUxNHTF9QQUNLX1NLSVBfUElYRUxTEUdMX1BBQ0tfU0tJUF9ST1dTEUdMX1BBVENIX1ZFUlRJQ0VTHEdMX1BJWEVMX1BBQ0tfQlVGRkVSX0JJTkRJTkceR0xfUElYRUxfVU5QQUNLX0JVRkZFUl9CSU5ESU5HGEdMX1BPTFlHT05fT0ZGU0VUX0ZBQ1RPUhZHTF9QT0xZR09OX09GRlNFVF9GSUxMF0dMX1BPTFlHT05fT0ZGU0VUX1VOSVRTGUdMX1BSSU1JVElWRV9CT1VORElOR19CT1ggR0xfUFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgZR0xfUFJPR1JBTV9CSU5BUllfRk9STUFUUxtHTF9QUk9HUkFNX1BJUEVMSU5FX0JJTkRJTkcVR0xfUkFTVEVSSVpFUl9ESVNDQVJEDkdMX1JFQURfQlVGRkVSG0dMX1JFQURfRlJBTUVCVUZGRVJfQklORElORwtHTF9SRURfQklUUxdHTF9SRU5ERVJCVUZGRVJfQklORElORx5HTF9SRVNFVF9OT1RJRklDQVRJT05fU1RSQVRFR1kbR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFEUdMX1NBTVBMRV9CVUZGRVJTEkdMX1NBTVBMRV9DT1ZFUkFHRRlHTF9TQU1QTEVfQ09WRVJBR0VfSU5WRVJUGEdMX1NBTVBMRV9DT1ZFUkFHRV9WQUxVRRFHTF9TQU1QTEVfU0hBRElORxJHTF9TQU1QTEVSX0JJTkRJTkcKR0xfU0FNUExFUw5HTF9TQ0lTU09SX0JPWA9HTF9TQ0lTU09SX1RFU1QYR0xfU0hBREVSX0JJTkFSWV9GT1JNQVRTEkdMX1NIQURFUl9DT01QSUxFUiBHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfQklORElORylHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVB1HTF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfU0laRR5HTF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfU1RBUlQUR0xfU1RFTkNJTF9CQUNLX0ZBSUwUR0xfU1RFTkNJTF9CQUNLX0ZVTkMfR0xfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfRkFJTB9HTF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9QQVNTE0dMX1NURU5DSUxfQkFDS19SRUYaR0xfU1RFTkNJTF9CQUNLX1ZBTFVFX01BU0sZR0xfU1RFTkNJTF9CQUNLX1dSSVRFTUFTSw9HTF9TVEVOQ0lMX0JJVFMWR0xfU1RFTkNJTF9DTEVBUl9WQUxVRQ9HTF9TVEVOQ0lMX0ZBSUwPR0xfU1RFTkNJTF9GVU5DGkdMX1NURU5DSUxfUEFTU19ERVBUSF9GQUlMGkdMX1NURU5DSUxfUEFTU19ERVBUSF9QQVNTDkdMX1NURU5DSUxfUkVGD0dMX1NURU5DSUxfVEVTVBVHTF9TVEVOQ0lMX1ZBTFVFX01BU0sUR0xfU1RFTkNJTF9XUklURU1BU0sQR0xfU1VCUElYRUxfQklUUxVHTF9URVhUVVJFX0JJTkRJTkdfMkQfR0xfVEVYVFVSRV9CSU5ESU5HX0VYVEVSTkFMX09FUxtHTF9URVhUVVJFX0JJTkRJTkdfMkRfQVJSQVkhR0xfVEVYVFVSRV9CSU5ESU5HXzJEX01VTFRJU0FNUExFJ0dMX1RFWFRVUkVfQklORElOR18yRF9NVUxUSVNBTVBMRV9BUlJBWRVHTF9URVhUVVJFX0JJTkRJTkdfM0QZR0xfVEVYVFVSRV9CSU5ESU5HX0JVRkZFUhtHTF9URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVAhR0xfVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQX0FSUkFZGUdMX1RFWFRVUkVfQlVGRkVSX0JJTkRJTkciR0xfVEVYVFVSRV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVBxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQUNUSVZFHUdMX1RSQU5TRk9STV9GRUVEQkFDS19CSU5ESU5HJEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfQklORElORyFHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NJWkUiR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TVEFSVBxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfUEFVU0VEGUdMX1VOSUZPUk1fQlVGRkVSX0JJTkRJTkciR0xfVU5JRk9STV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVBZHTF9VTklGT1JNX0JVRkZFUl9TSVpFF0dMX1VOSUZPUk1fQlVGRkVSX1NUQVJUE0dMX1VOUEFDS19BTElHTk1FTlQWR0xfVU5QQUNLX0lNQUdFX0hFSUdIVBRHTF9VTlBBQ0tfUk9XX0xFTkdUSBVHTF9VTlBBQ0tfU0tJUF9JTUFHRVMVR0xfVU5QQUNLX1NLSVBfUElYRUxTE0dMX1VOUEFDS19TS0lQX1JPV1MXR0xfVkVSVEVYX0FSUkFZX0JJTkRJTkcZR0xfVkVSVEVYX0JJTkRJTkdfRElWSVNPUhhHTF9WRVJURVhfQklORElOR19PRkZTRVQYR0xfVkVSVEVYX0JJTkRJTkdfU1RSSURFC0dMX1ZJRVdQT1JUIUdMX01BWF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVBNHTF9HUFVfRElTSk9JTlRfRVhUhqcEhqkGhqsIhq0KD2dsR2V0SW50ZWdlcjY0dgZ2YWx1ZXMEAQICFGdsR2V0SW50ZWdlcjY0dkFQUExFAoavDIaxCIazChRnbEdldEludGVnZXI2NHZBUFBMRQVwbmFtZYEqEUdMX0FDVElWRV9URVhUVVJFG0dMX0FMSUFTRURfTElORV9XSURUSF9SQU5HRRtHTF9BTElBU0VEX1BPSU5UX1NJWkVfUkFOR0UNR0xfQUxQSEFfQklUUxdHTF9BUlJBWV9CVUZGRVJfQklORElORyBHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfQklORElORx1HTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfU0laRR5HTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfU1RBUlQIR0xfQkxFTkQOR0xfQkxFTkRfQ09MT1ISR0xfQkxFTkRfRFNUX0FMUEhBEEdMX0JMRU5EX0RTVF9SR0IXR0xfQkxFTkRfRVFVQVRJT05fQUxQSEEVR0xfQkxFTkRfRVFVQVRJT05fUkdCEkdMX0JMRU5EX1NSQ19BTFBIQRBHTF9CTEVORF9TUkNfUkdCDEdMX0JMVUVfQklUUxRHTF9DT0xPUl9DTEVBUl9WQUxVRRJHTF9DT0xPUl9XUklURU1BU0sdR0xfQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMQR0xfQ09OVEVYVF9GTEFHUxhHTF9DT05URVhUX1JPQlVTVF9BQ0NFU1MbR0xfQ09QWV9SRUFEX0JVRkZFUl9CSU5ESU5HHEdMX0NPUFlfV1JJVEVfQlVGRkVSX0JJTkRJTkcMR0xfQ1VMTF9GQUNFEUdMX0NVTExfRkFDRV9NT0RFEkdMX0NVUlJFTlRfUFJPR1JBTRpHTF9ERUJVR19HUk9VUF9TVEFDS19ERVBUSBhHTF9ERUJVR19MT0dHRURfTUVTU0FHRVMjR0xfREVCVUdfTkVYVF9MT0dHRURfTUVTU0FHRV9MRU5HVEgNR0xfREVQVEhfQklUUxRHTF9ERVBUSF9DTEVBUl9WQUxVRQ1HTF9ERVBUSF9GVU5DDkdMX0RFUFRIX1JBTkdFDUdMX0RFUFRIX1RFU1QSR0xfREVQVEhfV1JJVEVNQVNLI0dMX0RJU1BBVENIX0lORElSRUNUX0JVRkZFUl9CSU5ESU5HCUdMX0RJVEhFUg5HTF9EUkFXX0JVRkZFUg9HTF9EUkFXX0JVRkZFUjAPR0xfRFJBV19CVUZGRVIxD0dMX0RSQVdfQlVGRkVSMg9HTF9EUkFXX0JVRkZFUjMPR0xfRFJBV19CVUZGRVI0D0dMX0RSQVdfQlVGRkVSNQ9HTF9EUkFXX0JVRkZFUjYPR0xfRFJBV19CVUZGRVI3D0dMX0RSQVdfQlVGRkVSOA9HTF9EUkFXX0JVRkZFUjkQR0xfRFJBV19CVUZGRVIxMBBHTF9EUkFXX0JVRkZFUjExEEdMX0RSQVdfQlVGRkVSMTIQR0xfRFJBV19CVUZGRVIxMxBHTF9EUkFXX0JVRkZFUjE0EEdMX0RSQVdfQlVGRkVSMTUbR0xfRFJBV19GUkFNRUJVRkZFUl9CSU5ESU5HH0dMX0VMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkclR0xfRlJBR01FTlRfSU5URVJQT0xBVElPTl9PRkZTRVRfQklUUyJHTF9GUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UDUdMX0ZST05UX0ZBQ0UXR0xfR0VORVJBVEVfTUlQTUFQX0hJTlQNR0xfR1JFRU5fQklUUxVHTF9JTUFHRV9CSU5ESU5HX05BTUUWR0xfSU1BR0VfQklORElOR19MRVZFTBhHTF9JTUFHRV9CSU5ESU5HX0xBWUVSRUQWR0xfSU1BR0VfQklORElOR19MQVlFUhdHTF9JTUFHRV9CSU5ESU5HX0FDQ0VTUxdHTF9JTUFHRV9CSU5ESU5HX0ZPUk1BVCNHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX0ZPUk1BVCFHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX1RZUEUZR0xfTEFZRVJfUFJPVk9LSU5HX1ZFUlRFWA1HTF9MSU5FX1dJRFRIKkdMX1BSSU1JVElWRV9SRVNUQVJUX0ZPUl9QQVRDSEVTX1NVUFBPUlRFRBBHTF9NQUpPUl9WRVJTSU9OFkdMX01BWF8zRF9URVhUVVJFX1NJWkUbR0xfTUFYX0FSUkFZX1RFWFRVUkVfTEFZRVJTJUdMX01BWF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfQklORElOR1MhR0xfTUFYX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TSVpFJkdMX01BWF9DT01CSU5FRF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTGEdMX01BWF9DT0xPUl9BVFRBQ0hNRU5UUxxHTF9NQVhfQ09MT1JfVEVYVFVSRV9TQU1QTEVTHEdMX01BWF9ERVBUSF9URVhUVVJFX1NBTVBMRVMfR0xfTUFYX0NPTUJJTkVEX0FUT01JQ19DT1VOVEVSUxJHTF9NQVhfSU1BR0VfVU5JVFMqR0xfTUFYX0NPTUJJTkVEX0NPTVBVVEVfVU5JRk9STV9DT01QT05FTlRTK0dMX01BWF9DT01CSU5FRF9GUkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFMrR0xfTUFYX0NPTUJJTkVEX0dFT01FVFJZX1VOSUZPUk1fQ09NUE9ORU5UUyVHTF9NQVhfQ09NQklORURfU0hBREVSX1NUT1JBR0VfQkxPQ0tTL0dMX01BWF9DT01CSU5FRF9URVNTX0NPTlRST0xfVU5JRk9STV9DT01QT05FTlRTMkdMX01BWF9DT01CSU5FRF9URVNTX0VWQUxVQVRJT05fVU5JRk9STV9DT01QT05FTlRTI0dMX01BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTJ0dMX01BWF9DT01CSU5FRF9TSEFERVJfT1VUUFVUX1JFU09VUkNFUx5HTF9NQVhfQ09NQklORURfVU5JRk9STV9CTE9DS1MpR0xfTUFYX0NPTUJJTkVEX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFMlR0xfTUFYX0NPTVBVVEVfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx5HTF9NQVhfQ09NUFVURV9BVE9NSUNfQ09VTlRFUlMdR0xfTUFYX0NPTVBVVEVfSU1BR0VfVU5JRk9STVMeR0xfTUFYX0NPTUJJTkVEX0lNQUdFX1VOSUZPUk1TJEdMX01BWF9DT01QVVRFX1NIQURFUl9TVE9SQUdFX0JMT0NLUyJHTF9NQVhfQ09NUFVURV9URVhUVVJFX0lNQUdFX1VOSVRTIUdMX01BWF9DT01QVVRFX1NIQVJFRF9NRU1PUllfU0laRR1HTF9NQVhfQ09NUFVURV9VTklGT1JNX0JMT0NLUyFHTF9NQVhfQ09NUFVURV9VTklGT1JNX0NPTVBPTkVOVFMfR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9DT1VOVCVHTF9NQVhfQ09NUFVURV9XT1JLX0dST1VQX0lOVk9DQVRJT05THkdMX01BWF9DT01QVVRFX1dPUktfR1JPVVBfU0laRRxHTF9NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFHkdMX01BWF9ERUJVR19HUk9VUF9TVEFDS19ERVBUSBxHTF9NQVhfREVCVUdfTE9HR0VEX01FU1NBR0VTG0dMX01BWF9ERUJVR19NRVNTQUdFX0xFTkdUSBNHTF9NQVhfRFJBV19CVUZGRVJTFEdMX01BWF9FTEVNRU5UX0lOREVYF0dMX01BWF9FTEVNRU5UU19JTkRJQ0VTGEdMX01BWF9FTEVNRU5UU19WRVJUSUNFUyZHTF9NQVhfRlJBR01FTlRfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx9HTF9NQVhfRlJBR01FTlRfQVRPTUlDX0NPVU5URVJTHkdMX01BWF9GUkFHTUVOVF9JTUFHRV9VTklGT1JNUyBHTF9NQVhfRlJBR01FTlRfSU5QVVRfQ09NUE9ORU5UUyRHTF9NQVhfRlJBR01FTlRfSU5URVJQT0xBVElPTl9PRkZTRVQlR0xfTUFYX0ZSQUdNRU5UX1NIQURFUl9TVE9SQUdFX0JMT0NLUyRHTF9NSU5fUFJPR1JBTV9URVhUVVJFX0dBVEhFUl9PRkZTRVQkR0xfTUFYX1BST0dSQU1fVEVYVFVSRV9HQVRIRVJfT0ZGU0VUHkdMX01BWF9GUkFHTUVOVF9VTklGT1JNX0JMT0NLUyJHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTH0dMX01BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMZR0xfTUFYX0ZSQU1FQlVGRkVSX0hFSUdIVBlHTF9NQVhfRlJBTUVCVUZGRVJfTEFZRVJTGkdMX01BWF9GUkFNRUJVRkZFUl9TQU1QTEVTGEdMX01BWF9GUkFNRUJVRkZFUl9XSURUSCZHTF9NQVhfR0VPTUVUUllfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx9HTF9NQVhfR0VPTUVUUllfQVRPTUlDX0NPVU5URVJTHkdMX01BWF9HRU9NRVRSWV9JTUFHRV9VTklGT1JNUyBHTF9NQVhfR0VPTUVUUllfSU5QVVRfQ09NUE9ORU5UUyFHTF9NQVhfR0VPTUVUUllfT1VUUFVUX0NPTVBPTkVOVFMfR0xfTUFYX0dFT01FVFJZX09VVFBVVF9WRVJUSUNFUyJHTF9NQVhfR0VPTUVUUllfU0hBREVSX0lOVk9DQVRJT05TJUdMX01BWF9HRU9NRVRSWV9TSEFERVJfU1RPUkFHRV9CTE9DS1MjR0xfTUFYX0dFT01FVFJZX1RFWFRVUkVfSU1BR0VfVU5JVFMnR0xfTUFYX0dFT01FVFJZX1RPVEFMX09VVFBVVF9DT01QT05FTlRTHkdMX01BWF9HRU9NRVRSWV9VTklGT1JNX0JMT0NLUyJHTF9NQVhfR0VPTUVUUllfVU5JRk9STV9DT01QT05FTlRTFkdMX01BWF9JTlRFR0VSX1NBTVBMRVMTR0xfTUFYX0xBQkVMX0xFTkdUSBtHTF9NQVhfUFJPR1JBTV9URVhFTF9PRkZTRVQYR0xfTUFYX1JFTkRFUkJVRkZFUl9TSVpFGEdMX01BWF9TQU1QTEVfTUFTS19XT1JEUw5HTF9NQVhfU0FNUExFUxpHTF9NQVhfU0VSVkVSX1dBSVRfVElNRU9VVCBHTF9NQVhfU0hBREVSX1NUT1JBR0VfQkxPQ0tfU0laRSVHTF9NQVhfU0hBREVSX1NUT1JBR0VfQlVGRkVSX0JJTkRJTkdTKkdMX01BWF9URVNTX0NPTlRST0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSUyNHTF9NQVhfVEVTU19DT05UUk9MX0FUT01JQ19DT1VOVEVSUyJHTF9NQVhfVEVTU19DT05UUk9MX0lNQUdFX1VOSUZPUk1TJEdMX01BWF9URVNTX0NPTlRST0xfSU5QVVRfQ09NUE9ORU5UUyVHTF9NQVhfVEVTU19DT05UUk9MX09VVFBVVF9DT01QT05FTlRTKUdMX01BWF9URVNTX0NPTlRST0xfU0hBREVSX1NUT1JBR0VfQkxPQ0tTJ0dMX01BWF9URVNTX0NPTlRST0xfVEVYVFVSRV9JTUFHRV9VTklUUytHTF9NQVhfVEVTU19DT05UUk9MX1RPVEFMX09VVFBVVF9DT01QT05FTlRTIkdMX01BWF9URVNTX0NPTlRST0xfVU5JRk9STV9CTE9DS1MmR0xfTUFYX1RFU1NfQ09OVFJPTF9VTklGT1JNX0NPTVBPTkVOVFMtR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTJkdMX01BWF9URVNTX0VWQUxVQVRJT05fQVRPTUlDX0NPVU5URVJTJUdMX01BWF9URVNTX0VWQUxVQVRJT05fSU1BR0VfVU5JRk9STVMnR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9JTlBVVF9DT01QT05FTlRTKEdMX01BWF9URVNTX0VWQUxVQVRJT05fT1VUUFVUX0NPTVBPTkVOVFMsR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9TSEFERVJfU1RPUkFHRV9CTE9DS1MqR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9URVhUVVJFX0lNQUdFX1VOSVRTJUdMX01BWF9URVNTX0VWQUxVQVRJT05fVU5JRk9STV9CTE9DS1MpR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0NPTVBPTkVOVFMVR0xfTUFYX1RFU1NfR0VOX0xFVkVMFUdMX01BWF9QQVRDSF9WRVJUSUNFUxxHTF9NQVhfVEVTU19QQVRDSF9DT01QT05FTlRTGkdMX01BWF9URVhUVVJFX0JVRkZFUl9TSVpFGkdMX01BWF9URVhUVVJFX0lNQUdFX1VOSVRTF0dMX01BWF9URVhUVVJFX0xPRF9CSUFTE0dMX01BWF9URVhUVVJFX1NJWkUwR0xfTUFYX1RSQU5TRk9STV9GRUVEQkFDS19JTlRFUkxFQVZFRF9DT01QT05FTlRTKkdMX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQVRUUklCUy1HTF9NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFSQVRFX0NPTVBPTkVOVFMZR0xfTUFYX1VOSUZPUk1fQkxPQ0tfU0laRR5HTF9NQVhfVU5JRk9STV9CVUZGRVJfQklORElOR1MYR0xfTUFYX1VOSUZPUk1fTE9DQVRJT05TGUdMX01BWF9WQVJZSU5HX0NPTVBPTkVOVFMWR0xfTUFYX1ZBUllJTkdfVkVDVE9SUx1HTF9NQVhfVkVSVEVYX0FUT01JQ19DT1VOVEVSUyRHTF9NQVhfVkVSVEVYX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMdR0xfTUFYX1ZFUlRFWF9BVFRSSUJfQklORElOR1MbR0xfTUFYX1ZFUlRFWF9BVFRSSUJfU1RSSURFJEdMX01BWF9WRVJURVhfQVRUUklCX1JFTEFUSVZFX09GRlNFVBVHTF9NQVhfVkVSVEVYX0FUVFJJQlMcR0xfTUFYX1ZFUlRFWF9JTUFHRV9VTklGT1JNUx9HTF9NQVhfVkVSVEVYX09VVFBVVF9DT01QT05FTlRTI0dMX01BWF9WRVJURVhfU0hBREVSX1NUT1JBR0VfQkxPQ0tTIUdMX01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUxxHTF9NQVhfVkVSVEVYX1VOSUZPUk1fQkxPQ0tTIEdMX01BWF9WRVJURVhfVU5JRk9STV9DT01QT05FTlRTHUdMX01BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTFEdMX01BWF9WSUVXUE9SVF9ESU1TJEdMX01JTl9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVBtHTF9NSU5fUFJPR1JBTV9URVhFTF9PRkZTRVQbR0xfTUlOX1NBTVBMRV9TSEFESU5HX1ZBTFVFEEdMX01JTk9SX1ZFUlNJT04fR0xfTVVMVElTQU1QTEVfTElORV9XSURUSF9SQU5HRSVHTF9NVUxUSVNBTVBMRV9MSU5FX1dJRFRIX0dSQU5VTEFSSVRZIUdMX05VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUxFHTF9OVU1fRVhURU5TSU9OUx1HTF9OVU1fUFJPR1JBTV9CSU5BUllfRk9STUFUUxxHTF9OVU1fU0hBREVSX0JJTkFSWV9GT1JNQVRTEUdMX1BBQ0tfQUxJR05NRU5UFEdMX1BBQ0tfSU1BR0VfSEVJR0hUEkdMX1BBQ0tfUk9XX0xFTkdUSBNHTF9QQUNLX1NLSVBfSU1BR0VTE0dMX1BBQ0tfU0tJUF9QSVhFTFMRR0xfUEFDS19TS0lQX1JPV1MRR0xfUEFUQ0hfVkVSVElDRVMcR0xfUElYRUxfUEFDS19CVUZGRVJfQklORElORx5HTF9QSVhFTF9VTlBBQ0tfQlVGRkVSX0JJTkRJTkcYR0xfUE9MWUdPTl9PRkZTRVRfRkFDVE9SFkdMX1BPTFlHT05fT0ZGU0VUX0ZJTEwXR0xfUE9MWUdPTl9PRkZTRVRfVU5JVFMZR0xfUFJJTUlUSVZFX0JPVU5ESU5HX0JPWCBHTF9QUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWBlHTF9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTG0dMX1BST0dSQU1fUElQRUxJTkVfQklORElORxVHTF9SQVNURVJJWkVSX0RJU0NBUkQOR0xfUkVBRF9CVUZGRVIbR0xfUkVBRF9GUkFNRUJVRkZFUl9CSU5ESU5HC0dMX1JFRF9CSVRTF0dMX1JFTkRFUkJVRkZFUl9CSU5ESU5HHkdMX1JFU0VUX05PVElGSUNBVElPTl9TVFJBVEVHWRtHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0URR0xfU0FNUExFX0JVRkZFUlMSR0xfU0FNUExFX0NPVkVSQUdFGUdMX1NBTVBMRV9DT1ZFUkFHRV9JTlZFUlQYR0xfU0FNUExFX0NPVkVSQUdFX1ZBTFVFEUdMX1NBTVBMRV9TSEFESU5HEkdMX1NBTVBMRVJfQklORElORwpHTF9TQU1QTEVTDkdMX1NDSVNTT1JfQk9YD0dMX1NDSVNTT1JfVEVTVBhHTF9TSEFERVJfQklOQVJZX0ZPUk1BVFMSR0xfU0hBREVSX0NPTVBJTEVSIEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9CSU5ESU5HKUdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UHUdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9TSVpFHkdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9TVEFSVBRHTF9TVEVOQ0lMX0JBQ0tfRkFJTBRHTF9TVEVOQ0lMX0JBQ0tfRlVOQx9HTF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMH0dMX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1MTR0xfU1RFTkNJTF9CQUNLX1JFRhpHTF9TVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTSxlHTF9TVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLD0dMX1NURU5DSUxfQklUUxZHTF9TVEVOQ0lMX0NMRUFSX1ZBTFVFD0dMX1NURU5DSUxfRkFJTA9HTF9TVEVOQ0lMX0ZVTkMaR0xfU1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUwaR0xfU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1MOR0xfU1RFTkNJTF9SRUYPR0xfU1RFTkNJTF9URVNUFUdMX1NURU5DSUxfVkFMVUVfTUFTSxRHTF9TVEVOQ0lMX1dSSVRFTUFTSxBHTF9TVUJQSVhFTF9CSVRTFUdMX1RFWFRVUkVfQklORElOR18yRB9HTF9URVhUVVJFX0JJTkRJTkdfRVhURVJOQUxfT0VTG0dMX1RFWFRVUkVfQklORElOR18yRF9BUlJBWSFHTF9URVhUVVJFX0JJTkRJTkdfMkRfTVVMVElTQU1QTEUnR0xfVEVYVFVSRV9CSU5ESU5HXzJEX01VTFRJU0FNUExFX0FSUkFZFUdMX1RFWFRVUkVfQklORElOR18zRBlHTF9URVhUVVJFX0JJTkRJTkdfQlVGRkVSG0dMX1RFWFRVUkVfQklORElOR19DVUJFX01BUCFHTF9URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVBfQVJSQVkZR0xfVEVYVFVSRV9CVUZGRVJfQklORElORyJHTF9URVhUVVJFX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UHEdMX1RSQU5TRk9STV9GRUVEQkFDS19BQ1RJVkUdR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JJTkRJTkckR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9CSU5ESU5HIUdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU0laRSJHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NUQVJUHEdMX1RSQU5TRk9STV9GRUVEQkFDS19QQVVTRUQZR0xfVU5JRk9STV9CVUZGRVJfQklORElORyJHTF9VTklGT1JNX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UFkdMX1VOSUZPUk1fQlVGRkVSX1NJWkUXR0xfVU5JRk9STV9CVUZGRVJfU1RBUlQTR0xfVU5QQUNLX0FMSUdOTUVOVBZHTF9VTlBBQ0tfSU1BR0VfSEVJR0hUFEdMX1VOUEFDS19ST1dfTEVOR1RIFUdMX1VOUEFDS19TS0lQX0lNQUdFUxVHTF9VTlBBQ0tfU0tJUF9QSVhFTFMTR0xfVU5QQUNLX1NLSVBfUk9XUxdHTF9WRVJURVhfQVJSQVlfQklORElORxlHTF9WRVJURVhfQklORElOR19ESVZJU09SGEdMX1ZFUlRFWF9CSU5ESU5HX09GRlNFVBhHTF9WRVJURVhfQklORElOR19TVFJJREULR0xfVklFV1BPUlQhR0xfTUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUE0dMX0dQVV9ESVNKT0lOVF9FWFSGtQSGtwaGuQiGuwoUZ2xHZXRJbnRlZ2VyNjR2QVBQTEUGcGFyYW1zBAECAg9nbEdldEludGVnZXJpX3YChr0Mhr8IhsEKD2dsR2V0SW50ZWdlcmlfdgVwYXJhbYEqEUdMX0FDVElWRV9URVhUVVJFG0dMX0FMSUFTRURfTElORV9XSURUSF9SQU5HRRtHTF9BTElBU0VEX1BPSU5UX1NJWkVfUkFOR0UNR0xfQUxQSEFfQklUUxdHTF9BUlJBWV9CVUZGRVJfQklORElORyBHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfQklORElORx1HTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfU0laRR5HTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfU1RBUlQIR0xfQkxFTkQOR0xfQkxFTkRfQ09MT1ISR0xfQkxFTkRfRFNUX0FMUEhBEEdMX0JMRU5EX0RTVF9SR0IXR0xfQkxFTkRfRVFVQVRJT05fQUxQSEEVR0xfQkxFTkRfRVFVQVRJT05fUkdCEkdMX0JMRU5EX1NSQ19BTFBIQRBHTF9CTEVORF9TUkNfUkdCDEdMX0JMVUVfQklUUxRHTF9DT0xPUl9DTEVBUl9WQUxVRRJHTF9DT0xPUl9XUklURU1BU0sdR0xfQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMQR0xfQ09OVEVYVF9GTEFHUxhHTF9DT05URVhUX1JPQlVTVF9BQ0NFU1MbR0xfQ09QWV9SRUFEX0JVRkZFUl9CSU5ESU5HHEdMX0NPUFlfV1JJVEVfQlVGRkVSX0JJTkRJTkcMR0xfQ1VMTF9GQUNFEUdMX0NVTExfRkFDRV9NT0RFEkdMX0NVUlJFTlRfUFJPR1JBTRpHTF9ERUJVR19HUk9VUF9TVEFDS19ERVBUSBhHTF9ERUJVR19MT0dHRURfTUVTU0FHRVMjR0xfREVCVUdfTkVYVF9MT0dHRURfTUVTU0FHRV9MRU5HVEgNR0xfREVQVEhfQklUUxRHTF9ERVBUSF9DTEVBUl9WQUxVRQ1HTF9ERVBUSF9GVU5DDkdMX0RFUFRIX1JBTkdFDUdMX0RFUFRIX1RFU1QSR0xfREVQVEhfV1JJVEVNQVNLI0dMX0RJU1BBVENIX0lORElSRUNUX0JVRkZFUl9CSU5ESU5HCUdMX0RJVEhFUg5HTF9EUkFXX0JVRkZFUg9HTF9EUkFXX0JVRkZFUjAPR0xfRFJBV19CVUZGRVIxD0dMX0RSQVdfQlVGRkVSMg9HTF9EUkFXX0JVRkZFUjMPR0xfRFJBV19CVUZGRVI0D0dMX0RSQVdfQlVGRkVSNQ9HTF9EUkFXX0JVRkZFUjYPR0xfRFJBV19CVUZGRVI3D0dMX0RSQVdfQlVGRkVSOA9HTF9EUkFXX0JVRkZFUjkQR0xfRFJBV19CVUZGRVIxMBBHTF9EUkFXX0JVRkZFUjExEEdMX0RSQVdfQlVGRkVSMTIQR0xfRFJBV19CVUZGRVIxMxBHTF9EUkFXX0JVRkZFUjE0EEdMX0RSQVdfQlVGRkVSMTUbR0xfRFJBV19GUkFNRUJVRkZFUl9CSU5ESU5HH0dMX0VMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkclR0xfRlJBR01FTlRfSU5URVJQT0xBVElPTl9PRkZTRVRfQklUUyJHTF9GUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UDUdMX0ZST05UX0ZBQ0UXR0xfR0VORVJBVEVfTUlQTUFQX0hJTlQNR0xfR1JFRU5fQklUUxVHTF9JTUFHRV9CSU5ESU5HX05BTUUWR0xfSU1BR0VfQklORElOR19MRVZFTBhHTF9JTUFHRV9CSU5ESU5HX0xBWUVSRUQWR0xfSU1BR0VfQklORElOR19MQVlFUhdHTF9JTUFHRV9CSU5ESU5HX0FDQ0VTUxdHTF9JTUFHRV9CSU5ESU5HX0ZPUk1BVCNHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX0ZPUk1BVCFHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX1RZUEUZR0xfTEFZRVJfUFJPVk9LSU5HX1ZFUlRFWA1HTF9MSU5FX1dJRFRIKkdMX1BSSU1JVElWRV9SRVNUQVJUX0ZPUl9QQVRDSEVTX1NVUFBPUlRFRBBHTF9NQUpPUl9WRVJTSU9OFkdMX01BWF8zRF9URVhUVVJFX1NJWkUbR0xfTUFYX0FSUkFZX1RFWFRVUkVfTEFZRVJTJUdMX01BWF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfQklORElOR1MhR0xfTUFYX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TSVpFJkdMX01BWF9DT01CSU5FRF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTGEdMX01BWF9DT0xPUl9BVFRBQ0hNRU5UUxxHTF9NQVhfQ09MT1JfVEVYVFVSRV9TQU1QTEVTHEdMX01BWF9ERVBUSF9URVhUVVJFX1NBTVBMRVMfR0xfTUFYX0NPTUJJTkVEX0FUT01JQ19DT1VOVEVSUxJHTF9NQVhfSU1BR0VfVU5JVFMqR0xfTUFYX0NPTUJJTkVEX0NPTVBVVEVfVU5JRk9STV9DT01QT05FTlRTK0dMX01BWF9DT01CSU5FRF9GUkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFMrR0xfTUFYX0NPTUJJTkVEX0dFT01FVFJZX1VOSUZPUk1fQ09NUE9ORU5UUyVHTF9NQVhfQ09NQklORURfU0hBREVSX1NUT1JBR0VfQkxPQ0tTL0dMX01BWF9DT01CSU5FRF9URVNTX0NPTlRST0xfVU5JRk9STV9DT01QT05FTlRTMkdMX01BWF9DT01CSU5FRF9URVNTX0VWQUxVQVRJT05fVU5JRk9STV9DT01QT05FTlRTI0dMX01BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTJ0dMX01BWF9DT01CSU5FRF9TSEFERVJfT1VUUFVUX1JFU09VUkNFUx5HTF9NQVhfQ09NQklORURfVU5JRk9STV9CTE9DS1MpR0xfTUFYX0NPTUJJTkVEX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFMlR0xfTUFYX0NPTVBVVEVfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx5HTF9NQVhfQ09NUFVURV9BVE9NSUNfQ09VTlRFUlMdR0xfTUFYX0NPTVBVVEVfSU1BR0VfVU5JRk9STVMeR0xfTUFYX0NPTUJJTkVEX0lNQUdFX1VOSUZPUk1TJEdMX01BWF9DT01QVVRFX1NIQURFUl9TVE9SQUdFX0JMT0NLUyJHTF9NQVhfQ09NUFVURV9URVhUVVJFX0lNQUdFX1VOSVRTIUdMX01BWF9DT01QVVRFX1NIQVJFRF9NRU1PUllfU0laRR1HTF9NQVhfQ09NUFVURV9VTklGT1JNX0JMT0NLUyFHTF9NQVhfQ09NUFVURV9VTklGT1JNX0NPTVBPTkVOVFMfR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9DT1VOVCVHTF9NQVhfQ09NUFVURV9XT1JLX0dST1VQX0lOVk9DQVRJT05THkdMX01BWF9DT01QVVRFX1dPUktfR1JPVVBfU0laRRxHTF9NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFHkdMX01BWF9ERUJVR19HUk9VUF9TVEFDS19ERVBUSBxHTF9NQVhfREVCVUdfTE9HR0VEX01FU1NBR0VTG0dMX01BWF9ERUJVR19NRVNTQUdFX0xFTkdUSBNHTF9NQVhfRFJBV19CVUZGRVJTFEdMX01BWF9FTEVNRU5UX0lOREVYF0dMX01BWF9FTEVNRU5UU19JTkRJQ0VTGEdMX01BWF9FTEVNRU5UU19WRVJUSUNFUyZHTF9NQVhfRlJBR01FTlRfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx9HTF9NQVhfRlJBR01FTlRfQVRPTUlDX0NPVU5URVJTHkdMX01BWF9GUkFHTUVOVF9JTUFHRV9VTklGT1JNUyBHTF9NQVhfRlJBR01FTlRfSU5QVVRfQ09NUE9ORU5UUyRHTF9NQVhfRlJBR01FTlRfSU5URVJQT0xBVElPTl9PRkZTRVQlR0xfTUFYX0ZSQUdNRU5UX1NIQURFUl9TVE9SQUdFX0JMT0NLUyRHTF9NSU5fUFJPR1JBTV9URVhUVVJFX0dBVEhFUl9PRkZTRVQkR0xfTUFYX1BST0dSQU1fVEVYVFVSRV9HQVRIRVJfT0ZGU0VUHkdMX01BWF9GUkFHTUVOVF9VTklGT1JNX0JMT0NLUyJHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTH0dMX01BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMZR0xfTUFYX0ZSQU1FQlVGRkVSX0hFSUdIVBlHTF9NQVhfRlJBTUVCVUZGRVJfTEFZRVJTGkdMX01BWF9GUkFNRUJVRkZFUl9TQU1QTEVTGEdMX01BWF9GUkFNRUJVRkZFUl9XSURUSCZHTF9NQVhfR0VPTUVUUllfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx9HTF9NQVhfR0VPTUVUUllfQVRPTUlDX0NPVU5URVJTHkdMX01BWF9HRU9NRVRSWV9JTUFHRV9VTklGT1JNUyBHTF9NQVhfR0VPTUVUUllfSU5QVVRfQ09NUE9ORU5UUyFHTF9NQVhfR0VPTUVUUllfT1VUUFVUX0NPTVBPTkVOVFMfR0xfTUFYX0dFT01FVFJZX09VVFBVVF9WRVJUSUNFUyJHTF9NQVhfR0VPTUVUUllfU0hBREVSX0lOVk9DQVRJT05TJUdMX01BWF9HRU9NRVRSWV9TSEFERVJfU1RPUkFHRV9CTE9DS1MjR0xfTUFYX0dFT01FVFJZX1RFWFRVUkVfSU1BR0VfVU5JVFMnR0xfTUFYX0dFT01FVFJZX1RPVEFMX09VVFBVVF9DT01QT05FTlRTHkdMX01BWF9HRU9NRVRSWV9VTklGT1JNX0JMT0NLUyJHTF9NQVhfR0VPTUVUUllfVU5JRk9STV9DT01QT05FTlRTFkdMX01BWF9JTlRFR0VSX1NBTVBMRVMTR0xfTUFYX0xBQkVMX0xFTkdUSBtHTF9NQVhfUFJPR1JBTV9URVhFTF9PRkZTRVQYR0xfTUFYX1JFTkRFUkJVRkZFUl9TSVpFGEdMX01BWF9TQU1QTEVfTUFTS19XT1JEUw5HTF9NQVhfU0FNUExFUxpHTF9NQVhfU0VSVkVSX1dBSVRfVElNRU9VVCBHTF9NQVhfU0hBREVSX1NUT1JBR0VfQkxPQ0tfU0laRSVHTF9NQVhfU0hBREVSX1NUT1JBR0VfQlVGRkVSX0JJTkRJTkdTKkdMX01BWF9URVNTX0NPTlRST0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSUyNHTF9NQVhfVEVTU19DT05UUk9MX0FUT01JQ19DT1VOVEVSUyJHTF9NQVhfVEVTU19DT05UUk9MX0lNQUdFX1VOSUZPUk1TJEdMX01BWF9URVNTX0NPTlRST0xfSU5QVVRfQ09NUE9ORU5UUyVHTF9NQVhfVEVTU19DT05UUk9MX09VVFBVVF9DT01QT05FTlRTKUdMX01BWF9URVNTX0NPTlRST0xfU0hBREVSX1NUT1JBR0VfQkxPQ0tTJ0dMX01BWF9URVNTX0NPTlRST0xfVEVYVFVSRV9JTUFHRV9VTklUUytHTF9NQVhfVEVTU19DT05UUk9MX1RPVEFMX09VVFBVVF9DT01QT05FTlRTIkdMX01BWF9URVNTX0NPTlRST0xfVU5JRk9STV9CTE9DS1MmR0xfTUFYX1RFU1NfQ09OVFJPTF9VTklGT1JNX0NPTVBPTkVOVFMtR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTJkdMX01BWF9URVNTX0VWQUxVQVRJT05fQVRPTUlDX0NPVU5URVJTJUdMX01BWF9URVNTX0VWQUxVQVRJT05fSU1BR0VfVU5JRk9STVMnR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9JTlBVVF9DT01QT05FTlRTKEdMX01BWF9URVNTX0VWQUxVQVRJT05fT1VUUFVUX0NPTVBPTkVOVFMsR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9TSEFERVJfU1RPUkFHRV9CTE9DS1MqR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9URVhUVVJFX0lNQUdFX1VOSVRTJUdMX01BWF9URVNTX0VWQUxVQVRJT05fVU5JRk9STV9CTE9DS1MpR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0NPTVBPTkVOVFMVR0xfTUFYX1RFU1NfR0VOX0xFVkVMFUdMX01BWF9QQVRDSF9WRVJUSUNFUxxHTF9NQVhfVEVTU19QQVRDSF9DT01QT05FTlRTGkdMX01BWF9URVhUVVJFX0JVRkZFUl9TSVpFGkdMX01BWF9URVhUVVJFX0lNQUdFX1VOSVRTF0dMX01BWF9URVhUVVJFX0xPRF9CSUFTE0dMX01BWF9URVhUVVJFX1NJWkUwR0xfTUFYX1RSQU5TRk9STV9GRUVEQkFDS19JTlRFUkxFQVZFRF9DT01QT05FTlRTKkdMX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQVRUUklCUy1HTF9NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFSQVRFX0NPTVBPTkVOVFMZR0xfTUFYX1VOSUZPUk1fQkxPQ0tfU0laRR5HTF9NQVhfVU5JRk9STV9CVUZGRVJfQklORElOR1MYR0xfTUFYX1VOSUZPUk1fTE9DQVRJT05TGUdMX01BWF9WQVJZSU5HX0NPTVBPTkVOVFMWR0xfTUFYX1ZBUllJTkdfVkVDVE9SUx1HTF9NQVhfVkVSVEVYX0FUT01JQ19DT1VOVEVSUyRHTF9NQVhfVkVSVEVYX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMdR0xfTUFYX1ZFUlRFWF9BVFRSSUJfQklORElOR1MbR0xfTUFYX1ZFUlRFWF9BVFRSSUJfU1RSSURFJEdMX01BWF9WRVJURVhfQVRUUklCX1JFTEFUSVZFX09GRlNFVBVHTF9NQVhfVkVSVEVYX0FUVFJJQlMcR0xfTUFYX1ZFUlRFWF9JTUFHRV9VTklGT1JNUx9HTF9NQVhfVkVSVEVYX09VVFBVVF9DT01QT05FTlRTI0dMX01BWF9WRVJURVhfU0hBREVSX1NUT1JBR0VfQkxPQ0tTIUdMX01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUxxHTF9NQVhfVkVSVEVYX1VOSUZPUk1fQkxPQ0tTIEdMX01BWF9WRVJURVhfVU5JRk9STV9DT01QT05FTlRTHUdMX01BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTFEdMX01BWF9WSUVXUE9SVF9ESU1TJEdMX01JTl9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVBtHTF9NSU5fUFJPR1JBTV9URVhFTF9PRkZTRVQbR0xfTUlOX1NBTVBMRV9TSEFESU5HX1ZBTFVFEEdMX01JTk9SX1ZFUlNJT04fR0xfTVVMVElTQU1QTEVfTElORV9XSURUSF9SQU5HRSVHTF9NVUxUSVNBTVBMRV9MSU5FX1dJRFRIX0dSQU5VTEFSSVRZIUdMX05VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUxFHTF9OVU1fRVhURU5TSU9OUx1HTF9OVU1fUFJPR1JBTV9CSU5BUllfRk9STUFUUxxHTF9OVU1fU0hBREVSX0JJTkFSWV9GT1JNQVRTEUdMX1BBQ0tfQUxJR05NRU5UFEdMX1BBQ0tfSU1BR0VfSEVJR0hUEkdMX1BBQ0tfUk9XX0xFTkdUSBNHTF9QQUNLX1NLSVBfSU1BR0VTE0dMX1BBQ0tfU0tJUF9QSVhFTFMRR0xfUEFDS19TS0lQX1JPV1MRR0xfUEFUQ0hfVkVSVElDRVMcR0xfUElYRUxfUEFDS19CVUZGRVJfQklORElORx5HTF9QSVhFTF9VTlBBQ0tfQlVGRkVSX0JJTkRJTkcYR0xfUE9MWUdPTl9PRkZTRVRfRkFDVE9SFkdMX1BPTFlHT05fT0ZGU0VUX0ZJTEwXR0xfUE9MWUdPTl9PRkZTRVRfVU5JVFMZR0xfUFJJTUlUSVZFX0JPVU5ESU5HX0JPWCBHTF9QUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWBlHTF9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTG0dMX1BST0dSQU1fUElQRUxJTkVfQklORElORxVHTF9SQVNURVJJWkVSX0RJU0NBUkQOR0xfUkVBRF9CVUZGRVIbR0xfUkVBRF9GUkFNRUJVRkZFUl9CSU5ESU5HC0dMX1JFRF9CSVRTF0dMX1JFTkRFUkJVRkZFUl9CSU5ESU5HHkdMX1JFU0VUX05PVElGSUNBVElPTl9TVFJBVEVHWRtHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0URR0xfU0FNUExFX0JVRkZFUlMSR0xfU0FNUExFX0NPVkVSQUdFGUdMX1NBTVBMRV9DT1ZFUkFHRV9JTlZFUlQYR0xfU0FNUExFX0NPVkVSQUdFX1ZBTFVFEUdMX1NBTVBMRV9TSEFESU5HEkdMX1NBTVBMRVJfQklORElORwpHTF9TQU1QTEVTDkdMX1NDSVNTT1JfQk9YD0dMX1NDSVNTT1JfVEVTVBhHTF9TSEFERVJfQklOQVJZX0ZPUk1BVFMSR0xfU0hBREVSX0NPTVBJTEVSIEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9CSU5ESU5HKUdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UHUdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9TSVpFHkdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9TVEFSVBRHTF9TVEVOQ0lMX0JBQ0tfRkFJTBRHTF9TVEVOQ0lMX0JBQ0tfRlVOQx9HTF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMH0dMX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1MTR0xfU1RFTkNJTF9CQUNLX1JFRhpHTF9TVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTSxlHTF9TVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLD0dMX1NURU5DSUxfQklUUxZHTF9TVEVOQ0lMX0NMRUFSX1ZBTFVFD0dMX1NURU5DSUxfRkFJTA9HTF9TVEVOQ0lMX0ZVTkMaR0xfU1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUwaR0xfU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1MOR0xfU1RFTkNJTF9SRUYPR0xfU1RFTkNJTF9URVNUFUdMX1NURU5DSUxfVkFMVUVfTUFTSxRHTF9TVEVOQ0lMX1dSSVRFTUFTSxBHTF9TVUJQSVhFTF9CSVRTFUdMX1RFWFRVUkVfQklORElOR18yRB9HTF9URVhUVVJFX0JJTkRJTkdfRVhURVJOQUxfT0VTG0dMX1RFWFRVUkVfQklORElOR18yRF9BUlJBWSFHTF9URVhUVVJFX0JJTkRJTkdfMkRfTVVMVElTQU1QTEUnR0xfVEVYVFVSRV9CSU5ESU5HXzJEX01VTFRJU0FNUExFX0FSUkFZFUdMX1RFWFRVUkVfQklORElOR18zRBlHTF9URVhUVVJFX0JJTkRJTkdfQlVGRkVSG0dMX1RFWFRVUkVfQklORElOR19DVUJFX01BUCFHTF9URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVBfQVJSQVkZR0xfVEVYVFVSRV9CVUZGRVJfQklORElORyJHTF9URVhUVVJFX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UHEdMX1RSQU5TRk9STV9GRUVEQkFDS19BQ1RJVkUdR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JJTkRJTkckR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9CSU5ESU5HIUdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU0laRSJHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NUQVJUHEdMX1RSQU5TRk9STV9GRUVEQkFDS19QQVVTRUQZR0xfVU5JRk9STV9CVUZGRVJfQklORElORyJHTF9VTklGT1JNX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UFkdMX1VOSUZPUk1fQlVGRkVSX1NJWkUXR0xfVU5JRk9STV9CVUZGRVJfU1RBUlQTR0xfVU5QQUNLX0FMSUdOTUVOVBZHTF9VTlBBQ0tfSU1BR0VfSEVJR0hUFEdMX1VOUEFDS19ST1dfTEVOR1RIFUdMX1VOUEFDS19TS0lQX0lNQUdFUxVHTF9VTlBBQ0tfU0tJUF9QSVhFTFMTR0xfVU5QQUNLX1NLSVBfUk9XUxdHTF9WRVJURVhfQVJSQVlfQklORElORxlHTF9WRVJURVhfQklORElOR19ESVZJU09SGEdMX1ZFUlRFWF9CSU5ESU5HX09GRlNFVBhHTF9WRVJURVhfQklORElOR19TVFJJREULR0xfVklFV1BPUlQhR0xfTUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUE0dMX0dQVV9ESVNKT0lOVF9FWFSGwwSGxQaGxwiGyQoPZ2xHZXRJbnRlZ2VyaV92BnZhbHVlcwQBAgINZ2xHZXRJbnRlZ2VydgKGywyGzQiGzwoNZ2xHZXRJbnRlZ2VydgVwYXJhbYEqEUdMX0FDVElWRV9URVhUVVJFG0dMX0FMSUFTRURfTElORV9XSURUSF9SQU5HRRtHTF9BTElBU0VEX1BPSU5UX1NJWkVfUkFOR0UNR0xfQUxQSEFfQklUUxdHTF9BUlJBWV9CVUZGRVJfQklORElORyBHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfQklORElORx1HTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfU0laRR5HTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfU1RBUlQIR0xfQkxFTkQOR0xfQkxFTkRfQ09MT1ISR0xfQkxFTkRfRFNUX0FMUEhBEEdMX0JMRU5EX0RTVF9SR0IXR0xfQkxFTkRfRVFVQVRJT05fQUxQSEEVR0xfQkxFTkRfRVFVQVRJT05fUkdCEkdMX0JMRU5EX1NSQ19BTFBIQRBHTF9CTEVORF9TUkNfUkdCDEdMX0JMVUVfQklUUxRHTF9DT0xPUl9DTEVBUl9WQUxVRRJHTF9DT0xPUl9XUklURU1BU0sdR0xfQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMQR0xfQ09OVEVYVF9GTEFHUxhHTF9DT05URVhUX1JPQlVTVF9BQ0NFU1MbR0xfQ09QWV9SRUFEX0JVRkZFUl9CSU5ESU5HHEdMX0NPUFlfV1JJVEVfQlVGRkVSX0JJTkRJTkcMR0xfQ1VMTF9GQUNFEUdMX0NVTExfRkFDRV9NT0RFEkdMX0NVUlJFTlRfUFJPR1JBTRpHTF9ERUJVR19HUk9VUF9TVEFDS19ERVBUSBhHTF9ERUJVR19MT0dHRURfTUVTU0FHRVMjR0xfREVCVUdfTkVYVF9MT0dHRURfTUVTU0FHRV9MRU5HVEgNR0xfREVQVEhfQklUUxRHTF9ERVBUSF9DTEVBUl9WQUxVRQ1HTF9ERVBUSF9GVU5DDkdMX0RFUFRIX1JBTkdFDUdMX0RFUFRIX1RFU1QSR0xfREVQVEhfV1JJVEVNQVNLI0dMX0RJU1BBVENIX0lORElSRUNUX0JVRkZFUl9CSU5ESU5HCUdMX0RJVEhFUg5HTF9EUkFXX0JVRkZFUg9HTF9EUkFXX0JVRkZFUjAPR0xfRFJBV19CVUZGRVIxD0dMX0RSQVdfQlVGRkVSMg9HTF9EUkFXX0JVRkZFUjMPR0xfRFJBV19CVUZGRVI0D0dMX0RSQVdfQlVGRkVSNQ9HTF9EUkFXX0JVRkZFUjYPR0xfRFJBV19CVUZGRVI3D0dMX0RSQVdfQlVGRkVSOA9HTF9EUkFXX0JVRkZFUjkQR0xfRFJBV19CVUZGRVIxMBBHTF9EUkFXX0JVRkZFUjExEEdMX0RSQVdfQlVGRkVSMTIQR0xfRFJBV19CVUZGRVIxMxBHTF9EUkFXX0JVRkZFUjE0EEdMX0RSQVdfQlVGRkVSMTUbR0xfRFJBV19GUkFNRUJVRkZFUl9CSU5ESU5HH0dMX0VMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkclR0xfRlJBR01FTlRfSU5URVJQT0xBVElPTl9PRkZTRVRfQklUUyJHTF9GUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UDUdMX0ZST05UX0ZBQ0UXR0xfR0VORVJBVEVfTUlQTUFQX0hJTlQNR0xfR1JFRU5fQklUUxVHTF9JTUFHRV9CSU5ESU5HX05BTUUWR0xfSU1BR0VfQklORElOR19MRVZFTBhHTF9JTUFHRV9CSU5ESU5HX0xBWUVSRUQWR0xfSU1BR0VfQklORElOR19MQVlFUhdHTF9JTUFHRV9CSU5ESU5HX0FDQ0VTUxdHTF9JTUFHRV9CSU5ESU5HX0ZPUk1BVCNHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX0ZPUk1BVCFHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX1RZUEUZR0xfTEFZRVJfUFJPVk9LSU5HX1ZFUlRFWA1HTF9MSU5FX1dJRFRIKkdMX1BSSU1JVElWRV9SRVNUQVJUX0ZPUl9QQVRDSEVTX1NVUFBPUlRFRBBHTF9NQUpPUl9WRVJTSU9OFkdMX01BWF8zRF9URVhUVVJFX1NJWkUbR0xfTUFYX0FSUkFZX1RFWFRVUkVfTEFZRVJTJUdMX01BWF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfQklORElOR1MhR0xfTUFYX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TSVpFJkdMX01BWF9DT01CSU5FRF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTGEdMX01BWF9DT0xPUl9BVFRBQ0hNRU5UUxxHTF9NQVhfQ09MT1JfVEVYVFVSRV9TQU1QTEVTHEdMX01BWF9ERVBUSF9URVhUVVJFX1NBTVBMRVMfR0xfTUFYX0NPTUJJTkVEX0FUT01JQ19DT1VOVEVSUxJHTF9NQVhfSU1BR0VfVU5JVFMqR0xfTUFYX0NPTUJJTkVEX0NPTVBVVEVfVU5JRk9STV9DT01QT05FTlRTK0dMX01BWF9DT01CSU5FRF9GUkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFMrR0xfTUFYX0NPTUJJTkVEX0dFT01FVFJZX1VOSUZPUk1fQ09NUE9ORU5UUyVHTF9NQVhfQ09NQklORURfU0hBREVSX1NUT1JBR0VfQkxPQ0tTL0dMX01BWF9DT01CSU5FRF9URVNTX0NPTlRST0xfVU5JRk9STV9DT01QT05FTlRTMkdMX01BWF9DT01CSU5FRF9URVNTX0VWQUxVQVRJT05fVU5JRk9STV9DT01QT05FTlRTI0dMX01BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTJ0dMX01BWF9DT01CSU5FRF9TSEFERVJfT1VUUFVUX1JFU09VUkNFUx5HTF9NQVhfQ09NQklORURfVU5JRk9STV9CTE9DS1MpR0xfTUFYX0NPTUJJTkVEX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFMlR0xfTUFYX0NPTVBVVEVfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx5HTF9NQVhfQ09NUFVURV9BVE9NSUNfQ09VTlRFUlMdR0xfTUFYX0NPTVBVVEVfSU1BR0VfVU5JRk9STVMeR0xfTUFYX0NPTUJJTkVEX0lNQUdFX1VOSUZPUk1TJEdMX01BWF9DT01QVVRFX1NIQURFUl9TVE9SQUdFX0JMT0NLUyJHTF9NQVhfQ09NUFVURV9URVhUVVJFX0lNQUdFX1VOSVRTIUdMX01BWF9DT01QVVRFX1NIQVJFRF9NRU1PUllfU0laRR1HTF9NQVhfQ09NUFVURV9VTklGT1JNX0JMT0NLUyFHTF9NQVhfQ09NUFVURV9VTklGT1JNX0NPTVBPTkVOVFMfR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9DT1VOVCVHTF9NQVhfQ09NUFVURV9XT1JLX0dST1VQX0lOVk9DQVRJT05THkdMX01BWF9DT01QVVRFX1dPUktfR1JPVVBfU0laRRxHTF9NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFHkdMX01BWF9ERUJVR19HUk9VUF9TVEFDS19ERVBUSBxHTF9NQVhfREVCVUdfTE9HR0VEX01FU1NBR0VTG0dMX01BWF9ERUJVR19NRVNTQUdFX0xFTkdUSBNHTF9NQVhfRFJBV19CVUZGRVJTFEdMX01BWF9FTEVNRU5UX0lOREVYF0dMX01BWF9FTEVNRU5UU19JTkRJQ0VTGEdMX01BWF9FTEVNRU5UU19WRVJUSUNFUyZHTF9NQVhfRlJBR01FTlRfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx9HTF9NQVhfRlJBR01FTlRfQVRPTUlDX0NPVU5URVJTHkdMX01BWF9GUkFHTUVOVF9JTUFHRV9VTklGT1JNUyBHTF9NQVhfRlJBR01FTlRfSU5QVVRfQ09NUE9ORU5UUyRHTF9NQVhfRlJBR01FTlRfSU5URVJQT0xBVElPTl9PRkZTRVQlR0xfTUFYX0ZSQUdNRU5UX1NIQURFUl9TVE9SQUdFX0JMT0NLUyRHTF9NSU5fUFJPR1JBTV9URVhUVVJFX0dBVEhFUl9PRkZTRVQkR0xfTUFYX1BST0dSQU1fVEVYVFVSRV9HQVRIRVJfT0ZGU0VUHkdMX01BWF9GUkFHTUVOVF9VTklGT1JNX0JMT0NLUyJHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTH0dMX01BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMZR0xfTUFYX0ZSQU1FQlVGRkVSX0hFSUdIVBlHTF9NQVhfRlJBTUVCVUZGRVJfTEFZRVJTGkdMX01BWF9GUkFNRUJVRkZFUl9TQU1QTEVTGEdMX01BWF9GUkFNRUJVRkZFUl9XSURUSCZHTF9NQVhfR0VPTUVUUllfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx9HTF9NQVhfR0VPTUVUUllfQVRPTUlDX0NPVU5URVJTHkdMX01BWF9HRU9NRVRSWV9JTUFHRV9VTklGT1JNUyBHTF9NQVhfR0VPTUVUUllfSU5QVVRfQ09NUE9ORU5UUyFHTF9NQVhfR0VPTUVUUllfT1VUUFVUX0NPTVBPTkVOVFMfR0xfTUFYX0dFT01FVFJZX09VVFBVVF9WRVJUSUNFUyJHTF9NQVhfR0VPTUVUUllfU0hBREVSX0lOVk9DQVRJT05TJUdMX01BWF9HRU9NRVRSWV9TSEFERVJfU1RPUkFHRV9CTE9DS1MjR0xfTUFYX0dFT01FVFJZX1RFWFRVUkVfSU1BR0VfVU5JVFMnR0xfTUFYX0dFT01FVFJZX1RPVEFMX09VVFBVVF9DT01QT05FTlRTHkdMX01BWF9HRU9NRVRSWV9VTklGT1JNX0JMT0NLUyJHTF9NQVhfR0VPTUVUUllfVU5JRk9STV9DT01QT05FTlRTFkdMX01BWF9JTlRFR0VSX1NBTVBMRVMTR0xfTUFYX0xBQkVMX0xFTkdUSBtHTF9NQVhfUFJPR1JBTV9URVhFTF9PRkZTRVQYR0xfTUFYX1JFTkRFUkJVRkZFUl9TSVpFGEdMX01BWF9TQU1QTEVfTUFTS19XT1JEUw5HTF9NQVhfU0FNUExFUxpHTF9NQVhfU0VSVkVSX1dBSVRfVElNRU9VVCBHTF9NQVhfU0hBREVSX1NUT1JBR0VfQkxPQ0tfU0laRSVHTF9NQVhfU0hBREVSX1NUT1JBR0VfQlVGRkVSX0JJTkRJTkdTKkdMX01BWF9URVNTX0NPTlRST0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSUyNHTF9NQVhfVEVTU19DT05UUk9MX0FUT01JQ19DT1VOVEVSUyJHTF9NQVhfVEVTU19DT05UUk9MX0lNQUdFX1VOSUZPUk1TJEdMX01BWF9URVNTX0NPTlRST0xfSU5QVVRfQ09NUE9ORU5UUyVHTF9NQVhfVEVTU19DT05UUk9MX09VVFBVVF9DT01QT05FTlRTKUdMX01BWF9URVNTX0NPTlRST0xfU0hBREVSX1NUT1JBR0VfQkxPQ0tTJ0dMX01BWF9URVNTX0NPTlRST0xfVEVYVFVSRV9JTUFHRV9VTklUUytHTF9NQVhfVEVTU19DT05UUk9MX1RPVEFMX09VVFBVVF9DT01QT05FTlRTIkdMX01BWF9URVNTX0NPTlRST0xfVU5JRk9STV9CTE9DS1MmR0xfTUFYX1RFU1NfQ09OVFJPTF9VTklGT1JNX0NPTVBPTkVOVFMtR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTJkdMX01BWF9URVNTX0VWQUxVQVRJT05fQVRPTUlDX0NPVU5URVJTJUdMX01BWF9URVNTX0VWQUxVQVRJT05fSU1BR0VfVU5JRk9STVMnR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9JTlBVVF9DT01QT05FTlRTKEdMX01BWF9URVNTX0VWQUxVQVRJT05fT1VUUFVUX0NPTVBPTkVOVFMsR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9TSEFERVJfU1RPUkFHRV9CTE9DS1MqR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9URVhUVVJFX0lNQUdFX1VOSVRTJUdMX01BWF9URVNTX0VWQUxVQVRJT05fVU5JRk9STV9CTE9DS1MpR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0NPTVBPTkVOVFMVR0xfTUFYX1RFU1NfR0VOX0xFVkVMFUdMX01BWF9QQVRDSF9WRVJUSUNFUxxHTF9NQVhfVEVTU19QQVRDSF9DT01QT05FTlRTGkdMX01BWF9URVhUVVJFX0JVRkZFUl9TSVpFGkdMX01BWF9URVhUVVJFX0lNQUdFX1VOSVRTF0dMX01BWF9URVhUVVJFX0xPRF9CSUFTE0dMX01BWF9URVhUVVJFX1NJWkUwR0xfTUFYX1RSQU5TRk9STV9GRUVEQkFDS19JTlRFUkxFQVZFRF9DT01QT05FTlRTKkdMX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQVRUUklCUy1HTF9NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFSQVRFX0NPTVBPTkVOVFMZR0xfTUFYX1VOSUZPUk1fQkxPQ0tfU0laRR5HTF9NQVhfVU5JRk9STV9CVUZGRVJfQklORElOR1MYR0xfTUFYX1VOSUZPUk1fTE9DQVRJT05TGUdMX01BWF9WQVJZSU5HX0NPTVBPTkVOVFMWR0xfTUFYX1ZBUllJTkdfVkVDVE9SUx1HTF9NQVhfVkVSVEVYX0FUT01JQ19DT1VOVEVSUyRHTF9NQVhfVkVSVEVYX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMdR0xfTUFYX1ZFUlRFWF9BVFRSSUJfQklORElOR1MbR0xfTUFYX1ZFUlRFWF9BVFRSSUJfU1RSSURFJEdMX01BWF9WRVJURVhfQVRUUklCX1JFTEFUSVZFX09GRlNFVBVHTF9NQVhfVkVSVEVYX0FUVFJJQlMcR0xfTUFYX1ZFUlRFWF9JTUFHRV9VTklGT1JNUx9HTF9NQVhfVkVSVEVYX09VVFBVVF9DT01QT05FTlRTI0dMX01BWF9WRVJURVhfU0hBREVSX1NUT1JBR0VfQkxPQ0tTIUdMX01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUxxHTF9NQVhfVkVSVEVYX1VOSUZPUk1fQkxPQ0tTIEdMX01BWF9WRVJURVhfVU5JRk9STV9DT01QT05FTlRTHUdMX01BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTFEdMX01BWF9WSUVXUE9SVF9ESU1TJEdMX01JTl9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVBtHTF9NSU5fUFJPR1JBTV9URVhFTF9PRkZTRVQbR0xfTUlOX1NBTVBMRV9TSEFESU5HX1ZBTFVFEEdMX01JTk9SX1ZFUlNJT04fR0xfTVVMVElTQU1QTEVfTElORV9XSURUSF9SQU5HRSVHTF9NVUxUSVNBTVBMRV9MSU5FX1dJRFRIX0dSQU5VTEFSSVRZIUdMX05VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUxFHTF9OVU1fRVhURU5TSU9OUx1HTF9OVU1fUFJPR1JBTV9CSU5BUllfRk9STUFUUxxHTF9OVU1fU0hBREVSX0JJTkFSWV9GT1JNQVRTEUdMX1BBQ0tfQUxJR05NRU5UFEdMX1BBQ0tfSU1BR0VfSEVJR0hUEkdMX1BBQ0tfUk9XX0xFTkdUSBNHTF9QQUNLX1NLSVBfSU1BR0VTE0dMX1BBQ0tfU0tJUF9QSVhFTFMRR0xfUEFDS19TS0lQX1JPV1MRR0xfUEFUQ0hfVkVSVElDRVMcR0xfUElYRUxfUEFDS19CVUZGRVJfQklORElORx5HTF9QSVhFTF9VTlBBQ0tfQlVGRkVSX0JJTkRJTkcYR0xfUE9MWUdPTl9PRkZTRVRfRkFDVE9SFkdMX1BPTFlHT05fT0ZGU0VUX0ZJTEwXR0xfUE9MWUdPTl9PRkZTRVRfVU5JVFMZR0xfUFJJTUlUSVZFX0JPVU5ESU5HX0JPWCBHTF9QUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWBlHTF9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTG0dMX1BST0dSQU1fUElQRUxJTkVfQklORElORxVHTF9SQVNURVJJWkVSX0RJU0NBUkQOR0xfUkVBRF9CVUZGRVIbR0xfUkVBRF9GUkFNRUJVRkZFUl9CSU5ESU5HC0dMX1JFRF9CSVRTF0dMX1JFTkRFUkJVRkZFUl9CSU5ESU5HHkdMX1JFU0VUX05PVElGSUNBVElPTl9TVFJBVEVHWRtHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0URR0xfU0FNUExFX0JVRkZFUlMSR0xfU0FNUExFX0NPVkVSQUdFGUdMX1NBTVBMRV9DT1ZFUkFHRV9JTlZFUlQYR0xfU0FNUExFX0NPVkVSQUdFX1ZBTFVFEUdMX1NBTVBMRV9TSEFESU5HEkdMX1NBTVBMRVJfQklORElORwpHTF9TQU1QTEVTDkdMX1NDSVNTT1JfQk9YD0dMX1NDSVNTT1JfVEVTVBhHTF9TSEFERVJfQklOQVJZX0ZPUk1BVFMSR0xfU0hBREVSX0NPTVBJTEVSIEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9CSU5ESU5HKUdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UHUdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9TSVpFHkdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9TVEFSVBRHTF9TVEVOQ0lMX0JBQ0tfRkFJTBRHTF9TVEVOQ0lMX0JBQ0tfRlVOQx9HTF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMH0dMX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1MTR0xfU1RFTkNJTF9CQUNLX1JFRhpHTF9TVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTSxlHTF9TVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLD0dMX1NURU5DSUxfQklUUxZHTF9TVEVOQ0lMX0NMRUFSX1ZBTFVFD0dMX1NURU5DSUxfRkFJTA9HTF9TVEVOQ0lMX0ZVTkMaR0xfU1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUwaR0xfU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1MOR0xfU1RFTkNJTF9SRUYPR0xfU1RFTkNJTF9URVNUFUdMX1NURU5DSUxfVkFMVUVfTUFTSxRHTF9TVEVOQ0lMX1dSSVRFTUFTSxBHTF9TVUJQSVhFTF9CSVRTFUdMX1RFWFRVUkVfQklORElOR18yRB9HTF9URVhUVVJFX0JJTkRJTkdfRVhURVJOQUxfT0VTG0dMX1RFWFRVUkVfQklORElOR18yRF9BUlJBWSFHTF9URVhUVVJFX0JJTkRJTkdfMkRfTVVMVElTQU1QTEUnR0xfVEVYVFVSRV9CSU5ESU5HXzJEX01VTFRJU0FNUExFX0FSUkFZFUdMX1RFWFRVUkVfQklORElOR18zRBlHTF9URVhUVVJFX0JJTkRJTkdfQlVGRkVSG0dMX1RFWFRVUkVfQklORElOR19DVUJFX01BUCFHTF9URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVBfQVJSQVkZR0xfVEVYVFVSRV9CVUZGRVJfQklORElORyJHTF9URVhUVVJFX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UHEdMX1RSQU5TRk9STV9GRUVEQkFDS19BQ1RJVkUdR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JJTkRJTkckR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9CSU5ESU5HIUdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU0laRSJHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NUQVJUHEdMX1RSQU5TRk9STV9GRUVEQkFDS19QQVVTRUQZR0xfVU5JRk9STV9CVUZGRVJfQklORElORyJHTF9VTklGT1JNX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UFkdMX1VOSUZPUk1fQlVGRkVSX1NJWkUXR0xfVU5JRk9STV9CVUZGRVJfU1RBUlQTR0xfVU5QQUNLX0FMSUdOTUVOVBZHTF9VTlBBQ0tfSU1BR0VfSEVJR0hUFEdMX1VOUEFDS19ST1dfTEVOR1RIFUdMX1VOUEFDS19TS0lQX0lNQUdFUxVHTF9VTlBBQ0tfU0tJUF9QSVhFTFMTR0xfVU5QQUNLX1NLSVBfUk9XUxdHTF9WRVJURVhfQVJSQVlfQklORElORxlHTF9WRVJURVhfQklORElOR19ESVZJU09SGEdMX1ZFUlRFWF9CSU5ESU5HX09GRlNFVBhHTF9WRVJURVhfQklORElOR19TVFJJREULR0xfVklFV1BPUlQhR0xfTUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUE0dMX0dQVV9ESVNKT0lOVF9FWFSG0QSG0waG1QiG1woNZ2xHZXRJbnRlZ2VydgZ2YWx1ZXMEAQICFWdsR2V0SW50ZXJuYWxmb3JtYXRpdgOG2QyG2wiG3QoVZ2xHZXRJbnRlcm5hbGZvcm1hdGl2BnRhcmdldAMPR0xfUkVOREVSQlVGRkVSGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWYbfDIbhCIbjChVnbEdldEludGVybmFsZm9ybWF0aXYOaW50ZXJuYWxmb3JtYXQ3E0dMX0RFUFRIMjRfU1RFTkNJTDgUR0xfREVQVEgzMkZfU1RFTkNJTDgUR0xfREVQVEhfQ09NUE9ORU5UMTYUR0xfREVQVEhfQ09NUE9ORU5UMjQVR0xfREVQVEhfQ09NUE9ORU5UMzJGEUdMX1IxMUZfRzExRl9CMTBGB0dMX1IxNkYHR0xfUjE2SQhHTF9SMTZVSQdHTF9SMzJGB0dMX1IzMkkIR0xfUjMyVUkFR0xfUjgGR0xfUjhJB0dMX1I4VUkLR0xfUjhfU05PUk0IR0xfUkcxNkYIR0xfUkcxNkkJR0xfUkcxNlVJCEdMX1JHMzJGCEdMX1JHMzJJCUdMX1JHMzJVSQZHTF9SRzgHR0xfUkc4SQhHTF9SRzhVSQxHTF9SRzhfU05PUk0LR0xfUkdCMTBfQTINR0xfUkdCMTBfQTJVSQlHTF9SR0IxNkYJR0xfUkdCMTZJCkdMX1JHQjE2VUkJR0xfUkdCMzJGCUdMX1JHQjMySQpHTF9SR0IzMlVJCUdMX1JHQjU2NQpHTF9SR0I1X0ExB0dMX1JHQjgIR0xfUkdCOEkJR0xfUkdCOFVJDUdMX1JHQjhfU05PUk0KR0xfUkdCOV9FNQpHTF9SR0JBMTZGCkdMX1JHQkExNkkLR0xfUkdCQTE2VUkKR0xfUkdCQTMyRgpHTF9SR0JBMzJJC0dMX1JHQkEzMlVJCEdMX1JHQkE0CEdMX1JHQkE4CUdMX1JHQkE4SQpHTF9SR0JBOFVJDkdMX1JHQkE4X1NOT1JNCEdMX1NSR0I4D0dMX1NSR0I4X0FMUEhBOBFHTF9TVEVOQ0lMX0lOREVYOIblDIbnCIbpChVnbEdldEludGVybmFsZm9ybWF0aXYFcG5hbWUCFEdMX05VTV9TQU1QTEVfQ09VTlRTCkdMX1NBTVBMRVMCEmdsR2V0TXVsdGlzYW1wbGVmdgKG6wyG7QiG7woSZ2xHZXRNdWx0aXNhbXBsZWZ2BXBuYW1lARJHTF9TQU1QTEVfUE9TSVRJT06G8QSG8waG9QiG9woSZ2xHZXRNdWx0aXNhbXBsZWZ2A3ZhbAQBAAIQZ2xHZXRPYmplY3RMYWJlbAKG+QyG+wiG/QoQZ2xHZXRPYmplY3RMYWJlbAppZGVudGlmaWVyCwlHTF9CVUZGRVIOR0xfRlJBTUVCVUZGRVIKR0xfUFJPR1JBTRNHTF9QUk9HUkFNX1BJUEVMSU5FCEdMX1FVRVJZD0dMX1JFTkRFUkJVRkZFUgpHTF9TQU1QTEVSCUdMX1NIQURFUgpHTF9URVhUVVJFFUdMX1RSQU5TRk9STV9GRUVEQkFDSw9HTF9WRVJURVhfQVJSQVmG/wSHAQaHAwiHBQoQZ2xHZXRPYmplY3RMYWJlbAVsYWJlbAQBAgITZ2xHZXRPYmplY3RMYWJlbEVYVAKHBwyHCQiHCwoTZ2xHZXRPYmplY3RMYWJlbEVYVAR0eXBlCwpHTF9URVhUVVJFDkdMX0ZSQU1FQlVGRkVSD0dMX1JFTkRFUkJVRkZFUhRHTF9CVUZGRVJfT0JKRUNUX0VYVBRHTF9TSEFERVJfT0JKRUNUX0VYVBVHTF9QUk9HUkFNX09CSkVDVF9FWFQaR0xfVkVSVEVYX0FSUkFZX09CSkVDVF9FWFQTR0xfUVVFUllfT0JKRUNUX0VYVApHTF9TQU1QTEVSFUdMX1RSQU5TRk9STV9GRUVEQkFDSx5HTF9QUk9HUkFNX1BJUEVMSU5FX09CSkVDVF9FWFSHDQSHDwaHEQiHEwoTZ2xHZXRPYmplY3RMYWJlbEVYVAVsYWJlbAQBAgITZ2xHZXRPYmplY3RMYWJlbEtIUgKHFQyHFwiHGQoTZ2xHZXRPYmplY3RMYWJlbEtIUgppZGVudGlmaWVyCwlHTF9CVUZGRVIOR0xfRlJBTUVCVUZGRVIKR0xfUFJPR1JBTRNHTF9QUk9HUkFNX1BJUEVMSU5FCEdMX1FVRVJZD0dMX1JFTkRFUkJVRkZFUgpHTF9TQU1QTEVSCUdMX1NIQURFUgpHTF9URVhUVVJFFUdMX1RSQU5TRk9STV9GRUVEQkFDSw9HTF9WRVJURVhfQVJSQVmHGwSHHQaHHwiHIQoTZ2xHZXRPYmplY3RMYWJlbEtIUgVsYWJlbAQBAgITZ2xHZXRPYmplY3RQdHJMYWJlbAGHIwSHJQaHJwiHKQoTZ2xHZXRPYmplY3RQdHJMYWJlbAVsYWJlbAQBAgIWZ2xHZXRPYmplY3RQdHJMYWJlbEtIUgGHKwSHLQaHLwiHMQoWZ2xHZXRPYmplY3RQdHJMYWJlbEtIUgVsYWJlbAQBAgINZ2xHZXRQb2ludGVydgKHMwyHNQiHNwoNZ2xHZXRQb2ludGVydgVwbmFtZQIaR0xfREVCVUdfQ0FMTEJBQ0tfRlVOQ1RJT04cR0xfREVCVUdfQ0FMTEJBQ0tfVVNFUl9QQVJBTYc5BIc7Boc9CIc/Cg1nbEdldFBvaW50ZXJ2BnBhcmFtcwQBAgIQZ2xHZXRQb2ludGVydktIUgKHQQyHQwiHRQoQZ2xHZXRQb2ludGVydktIUgVwbmFtZQIaR0xfREVCVUdfQ0FMTEJBQ0tfRlVOQ1RJT04cR0xfREVCVUdfQ0FMTEJBQ0tfVVNFUl9QQVJBTYdHBIdJBodLCIdNChBnbEdldFBvaW50ZXJ2S0hSBnBhcmFtcwQBAgISZ2xHZXRQcm9ncmFtQmluYXJ5AYdPBIdRBodTCIdVChJnbEdldFByb2dyYW1CaW5hcnkGYmluYXJ5BAECAhVnbEdldFByb2dyYW1CaW5hcnlPRVMBh1cEh1kGh1sIh10KFWdsR2V0UHJvZ3JhbUJpbmFyeU9FUwZiaW5hcnkEAQICE2dsR2V0UHJvZ3JhbUluZm9Mb2cBh18Eh2EGh2MIh2UKE2dsR2V0UHJvZ3JhbUluZm9Mb2cEaW5mbwQBAgIXZ2xHZXRQcm9ncmFtSW50ZXJmYWNlaXYCh2cMh2kIh2sKF2dsR2V0UHJvZ3JhbUludGVyZmFjZWl2EHByb2dyYW1JbnRlcmZhY2UJGEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUhJHTF9CVUZGRVJfVkFSSUFCTEUQR0xfUFJPR1JBTV9JTlBVVBFHTF9QUk9HUkFNX09VVFBVVBdHTF9TSEFERVJfU1RPUkFHRV9CTE9DSxxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSHUdMX1RSQU5TRk9STV9GRUVEQkFDS19WQVJZSU5HCkdMX1VOSUZPUk0QR0xfVU5JRk9STV9CTE9DS4dtDIdvCIdxChdnbEdldFByb2dyYW1JbnRlcmZhY2VpdgVwbmFtZQMTR0xfQUNUSVZFX1JFU09VUkNFUxJHTF9NQVhfTkFNRV9MRU5HVEgbR0xfTUFYX05VTV9BQ1RJVkVfVkFSSUFCTEVTAhtnbEdldFByb2dyYW1QaXBlbGluZUluZm9Mb2cBh3MEh3UGh3cIh3kKG2dsR2V0UHJvZ3JhbVBpcGVsaW5lSW5mb0xvZwdpbmZvTG9nBAECAhZnbEdldFByb2dyYW1QaXBlbGluZWl2AYd7DId9CId/ChZnbEdldFByb2dyYW1QaXBlbGluZWl2BXBuYW1lCRFHTF9BQ1RJVkVfUFJPR1JBTRFHTF9DT01QVVRFX1NIQURFUhJHTF9GUkFHTUVOVF9TSEFERVISR0xfSU5GT19MT0dfTEVOR1RIEkdMX1ZBTElEQVRFX1NUQVRVUxBHTF9WRVJURVhfU0hBREVSEkdMX0dFT01FVFJZX1NIQURFUhZHTF9URVNTX0NPTlRST0xfU0hBREVSGUdMX1RFU1NfRVZBTFVBVElPTl9TSEFERVICGWdsR2V0UHJvZ3JhbVJlc291cmNlSW5kZXgBh4EMh4MIh4UKGWdsR2V0UHJvZ3JhbVJlc291cmNlSW5kZXgQcHJvZ3JhbUludGVyZmFjZQcSR0xfQlVGRkVSX1ZBUklBQkxFEEdMX1BST0dSQU1fSU5QVVQRR0xfUFJPR1JBTV9PVVRQVVQXR0xfU0hBREVSX1NUT1JBR0VfQkxPQ0sdR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1ZBUllJTkcKR0xfVU5JRk9STRBHTF9VTklGT1JNX0JMT0NLAhxnbEdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uAYeHDIeJCIeLChxnbEdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uEHByb2dyYW1JbnRlcmZhY2UEEEdMX1BST0dSQU1fSU5QVVQRR0xfUFJPR1JBTV9PVVRQVVQcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUgpHTF9VTklGT1JNAhhnbEdldFByb2dyYW1SZXNvdXJjZU5hbWUCh40Mh48Ih5EKGGdsR2V0UHJvZ3JhbVJlc291cmNlTmFtZRBwcm9ncmFtSW50ZXJmYWNlBxJHTF9CVUZGRVJfVkFSSUFCTEUQR0xfUFJPR1JBTV9JTlBVVBFHTF9QUk9HUkFNX09VVFBVVBdHTF9TSEFERVJfU1RPUkFHRV9CTE9DSx1HTF9UUkFOU0ZPUk1fRkVFREJBQ0tfVkFSWUlORwpHTF9VTklGT1JNEEdMX1VOSUZPUk1fQkxPQ0uHkwSHlQaHlwiHmQoYZ2xHZXRQcm9ncmFtUmVzb3VyY2VOYW1lBG5hbWUEAQICFmdsR2V0UHJvZ3JhbVJlc291cmNlaXYDh5sMh50Ih58KFmdsR2V0UHJvZ3JhbVJlc291cmNlaXYQcHJvZ3JhbUludGVyZmFjZQkYR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSEkdMX0JVRkZFUl9WQVJJQUJMRRBHTF9QUk9HUkFNX0lOUFVUEUdMX1BST0dSQU1fT1VUUFVUF0dMX1NIQURFUl9TVE9SQUdFX0JMT0NLHEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIdR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1ZBUllJTkcKR0xfVU5JRk9STRBHTF9VTklGT1JNX0JMT0NLh6EEh6MGh6UIh6cKFmdsR2V0UHJvZ3JhbVJlc291cmNlaXYFcHJvcHMEAQCHqQSHqwaHrQiHrwoWZ2xHZXRQcm9ncmFtUmVzb3VyY2VpdgZwYXJhbXMEAQICDmdsR2V0UHJvZ3JhbWl2AYexDIezCIe1Cg5nbEdldFByb2dyYW1pdglwYXJhbWV0ZXIcFEdMX0FDVElWRV9BVFRSSUJVVEVTHkdMX0FDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSBJHTF9BQ1RJVkVfVU5JRk9STVMcR0xfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSBNHTF9BVFRBQ0hFRF9TSEFERVJTEEdMX0RFTEVURV9TVEFUVVMSR0xfSU5GT19MT0dfTEVOR1RIDkdMX0xJTktfU1RBVFVTEkdMX1ZBTElEQVRFX1NUQVRVUxhHTF9BQ1RJVkVfVU5JRk9STV9CTE9DS1MnR0xfQUNUSVZFX1VOSUZPUk1fQkxPQ0tfTUFYX05BTUVfTEVOR1RIIkdMX1BST0dSQU1fQklOQVJZX1JFVFJJRVZBQkxFX0hJTlQhR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9NT0RFHkdMX1RSQU5TRk9STV9GRUVEQkFDS19WQVJZSU5HUyhHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfVkFSWUlOR19NQVhfTEVOR1RIGEdMX1BST0dSQU1fQklOQVJZX0xFTkdUSCBHTF9BQ1RJVkVfQVRPTUlDX0NPVU5URVJfQlVGRkVSUxpHTF9DT01QVVRFX1dPUktfR1JPVVBfU0laRRRHTF9QUk9HUkFNX1NFUEFSQUJMRRZHTF9HRU9NRVRSWV9JTlBVVF9UWVBFF0dMX0dFT01FVFJZX09VVFBVVF9UWVBFGEdMX0dFT01FVFJZX1ZFUlRJQ0VTX09VVB5HTF9HRU9NRVRSWV9TSEFERVJfSU5WT0NBVElPTlMfR0xfVEVTU19DT05UUk9MX09VVFBVVF9WRVJUSUNFUxBHTF9URVNTX0dFTl9NT0RFFkdMX1RFU1NfR0VOX1BPSU5UX01PREUTR0xfVEVTU19HRU5fU1BBQ0lORxhHTF9URVNTX0dFTl9WRVJURVhfT1JERVICE2dsR2V0UXVlcnlPYmplY3R1aXYBh7cMh7kIh7sKE2dsR2V0UXVlcnlPYmplY3R1aXYJcGFyYW1ldGVyAg9HTF9RVUVSWV9SRVNVTFQZR0xfUVVFUllfUkVTVUxUX0FWQUlMQUJMRQIMZ2xHZXRRdWVyeWl2Aoe9DIe/CIfBCgxnbEdldFF1ZXJ5aXYGdGFyZ2V0BBVHTF9BTllfU0FNUExFU19QQVNTRUQiR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRShHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfUFJJTUlUSVZFU19XUklUVEVOF0dMX1BSSU1JVElWRVNfR0VORVJBVEVEh8MMh8UIh8cKDGdsR2V0UXVlcnlpdglwYXJhbWV0ZXIBEEdMX0NVUlJFTlRfUVVFUlkCHGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYCh8kMh8sIh80KHGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYGdGFyZ2V0AQ9HTF9SRU5ERVJCVUZGRVKHzwyH0QiH0wocZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdglwYXJhbWV0ZXIKGkdMX1JFTkRFUkJVRkZFUl9BTFBIQV9TSVpFGUdMX1JFTkRFUkJVRkZFUl9CTFVFX1NJWkUaR0xfUkVOREVSQlVGRkVSX0RFUFRIX1NJWkUaR0xfUkVOREVSQlVGRkVSX0dSRUVOX1NJWkUWR0xfUkVOREVSQlVGRkVSX0hFSUdIVB9HTF9SRU5ERVJCVUZGRVJfSU5URVJOQUxfRk9STUFUGEdMX1JFTkRFUkJVRkZFUl9SRURfU0laRRxHTF9SRU5ERVJCVUZGRVJfU1RFTkNJTF9TSVpFFUdMX1JFTkRFUkJVRkZFUl9XSURUSBdHTF9SRU5ERVJCVUZGRVJfU0FNUExFUwIYZ2xHZXRTYW1wbGVyUGFyYW1ldGVySWl2AYfVDIfXCIfZChhnbEdldFNhbXBsZXJQYXJhbWV0ZXJJaXYFcG5hbWUKF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhVHTF9URVhUVVJFX01BR19GSUxURVISR0xfVEVYVFVSRV9NSU5fTE9EEkdMX1RFWFRVUkVfTUFYX0xPRBFHTF9URVhUVVJFX1dSQVBfUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUgIbZ2xHZXRTYW1wbGVyUGFyYW1ldGVySWl2RVhUAYfbDIfdCIffChtnbEdldFNhbXBsZXJQYXJhbWV0ZXJJaXZFWFQFcG5hbWUKF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhVHTF9URVhUVVJFX01BR19GSUxURVISR0xfVEVYVFVSRV9NSU5fTE9EEkdMX1RFWFRVUkVfTUFYX0xPRBFHTF9URVhUVVJFX1dSQVBfUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUgIbZ2xHZXRTYW1wbGVyUGFyYW1ldGVySWl2T0VTAYfhDIfjCIflChtnbEdldFNhbXBsZXJQYXJhbWV0ZXJJaXZPRVMFcG5hbWUKF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhVHTF9URVhUVVJFX01BR19GSUxURVISR0xfVEVYVFVSRV9NSU5fTE9EEkdMX1RFWFRVUkVfTUFYX0xPRBFHTF9URVhUVVJFX1dSQVBfUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUgIZZ2xHZXRTYW1wbGVyUGFyYW1ldGVySXVpdgGH5wyH6QiH6woZZ2xHZXRTYW1wbGVyUGFyYW1ldGVySXVpdgVwbmFtZQoXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUVR0xfVEVYVFVSRV9NSU5fRklMVEVSFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhJHTF9URVhUVVJFX01JTl9MT0QSR0xfVEVYVFVSRV9NQVhfTE9EEUdMX1RFWFRVUkVfV1JBUF9SEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SAhxnbEdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2RVhUAYftDIfvCIfxChxnbEdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2RVhUBXBuYW1lChdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRVHTF9URVhUVVJFX01JTl9GSUxURVIVR0xfVEVYVFVSRV9NQUdfRklMVEVSEkdMX1RFWFRVUkVfTUlOX0xPRBJHTF9URVhUVVJFX01BWF9MT0QRR0xfVEVYVFVSRV9XUkFQX1IRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1ICHGdsR2V0U2FtcGxlclBhcmFtZXRlckl1aXZPRVMBh/MMh/UIh/cKHGdsR2V0U2FtcGxlclBhcmFtZXRlckl1aXZPRVMFcG5hbWUKF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhVHTF9URVhUVVJFX01BR19GSUxURVISR0xfVEVYVFVSRV9NSU5fTE9EEkdMX1RFWFRVUkVfTUFYX0xPRBFHTF9URVhUVVJFX1dSQVBfUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUgIXZ2xHZXRTYW1wbGVyUGFyYW1ldGVyZnYBh/kMh/sIh/0KF2dsR2V0U2FtcGxlclBhcmFtZXRlcmZ2BXBuYW1lChdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRVHTF9URVhUVVJFX01JTl9GSUxURVIVR0xfVEVYVFVSRV9NQUdfRklMVEVSEkdMX1RFWFRVUkVfTUlOX0xPRBJHTF9URVhUVVJFX01BWF9MT0QRR0xfVEVYVFVSRV9XUkFQX1IRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1ICF2dsR2V0U2FtcGxlclBhcmFtZXRlcml2AYf/DIgBCIgDChdnbEdldFNhbXBsZXJQYXJhbWV0ZXJpdgVwbmFtZQoXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUVR0xfVEVYVFVSRV9NSU5fRklMVEVSFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhJHTF9URVhUVVJFX01JTl9MT0QSR0xfVEVYVFVSRV9NQVhfTE9EEUdMX1RFWFRVUkVfV1JBUF9SEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SAhJnbEdldFNoYWRlckluZm9Mb2cBiAUEiAcGiAkIiAsKEmdsR2V0U2hhZGVySW5mb0xvZwRpbmZvBAECAhpnbEdldFNoYWRlclByZWNpc2lvbkZvcm1hdAOIDQyIDwiIEQoaZ2xHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQLc2hhZGVyX3R5cGUCEkdMX0ZSQUdNRU5UX1NIQURFUhBHTF9WRVJURVhfU0hBREVSiBMMiBUIiBcKGmdsR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0DnByZWNpc2lvbl90eXBlBg1HTF9ISUdIX0ZMT0FUC0dMX0hJR0hfSU5UDEdMX0xPV19GTE9BVApHTF9MT1dfSU5UD0dMX01FRElVTV9GTE9BVA1HTF9NRURJVU1fSU5UiBkEiBsGiB0IiB8KGmdsR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0BXJhbmdlBAECAhFnbEdldFNoYWRlclNvdXJjZQGIIQSIIwaIJQiIJwoRZ2xHZXRTaGFkZXJTb3VyY2UGc291cmNlBAECAg1nbEdldFNoYWRlcml2AYgpDIgrCIgtCg1nbEdldFNoYWRlcml2CXBhcmFtZXRlcgURR0xfQ09NUElMRV9TVEFUVVMQR0xfREVMRVRFX1NUQVRVUxJHTF9JTkZPX0xPR19MRU5HVEgXR0xfU0hBREVSX1NPVVJDRV9MRU5HVEgOR0xfU0hBREVSX1RZUEUCC2dsR2V0U3RyaW5nAYgvDIgxCIgzCgtnbEdldFN0cmluZwVwYXJhbQUNR0xfRVhURU5TSU9OUwtHTF9SRU5ERVJFUhtHTF9TSEFESU5HX0xBTkdVQUdFX1ZFUlNJT04JR0xfVkVORE9SCkdMX1ZFUlNJT04CDGdsR2V0U3RyaW5naQGINQyINwiIOQoMZ2xHZXRTdHJpbmdpBG5hbWUBDUdMX0VYVEVOU0lPTlMCC2dsR2V0U3luY2l2AYg7DIg9CIg/CgtnbEdldFN5bmNpdgVwbmFtZQQOR0xfT0JKRUNUX1RZUEURR0xfU1lOQ19DT05ESVRJT04NR0xfU1lOQ19GTEFHUw5HTF9TWU5DX1NUQVRVUwIQZ2xHZXRTeW5jaXZBUFBMRQGIQQyIQwiIRQoQZ2xHZXRTeW5jaXZBUFBMRQVwbmFtZQQOR0xfT0JKRUNUX1RZUEURR0xfU1lOQ19DT05ESVRJT04NR0xfU1lOQ19GTEFHUw5HTF9TWU5DX1NUQVRVUwIYZ2xHZXRUZXhMZXZlbFBhcmFtZXRlcmZ2AohHDIhJCIhLChhnbEdldFRleExldmVsUGFyYW1ldGVyZnYGdGFyZ2V0DQ1HTF9URVhUVVJFXzJEE0dMX1RFWFRVUkVfMkRfQVJSQVkZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRQ1HTF9URVhUVVJFXzNEHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWB5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1keR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWB5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1keR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aH0dMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVkRR0xfVEVYVFVSRV9CVUZGRVIZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWYhNDIhPCIhRChhnbEdldFRleExldmVsUGFyYW1ldGVyZnYFcG5hbWUWFUdMX1RFWFRVUkVfQUxQSEFfU0laRRVHTF9URVhUVVJFX0FMUEhBX1RZUEUUR0xfVEVYVFVSRV9CTFVFX1NJWkUUR0xfVEVYVFVSRV9CTFVFX1RZUEUVR0xfVEVYVFVSRV9DT01QUkVTU0VEEEdMX1RFWFRVUkVfREVQVEgVR0xfVEVYVFVSRV9ERVBUSF9TSVpFFUdMX1RFWFRVUkVfREVQVEhfVFlQRSFHTF9URVhUVVJFX0ZJWEVEX1NBTVBMRV9MT0NBVElPTlMVR0xfVEVYVFVSRV9HUkVFTl9TSVpFFUdMX1RFWFRVUkVfR1JFRU5fVFlQRRFHTF9URVhUVVJFX0hFSUdIVBpHTF9URVhUVVJFX0lOVEVSTkFMX0ZPUk1BVBNHTF9URVhUVVJFX1JFRF9TSVpFE0dMX1RFWFRVUkVfUkVEX1RZUEUSR0xfVEVYVFVSRV9TQU1QTEVTFkdMX1RFWFRVUkVfU0hBUkVEX1NJWkUXR0xfVEVYVFVSRV9TVEVOQ0lMX1NJWkUQR0xfVEVYVFVSRV9XSURUSCRHTF9URVhUVVJFX0JVRkZFUl9EQVRBX1NUT1JFX0JJTkRJTkcYR0xfVEVYVFVSRV9CVUZGRVJfT0ZGU0VUFkdMX1RFWFRVUkVfQlVGRkVSX1NJWkUCGGdsR2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdgKIUwyIVQiIVwoYZ2xHZXRUZXhMZXZlbFBhcmFtZXRlcml2BnRhcmdldA0NR0xfVEVYVFVSRV8yRBNHTF9URVhUVVJFXzJEX0FSUkFZGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUNR0xfVEVYVFVSRV8zRB5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1geR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWh5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1geR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWh9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZEUdMX1RFWFRVUkVfQlVGRkVSGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVmIWQyIWwiIXQoYZ2xHZXRUZXhMZXZlbFBhcmFtZXRlcml2BXBuYW1lFhVHTF9URVhUVVJFX0FMUEhBX1NJWkUVR0xfVEVYVFVSRV9BTFBIQV9UWVBFFEdMX1RFWFRVUkVfQkxVRV9TSVpFFEdMX1RFWFRVUkVfQkxVRV9UWVBFFUdMX1RFWFRVUkVfQ09NUFJFU1NFRBBHTF9URVhUVVJFX0RFUFRIFUdMX1RFWFRVUkVfREVQVEhfU0laRRVHTF9URVhUVVJFX0RFUFRIX1RZUEUhR0xfVEVYVFVSRV9GSVhFRF9TQU1QTEVfTE9DQVRJT05TFUdMX1RFWFRVUkVfR1JFRU5fU0laRRVHTF9URVhUVVJFX0dSRUVOX1RZUEURR0xfVEVYVFVSRV9IRUlHSFQaR0xfVEVYVFVSRV9JTlRFUk5BTF9GT1JNQVQTR0xfVEVYVFVSRV9SRURfU0laRRNHTF9URVhUVVJFX1JFRF9UWVBFEkdMX1RFWFRVUkVfU0FNUExFUxZHTF9URVhUVVJFX1NIQVJFRF9TSVpFF0dMX1RFWFRVUkVfU1RFTkNJTF9TSVpFEEdMX1RFWFRVUkVfV0lEVEgkR0xfVEVYVFVSRV9CVUZGRVJfREFUQV9TVE9SRV9CSU5ESU5HGEdMX1RFWFRVUkVfQlVGRkVSX09GRlNFVBZHTF9URVhUVVJFX0JVRkZFUl9TSVpFAhRnbEdldFRleFBhcmFtZXRlcklpdgKIXwyIYQiIYwoUZ2xHZXRUZXhQYXJhbWV0ZXJJaXYGdGFyZ2V0CQ1HTF9URVhUVVJFXzJEE0dMX1RFWFRVUkVfQ1VCRV9NQVATR0xfVEVYVFVSRV8yRF9BUlJBWQ1HTF9URVhUVVJFXzNEGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWRlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZF0dMX1RFWFRVUkVfRVhURVJOQUxfT0VTEUdMX1RFWFRVUkVfQlVGRkVSiGUMiGcIiGkKFGdsR2V0VGV4UGFyYW1ldGVySWl2BXBuYW1lFRVHTF9URVhUVVJFX01BR19GSUxURVIVR0xfVEVYVFVSRV9NSU5fRklMVEVSEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UFUdMX1RFWFRVUkVfQkFTRV9MRVZFTBdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRtHTF9URVhUVVJFX0lNTVVUQUJMRV9GT1JNQVQUR0xfVEVYVFVSRV9NQVhfTEVWRUwSR0xfVEVYVFVSRV9NQVhfTE9EEkdMX1RFWFRVUkVfTUlOX0xPRBRHTF9URVhUVVJFX1NXSVpaTEVfQRRHTF9URVhUVVJFX1NXSVpaTEVfQhRHTF9URVhUVVJFX1NXSVpaTEVfRxRHTF9URVhUVVJFX1NXSVpaTEVfUhFHTF9URVhUVVJFX1dSQVBfUh1HTF9ERVBUSF9TVEVOQ0lMX1RFWFRVUkVfTU9ERSJHTF9JTUFHRV9GT1JNQVRfQ09NUEFUSUJJTElUWV9UWVBFG0dMX1RFWFRVUkVfSU1NVVRBQkxFX0xFVkVMUxdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUh1HTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVAIXZ2xHZXRUZXhQYXJhbWV0ZXJJaXZFWFQCiGsMiG0IiG8KF2dsR2V0VGV4UGFyYW1ldGVySWl2RVhUBnRhcmdldAkNR0xfVEVYVFVSRV8yRBNHTF9URVhUVVJFX0NVQkVfTUFQE0dMX1RFWFRVUkVfMkRfQVJSQVkNR0xfVEVYVFVSRV8zRBlHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFH0dMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVkZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWRdHTF9URVhUVVJFX0VYVEVSTkFMX09FUxFHTF9URVhUVVJFX0JVRkZFUohxDIhzCIh1ChdnbEdldFRleFBhcmFtZXRlcklpdkVYVAVwbmFtZRUVR0xfVEVYVFVSRV9NQUdfRklMVEVSFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBVHTF9URVhUVVJFX0JBU0VfTEVWRUwXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUbR0xfVEVYVFVSRV9JTU1VVEFCTEVfRk9STUFUFEdMX1RFWFRVUkVfTUFYX0xFVkVMEkdMX1RFWFRVUkVfTUFYX0xPRBJHTF9URVhUVVJFX01JTl9MT0QUR0xfVEVYVFVSRV9TV0laWkxFX0EUR0xfVEVYVFVSRV9TV0laWkxFX0IUR0xfVEVYVFVSRV9TV0laWkxFX0cUR0xfVEVYVFVSRV9TV0laWkxFX1IRR0xfVEVYVFVSRV9XUkFQX1IdR0xfREVQVEhfU1RFTkNJTF9URVhUVVJFX01PREUiR0xfSU1BR0VfRk9STUFUX0NPTVBBVElCSUxJVFlfVFlQRRtHTF9URVhUVVJFX0lNTVVUQUJMRV9MRVZFTFMXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1IdR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQCF2dsR2V0VGV4UGFyYW1ldGVySWl2T0VTAoh3DIh5CIh7ChdnbEdldFRleFBhcmFtZXRlcklpdk9FUwZ0YXJnZXQJDUdMX1RFWFRVUkVfMkQTR0xfVEVYVFVSRV9DVUJFX01BUBNHTF9URVhUVVJFXzJEX0FSUkFZDUdMX1RFWFRVUkVfM0QZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVkXR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMRR0xfVEVYVFVSRV9CVUZGRVKIfQyIfwiIgQoXZ2xHZXRUZXhQYXJhbWV0ZXJJaXZPRVMFcG5hbWUVFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhVHTF9URVhUVVJFX01JTl9GSUxURVIRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QVR0xfVEVYVFVSRV9CQVNFX0xFVkVMF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFG0dMX1RFWFRVUkVfSU1NVVRBQkxFX0ZPUk1BVBRHTF9URVhUVVJFX01BWF9MRVZFTBJHTF9URVhUVVJFX01BWF9MT0QSR0xfVEVYVFVSRV9NSU5fTE9EFEdMX1RFWFRVUkVfU1dJWlpMRV9BFEdMX1RFWFRVUkVfU1dJWlpMRV9CFEdMX1RFWFRVUkVfU1dJWlpMRV9HFEdMX1RFWFRVUkVfU1dJWlpMRV9SEUdMX1RFWFRVUkVfV1JBUF9SHUdMX0RFUFRIX1NURU5DSUxfVEVYVFVSRV9NT0RFIkdMX0lNQUdFX0ZPUk1BVF9DT01QQVRJQklMSVRZX1RZUEUbR0xfVEVYVFVSRV9JTU1VVEFCTEVfTEVWRUxTF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SHUdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUAhVnbEdldFRleFBhcmFtZXRlckl1aXYCiIMMiIUIiIcKFWdsR2V0VGV4UGFyYW1ldGVySXVpdgZ0YXJnZXQJDUdMX1RFWFRVUkVfMkQTR0xfVEVYVFVSRV9DVUJFX01BUBNHTF9URVhUVVJFXzJEX0FSUkFZDUdMX1RFWFRVUkVfM0QZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVkXR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMRR0xfVEVYVFVSRV9CVUZGRVKIiQyIiwiIjQoVZ2xHZXRUZXhQYXJhbWV0ZXJJdWl2BXBuYW1lFRVHTF9URVhUVVJFX01BR19GSUxURVIVR0xfVEVYVFVSRV9NSU5fRklMVEVSEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UFUdMX1RFWFRVUkVfQkFTRV9MRVZFTBdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRtHTF9URVhUVVJFX0lNTVVUQUJMRV9GT1JNQVQUR0xfVEVYVFVSRV9NQVhfTEVWRUwSR0xfVEVYVFVSRV9NQVhfTE9EEkdMX1RFWFRVUkVfTUlOX0xPRBRHTF9URVhUVVJFX1NXSVpaTEVfQRRHTF9URVhUVVJFX1NXSVpaTEVfQhRHTF9URVhUVVJFX1NXSVpaTEVfRxRHTF9URVhUVVJFX1NXSVpaTEVfUhFHTF9URVhUVVJFX1dSQVBfUh1HTF9ERVBUSF9TVEVOQ0lMX1RFWFRVUkVfTU9ERSJHTF9JTUFHRV9GT1JNQVRfQ09NUEFUSUJJTElUWV9UWVBFG0dMX1RFWFRVUkVfSU1NVVRBQkxFX0xFVkVMUxdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUh1HTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVAIYZ2xHZXRUZXhQYXJhbWV0ZXJJdWl2RVhUAoiPDIiRCIiTChhnbEdldFRleFBhcmFtZXRlckl1aXZFWFQGdGFyZ2V0CQ1HTF9URVhUVVJFXzJEE0dMX1RFWFRVUkVfQ1VCRV9NQVATR0xfVEVYVFVSRV8yRF9BUlJBWQ1HTF9URVhUVVJFXzNEGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWRlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZF0dMX1RFWFRVUkVfRVhURVJOQUxfT0VTEUdMX1RFWFRVUkVfQlVGRkVSiJUMiJcIiJkKGGdsR2V0VGV4UGFyYW1ldGVySXVpdkVYVAVwbmFtZRUVR0xfVEVYVFVSRV9NQUdfRklMVEVSFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBVHTF9URVhUVVJFX0JBU0VfTEVWRUwXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUbR0xfVEVYVFVSRV9JTU1VVEFCTEVfRk9STUFUFEdMX1RFWFRVUkVfTUFYX0xFVkVMEkdMX1RFWFRVUkVfTUFYX0xPRBJHTF9URVhUVVJFX01JTl9MT0QUR0xfVEVYVFVSRV9TV0laWkxFX0EUR0xfVEVYVFVSRV9TV0laWkxFX0IUR0xfVEVYVFVSRV9TV0laWkxFX0cUR0xfVEVYVFVSRV9TV0laWkxFX1IRR0xfVEVYVFVSRV9XUkFQX1IdR0xfREVQVEhfU1RFTkNJTF9URVhUVVJFX01PREUiR0xfSU1BR0VfRk9STUFUX0NPTVBBVElCSUxJVFlfVFlQRRtHTF9URVhUVVJFX0lNTVVUQUJMRV9MRVZFTFMXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1IdR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQCGGdsR2V0VGV4UGFyYW1ldGVySXVpdk9FUwKImwyInQiInwoYZ2xHZXRUZXhQYXJhbWV0ZXJJdWl2T0VTBnRhcmdldAkNR0xfVEVYVFVSRV8yRBNHTF9URVhUVVJFX0NVQkVfTUFQE0dMX1RFWFRVUkVfMkRfQVJSQVkNR0xfVEVYVFVSRV8zRBlHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFH0dMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVkZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWRdHTF9URVhUVVJFX0VYVEVSTkFMX09FUxFHTF9URVhUVVJFX0JVRkZFUoihDIijCIilChhnbEdldFRleFBhcmFtZXRlckl1aXZPRVMFcG5hbWUVFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhVHTF9URVhUVVJFX01JTl9GSUxURVIRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QVR0xfVEVYVFVSRV9CQVNFX0xFVkVMF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFG0dMX1RFWFRVUkVfSU1NVVRBQkxFX0ZPUk1BVBRHTF9URVhUVVJFX01BWF9MRVZFTBJHTF9URVhUVVJFX01BWF9MT0QSR0xfVEVYVFVSRV9NSU5fTE9EFEdMX1RFWFRVUkVfU1dJWlpMRV9BFEdMX1RFWFRVUkVfU1dJWlpMRV9CFEdMX1RFWFRVUkVfU1dJWlpMRV9HFEdMX1RFWFRVUkVfU1dJWlpMRV9SEUdMX1RFWFRVUkVfV1JBUF9SHUdMX0RFUFRIX1NURU5DSUxfVEVYVFVSRV9NT0RFIkdMX0lNQUdFX0ZPUk1BVF9DT01QQVRJQklMSVRZX1RZUEUbR0xfVEVYVFVSRV9JTU1VVEFCTEVfTEVWRUxTF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SHUdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUAhNnbEdldFRleFBhcmFtZXRlcmZ2AoinDIipCIirChNnbEdldFRleFBhcmFtZXRlcmZ2BnRhcmdldAkNR0xfVEVYVFVSRV8yRBNHTF9URVhUVVJFX0NVQkVfTUFQE0dMX1RFWFRVUkVfMkRfQVJSQVkNR0xfVEVYVFVSRV8zRBlHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFH0dMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVkZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWRdHTF9URVhUVVJFX0VYVEVSTkFMX09FUxFHTF9URVhUVVJFX0JVRkZFUoitDIivCIixChNnbEdldFRleFBhcmFtZXRlcmZ2CXBhcmFtZXRlchUVR0xfVEVYVFVSRV9NQUdfRklMVEVSFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBVHTF9URVhUVVJFX0JBU0VfTEVWRUwXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUbR0xfVEVYVFVSRV9JTU1VVEFCTEVfRk9STUFUFEdMX1RFWFRVUkVfTUFYX0xFVkVMEkdMX1RFWFRVUkVfTUFYX0xPRBJHTF9URVhUVVJFX01JTl9MT0QUR0xfVEVYVFVSRV9TV0laWkxFX0EUR0xfVEVYVFVSRV9TV0laWkxFX0IUR0xfVEVYVFVSRV9TV0laWkxFX0cUR0xfVEVYVFVSRV9TV0laWkxFX1IRR0xfVEVYVFVSRV9XUkFQX1IdR0xfREVQVEhfU1RFTkNJTF9URVhUVVJFX01PREUiR0xfSU1BR0VfRk9STUFUX0NPTVBBVElCSUxJVFlfVFlQRRtHTF9URVhUVVJFX0lNTVVUQUJMRV9MRVZFTFMXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1IdR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQCE2dsR2V0VGV4UGFyYW1ldGVyaXYCiLMMiLUIiLcKE2dsR2V0VGV4UGFyYW1ldGVyaXYGdGFyZ2V0CQ1HTF9URVhUVVJFXzJEE0dMX1RFWFRVUkVfQ1VCRV9NQVATR0xfVEVYVFVSRV8yRF9BUlJBWQ1HTF9URVhUVVJFXzNEGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWRlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZF0dMX1RFWFRVUkVfRVhURVJOQUxfT0VTEUdMX1RFWFRVUkVfQlVGRkVSiLkMiLsIiL0KE2dsR2V0VGV4UGFyYW1ldGVyaXYJcGFyYW1ldGVyFRVHTF9URVhUVVJFX01BR19GSUxURVIVR0xfVEVYVFVSRV9NSU5fRklMVEVSEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UFUdMX1RFWFRVUkVfQkFTRV9MRVZFTBdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRtHTF9URVhUVVJFX0lNTVVUQUJMRV9GT1JNQVQUR0xfVEVYVFVSRV9NQVhfTEVWRUwSR0xfVEVYVFVSRV9NQVhfTE9EEkdMX1RFWFRVUkVfTUlOX0xPRBRHTF9URVhUVVJFX1NXSVpaTEVfQRRHTF9URVhUVVJFX1NXSVpaTEVfQhRHTF9URVhUVVJFX1NXSVpaTEVfRxRHTF9URVhUVVJFX1NXSVpaTEVfUhFHTF9URVhUVVJFX1dSQVBfUh1HTF9ERVBUSF9TVEVOQ0lMX1RFWFRVUkVfTU9ERSJHTF9JTUFHRV9GT1JNQVRfQ09NUEFUSUJJTElUWV9UWVBFG0dMX1RFWFRVUkVfSU1NVVRBQkxFX0xFVkVMUxdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUh1HTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVAIdZ2xHZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcBiL8EiMEGiMMIiMUKHWdsR2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nBG5hbWUEAQICE2dsR2V0VW5pZm9ybUluZGljZXMBiMcEiMkGiMsIiM0KE2dsR2V0VW5pZm9ybUluZGljZXMOdW5pZm9ybUluZGljZXMEAQICDmdsR2V0VW5pZm9ybWZ2AYjPBIjRBojTCIjVCg5nbEdldFVuaWZvcm1mdgZ2YWx1ZXMEAQICDmdsR2V0VW5pZm9ybWl2AYjXBIjZBojbCIjdCg5nbEdldFVuaWZvcm1pdgZ2YWx1ZXMEAQICD2dsR2V0VW5pZm9ybXVpdgGI3wSI4QaI4wiI5QoPZ2xHZXRVbmlmb3JtdWl2BnZhbHVlcwQBAgIUZ2xHZXRWZXJ0ZXhBdHRyaWJJaXYCiOcMiOkIiOsKFGdsR2V0VmVydGV4QXR0cmliSWl2BXBuYW1lCxhHTF9DVVJSRU5UX1ZFUlRFWF9BVFRSSUIeR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEG0dMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRRtHTF9WRVJURVhfQVRUUklCX0FSUkFZX1RZUEUhR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVEHUdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFJUdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkceR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9ESVZJU09SHkdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfSU5URUdFUhhHTF9WRVJURVhfQVRUUklCX0JJTkRJTkcgR0xfVkVSVEVYX0FUVFJJQl9SRUxBVElWRV9PRkZTRVSI7QSI7waI8QiI8woUZ2xHZXRWZXJ0ZXhBdHRyaWJJaXYGcGFyYW1zBAECAhVnbEdldFZlcnRleEF0dHJpYkl1aXYCiPUMiPcIiPkKFWdsR2V0VmVydGV4QXR0cmliSXVpdgVwbmFtZQsYR0xfQ1VSUkVOVF9WRVJURVhfQVRUUklCHkdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRBtHTF9WRVJURVhfQVRUUklCX0FSUkFZX1NJWkUbR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFIUdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfTk9STUFMSVpFRB1HTF9WRVJURVhfQVRUUklCX0FSUkFZX1NUUklERSVHTF9WRVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5HHkdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfRElWSVNPUh5HTF9WRVJURVhfQVRUUklCX0FSUkFZX0lOVEVHRVIYR0xfVkVSVEVYX0FUVFJJQl9CSU5ESU5HIEdMX1ZFUlRFWF9BVFRSSUJfUkVMQVRJVkVfT0ZGU0VUiPsEiP0GiP8IiQEKFWdsR2V0VmVydGV4QXR0cmliSXVpdgZwYXJhbXMEAQICGWdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnYBiQMMiQUIiQcKGWdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnYFcG5hbWUBHkdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfUE9JTlRFUgITZ2xHZXRWZXJ0ZXhBdHRyaWJmdgKJCQyJCwiJDQoTZ2xHZXRWZXJ0ZXhBdHRyaWJmdgVwbmFtZQsYR0xfQ1VSUkVOVF9WRVJURVhfQVRUUklCHkdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRBtHTF9WRVJURVhfQVRUUklCX0FSUkFZX1NJWkUbR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFIUdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfTk9STUFMSVpFRB1HTF9WRVJURVhfQVRUUklCX0FSUkFZX1NUUklERSVHTF9WRVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5HHkdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfRElWSVNPUh5HTF9WRVJURVhfQVRUUklCX0FSUkFZX0lOVEVHRVIYR0xfVkVSVEVYX0FUVFJJQl9CSU5ESU5HIEdMX1ZFUlRFWF9BVFRSSUJfUkVMQVRJVkVfT0ZGU0VUiQ8EiREGiRMIiRUKE2dsR2V0VmVydGV4QXR0cmliZnYGcGFyYW1zBAECAhNnbEdldFZlcnRleEF0dHJpYml2AokXDIkZCIkbChNnbEdldFZlcnRleEF0dHJpYml2BXBuYW1lCxhHTF9DVVJSRU5UX1ZFUlRFWF9BVFRSSUIeR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEG0dMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRRtHTF9WRVJURVhfQVRUUklCX0FSUkFZX1RZUEUhR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVEHUdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFJUdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkceR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9ESVZJU09SHkdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfSU5URUdFUhhHTF9WRVJURVhfQVRUUklCX0JJTkRJTkcgR0xfVkVSVEVYX0FUVFJJQl9SRUxBVElWRV9PRkZTRVSJHQSJHwaJIQiJIwoTZ2xHZXRWZXJ0ZXhBdHRyaWJpdgZwYXJhbXMEAQICD2dsR2V0blVuaWZvcm1mdgGJJQSJJwaJKQiJKwoPZ2xHZXRuVW5pZm9ybWZ2BnZhbHVlcwQBAgISZ2xHZXRuVW5pZm9ybWZ2S0hSAYktBIkvBokxCIkzChJnbEdldG5Vbmlmb3JtZnZLSFIGcGFyYW1zBAECAg9nbEdldG5Vbmlmb3JtaXYBiTUEiTcGiTkIiTsKD2dsR2V0blVuaWZvcm1pdgZ2YWx1ZXMEAQICEmdsR2V0blVuaWZvcm1pdktIUgGJPQSJPwaJQQiJQwoSZ2xHZXRuVW5pZm9ybWl2S0hSBnBhcmFtcwQBAgIQZ2xHZXRuVW5pZm9ybXVpdgGJRQSJRwaJSQiJSwoQZ2xHZXRuVW5pZm9ybXVpdgZ2YWx1ZXMEAQICE2dsR2V0blVuaWZvcm11aXZLSFIBiU0EiU8GiVEIiVMKE2dsR2V0blVuaWZvcm11aXZLSFIGcGFyYW1zBAECAgZnbEhpbnQCiVUMiVcIiVkKBmdsSGludAZ0YXJnZXQCF0dMX0dFTkVSQVRFX01JUE1BUF9ISU5UIkdMX0ZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlSJWwyJXQiJXwoGZ2xIaW50BG1vZGUDDEdMX0RPTlRfQ0FSRQpHTF9GQVNURVNUCUdMX05JQ0VTVAIWZ2xJbnNlcnRFdmVudE1hcmtlckVYVAGJYQSJYwaJZQiJZwoWZ2xJbnNlcnRFdmVudE1hcmtlckVYVAZtYXJrZXIEAQACF2dsSW52YWxpZGF0ZUZyYW1lYnVmZmVyAolpDIlrCIltChdnbEludmFsaWRhdGVGcmFtZWJ1ZmZlcgZ0YXJnZXQDDkdMX0ZSQU1FQlVGRkVSE0dMX0RSQVdfRlJBTUVCVUZGRVITR0xfUkVBRF9GUkFNRUJVRkZFUolvDIlxBolzBol1CIl3ChdnbEludmFsaWRhdGVGcmFtZWJ1ZmZlcgthdHRhY2htZW50cwQCFghHTF9DT0xPUghHTF9ERVBUSApHTF9TVEVOQ0lMFEdMX0NPTE9SX0FUVEFDSE1FTlQwFEdMX0NPTE9SX0FUVEFDSE1FTlQxFUdMX0NPTE9SX0FUVEFDSE1FTlQxMBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTEVR0xfQ09MT1JfQVRUQUNITUVOVDEyFUdMX0NPTE9SX0FUVEFDSE1FTlQxMxVHTF9DT0xPUl9BVFRBQ0hNRU5UMTQVR0xfQ09MT1JfQVRUQUNITUVOVDE1FEdMX0NPTE9SX0FUVEFDSE1FTlQyFEdMX0NPTE9SX0FUVEFDSE1FTlQzFEdMX0NPTE9SX0FUVEFDSE1FTlQ0FEdMX0NPTE9SX0FUVEFDSE1FTlQ1FEdMX0NPTE9SX0FUVEFDSE1FTlQ2FEdMX0NPTE9SX0FUVEFDSE1FTlQ3FEdMX0NPTE9SX0FUVEFDSE1FTlQ4FEdMX0NPTE9SX0FUVEFDSE1FTlQ5E0dMX0RFUFRIX0FUVEFDSE1FTlQbR0xfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UFUdMX1NURU5DSUxfQVRUQUNITUVOVAIaZ2xJbnZhbGlkYXRlU3ViRnJhbWVidWZmZXICiXkMiXsIiX0KGmdsSW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyBnRhcmdldAEOR0xfRlJBTUVCVUZGRVKJfwSJgQaJgwiJhQoaZ2xJbnZhbGlkYXRlU3ViRnJhbWVidWZmZXILYXR0YWNobWVudHMEAQACC2dsSXNFbmFibGVkAYmHDImJCImLCgtnbElzRW5hYmxlZApjYXBhYmlsaXR5EAhHTF9CTEVORAxHTF9DVUxMX0ZBQ0UNR0xfREVQVEhfVEVTVAlHTF9ESVRIRVIWR0xfUE9MWUdPTl9PRkZTRVRfRklMTBtHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0USR0xfU0FNUExFX0NPVkVSQUdFD0dMX1NDSVNTT1JfVEVTVA9HTF9TVEVOQ0lMX1RFU1QgR0xfUFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgVR0xfUkFTVEVSSVpFUl9ESVNDQVJEDkdMX1NBTVBMRV9NQVNLD0dMX0RFQlVHX09VVFBVVBtHTF9ERUJVR19PVVRQVVRfU1lOQ0hST05PVVMSR0xfQUxQSEFfVEVTVF9RQ09NF0dMX0ZSQU1FQlVGRkVSX1NSR0JfRVhUAgxnbElzRW5hYmxlZGkBiY0MiY8IiZEKDGdsSXNFbmFibGVkaQpjYXBhYmlsaXR5EAhHTF9CTEVORAxHTF9DVUxMX0ZBQ0UNR0xfREVQVEhfVEVTVAlHTF9ESVRIRVIWR0xfUE9MWUdPTl9PRkZTRVRfRklMTBtHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0USR0xfU0FNUExFX0NPVkVSQUdFD0dMX1NDSVNTT1JfVEVTVA9HTF9TVEVOQ0lMX1RFU1QgR0xfUFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgVR0xfUkFTVEVSSVpFUl9ESVNDQVJEDkdMX1NBTVBMRV9NQVNLD0dMX0RFQlVHX09VVFBVVBtHTF9ERUJVR19PVVRQVVRfU1lOQ0hST05PVVMSR0xfQUxQSEFfVEVTVF9RQ09NF0dMX0ZSQU1FQlVGRkVSX1NSR0JfRVhUAg9nbElzRW5hYmxlZGlFWFQBiZMMiZUIiZcKD2dsSXNFbmFibGVkaUVYVAZ0YXJnZXQQCEdMX0JMRU5EDEdMX0NVTExfRkFDRQ1HTF9ERVBUSF9URVNUCUdMX0RJVEhFUhZHTF9QT0xZR09OX09GRlNFVF9GSUxMG0dMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRRJHTF9TQU1QTEVfQ09WRVJBR0UPR0xfU0NJU1NPUl9URVNUD0dMX1NURU5DSUxfVEVTVCBHTF9QUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWBVHTF9SQVNURVJJWkVSX0RJU0NBUkQOR0xfU0FNUExFX01BU0sPR0xfREVCVUdfT1VUUFVUG0dMX0RFQlVHX09VVFBVVF9TWU5DSFJPTk9VUxJHTF9BTFBIQV9URVNUX1FDT00XR0xfRlJBTUVCVUZGRVJfU1JHQl9FWFQCDmdsSXNFbmFibGVkaU5WAYmZDImbCImdCg5nbElzRW5hYmxlZGlOVgZ0YXJnZXQQCEdMX0JMRU5EDEdMX0NVTExfRkFDRQ1HTF9ERVBUSF9URVNUCUdMX0RJVEhFUhZHTF9QT0xZR09OX09GRlNFVF9GSUxMG0dMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRRJHTF9TQU1QTEVfQ09WRVJBR0UPR0xfU0NJU1NPUl9URVNUD0dMX1NURU5DSUxfVEVTVCBHTF9QUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWBVHTF9SQVNURVJJWkVSX0RJU0NBUkQOR0xfU0FNUExFX01BU0sPR0xfREVCVUdfT1VUUFVUG0dMX0RFQlVHX09VVFBVVF9TWU5DSFJPTk9VUxJHTF9BTFBIQV9URVNUX1FDT00XR0xfRlJBTUVCVUZGRVJfU1JHQl9FWFQCD2dsSXNFbmFibGVkaU9FUwGJnwyJoQiJowoPZ2xJc0VuYWJsZWRpT0VTBnRhcmdldBAIR0xfQkxFTkQMR0xfQ1VMTF9GQUNFDUdMX0RFUFRIX1RFU1QJR0xfRElUSEVSFkdMX1BPTFlHT05fT0ZGU0VUX0ZJTEwbR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFEkdMX1NBTVBMRV9DT1ZFUkFHRQ9HTF9TQ0lTU09SX1RFU1QPR0xfU1RFTkNJTF9URVNUIEdMX1BSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYFUdMX1JBU1RFUklaRVJfRElTQ0FSRA5HTF9TQU1QTEVfTUFTSw9HTF9ERUJVR19PVVRQVVQbR0xfREVCVUdfT1VUUFVUX1NZTkNIUk9OT1VTEkdMX0FMUEhBX1RFU1RfUUNPTRdHTF9GUkFNRUJVRkZFUl9TUkdCX0VYVAIQZ2xMYWJlbE9iamVjdEVYVAGJpQyJpwiJqQoQZ2xMYWJlbE9iamVjdEVYVAR0eXBlCwpHTF9URVhUVVJFDkdMX0ZSQU1FQlVGRkVSD0dMX1JFTkRFUkJVRkZFUhRHTF9CVUZGRVJfT0JKRUNUX0VYVBRHTF9TSEFERVJfT0JKRUNUX0VYVBVHTF9QUk9HUkFNX09CSkVDVF9FWFQaR0xfVkVSVEVYX0FSUkFZX09CSkVDVF9FWFQTR0xfUVVFUllfT0JKRUNUX0VYVApHTF9TQU1QTEVSFUdMX1RSQU5TRk9STV9GRUVEQkFDSx5HTF9QUk9HUkFNX1BJUEVMSU5FX09CSkVDVF9FWFQCC2dsTWFwQnVmZmVyA4mrDImtCImvCgtnbE1hcEJ1ZmZlcgZ0YXJnZXQND0dMX0FSUkFZX0JVRkZFUhdHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUhNHTF9DT1BZX1JFQURfQlVGRkVSFEdMX0NPUFlfV1JJVEVfQlVGRkVSFEdMX1BJWEVMX1BBQ0tfQlVGRkVSFkdMX1BJWEVMX1VOUEFDS19CVUZGRVIcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUhFHTF9VTklGT1JNX0JVRkZFUhhHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVIbR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSF0dMX0RSQVdfSU5ESVJFQ1RfQlVGRkVSGEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUhFHTF9URVhUVVJFX0JVRkZFUomxDImzCIm1CgtnbE1hcEJ1ZmZlcgZhY2Nlc3MDDEdMX1JFQURfT05MWQ1HTF9XUklURV9PTkxZDUdMX1JFQURfV1JJVEWJtwSJuQaJuwiJvQoLZ2xNYXBCdWZmZXIGcmVzdWx0BAICAAIOZ2xNYXBCdWZmZXJPRVMDib8MicEIicMKDmdsTWFwQnVmZmVyT0VTBnRhcmdldA0PR0xfQVJSQVlfQlVGRkVSF0dMX0VMRU1FTlRfQVJSQVlfQlVGRkVSE0dMX0NPUFlfUkVBRF9CVUZGRVIUR0xfQ09QWV9XUklURV9CVUZGRVIUR0xfUElYRUxfUEFDS19CVUZGRVIWR0xfUElYRUxfVU5QQUNLX0JVRkZFUhxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSEUdMX1VOSUZPUk1fQlVGRkVSGEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUhtHTF9ESVNQQVRDSF9JTkRJUkVDVF9CVUZGRVIXR0xfRFJBV19JTkRJUkVDVF9CVUZGRVIYR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSEUdMX1RFWFRVUkVfQlVGRkVSicUMiccIickKDmdsTWFwQnVmZmVyT0VTBmFjY2VzcwMMR0xfUkVBRF9PTkxZDUdMX1dSSVRFX09OTFkNR0xfUkVBRF9XUklURYnLBInNBonPCInRCg5nbE1hcEJ1ZmZlck9FUwZyZXN1bHQEAgIAAhBnbE1hcEJ1ZmZlclJhbmdlA4nTDInVCInXChBnbE1hcEJ1ZmZlclJhbmdlBnRhcmdldA0PR0xfQVJSQVlfQlVGRkVSF0dMX0VMRU1FTlRfQVJSQVlfQlVGRkVSE0dMX0NPUFlfUkVBRF9CVUZGRVIUR0xfQ09QWV9XUklURV9CVUZGRVIUR0xfUElYRUxfUEFDS19CVUZGRVIWR0xfUElYRUxfVU5QQUNLX0JVRkZFUhxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSEUdMX1VOSUZPUk1fQlVGRkVSGEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUhtHTF9ESVNQQVRDSF9JTkRJUkVDVF9CVUZGRVIXR0xfRFJBV19JTkRJUkVDVF9CVUZGRVIYR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSEUdMX1RFWFRVUkVfQlVGRkVSidkMidsIid0KEGdsTWFwQnVmZmVyUmFuZ2UGYWNjZXNzAQ9HTF9NQVBfUkVBRF9CSVSJ3wSJ4QaJ4wiJ5QoQZ2xNYXBCdWZmZXJSYW5nZQZyZXN1bHQEAgIAAhNnbE1hcEJ1ZmZlclJhbmdlRVhUA4nnDInpCInrChNnbE1hcEJ1ZmZlclJhbmdlRVhUBnRhcmdldA0PR0xfQVJSQVlfQlVGRkVSF0dMX0VMRU1FTlRfQVJSQVlfQlVGRkVSE0dMX0NPUFlfUkVBRF9CVUZGRVIUR0xfQ09QWV9XUklURV9CVUZGRVIUR0xfUElYRUxfUEFDS19CVUZGRVIWR0xfUElYRUxfVU5QQUNLX0JVRkZFUhxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSEUdMX1VOSUZPUk1fQlVGRkVSGEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUhtHTF9ESVNQQVRDSF9JTkRJUkVDVF9CVUZGRVIXR0xfRFJBV19JTkRJUkVDVF9CVUZGRVIYR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSEUdMX1RFWFRVUkVfQlVGRkVSie0Mie8IifEKE2dsTWFwQnVmZmVyUmFuZ2VFWFQGYWNjZXNzAQ9HTF9NQVBfUkVBRF9CSVSJ8wSJ9QaJ9wiJ+QoTZ2xNYXBCdWZmZXJSYW5nZUVYVAZyZXN1bHQEAgIAAg9nbE1lbW9yeUJhcnJpZXIBifsMif0Iif8KD2dsTWVtb3J5QmFycmllcghiYXJyaWVycw4TR0xfQUxMX0JBUlJJRVJfQklUUx1HTF9BVE9NSUNfQ09VTlRFUl9CQVJSSUVSX0JJVBxHTF9CVUZGRVJfVVBEQVRFX0JBUlJJRVJfQklUFkdMX0NPTU1BTkRfQkFSUklFUl9CSVQcR0xfRUxFTUVOVF9BUlJBWV9CQVJSSUVSX0JJVBpHTF9GUkFNRUJVRkZFUl9CQVJSSUVSX0JJVBtHTF9QSVhFTF9CVUZGRVJfQkFSUklFUl9CSVQiR0xfU0hBREVSX0lNQUdFX0FDQ0VTU19CQVJSSUVSX0JJVB1HTF9TSEFERVJfU1RPUkFHRV9CQVJSSUVSX0JJVBxHTF9URVhUVVJFX0ZFVENIX0JBUlJJRVJfQklUHUdMX1RFWFRVUkVfVVBEQVRFX0JBUlJJRVJfQklUIUdMX1RSQU5TRk9STV9GRUVEQkFDS19CQVJSSUVSX0JJVBZHTF9VTklGT1JNX0JBUlJJRVJfQklUIkdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfQkFSUklFUl9CSVQCF2dsTWVtb3J5QmFycmllckJ5UmVnaW9uAYoBDIoDCIoFChdnbE1lbW9yeUJhcnJpZXJCeVJlZ2lvbghiYXJyaWVycw4TR0xfQUxMX0JBUlJJRVJfQklUUx1HTF9BVE9NSUNfQ09VTlRFUl9CQVJSSUVSX0JJVBxHTF9CVUZGRVJfVVBEQVRFX0JBUlJJRVJfQklUFkdMX0NPTU1BTkRfQkFSUklFUl9CSVQcR0xfRUxFTUVOVF9BUlJBWV9CQVJSSUVSX0JJVBpHTF9GUkFNRUJVRkZFUl9CQVJSSUVSX0JJVBtHTF9QSVhFTF9CVUZGRVJfQkFSUklFUl9CSVQiR0xfU0hBREVSX0lNQUdFX0FDQ0VTU19CQVJSSUVSX0JJVB1HTF9TSEFERVJfU1RPUkFHRV9CQVJSSUVSX0JJVBxHTF9URVhUVVJFX0ZFVENIX0JBUlJJRVJfQklUHUdMX1RFWFRVUkVfVVBEQVRFX0JBUlJJRVJfQklUIUdMX1RSQU5TRk9STV9GRUVEQkFDS19CQVJSSUVSX0JJVBZHTF9VTklGT1JNX0JBUlJJRVJfQklUIkdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfQkFSUklFUl9CSVQCDWdsT2JqZWN0TGFiZWwBigcMigkIigsKDWdsT2JqZWN0TGFiZWwKaWRlbnRpZmllcgsKR0xfVEVYVFVSRQ5HTF9GUkFNRUJVRkZFUg9HTF9SRU5ERVJCVUZGRVIJR0xfQlVGRkVSCUdMX1NIQURFUgpHTF9QUk9HUkFND0dMX1ZFUlRFWF9BUlJBWQhHTF9RVUVSWQpHTF9TQU1QTEVSFUdMX1RSQU5TRk9STV9GRUVEQkFDSxNHTF9QUk9HUkFNX1BJUEVMSU5FAhBnbE9iamVjdExhYmVsS0hSAYoNDIoPCIoRChBnbE9iamVjdExhYmVsS0hSCmlkZW50aWZpZXILCkdMX1RFWFRVUkUOR0xfRlJBTUVCVUZGRVIPR0xfUkVOREVSQlVGRkVSCUdMX0JVRkZFUglHTF9TSEFERVIKR0xfUFJPR1JBTQ9HTF9WRVJURVhfQVJSQVkIR0xfUVVFUlkKR0xfU0FNUExFUhVHTF9UUkFOU0ZPUk1fRkVFREJBQ0sTR0xfUFJPR1JBTV9QSVBFTElORQIQZ2xPYmplY3RQdHJMYWJlbAGKEwSKFQaKFwiKGQoQZ2xPYmplY3RQdHJMYWJlbAVsYWJlbAQBAAITZ2xPYmplY3RQdHJMYWJlbEtIUgGKGwSKHQaKHwiKIQoTZ2xPYmplY3RQdHJMYWJlbEtIUgVsYWJlbAQBAAIRZ2xQYXRjaFBhcmFtZXRlcmkBiiMMiiUIiicKEWdsUGF0Y2hQYXJhbWV0ZXJpBXBuYW1lARFHTF9QQVRDSF9WRVJUSUNFUwIUZ2xQYXRjaFBhcmFtZXRlcmlFWFQBiikMiisIii0KFGdsUGF0Y2hQYXJhbWV0ZXJpRVhUBXBuYW1lARFHTF9QQVRDSF9WRVJUSUNFUwIUZ2xQYXRjaFBhcmFtZXRlcmlPRVMBii8MijEIijMKFGdsUGF0Y2hQYXJhbWV0ZXJpT0VTBXBuYW1lARFHTF9QQVRDSF9WRVJUSUNFUwINZ2xQaXhlbFN0b3JlaQGKNQyKNwiKOQoNZ2xQaXhlbFN0b3JlaQlwYXJhbWV0ZXIMEUdMX1BBQ0tfQUxJR05NRU5UFEdMX1BBQ0tfSU1BR0VfSEVJR0hUEkdMX1BBQ0tfUk9XX0xFTkdUSBNHTF9QQUNLX1NLSVBfSU1BR0VTE0dMX1BBQ0tfU0tJUF9QSVhFTFMRR0xfUEFDS19TS0lQX1JPV1MTR0xfVU5QQUNLX0FMSUdOTUVOVBZHTF9VTlBBQ0tfSU1BR0VfSEVJR0hUFEdMX1VOUEFDS19ST1dfTEVOR1RIFUdMX1VOUEFDS19TS0lQX0lNQUdFUxVHTF9VTlBBQ0tfU0tJUF9QSVhFTFMTR0xfVU5QQUNLX1NLSVBfUk9XUwIPZ2xQcm9ncmFtQmluYXJ5Aoo7DIo9CIo/Cg9nbFByb2dyYW1CaW5hcnkMYmluYXJ5Rm9ybWF0ARJHTF9aNDAwX0JJTkFSWV9BTUSKQQSKQwaKRQiKRwoPZ2xQcm9ncmFtQmluYXJ5BmJpbmFyeQQBAAISZ2xQcm9ncmFtQmluYXJ5T0VTAopJDIpLCIpNChJnbFByb2dyYW1CaW5hcnlPRVMNYmluYXJ5X2Zvcm1hdAESR0xfWjQwMF9CSU5BUllfQU1Eik8EilEGilMIilUKEmdsUHJvZ3JhbUJpbmFyeU9FUwZiaW5hcnkEAQACE2dsUHJvZ3JhbVBhcmFtZXRlcmkBilcMilkIilsKE2dsUHJvZ3JhbVBhcmFtZXRlcmkFcG5hbWUCIkdMX1BST0dSQU1fQklOQVJZX1JFVFJJRVZBQkxFX0hJTlQUR0xfUFJPR1JBTV9TRVBBUkFCTEUCFmdsUHJvZ3JhbVBhcmFtZXRlcmlFWFQBil0Mil8IimEKFmdsUHJvZ3JhbVBhcmFtZXRlcmlFWFQFcG5hbWUCIkdMX1BST0dSQU1fQklOQVJZX1JFVFJJRVZBQkxFX0hJTlQUR0xfUFJPR1JBTV9TRVBBUkFCTEUCEmdsUHJvZ3JhbVVuaWZvcm0xZgACFWdsUHJvZ3JhbVVuaWZvcm0xZkVYVAACE2dsUHJvZ3JhbVVuaWZvcm0xZnYBimMEimUGimcIimkKE2dsUHJvZ3JhbVVuaWZvcm0xZnYGdmFsdWVzBAICAAIWZ2xQcm9ncmFtVW5pZm9ybTFmdkVYVAGKawSKbQaKbwiKcQoWZ2xQcm9ncmFtVW5pZm9ybTFmdkVYVAV2YWx1ZQQCAgACEmdsUHJvZ3JhbVVuaWZvcm0xaQACFWdsUHJvZ3JhbVVuaWZvcm0xaUVYVAACE2dsUHJvZ3JhbVVuaWZvcm0xaXYBinMEinUGincIinkKE2dsUHJvZ3JhbVVuaWZvcm0xaXYGdmFsdWVzBAICAAIWZ2xQcm9ncmFtVW5pZm9ybTFpdkVYVAGKewSKfQaKfwiKgQoWZ2xQcm9ncmFtVW5pZm9ybTFpdkVYVAV2YWx1ZQQCAgACE2dsUHJvZ3JhbVVuaWZvcm0xdWkAAhZnbFByb2dyYW1Vbmlmb3JtMXVpRVhUAAIUZ2xQcm9ncmFtVW5pZm9ybTF1aXYBioMEioUGiocIiokKFGdsUHJvZ3JhbVVuaWZvcm0xdWl2BnZhbHVlcwQCAgACF2dsUHJvZ3JhbVVuaWZvcm0xdWl2RVhUAYqLBIqNBoqPCIqRChdnbFByb2dyYW1Vbmlmb3JtMXVpdkVYVAV2YWx1ZQQCAgACEmdsUHJvZ3JhbVVuaWZvcm0yZgACFWdsUHJvZ3JhbVVuaWZvcm0yZkVYVAACE2dsUHJvZ3JhbVVuaWZvcm0yZnYBipMEipUGipcIipkKE2dsUHJvZ3JhbVVuaWZvcm0yZnYGdmFsdWVzBAICAAIWZ2xQcm9ncmFtVW5pZm9ybTJmdkVYVAGKmwSKnQaKnwiKoQoWZ2xQcm9ncmFtVW5pZm9ybTJmdkVYVAV2YWx1ZQQCAgACEmdsUHJvZ3JhbVVuaWZvcm0yaQACFWdsUHJvZ3JhbVVuaWZvcm0yaUVYVAACE2dsUHJvZ3JhbVVuaWZvcm0yaXYBiqMEiqUGiqcIiqkKE2dsUHJvZ3JhbVVuaWZvcm0yaXYGdmFsdWVzBAICAAIWZ2xQcm9ncmFtVW5pZm9ybTJpdkVYVAGKqwSKrQaKrwiKsQoWZ2xQcm9ncmFtVW5pZm9ybTJpdkVYVAV2YWx1ZQQCAgACE2dsUHJvZ3JhbVVuaWZvcm0ydWkAAhZnbFByb2dyYW1Vbmlmb3JtMnVpRVhUAAIUZ2xQcm9ncmFtVW5pZm9ybTJ1aXYBirMEirUGircIirkKFGdsUHJvZ3JhbVVuaWZvcm0ydWl2BnZhbHVlcwQCAgACF2dsUHJvZ3JhbVVuaWZvcm0ydWl2RVhUAYq7BIq9Boq/CIrBChdnbFByb2dyYW1Vbmlmb3JtMnVpdkVYVAV2YWx1ZQQCAgACEmdsUHJvZ3JhbVVuaWZvcm0zZgACFWdsUHJvZ3JhbVVuaWZvcm0zZkVYVAACE2dsUHJvZ3JhbVVuaWZvcm0zZnYBisMEisUGiscIiskKE2dsUHJvZ3JhbVVuaWZvcm0zZnYGdmFsdWVzBAICAAIWZ2xQcm9ncmFtVW5pZm9ybTNmdkVYVAGKywSKzQaKzwiK0QoWZ2xQcm9ncmFtVW5pZm9ybTNmdkVYVAV2YWx1ZQQCAgACEmdsUHJvZ3JhbVVuaWZvcm0zaQACFWdsUHJvZ3JhbVVuaWZvcm0zaUVYVAACE2dsUHJvZ3JhbVVuaWZvcm0zaXYBitMEitUGitcIitkKE2dsUHJvZ3JhbVVuaWZvcm0zaXYGdmFsdWVzBAICAAIWZ2xQcm9ncmFtVW5pZm9ybTNpdkVYVAGK2wSK3QaK3wiK4QoWZ2xQcm9ncmFtVW5pZm9ybTNpdkVYVAV2YWx1ZQQCAgACE2dsUHJvZ3JhbVVuaWZvcm0zdWkAAhZnbFByb2dyYW1Vbmlmb3JtM3VpRVhUAAIUZ2xQcm9ncmFtVW5pZm9ybTN1aXYBiuMEiuUGiucIiukKFGdsUHJvZ3JhbVVuaWZvcm0zdWl2BnZhbHVlcwQCAgACF2dsUHJvZ3JhbVVuaWZvcm0zdWl2RVhUAYrrBIrtBorvCIrxChdnbFByb2dyYW1Vbmlmb3JtM3VpdkVYVAV2YWx1ZQQCAgACEmdsUHJvZ3JhbVVuaWZvcm00ZgACFWdsUHJvZ3JhbVVuaWZvcm00ZkVYVAACE2dsUHJvZ3JhbVVuaWZvcm00ZnYBivMEivUGivcIivkKE2dsUHJvZ3JhbVVuaWZvcm00ZnYGdmFsdWVzBAICAAIWZ2xQcm9ncmFtVW5pZm9ybTRmdkVYVAGK+wSK/QaK/wiLAQoWZ2xQcm9ncmFtVW5pZm9ybTRmdkVYVAV2YWx1ZQQCAgACEmdsUHJvZ3JhbVVuaWZvcm00aQACFWdsUHJvZ3JhbVVuaWZvcm00aUVYVAACE2dsUHJvZ3JhbVVuaWZvcm00aXYBiwMEiwUGiwcIiwkKE2dsUHJvZ3JhbVVuaWZvcm00aXYGdmFsdWVzBAICAAIWZ2xQcm9ncmFtVW5pZm9ybTRpdkVYVAGLCwSLDQaLDwiLEQoWZ2xQcm9ncmFtVW5pZm9ybTRpdkVYVAV2YWx1ZQQCAgACE2dsUHJvZ3JhbVVuaWZvcm00dWkAAhZnbFByb2dyYW1Vbmlmb3JtNHVpRVhUAAIUZ2xQcm9ncmFtVW5pZm9ybTR1aXYBixMEixUGixcIixkKFGdsUHJvZ3JhbVVuaWZvcm00dWl2BnZhbHVlcwQCAgACF2dsUHJvZ3JhbVVuaWZvcm00dWl2RVhUAYsbBIsdBosfCIshChdnbFByb2dyYW1Vbmlmb3JtNHVpdkVYVAV2YWx1ZQQCAgACGWdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgyZnYBiyMEiyUGiycIiykKGWdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgyZnYGdmFsdWVzBAICAAIcZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDJmdkVYVAGLKwSLLQaLLwiLMQocZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDJmdkVYVAV2YWx1ZQQCAgACG2dsUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNmdgGLMwSLNQaLNwiLOQobZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4M2Z2BnZhbHVlcwQCAgACHmdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNmdkVYVAGLOwSLPQaLPwiLQQoeZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4M2Z2RVhUBXZhbHVlBAICAAIbZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4NGZ2AYtDBItFBotHCItJChtnbFByb2dyYW1Vbmlmb3JtTWF0cml4Mng0ZnYGdmFsdWVzBAICAAIeZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4NGZ2RVhUAYtLBItNBotPCItRCh5nbFByb2dyYW1Vbmlmb3JtTWF0cml4Mng0ZnZFWFQFdmFsdWUEAgIAAhlnbFByb2dyYW1Vbmlmb3JtTWF0cml4M2Z2AYtTBItVBotXCItZChlnbFByb2dyYW1Vbmlmb3JtTWF0cml4M2Z2BnZhbHVlcwQCAgACHGdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgzZnZFWFQBi1sEi10Gi18Ii2EKHGdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgzZnZFWFQFdmFsdWUEAgIAAhtnbFByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZnYBi2MEi2UGi2cIi2kKG2dsUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDJmdgZ2YWx1ZXMEAgIAAh5nbFByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZnZFWFQBi2sEi20Gi28Ii3EKHmdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDJmdkVYVAV2YWx1ZQQCAgACG2dsUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRmdgGLcwSLdQaLdwiLeQobZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDN4NGZ2BnZhbHVlcwQCAgACHmdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRmdkVYVAGLewSLfQaLfwiLgQoeZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDN4NGZ2RVhUBXZhbHVlBAICAAIZZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDRmdgGLgwSLhQaLhwiLiQoZZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDRmdgZ2YWx1ZXMEAgIAAhxnbFByb2dyYW1Vbmlmb3JtTWF0cml4NGZ2RVhUAYuLBIuNBouPCIuRChxnbFByb2dyYW1Vbmlmb3JtTWF0cml4NGZ2RVhUBXZhbHVlBAICAAIbZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDR4MmZ2AYuTBIuVBouXCIuZChtnbFByb2dyYW1Vbmlmb3JtTWF0cml4NHgyZnYGdmFsdWVzBAICAAIeZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDR4MmZ2RVhUAYubBIudBoufCIuhCh5nbFByb2dyYW1Vbmlmb3JtTWF0cml4NHgyZnZFWFQFdmFsdWUEAgIAAhtnbFByb2dyYW1Vbmlmb3JtTWF0cml4NHgzZnYBi6MEi6UGi6cIi6kKG2dsUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNmdgZ2YWx1ZXMEAgIAAh5nbFByb2dyYW1Vbmlmb3JtTWF0cml4NHgzZnZFWFQBi6sEi60Gi68Ii7EKHmdsUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNmdkVYVAV2YWx1ZQQCAgACEGdsUHVzaERlYnVnR3JvdXACi7MMi7UIi7cKEGdsUHVzaERlYnVnR3JvdXAGc291cmNlAhtHTF9ERUJVR19TT1VSQ0VfQVBQTElDQVRJT04bR0xfREVCVUdfU09VUkNFX1RISVJEX1BBUlRZi7kEi7sGi70Ii78KEGdsUHVzaERlYnVnR3JvdXAHbWVzc2FnZQQBAAITZ2xQdXNoRGVidWdHcm91cEtIUgKLwQyLwwiLxQoTZ2xQdXNoRGVidWdHcm91cEtIUgZzb3VyY2UCG0dMX0RFQlVHX1NPVVJDRV9BUFBMSUNBVElPThtHTF9ERUJVR19TT1VSQ0VfVEhJUkRfUEFSVFmLxwSLyQaLywiLzQoTZ2xQdXNoRGVidWdHcm91cEtIUgdtZXNzYWdlBAEAAhRnbFB1c2hHcm91cE1hcmtlckVYVAGLzwSL0QaL0wiL1QoUZ2xQdXNoR3JvdXBNYXJrZXJFWFQGbWFya2VyBAEAAgxnbFJlYWRCdWZmZXIBi9cMi9kIi9sKDGdsUmVhZEJ1ZmZlcgNzcmMSB0dMX0JBQ0sUR0xfQ09MT1JfQVRUQUNITUVOVDAUR0xfQ09MT1JfQVRUQUNITUVOVDEVR0xfQ09MT1JfQVRUQUNITUVOVDEwFUdMX0NPTE9SX0FUVEFDSE1FTlQxMRVHTF9DT0xPUl9BVFRBQ0hNRU5UMTIVR0xfQ09MT1JfQVRUQUNITUVOVDEzFUdMX0NPTE9SX0FUVEFDSE1FTlQxNBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTUUR0xfQ09MT1JfQVRUQUNITUVOVDIUR0xfQ09MT1JfQVRUQUNITUVOVDMUR0xfQ09MT1JfQVRUQUNITUVOVDQUR0xfQ09MT1JfQVRUQUNITUVOVDUUR0xfQ09MT1JfQVRUQUNITUVOVDYUR0xfQ09MT1JfQVRUQUNITUVOVDcUR0xfQ09MT1JfQVRUQUNITUVOVDgUR0xfQ09MT1JfQVRUQUNITUVOVDkHR0xfTk9ORQIMZ2xSZWFkUGl4ZWxzA4vdDIvfCIvhCgxnbFJlYWRQaXhlbHMGZm9ybWF0DwhHTF9BTFBIQQZHTF9SR0IHR0xfUkdCQQZHTF9SRUQOR0xfUkVEX0lOVEVHRVIFR0xfUkcNR0xfUkdfSU5URUdFUg5HTF9SR0JfSU5URUdFUhJHTF9MVU1JTkFOQ0VfQUxQSEEMR0xfTFVNSU5BTkNFD0dMX1JHQkFfSU5URUdFUhJHTF9ERVBUSF9DT01QT05FTlQQR0xfREVQVEhfU1RFTkNJTBBHTF9TVEVOQ0lMX0lOREVYC0dMX0JHUkFfRVhUi+MMi+UIi+cKDGdsUmVhZFBpeGVscwR0eXBlOBdHTF9VTlNJR05FRF9TSE9SVF81XzZfNRlHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80GUdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzEQR0xfVU5TSUdORURfQllURQhHTF9GTE9BVAZHTF9JTlQPR0xfVU5TSUdORURfSU5UHkdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVh9HTF9VTlNJR05FRF9JTlRfMTBGXzExRl8xMUZfUkVWG0dMX1VOU0lHTkVEX0lOVF81XzlfOV85X1JFVgdHTF9CWVRFEUdMX1VOU0lHTkVEX1NIT1JUCEdMX1NIT1JUDUdMX0hBTEZfRkxPQVQRR0xfSEFMRl9GTE9BVF9PRVMUR0xfVU5TSUdORURfSU5UXzI0XzghR0xfRkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWFUdMX0NPTVBSRVNTRURfUjExX0VBQxxHTF9DT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDF0dMX0NPTVBSRVNTRURfUkdCOF9FVEMyGEdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMitHTF9DT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyLEdMX0NPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyFkdMX0NPTVBSRVNTRURfUkcxMV9FQUMdR0xfQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUMcR0xfQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQyNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQxtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg4I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDUkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDYkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDgkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4HUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTAdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTAlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMiVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyEEdMX0VUQzFfUkdCOF9PRVOL6QSL6waL7QiL7woMZ2xSZWFkUGl4ZWxzBGRhdGEEAQICDWdsUmVhZG5QaXhlbHMDi/EMi/MIi/UKDWdsUmVhZG5QaXhlbHMGZm9ybWF0DwhHTF9BTFBIQQZHTF9SR0IHR0xfUkdCQQZHTF9SRUQOR0xfUkVEX0lOVEVHRVIFR0xfUkcNR0xfUkdfSU5URUdFUg5HTF9SR0JfSU5URUdFUhJHTF9MVU1JTkFOQ0VfQUxQSEEMR0xfTFVNSU5BTkNFD0dMX1JHQkFfSU5URUdFUhJHTF9ERVBUSF9DT01QT05FTlQQR0xfREVQVEhfU1RFTkNJTBBHTF9TVEVOQ0lMX0lOREVYC0dMX0JHUkFfRVhUi/cMi/kIi/sKDWdsUmVhZG5QaXhlbHMEdHlwZTgXR0xfVU5TSUdORURfU0hPUlRfNV82XzUZR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNBlHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xEEdMX1VOU0lHTkVEX0JZVEUIR0xfRkxPQVQGR0xfSU5UD0dMX1VOU0lHTkVEX0lOVB5HTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYfR0xfVU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFVhtHTF9VTlNJR05FRF9JTlRfNV85XzlfOV9SRVYHR0xfQllURRFHTF9VTlNJR05FRF9TSE9SVAhHTF9TSE9SVA1HTF9IQUxGX0ZMT0FUEUdMX0hBTEZfRkxPQVRfT0VTFEdMX1VOU0lHTkVEX0lOVF8yNF84IUdMX0ZMT0FUXzMyX1VOU0lHTkVEX0lOVF8yNF84X1JFVhVHTF9DT01QUkVTU0VEX1IxMV9FQUMcR0xfQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQxdHTF9DT01QUkVTU0VEX1JHQjhfRVRDMhhHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzIrR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMixHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMhZHTF9DT01QUkVTU0VEX1JHMTFfRUFDHUdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDHEdMX0NPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4OCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OBxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NRxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NhxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTAdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTIlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMhBHTF9FVEMxX1JHQjhfT0VTi/0Ei/8GjAEIjAMKDWdsUmVhZG5QaXhlbHMEZGF0YQQBAgIQZ2xSZWFkblBpeGVsc0VYVAOMBQyMBwiMCQoQZ2xSZWFkblBpeGVsc0VYVAZmb3JtYXQPCEdMX0FMUEhBBkdMX1JHQgdHTF9SR0JBBkdMX1JFRA5HTF9SRURfSU5URUdFUgVHTF9SRw1HTF9SR19JTlRFR0VSDkdMX1JHQl9JTlRFR0VSEkdMX0xVTUlOQU5DRV9BTFBIQQxHTF9MVU1JTkFOQ0UPR0xfUkdCQV9JTlRFR0VSEkdMX0RFUFRIX0NPTVBPTkVOVBBHTF9ERVBUSF9TVEVOQ0lMEEdMX1NURU5DSUxfSU5ERVgLR0xfQkdSQV9FWFSMCwyMDQiMDwoQZ2xSZWFkblBpeGVsc0VYVAR0eXBlOBdHTF9VTlNJR05FRF9TSE9SVF81XzZfNRlHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80GUdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzEQR0xfVU5TSUdORURfQllURQhHTF9GTE9BVAZHTF9JTlQPR0xfVU5TSUdORURfSU5UHkdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVh9HTF9VTlNJR05FRF9JTlRfMTBGXzExRl8xMUZfUkVWG0dMX1VOU0lHTkVEX0lOVF81XzlfOV85X1JFVgdHTF9CWVRFEUdMX1VOU0lHTkVEX1NIT1JUCEdMX1NIT1JUDUdMX0hBTEZfRkxPQVQRR0xfSEFMRl9GTE9BVF9PRVMUR0xfVU5TSUdORURfSU5UXzI0XzghR0xfRkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWFUdMX0NPTVBSRVNTRURfUjExX0VBQxxHTF9DT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDF0dMX0NPTVBSRVNTRURfUkdCOF9FVEMyGEdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMitHTF9DT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyLEdMX0NPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyFkdMX0NPTVBSRVNTRURfUkcxMV9FQUMdR0xfQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUMcR0xfQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQyNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQxtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg4I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDUkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDYkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDgkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4HUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTAdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTAlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMiVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyEEdMX0VUQzFfUkdCOF9PRVOMEQSMEwaMFQiMFwoQZ2xSZWFkblBpeGVsc0VYVARkYXRhBAECAhBnbFJlYWRuUGl4ZWxzS0hSA4wZDIwbCIwdChBnbFJlYWRuUGl4ZWxzS0hSBmZvcm1hdA8IR0xfQUxQSEEGR0xfUkdCB0dMX1JHQkEGR0xfUkVEDkdMX1JFRF9JTlRFR0VSBUdMX1JHDUdMX1JHX0lOVEVHRVIOR0xfUkdCX0lOVEVHRVISR0xfTFVNSU5BTkNFX0FMUEhBDEdMX0xVTUlOQU5DRQ9HTF9SR0JBX0lOVEVHRVISR0xfREVQVEhfQ09NUE9ORU5UEEdMX0RFUFRIX1NURU5DSUwQR0xfU1RFTkNJTF9JTkRFWAtHTF9CR1JBX0VYVIwfDIwhCIwjChBnbFJlYWRuUGl4ZWxzS0hSBHR5cGU4F0dMX1VOU0lHTkVEX1NIT1JUXzVfNl81GUdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQZR0xfVU5TSUdORURfU0hPUlRfNV81XzVfMRBHTF9VTlNJR05FRF9CWVRFCEdMX0ZMT0FUBkdMX0lOVA9HTF9VTlNJR05FRF9JTlQeR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWH0dMX1VOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVYbR0xfVU5TSUdORURfSU5UXzVfOV85XzlfUkVWB0dMX0JZVEURR0xfVU5TSUdORURfU0hPUlQIR0xfU0hPUlQNR0xfSEFMRl9GTE9BVBFHTF9IQUxGX0ZMT0FUX09FUxRHTF9VTlNJR05FRF9JTlRfMjRfOCFHTF9GTE9BVF8zMl9VTlNJR05FRF9JTlRfMjRfOF9SRVYVR0xfQ09NUFJFU1NFRF9SMTFfRUFDHEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMXR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIYR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyK0dMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIsR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIWR0xfQ09NUFJFU1NFRF9SRzExX0VBQx1HTF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQxxHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDG0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzR4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDgjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDgcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NSRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDUcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NiRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDYcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OCRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDgdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTAlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTIQR0xfRVRDMV9SR0I4X09FU4wlBIwnBowpCIwrChBnbFJlYWRuUGl4ZWxzS0hSBGRhdGEEAQICFWdsUmVuZGVyYnVmZmVyU3RvcmFnZQKMLQyMLwiMMQoVZ2xSZW5kZXJidWZmZXJTdG9yYWdlBnRhcmdldAEPR0xfUkVOREVSQlVGRkVSjDMMjDUIjDcKFWdsUmVuZGVyYnVmZmVyU3RvcmFnZQ5pbnRlcm5hbGZvcm1hdCUUR0xfREVQVEhfQ09NUE9ORU5UMTYJR0xfUkdCNTY1CkdMX1JHQjVfQTEIR0xfUkdCQTQRR0xfU1RFTkNJTF9JTkRFWDgTR0xfREVQVEgyNF9TVEVOQ0lMOBRHTF9ERVBUSDMyRl9TVEVOQ0lMOBRHTF9ERVBUSF9DT01QT05FTlQyNBVHTF9ERVBUSF9DT01QT05FTlQzMkYHR0xfUjE2SQhHTF9SMTZVSQdHTF9SMzJJCEdMX1IzMlVJBUdMX1I4BkdMX1I4SQdHTF9SOFVJCEdMX1JHMTZJCUdMX1JHMTZVSQhHTF9SRzMySQlHTF9SRzMyVUkGR0xfUkc4B0dMX1JHOEkIR0xfUkc4VUkLR0xfUkdCMTBfQTINR0xfUkdCMTBfQTJVSQdHTF9SR0I4CkdMX1JHQkExNkkLR0xfUkdCQTE2VUkKR0xfUkdCQTMySQtHTF9SR0JBMzJVSQhHTF9SR0JBOAlHTF9SR0JBOEkKR0xfUkdCQThVSQ9HTF9TUkdCOF9BTFBIQTgGR0xfUjE2B0dMX1JHMTYJR0xfUkdCQTE2AiBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZQKMOQyMOwiMPQogZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUGdGFyZ2V0AQ9HTF9SRU5ERVJCVUZGRVKMPwyMQQiMQwogZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUOaW50ZXJuYWxmb3JtYXQlE0dMX0RFUFRIMjRfU1RFTkNJTDgUR0xfREVQVEgzMkZfU1RFTkNJTDgUR0xfREVQVEhfQ09NUE9ORU5UMTYUR0xfREVQVEhfQ09NUE9ORU5UMjQVR0xfREVQVEhfQ09NUE9ORU5UMzJGB0dMX1IxNkkIR0xfUjE2VUkHR0xfUjMySQhHTF9SMzJVSQVHTF9SOAZHTF9SOEkHR0xfUjhVSQhHTF9SRzE2SQlHTF9SRzE2VUkIR0xfUkczMkkJR0xfUkczMlVJBkdMX1JHOAdHTF9SRzhJCEdMX1JHOFVJC0dMX1JHQjEwX0EyDUdMX1JHQjEwX0EyVUkJR0xfUkdCNTY1CkdMX1JHQjVfQTEHR0xfUkdCOApHTF9SR0JBMTZJC0dMX1JHQkExNlVJCkdMX1JHQkEzMkkLR0xfUkdCQTMyVUkIR0xfUkdCQTQIR0xfUkdCQTgJR0xfUkdCQThJCkdMX1JHQkE4VUkPR0xfU1JHQjhfQUxQSEE4EUdMX1NURU5DSUxfSU5ERVg4BkdMX1IxNgdHTF9SRzE2CUdMX1JHQkExNgIjZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVFWFQCjEUMjEcIjEkKI2dsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlRVhUBnRhcmdldAEPR0xfUkVOREVSQlVGRkVSjEsMjE0IjE8KI2dsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlRVhUDmludGVybmFsZm9ybWF0JRNHTF9ERVBUSDI0X1NURU5DSUw4FEdMX0RFUFRIMzJGX1NURU5DSUw4FEdMX0RFUFRIX0NPTVBPTkVOVDE2FEdMX0RFUFRIX0NPTVBPTkVOVDI0FUdMX0RFUFRIX0NPTVBPTkVOVDMyRgdHTF9SMTZJCEdMX1IxNlVJB0dMX1IzMkkIR0xfUjMyVUkFR0xfUjgGR0xfUjhJB0dMX1I4VUkIR0xfUkcxNkkJR0xfUkcxNlVJCEdMX1JHMzJJCUdMX1JHMzJVSQZHTF9SRzgHR0xfUkc4SQhHTF9SRzhVSQtHTF9SR0IxMF9BMg1HTF9SR0IxMF9BMlVJCUdMX1JHQjU2NQpHTF9SR0I1X0ExB0dMX1JHQjgKR0xfUkdCQTE2SQtHTF9SR0JBMTZVSQpHTF9SR0JBMzJJC0dMX1JHQkEzMlVJCEdMX1JHQkE0CEdMX1JHQkE4CUdMX1JHQkE4SQpHTF9SR0JBOFVJD0dMX1NSR0I4X0FMUEhBOBFHTF9TVEVOQ0lMX0lOREVYOAZHTF9SMTYHR0xfUkcxNglHTF9SR0JBMTYCImdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlTlYCjFEMjFMIjFUKImdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlTlYGdGFyZ2V0AQ9HTF9SRU5ERVJCVUZGRVKMVwyMWQiMWwoiZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVOVg5pbnRlcm5hbGZvcm1hdCUTR0xfREVQVEgyNF9TVEVOQ0lMOBRHTF9ERVBUSDMyRl9TVEVOQ0lMOBRHTF9ERVBUSF9DT01QT05FTlQxNhRHTF9ERVBUSF9DT01QT05FTlQyNBVHTF9ERVBUSF9DT01QT05FTlQzMkYHR0xfUjE2SQhHTF9SMTZVSQdHTF9SMzJJCEdMX1IzMlVJBUdMX1I4BkdMX1I4SQdHTF9SOFVJCEdMX1JHMTZJCUdMX1JHMTZVSQhHTF9SRzMySQlHTF9SRzMyVUkGR0xfUkc4B0dMX1JHOEkIR0xfUkc4VUkLR0xfUkdCMTBfQTINR0xfUkdCMTBfQTJVSQlHTF9SR0I1NjUKR0xfUkdCNV9BMQdHTF9SR0I4CkdMX1JHQkExNkkLR0xfUkdCQTE2VUkKR0xfUkdCQTMySQtHTF9SR0JBMzJVSQhHTF9SR0JBNAhHTF9SR0JBOAlHTF9SR0JBOEkKR0xfUkdCQThVSQ9HTF9TUkdCOF9BTFBIQTgRR0xfU1RFTkNJTF9JTkRFWDgGR0xfUjE2B0dMX1JHMTYJR0xfUkdCQTE2AhVnbFNhbXBsZXJQYXJhbWV0ZXJJaXYBjF0MjF8IjGEKFWdsU2FtcGxlclBhcmFtZXRlcklpdgVwbmFtZQoXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUVR0xfVEVYVFVSRV9NSU5fRklMVEVSFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhJHTF9URVhUVVJFX01JTl9MT0QSR0xfVEVYVFVSRV9NQVhfTE9EEUdMX1RFWFRVUkVfV1JBUF9SEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SAhhnbFNhbXBsZXJQYXJhbWV0ZXJJaXZFWFQBjGMMjGUIjGcKGGdsU2FtcGxlclBhcmFtZXRlcklpdkVYVAVwbmFtZQoXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUVR0xfVEVYVFVSRV9NSU5fRklMVEVSFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhJHTF9URVhUVVJFX01JTl9MT0QSR0xfVEVYVFVSRV9NQVhfTE9EEUdMX1RFWFRVUkVfV1JBUF9SEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SAhhnbFNhbXBsZXJQYXJhbWV0ZXJJaXZPRVMBjGkMjGsIjG0KGGdsU2FtcGxlclBhcmFtZXRlcklpdk9FUwVwbmFtZQoXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUVR0xfVEVYVFVSRV9NSU5fRklMVEVSFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhJHTF9URVhUVVJFX01JTl9MT0QSR0xfVEVYVFVSRV9NQVhfTE9EEUdMX1RFWFRVUkVfV1JBUF9SEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SAhZnbFNhbXBsZXJQYXJhbWV0ZXJJdWl2AYxvDIxxCIxzChZnbFNhbXBsZXJQYXJhbWV0ZXJJdWl2BXBuYW1lChdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRVHTF9URVhUVVJFX01JTl9GSUxURVIVR0xfVEVYVFVSRV9NQUdfRklMVEVSEkdMX1RFWFRVUkVfTUlOX0xPRBJHTF9URVhUVVJFX01BWF9MT0QRR0xfVEVYVFVSRV9XUkFQX1IRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1ICGWdsU2FtcGxlclBhcmFtZXRlckl1aXZFWFQBjHUMjHcIjHkKGWdsU2FtcGxlclBhcmFtZXRlckl1aXZFWFQFcG5hbWUKF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhVHTF9URVhUVVJFX01BR19GSUxURVISR0xfVEVYVFVSRV9NSU5fTE9EEkdMX1RFWFRVUkVfTUFYX0xPRBFHTF9URVhUVVJFX1dSQVBfUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUgIZZ2xTYW1wbGVyUGFyYW1ldGVySXVpdk9FUwGMewyMfQiMfwoZZ2xTYW1wbGVyUGFyYW1ldGVySXVpdk9FUwVwbmFtZQoXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUVR0xfVEVYVFVSRV9NSU5fRklMVEVSFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhJHTF9URVhUVVJFX01JTl9MT0QSR0xfVEVYVFVSRV9NQVhfTE9EEUdMX1RFWFRVUkVfV1JBUF9SEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SAhNnbFNhbXBsZXJQYXJhbWV0ZXJmAYyBDIyDCIyFChNnbFNhbXBsZXJQYXJhbWV0ZXJmBXBuYW1lChdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRVHTF9URVhUVVJFX01JTl9GSUxURVIVR0xfVEVYVFVSRV9NQUdfRklMVEVSEkdMX1RFWFRVUkVfTUlOX0xPRBJHTF9URVhUVVJFX01BWF9MT0QRR0xfVEVYVFVSRV9XUkFQX1IRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1ICFGdsU2FtcGxlclBhcmFtZXRlcmZ2AYyHDIyJCIyLChRnbFNhbXBsZXJQYXJhbWV0ZXJmdgVwbmFtZQoXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUVR0xfVEVYVFVSRV9NSU5fRklMVEVSFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhJHTF9URVhUVVJFX01JTl9MT0QSR0xfVEVYVFVSRV9NQVhfTE9EEUdMX1RFWFRVUkVfV1JBUF9SEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SAhNnbFNhbXBsZXJQYXJhbWV0ZXJpAYyNDIyPCIyRChNnbFNhbXBsZXJQYXJhbWV0ZXJpBXBuYW1lChdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRVHTF9URVhUVVJFX01JTl9GSUxURVIVR0xfVEVYVFVSRV9NQUdfRklMVEVSEkdMX1RFWFRVUkVfTUlOX0xPRBJHTF9URVhUVVJFX01BWF9MT0QRR0xfVEVYVFVSRV9XUkFQX1IRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1ICFGdsU2FtcGxlclBhcmFtZXRlcml2AYyTDIyVCIyXChRnbFNhbXBsZXJQYXJhbWV0ZXJpdgVwbmFtZQoXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUVR0xfVEVYVFVSRV9NSU5fRklMVEVSFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhJHTF9URVhUVVJFX01JTl9MT0QSR0xfVEVYVFVSRV9NQVhfTE9EEUdMX1RFWFRVUkVfV1JBUF9SEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SAg5nbFNoYWRlckJpbmFyeQKMmQSMmwaMnQiMnwoOZ2xTaGFkZXJCaW5hcnkHc2hhZGVycwQBAIyhBIyjBoylCIynCg5nbFNoYWRlckJpbmFyeQZiaW5hcnkEAQACDWdsU3RlbmNpbEZ1bmMBjKkMjKsIjK0KDWdsU3RlbmNpbEZ1bmMEZnVuYwgJR0xfQUxXQVlTCEdMX0VRVUFMCUdMX0dFUVVBTApHTF9HUkVBVEVSCUdMX0xFUVVBTAdHTF9MRVNTCEdMX05FVkVSC0dMX05PVEVRVUFMAhVnbFN0ZW5jaWxGdW5jU2VwYXJhdGUCjK8MjLEIjLMKFWdsU3RlbmNpbEZ1bmNTZXBhcmF0ZQRmYWNlAwdHTF9CQUNLCEdMX0ZST05UEUdMX0ZST05UX0FORF9CQUNLjLUMjLcIjLkKFWdsU3RlbmNpbEZ1bmNTZXBhcmF0ZQhmdW5jdGlvbggJR0xfQUxXQVlTCEdMX0VRVUFMCUdMX0dFUVVBTApHTF9HUkVBVEVSCUdMX0xFUVVBTAdHTF9MRVNTCEdMX05FVkVSC0dMX05PVEVRVUFMAhVnbFN0ZW5jaWxNYXNrU2VwYXJhdGUBjLsMjL0IjL8KFWdsU3RlbmNpbE1hc2tTZXBhcmF0ZQRmYWNlAwdHTF9CQUNLCEdMX0ZST05UEUdMX0ZST05UX0FORF9CQUNLAgtnbFN0ZW5jaWxPcAOMwQyMwwiMxQoLZ2xTdGVuY2lsT3AEZmFpbAgHR0xfREVDUgxHTF9ERUNSX1dSQVAHR0xfSU5DUgxHTF9JTkNSX1dSQVAJR0xfSU5WRVJUB0dMX0tFRVAKR0xfUkVQTEFDRQdHTF9aRVJPjMcMjMkIjMsKC2dsU3RlbmNpbE9wBXpmYWlsCAdHTF9ERUNSDEdMX0RFQ1JfV1JBUAdHTF9JTkNSDEdMX0lOQ1JfV1JBUAlHTF9JTlZFUlQHR0xfS0VFUApHTF9SRVBMQUNFB0dMX1pFUk+MzQyMzwiM0QoLZ2xTdGVuY2lsT3AFenBhc3MIB0dMX0RFQ1IMR0xfREVDUl9XUkFQB0dMX0lOQ1IMR0xfSU5DUl9XUkFQCUdMX0lOVkVSVAdHTF9LRUVQCkdMX1JFUExBQ0UHR0xfWkVSTwITZ2xTdGVuY2lsT3BTZXBhcmF0ZQSM0wyM1QiM1woTZ2xTdGVuY2lsT3BTZXBhcmF0ZQRmYWNlAwdHTF9CQUNLCEdMX0ZST05UEUdMX0ZST05UX0FORF9CQUNLjNkMjNsIjN0KE2dsU3RlbmNpbE9wU2VwYXJhdGUMc3RlbmNpbF9mYWlsCAdHTF9ERUNSDEdMX0RFQ1JfV1JBUAdHTF9JTkNSDEdMX0lOQ1JfV1JBUAlHTF9JTlZFUlQHR0xfS0VFUApHTF9SRVBMQUNFB0dMX1pFUk+M3wyM4QiM4woTZ2xTdGVuY2lsT3BTZXBhcmF0ZRdzdGVuY2lsX3Bhc3NfZGVwdGhfZmFpbAgHR0xfREVDUgxHTF9ERUNSX1dSQVAHR0xfSU5DUgxHTF9JTkNSX1dSQVAJR0xfSU5WRVJUB0dMX0tFRVAKR0xfUkVQTEFDRQdHTF9aRVJPjOUMjOcIjOkKE2dsU3RlbmNpbE9wU2VwYXJhdGUXc3RlbmNpbF9wYXNzX2RlcHRoX3Bhc3MIB0dMX0RFQ1IMR0xfREVDUl9XUkFQB0dMX0lOQ1IMR0xfSU5DUl9XUkFQCUdMX0lOVkVSVAdHTF9LRUVQCkdMX1JFUExBQ0UHR0xfWkVSTwILZ2xUZXhCdWZmZXICjOsMjO0IjO8KC2dsVGV4QnVmZmVyBnRhcmdldAERR0xfVEVYVFVSRV9CVUZGRVKM8QyM8wiM9QoLZ2xUZXhCdWZmZXIOaW50ZXJuYWxmb3JtYXQhBkdMX1IxNgdHTF9SMTZGB0dMX1IxNkkIR0xfUjE2VUkHR0xfUjMyRgdHTF9SMzJJCEdMX1IzMlVJBUdMX1I4BkdMX1I4SQdHTF9SOFVJB0dMX1JHMTYIR0xfUkcxNkYIR0xfUkcxNkkJR0xfUkcxNlVJCEdMX1JHMzJGCEdMX1JHMzJJCUdMX1JHMzJVSQZHTF9SRzgHR0xfUkc4SQhHTF9SRzhVSQlHTF9SR0IzMkYJR0xfUkdCMzJJCkdMX1JHQjMyVUkJR0xfUkdCQTE2CkdMX1JHQkExNkYKR0xfUkdCQTE2SQtHTF9SR0JBMTZVSQpHTF9SR0JBMzJGCkdMX1JHQkEzMkkLR0xfUkdCQTMyVUkIR0xfUkdCQTgJR0xfUkdCQThJCkdMX1JHQkE4VUkCDmdsVGV4QnVmZmVyRVhUAoz3DIz5CIz7Cg5nbFRleEJ1ZmZlckVYVAZ0YXJnZXQBEUdMX1RFWFRVUkVfQlVGRkVSjP0MjP8IjQEKDmdsVGV4QnVmZmVyRVhUDmludGVybmFsZm9ybWF0IQZHTF9SMTYHR0xfUjE2RgdHTF9SMTZJCEdMX1IxNlVJB0dMX1IzMkYHR0xfUjMySQhHTF9SMzJVSQVHTF9SOAZHTF9SOEkHR0xfUjhVSQdHTF9SRzE2CEdMX1JHMTZGCEdMX1JHMTZJCUdMX1JHMTZVSQhHTF9SRzMyRghHTF9SRzMySQlHTF9SRzMyVUkGR0xfUkc4B0dMX1JHOEkIR0xfUkc4VUkJR0xfUkdCMzJGCUdMX1JHQjMySQpHTF9SR0IzMlVJCUdMX1JHQkExNgpHTF9SR0JBMTZGCkdMX1JHQkExNkkLR0xfUkdCQTE2VUkKR0xfUkdCQTMyRgpHTF9SR0JBMzJJC0dMX1JHQkEzMlVJCEdMX1JHQkE4CUdMX1JHQkE4SQpHTF9SR0JBOFVJAg5nbFRleEJ1ZmZlck9FUwKNAwyNBQiNBwoOZ2xUZXhCdWZmZXJPRVMGdGFyZ2V0ARFHTF9URVhUVVJFX0JVRkZFUo0JDI0LCI0NCg5nbFRleEJ1ZmZlck9FUw5pbnRlcm5hbGZvcm1hdCEGR0xfUjE2B0dMX1IxNkYHR0xfUjE2SQhHTF9SMTZVSQdHTF9SMzJGB0dMX1IzMkkIR0xfUjMyVUkFR0xfUjgGR0xfUjhJB0dMX1I4VUkHR0xfUkcxNghHTF9SRzE2RghHTF9SRzE2SQlHTF9SRzE2VUkIR0xfUkczMkYIR0xfUkczMkkJR0xfUkczMlVJBkdMX1JHOAdHTF9SRzhJCEdMX1JHOFVJCUdMX1JHQjMyRglHTF9SR0IzMkkKR0xfUkdCMzJVSQlHTF9SR0JBMTYKR0xfUkdCQTE2RgpHTF9SR0JBMTZJC0dMX1JHQkExNlVJCkdMX1JHQkEzMkYKR0xfUkdCQTMySQtHTF9SR0JBMzJVSQhHTF9SR0JBOAlHTF9SR0JBOEkKR0xfUkdCQThVSQIQZ2xUZXhCdWZmZXJSYW5nZQKNDwyNEQiNEwoQZ2xUZXhCdWZmZXJSYW5nZQZ0YXJnZXQBEUdMX1RFWFRVUkVfQlVGRkVSjRUMjRcIjRkKEGdsVGV4QnVmZmVyUmFuZ2UOaW50ZXJuYWxmb3JtYXQhBkdMX1IxNgdHTF9SMTZGB0dMX1IxNkkIR0xfUjE2VUkHR0xfUjMyRgdHTF9SMzJJCEdMX1IzMlVJBUdMX1I4BkdMX1I4SQdHTF9SOFVJB0dMX1JHMTYIR0xfUkcxNkYIR0xfUkcxNkkJR0xfUkcxNlVJCEdMX1JHMzJGCEdMX1JHMzJJCUdMX1JHMzJVSQZHTF9SRzgHR0xfUkc4SQhHTF9SRzhVSQlHTF9SR0IzMkYJR0xfUkdCMzJJCkdMX1JHQjMyVUkJR0xfUkdCQTE2CkdMX1JHQkExNkYKR0xfUkdCQTE2SQtHTF9SR0JBMTZVSQpHTF9SR0JBMzJGCkdMX1JHQkEzMkkLR0xfUkdCQTMyVUkIR0xfUkdCQTgJR0xfUkdCQThJCkdMX1JHQkE4VUkCE2dsVGV4QnVmZmVyUmFuZ2VFWFQCjRsMjR0IjR8KE2dsVGV4QnVmZmVyUmFuZ2VFWFQGdGFyZ2V0ARFHTF9URVhUVVJFX0JVRkZFUo0hDI0jCI0lChNnbFRleEJ1ZmZlclJhbmdlRVhUDmludGVybmFsZm9ybWF0IQZHTF9SMTYHR0xfUjE2RgdHTF9SMTZJCEdMX1IxNlVJB0dMX1IzMkYHR0xfUjMySQhHTF9SMzJVSQVHTF9SOAZHTF9SOEkHR0xfUjhVSQdHTF9SRzE2CEdMX1JHMTZGCEdMX1JHMTZJCUdMX1JHMTZVSQhHTF9SRzMyRghHTF9SRzMySQlHTF9SRzMyVUkGR0xfUkc4B0dMX1JHOEkIR0xfUkc4VUkJR0xfUkdCMzJGCUdMX1JHQjMySQpHTF9SR0IzMlVJCUdMX1JHQkExNgpHTF9SR0JBMTZGCkdMX1JHQkExNkkLR0xfUkdCQTE2VUkKR0xfUkdCQTMyRgpHTF9SR0JBMzJJC0dMX1JHQkEzMlVJCEdMX1JHQkE4CUdMX1JHQkE4SQpHTF9SR0JBOFVJAhNnbFRleEJ1ZmZlclJhbmdlT0VTAo0nDI0pCI0rChNnbFRleEJ1ZmZlclJhbmdlT0VTBnRhcmdldAERR0xfVEVYVFVSRV9CVUZGRVKNLQyNLwiNMQoTZ2xUZXhCdWZmZXJSYW5nZU9FUw5pbnRlcm5hbGZvcm1hdCEGR0xfUjE2B0dMX1IxNkYHR0xfUjE2SQhHTF9SMTZVSQdHTF9SMzJGB0dMX1IzMkkIR0xfUjMyVUkFR0xfUjgGR0xfUjhJB0dMX1I4VUkHR0xfUkcxNghHTF9SRzE2RghHTF9SRzE2SQlHTF9SRzE2VUkIR0xfUkczMkYIR0xfUkczMkkJR0xfUkczMlVJBkdMX1JHOAdHTF9SRzhJCEdMX1JHOFVJCUdMX1JHQjMyRglHTF9SR0IzMkkKR0xfUkdCMzJVSQlHTF9SR0JBMTYKR0xfUkdCQTE2RgpHTF9SR0JBMTZJC0dMX1JHQkExNlVJCkdMX1JHQkEzMkYKR0xfUkdCQTMySQtHTF9SR0JBMzJVSQhHTF9SR0JBOAlHTF9SR0JBOEkKR0xfUkdCQThVSQIMZ2xUZXhJbWFnZTJEBY0zDI01CI03CgxnbFRleEltYWdlMkQGdGFyZ2V0Bw1HTF9URVhUVVJFXzJEHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWB5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1keR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWB5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1keR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ajTkMjTsIjT0KDGdsVGV4SW1hZ2UyRA5pbnRlcm5hbGZvcm1hdEEGR0xfUkdCB0dMX1JHQkESR0xfTFVNSU5BTkNFX0FMUEhBDEdMX0xVTUlOQU5DRQhHTF9BTFBIQQVHTF9SOAtHTF9SOF9TTk9STQdHTF9SMTZGB0dMX1IzMkYHR0xfUjhVSQZHTF9SOEkIR0xfUjE2VUkHR0xfUjE2SQhHTF9SMzJVSQdHTF9SMzJJBkdMX1JHOAxHTF9SRzhfU05PUk0IR0xfUkcxNkYIR0xfUkczMkYIR0xfUkc4VUkHR0xfUkc4SQlHTF9SRzE2VUkIR0xfUkcxNkkJR0xfUkczMlVJCEdMX1JHMzJJB0dMX1JHQjgIR0xfU1JHQjgJR0xfUkdCNTY1DUdMX1JHQjhfU05PUk0RR0xfUjExRl9HMTFGX0IxMEYKR0xfUkdCOV9FNQlHTF9SR0IxNkYJR0xfUkdCMzJGCUdMX1JHQjhVSQhHTF9SR0I4SQpHTF9SR0IxNlVJCUdMX1JHQjE2SQpHTF9SR0IzMlVJCUdMX1JHQjMySQhHTF9SR0JBOA9HTF9TUkdCOF9BTFBIQTgOR0xfUkdCQThfU05PUk0KR0xfUkdCNV9BMQhHTF9SR0JBNAtHTF9SR0IxMF9BMgpHTF9SR0JBMTZGCkdMX1JHQkEzMkYKR0xfUkdCQThVSQlHTF9SR0JBOEkNR0xfUkdCMTBfQTJVSQtHTF9SR0JBMTZVSQpHTF9SR0JBMTZJCkdMX1JHQkEzMkkLR0xfUkdCQTMyVUkUR0xfREVQVEhfQ09NUE9ORU5UMTYUR0xfREVQVEhfQ09NUE9ORU5UMjQVR0xfREVQVEhfQ09NUE9ORU5UMzJGE0dMX0RFUFRIMjRfU1RFTkNJTDgUR0xfREVQVEgzMkZfU1RFTkNJTDgRR0xfU1RFTkNJTF9JTkRFWDgSR0xfREVQVEhfQ09NUE9ORU5UEEdMX0RFUFRIX1NURU5DSUwKR0xfUkVEX0VYVAlHTF9SR19FWFQLR0xfQkdSQV9FWFSNPwyNQQiNQwoMZ2xUZXhJbWFnZTJEBmZvcm1hdA8IR0xfQUxQSEEMR0xfTFVNSU5BTkNFEkdMX0xVTUlOQU5DRV9BTFBIQQZHTF9SR0IHR0xfUkdCQRJHTF9ERVBUSF9DT01QT05FTlQQR0xfREVQVEhfU1RFTkNJTAZHTF9SRUQOR0xfUkVEX0lOVEVHRVIFR0xfUkcPR0xfUkdCQV9JTlRFR0VSDkdMX1JHQl9JTlRFR0VSDUdMX1JHX0lOVEVHRVIQR0xfU1RFTkNJTF9JTkRFWAtHTF9CR1JBX0VYVI1FDI1HCI1JCgxnbFRleEltYWdlMkQEdHlwZTgQR0xfVU5TSUdORURfQllURRlHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80GUdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzEXR0xfVU5TSUdORURfU0hPUlRfNV82XzURR0xfSEFMRl9GTE9BVF9PRVMHR0xfQllURQhHTF9GTE9BVCFHTF9GTE9BVF8zMl9VTlNJR05FRF9JTlRfMjRfOF9SRVYNR0xfSEFMRl9GTE9BVAZHTF9JTlQIR0xfU0hPUlQPR0xfVU5TSUdORURfSU5UH0dMX1VOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVYUR0xfVU5TSUdORURfSU5UXzI0XzgeR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWG0dMX1VOU0lHTkVEX0lOVF81XzlfOV85X1JFVhFHTF9VTlNJR05FRF9TSE9SVBVHTF9DT01QUkVTU0VEX1IxMV9FQUMcR0xfQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQxdHTF9DT01QUkVTU0VEX1JHQjhfRVRDMhhHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzIrR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMixHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMhZHTF9DT01QUkVTU0VEX1JHMTFfRUFDHUdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDHEdMX0NPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4OCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OBxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NRxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NhxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTAdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTIlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMhBHTF9FVEMxX1JHQjhfT0VTjUsEjU0GjU8IjVEKDGdsVGV4SW1hZ2UyRARkYXRhBAEAAgxnbFRleEltYWdlM0QFjVMMjVUIjVcKDGdsVGV4SW1hZ2UzRAZ0YXJnZXQDE0dMX1RFWFRVUkVfMkRfQVJSQVkNR0xfVEVYVFVSRV8zRBlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZjVkMjVsIjV0KDGdsVGV4SW1hZ2UzRA5pbnRlcm5hbGZvcm1hdEEGR0xfUkdCB0dMX1JHQkESR0xfTFVNSU5BTkNFX0FMUEhBDEdMX0xVTUlOQU5DRQhHTF9BTFBIQQVHTF9SOAtHTF9SOF9TTk9STQdHTF9SMTZGB0dMX1IzMkYHR0xfUjhVSQZHTF9SOEkIR0xfUjE2VUkHR0xfUjE2SQhHTF9SMzJVSQdHTF9SMzJJBkdMX1JHOAxHTF9SRzhfU05PUk0IR0xfUkcxNkYIR0xfUkczMkYIR0xfUkc4VUkHR0xfUkc4SQlHTF9SRzE2VUkIR0xfUkcxNkkJR0xfUkczMlVJCEdMX1JHMzJJB0dMX1JHQjgIR0xfU1JHQjgJR0xfUkdCNTY1DUdMX1JHQjhfU05PUk0RR0xfUjExRl9HMTFGX0IxMEYKR0xfUkdCOV9FNQlHTF9SR0IxNkYJR0xfUkdCMzJGCUdMX1JHQjhVSQhHTF9SR0I4SQpHTF9SR0IxNlVJCUdMX1JHQjE2SQpHTF9SR0IzMlVJCUdMX1JHQjMySQhHTF9SR0JBOA9HTF9TUkdCOF9BTFBIQTgOR0xfUkdCQThfU05PUk0KR0xfUkdCNV9BMQhHTF9SR0JBNAtHTF9SR0IxMF9BMgpHTF9SR0JBMTZGCkdMX1JHQkEzMkYKR0xfUkdCQThVSQlHTF9SR0JBOEkNR0xfUkdCMTBfQTJVSQtHTF9SR0JBMTZVSQpHTF9SR0JBMTZJCkdMX1JHQkEzMkkLR0xfUkdCQTMyVUkUR0xfREVQVEhfQ09NUE9ORU5UMTYUR0xfREVQVEhfQ09NUE9ORU5UMjQVR0xfREVQVEhfQ09NUE9ORU5UMzJGE0dMX0RFUFRIMjRfU1RFTkNJTDgUR0xfREVQVEgzMkZfU1RFTkNJTDgRR0xfU1RFTkNJTF9JTkRFWDgSR0xfREVQVEhfQ09NUE9ORU5UEEdMX0RFUFRIX1NURU5DSUwKR0xfUkVEX0VYVAlHTF9SR19FWFQLR0xfQkdSQV9FWFSNXwyNYQiNYwoMZ2xUZXhJbWFnZTNEBmZvcm1hdA8IR0xfQUxQSEESR0xfREVQVEhfQ09NUE9ORU5UEEdMX0RFUFRIX1NURU5DSUwMR0xfTFVNSU5BTkNFEkdMX0xVTUlOQU5DRV9BTFBIQQZHTF9SRUQOR0xfUkVEX0lOVEVHRVIFR0xfUkcGR0xfUkdCB0dMX1JHQkEPR0xfUkdCQV9JTlRFR0VSDkdMX1JHQl9JTlRFR0VSDUdMX1JHX0lOVEVHRVIQR0xfU1RFTkNJTF9JTkRFWAtHTF9CR1JBX0VYVI1lDI1nCI1pCgxnbFRleEltYWdlM0QEdHlwZTgRR0xfSEFMRl9GTE9BVF9PRVMHR0xfQllURQhHTF9GTE9BVCFHTF9GTE9BVF8zMl9VTlNJR05FRF9JTlRfMjRfOF9SRVYNR0xfSEFMRl9GTE9BVAZHTF9JTlQIR0xfU0hPUlQQR0xfVU5TSUdORURfQllURQ9HTF9VTlNJR05FRF9JTlQfR0xfVU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFVhRHTF9VTlNJR05FRF9JTlRfMjRfOB5HTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYbR0xfVU5TSUdORURfSU5UXzVfOV85XzlfUkVWEUdMX1VOU0lHTkVEX1NIT1JUGUdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQZR0xfVU5TSUdORURfU0hPUlRfNV81XzVfMRdHTF9VTlNJR05FRF9TSE9SVF81XzZfNRVHTF9DT01QUkVTU0VEX1IxMV9FQUMcR0xfQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQxdHTF9DT01QUkVTU0VEX1JHQjhfRVRDMhhHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzIrR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMixHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMhZHTF9DT01QUkVTU0VEX1JHMTFfRUFDHUdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDHEdMX0NPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4OCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OBxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NRxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NhxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTAdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTIlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMhBHTF9FVEMxX1JHQjhfT0VTjWsEjW0GjW8IjXEKDGdsVGV4SW1hZ2UzRARkYXRhBAEAAg9nbFRleEltYWdlM0RPRVMFjXMMjXUIjXcKD2dsVGV4SW1hZ2UzRE9FUwZ0YXJnZXQDE0dMX1RFWFRVUkVfMkRfQVJSQVkNR0xfVEVYVFVSRV8zRBlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZjXkMjXsIjX0KD2dsVGV4SW1hZ2UzRE9FUw5pbnRlcm5hbGZvcm1hdEEGR0xfUkdCB0dMX1JHQkESR0xfTFVNSU5BTkNFX0FMUEhBDEdMX0xVTUlOQU5DRQhHTF9BTFBIQQVHTF9SOAtHTF9SOF9TTk9STQdHTF9SMTZGB0dMX1IzMkYHR0xfUjhVSQZHTF9SOEkIR0xfUjE2VUkHR0xfUjE2SQhHTF9SMzJVSQdHTF9SMzJJBkdMX1JHOAxHTF9SRzhfU05PUk0IR0xfUkcxNkYIR0xfUkczMkYIR0xfUkc4VUkHR0xfUkc4SQlHTF9SRzE2VUkIR0xfUkcxNkkJR0xfUkczMlVJCEdMX1JHMzJJB0dMX1JHQjgIR0xfU1JHQjgJR0xfUkdCNTY1DUdMX1JHQjhfU05PUk0RR0xfUjExRl9HMTFGX0IxMEYKR0xfUkdCOV9FNQlHTF9SR0IxNkYJR0xfUkdCMzJGCUdMX1JHQjhVSQhHTF9SR0I4SQpHTF9SR0IxNlVJCUdMX1JHQjE2SQpHTF9SR0IzMlVJCUdMX1JHQjMySQhHTF9SR0JBOA9HTF9TUkdCOF9BTFBIQTgOR0xfUkdCQThfU05PUk0KR0xfUkdCNV9BMQhHTF9SR0JBNAtHTF9SR0IxMF9BMgpHTF9SR0JBMTZGCkdMX1JHQkEzMkYKR0xfUkdCQThVSQlHTF9SR0JBOEkNR0xfUkdCMTBfQTJVSQtHTF9SR0JBMTZVSQpHTF9SR0JBMTZJCkdMX1JHQkEzMkkLR0xfUkdCQTMyVUkUR0xfREVQVEhfQ09NUE9ORU5UMTYUR0xfREVQVEhfQ09NUE9ORU5UMjQVR0xfREVQVEhfQ09NUE9ORU5UMzJGE0dMX0RFUFRIMjRfU1RFTkNJTDgUR0xfREVQVEgzMkZfU1RFTkNJTDgRR0xfU1RFTkNJTF9JTkRFWDgSR0xfREVQVEhfQ09NUE9ORU5UEEdMX0RFUFRIX1NURU5DSUwKR0xfUkVEX0VYVAlHTF9SR19FWFQLR0xfQkdSQV9FWFSNfwyNgQiNgwoPZ2xUZXhJbWFnZTNET0VTBmZvcm1hdA8IR0xfQUxQSEESR0xfREVQVEhfQ09NUE9ORU5UEEdMX0RFUFRIX1NURU5DSUwMR0xfTFVNSU5BTkNFEkdMX0xVTUlOQU5DRV9BTFBIQQZHTF9SRUQOR0xfUkVEX0lOVEVHRVIFR0xfUkcGR0xfUkdCB0dMX1JHQkEPR0xfUkdCQV9JTlRFR0VSDkdMX1JHQl9JTlRFR0VSDUdMX1JHX0lOVEVHRVIQR0xfU1RFTkNJTF9JTkRFWAtHTF9CR1JBX0VYVI2FDI2HCI2JCg9nbFRleEltYWdlM0RPRVMEdHlwZTgRR0xfSEFMRl9GTE9BVF9PRVMHR0xfQllURQhHTF9GTE9BVCFHTF9GTE9BVF8zMl9VTlNJR05FRF9JTlRfMjRfOF9SRVYNR0xfSEFMRl9GTE9BVAZHTF9JTlQIR0xfU0hPUlQQR0xfVU5TSUdORURfQllURQ9HTF9VTlNJR05FRF9JTlQfR0xfVU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFVhRHTF9VTlNJR05FRF9JTlRfMjRfOB5HTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYbR0xfVU5TSUdORURfSU5UXzVfOV85XzlfUkVWEUdMX1VOU0lHTkVEX1NIT1JUGUdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQZR0xfVU5TSUdORURfU0hPUlRfNV81XzVfMRdHTF9VTlNJR05FRF9TSE9SVF81XzZfNRVHTF9DT01QUkVTU0VEX1IxMV9FQUMcR0xfQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQxdHTF9DT01QUkVTU0VEX1JHQjhfRVRDMhhHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzIrR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMixHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMhZHTF9DT01QUkVTU0VEX1JHMTFfRUFDHUdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDHEdMX0NPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4OCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OBxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NRxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NhxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTAdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTIlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMhBHTF9FVEMxX1JHQjhfT0VTjYsEjY0GjY8IjZEKD2dsVGV4SW1hZ2UzRE9FUwZwaXhlbHMEAQACEWdsVGV4UGFyYW1ldGVySWl2A42TDI2VCI2XChFnbFRleFBhcmFtZXRlcklpdgZ0YXJnZXQJEUdMX1RFWFRVUkVfQlVGRkVSDUdMX1RFWFRVUkVfMkQXR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMTR0xfVEVYVFVSRV8yRF9BUlJBWRlHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFH0dMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVkNR0xfVEVYVFVSRV8zRBNHTF9URVhUVVJFX0NVQkVfTUFQGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVmNmQyNmwiNnQoRZ2xUZXhQYXJhbWV0ZXJJaXYFcG5hbWUTFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhVHTF9URVhUVVJFX01JTl9GSUxURVIRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QVR0xfVEVYVFVSRV9CQVNFX0xFVkVMF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFFEdMX1RFWFRVUkVfTUFYX0xFVkVMEkdMX1RFWFRVUkVfTUFYX0xPRBJHTF9URVhUVVJFX01JTl9MT0QUR0xfVEVYVFVSRV9TV0laWkxFX0EUR0xfVEVYVFVSRV9TV0laWkxFX0IUR0xfVEVYVFVSRV9TV0laWkxFX0cUR0xfVEVYVFVSRV9TV0laWkxFX1IRR0xfVEVYVFVSRV9XUkFQX1IdR0xfREVQVEhfU1RFTkNJTF9URVhUVVJFX01PREUXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1IdR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQaR0xfVEVYVFVSRV9TUkdCX0RFQ09ERV9FWFSNnwyNoQaNowaNpQiNpwoRZ2xUZXhQYXJhbWV0ZXJJaXYGcGFyYW1zBAIQCkdMX05FQVJFU1QJR0xfTElORUFSGUdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1QYR0xfTElORUFSX01JUE1BUF9ORUFSRVNUGEdMX05FQVJFU1RfTUlQTUFQX0xJTkVBUhdHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUhBHTF9DTEFNUF9UT19FREdFCUdMX1JFUEVBVBJHTF9NSVJST1JFRF9SRVBFQVQSR0xfQ0xBTVBfVE9fQk9SREVSBkdMX1JFRAhHTF9HUkVFTgdHTF9CTFVFCEdMX0FMUEhBB0dMX1pFUk8GR0xfT05FAhRnbFRleFBhcmFtZXRlcklpdkVYVAONqQyNqwiNrQoUZ2xUZXhQYXJhbWV0ZXJJaXZFWFQGdGFyZ2V0CRFHTF9URVhUVVJFX0JVRkZFUg1HTF9URVhUVVJFXzJEF0dMX1RFWFRVUkVfRVhURVJOQUxfT0VTE0dMX1RFWFRVUkVfMkRfQVJSQVkZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZDUdMX1RFWFRVUkVfM0QTR0xfVEVYVFVSRV9DVUJFX01BUBlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZja8MjbEIjbMKFGdsVGV4UGFyYW1ldGVySWl2RVhUBXBuYW1lExVHTF9URVhUVVJFX01BR19GSUxURVIVR0xfVEVYVFVSRV9NSU5fRklMVEVSEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UFUdMX1RFWFRVUkVfQkFTRV9MRVZFTBdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRRHTF9URVhUVVJFX01BWF9MRVZFTBJHTF9URVhUVVJFX01BWF9MT0QSR0xfVEVYVFVSRV9NSU5fTE9EFEdMX1RFWFRVUkVfU1dJWlpMRV9BFEdMX1RFWFRVUkVfU1dJWlpMRV9CFEdMX1RFWFRVUkVfU1dJWlpMRV9HFEdMX1RFWFRVUkVfU1dJWlpMRV9SEUdMX1RFWFRVUkVfV1JBUF9SHUdMX0RFUFRIX1NURU5DSUxfVEVYVFVSRV9NT0RFF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SHUdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUGkdMX1RFWFRVUkVfU1JHQl9ERUNPREVfRVhUjbUMjbcGjbkGjbsIjb0KFGdsVGV4UGFyYW1ldGVySWl2RVhUBnBhcmFtcwQCEApHTF9ORUFSRVNUCUdMX0xJTkVBUhlHTF9ORUFSRVNUX01JUE1BUF9ORUFSRVNUGEdMX0xJTkVBUl9NSVBNQVBfTkVBUkVTVBhHTF9ORUFSRVNUX01JUE1BUF9MSU5FQVIXR0xfTElORUFSX01JUE1BUF9MSU5FQVIQR0xfQ0xBTVBfVE9fRURHRQlHTF9SRVBFQVQSR0xfTUlSUk9SRURfUkVQRUFUEkdMX0NMQU1QX1RPX0JPUkRFUgZHTF9SRUQIR0xfR1JFRU4HR0xfQkxVRQhHTF9BTFBIQQdHTF9aRVJPBkdMX09ORQIUZ2xUZXhQYXJhbWV0ZXJJaXZPRVMDjb8MjcEIjcMKFGdsVGV4UGFyYW1ldGVySWl2T0VTBnRhcmdldAkRR0xfVEVYVFVSRV9CVUZGRVINR0xfVEVYVFVSRV8yRBdHTF9URVhUVVJFX0VYVEVSTkFMX09FUxNHTF9URVhUVVJFXzJEX0FSUkFZGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWQ1HTF9URVhUVVJFXzNEE0dMX1RFWFRVUkVfQ1VCRV9NQVAZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWY3FDI3HCI3JChRnbFRleFBhcmFtZXRlcklpdk9FUwVwbmFtZRMVR0xfVEVYVFVSRV9NQUdfRklMVEVSFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBVHTF9URVhUVVJFX0JBU0VfTEVWRUwXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUUR0xfVEVYVFVSRV9NQVhfTEVWRUwSR0xfVEVYVFVSRV9NQVhfTE9EEkdMX1RFWFRVUkVfTUlOX0xPRBRHTF9URVhUVVJFX1NXSVpaTEVfQRRHTF9URVhUVVJFX1NXSVpaTEVfQhRHTF9URVhUVVJFX1NXSVpaTEVfRxRHTF9URVhUVVJFX1NXSVpaTEVfUhFHTF9URVhUVVJFX1dSQVBfUh1HTF9ERVBUSF9TVEVOQ0lMX1RFWFRVUkVfTU9ERRdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUh1HTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVBpHTF9URVhUVVJFX1NSR0JfREVDT0RFX0VYVI3LDI3NBo3PBo3RCI3TChRnbFRleFBhcmFtZXRlcklpdk9FUwZwYXJhbXMEAhAKR0xfTkVBUkVTVAlHTF9MSU5FQVIZR0xfTkVBUkVTVF9NSVBNQVBfTkVBUkVTVBhHTF9MSU5FQVJfTUlQTUFQX05FQVJFU1QYR0xfTkVBUkVTVF9NSVBNQVBfTElORUFSF0dMX0xJTkVBUl9NSVBNQVBfTElORUFSEEdMX0NMQU1QX1RPX0VER0UJR0xfUkVQRUFUEkdMX01JUlJPUkVEX1JFUEVBVBJHTF9DTEFNUF9UT19CT1JERVIGR0xfUkVECEdMX0dSRUVOB0dMX0JMVUUIR0xfQUxQSEEHR0xfWkVSTwZHTF9PTkUCEmdsVGV4UGFyYW1ldGVySXVpdgON1QyN1wiN2QoSZ2xUZXhQYXJhbWV0ZXJJdWl2BnRhcmdldAkRR0xfVEVYVFVSRV9CVUZGRVINR0xfVEVYVFVSRV8yRBdHTF9URVhUVVJFX0VYVEVSTkFMX09FUxNHTF9URVhUVVJFXzJEX0FSUkFZGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWQ1HTF9URVhUVVJFXzNEE0dMX1RFWFRVUkVfQ1VCRV9NQVAZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWY3bDI3dCI3fChJnbFRleFBhcmFtZXRlckl1aXYFcG5hbWUTFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhVHTF9URVhUVVJFX01JTl9GSUxURVIRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QVR0xfVEVYVFVSRV9CQVNFX0xFVkVMF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFFEdMX1RFWFRVUkVfTUFYX0xFVkVMEkdMX1RFWFRVUkVfTUFYX0xPRBJHTF9URVhUVVJFX01JTl9MT0QUR0xfVEVYVFVSRV9TV0laWkxFX0EUR0xfVEVYVFVSRV9TV0laWkxFX0IUR0xfVEVYVFVSRV9TV0laWkxFX0cUR0xfVEVYVFVSRV9TV0laWkxFX1IRR0xfVEVYVFVSRV9XUkFQX1IdR0xfREVQVEhfU1RFTkNJTF9URVhUVVJFX01PREUXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1IdR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQaR0xfVEVYVFVSRV9TUkdCX0RFQ09ERV9FWFSN4QyN4waN5QaN5wiN6QoSZ2xUZXhQYXJhbWV0ZXJJdWl2BnBhcmFtcwQCEApHTF9ORUFSRVNUCUdMX0xJTkVBUhlHTF9ORUFSRVNUX01JUE1BUF9ORUFSRVNUGEdMX0xJTkVBUl9NSVBNQVBfTkVBUkVTVBhHTF9ORUFSRVNUX01JUE1BUF9MSU5FQVIXR0xfTElORUFSX01JUE1BUF9MSU5FQVIQR0xfQ0xBTVBfVE9fRURHRQlHTF9SRVBFQVQSR0xfTUlSUk9SRURfUkVQRUFUEkdMX0NMQU1QX1RPX0JPUkRFUgZHTF9SRUQIR0xfR1JFRU4HR0xfQkxVRQhHTF9BTFBIQQdHTF9aRVJPBkdMX09ORQIVZ2xUZXhQYXJhbWV0ZXJJdWl2RVhUA43rDI3tCI3vChVnbFRleFBhcmFtZXRlckl1aXZFWFQGdGFyZ2V0CRFHTF9URVhUVVJFX0JVRkZFUg1HTF9URVhUVVJFXzJEF0dMX1RFWFRVUkVfRVhURVJOQUxfT0VTE0dMX1RFWFRVUkVfMkRfQVJSQVkZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZDUdMX1RFWFRVUkVfM0QTR0xfVEVYVFVSRV9DVUJFX01BUBlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZjfEMjfMIjfUKFWdsVGV4UGFyYW1ldGVySXVpdkVYVAVwbmFtZRMVR0xfVEVYVFVSRV9NQUdfRklMVEVSFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBVHTF9URVhUVVJFX0JBU0VfTEVWRUwXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUUR0xfVEVYVFVSRV9NQVhfTEVWRUwSR0xfVEVYVFVSRV9NQVhfTE9EEkdMX1RFWFRVUkVfTUlOX0xPRBRHTF9URVhUVVJFX1NXSVpaTEVfQRRHTF9URVhUVVJFX1NXSVpaTEVfQhRHTF9URVhUVVJFX1NXSVpaTEVfRxRHTF9URVhUVVJFX1NXSVpaTEVfUhFHTF9URVhUVVJFX1dSQVBfUh1HTF9ERVBUSF9TVEVOQ0lMX1RFWFRVUkVfTU9ERRdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUh1HTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVBpHTF9URVhUVVJFX1NSR0JfREVDT0RFX0VYVI33DI35Bo37Bo39CI3/ChVnbFRleFBhcmFtZXRlckl1aXZFWFQGcGFyYW1zBAIQCkdMX05FQVJFU1QJR0xfTElORUFSGUdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1QYR0xfTElORUFSX01JUE1BUF9ORUFSRVNUGEdMX05FQVJFU1RfTUlQTUFQX0xJTkVBUhdHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUhBHTF9DTEFNUF9UT19FREdFCUdMX1JFUEVBVBJHTF9NSVJST1JFRF9SRVBFQVQSR0xfQ0xBTVBfVE9fQk9SREVSBkdMX1JFRAhHTF9HUkVFTgdHTF9CTFVFCEdMX0FMUEhBB0dMX1pFUk8GR0xfT05FAhVnbFRleFBhcmFtZXRlckl1aXZPRVMDjgEMjgMIjgUKFWdsVGV4UGFyYW1ldGVySXVpdk9FUwZ0YXJnZXQJEUdMX1RFWFRVUkVfQlVGRkVSDUdMX1RFWFRVUkVfMkQXR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMTR0xfVEVYVFVSRV8yRF9BUlJBWRlHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFH0dMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVkNR0xfVEVYVFVSRV8zRBNHTF9URVhUVVJFX0NVQkVfTUFQGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVmOBwyOCQiOCwoVZ2xUZXhQYXJhbWV0ZXJJdWl2T0VTBXBuYW1lExVHTF9URVhUVVJFX01BR19GSUxURVIVR0xfVEVYVFVSRV9NSU5fRklMVEVSEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UFUdMX1RFWFRVUkVfQkFTRV9MRVZFTBdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRRHTF9URVhUVVJFX01BWF9MRVZFTBJHTF9URVhUVVJFX01BWF9MT0QSR0xfVEVYVFVSRV9NSU5fTE9EFEdMX1RFWFRVUkVfU1dJWlpMRV9BFEdMX1RFWFRVUkVfU1dJWlpMRV9CFEdMX1RFWFRVUkVfU1dJWlpMRV9HFEdMX1RFWFRVUkVfU1dJWlpMRV9SEUdMX1RFWFRVUkVfV1JBUF9SHUdMX0RFUFRIX1NURU5DSUxfVEVYVFVSRV9NT0RFF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SHUdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUGkdMX1RFWFRVUkVfU1JHQl9ERUNPREVfRVhUjg0Mjg8GjhEGjhMIjhUKFWdsVGV4UGFyYW1ldGVySXVpdk9FUwZwYXJhbXMEAhAKR0xfTkVBUkVTVAlHTF9MSU5FQVIZR0xfTkVBUkVTVF9NSVBNQVBfTkVBUkVTVBhHTF9MSU5FQVJfTUlQTUFQX05FQVJFU1QYR0xfTkVBUkVTVF9NSVBNQVBfTElORUFSF0dMX0xJTkVBUl9NSVBNQVBfTElORUFSEEdMX0NMQU1QX1RPX0VER0UJR0xfUkVQRUFUEkdMX01JUlJPUkVEX1JFUEVBVBJHTF9DTEFNUF9UT19CT1JERVIGR0xfUkVECEdMX0dSRUVOB0dMX0JMVUUIR0xfQUxQSEEHR0xfWkVSTwZHTF9PTkUCD2dsVGV4UGFyYW1ldGVyZgOOFwyOGQiOGwoPZ2xUZXhQYXJhbWV0ZXJmBnRhcmdldAkRR0xfVEVYVFVSRV9CVUZGRVINR0xfVEVYVFVSRV8yRBdHTF9URVhUVVJFX0VYVEVSTkFMX09FUxNHTF9URVhUVVJFXzJEX0FSUkFZGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWQ1HTF9URVhUVVJFXzNEE0dMX1RFWFRVUkVfQ1VCRV9NQVAZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWY4dDI4fCI4hCg9nbFRleFBhcmFtZXRlcmYJcGFyYW1ldGVyExdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUhVHTF9URVhUVVJFX01BR19GSUxURVIVR0xfVEVYVFVSRV9NSU5fRklMVEVSEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UFUdMX1RFWFRVUkVfQkFTRV9MRVZFTBdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRRHTF9URVhUVVJFX01BWF9MRVZFTBJHTF9URVhUVVJFX01BWF9MT0QSR0xfVEVYVFVSRV9NSU5fTE9EFEdMX1RFWFRVUkVfU1dJWlpMRV9BFEdMX1RFWFRVUkVfU1dJWlpMRV9CFEdMX1RFWFRVUkVfU1dJWlpMRV9HFEdMX1RFWFRVUkVfU1dJWlpMRV9SEUdMX1RFWFRVUkVfV1JBUF9SHUdMX0RFUFRIX1NURU5DSUxfVEVYVFVSRV9NT0RFHUdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUGkdMX1RFWFRVUkVfU1JHQl9ERUNPREVfRVhUjiMMjiUIjicKD2dsVGV4UGFyYW1ldGVyZgV2YWx1ZRAKR0xfTkVBUkVTVAlHTF9MSU5FQVIZR0xfTkVBUkVTVF9NSVBNQVBfTkVBUkVTVBhHTF9MSU5FQVJfTUlQTUFQX05FQVJFU1QYR0xfTkVBUkVTVF9NSVBNQVBfTElORUFSF0dMX0xJTkVBUl9NSVBNQVBfTElORUFSEEdMX0NMQU1QX1RPX0VER0UJR0xfUkVQRUFUEkdMX01JUlJPUkVEX1JFUEVBVBJHTF9DTEFNUF9UT19CT1JERVIGR0xfUkVECEdMX0dSRUVOB0dMX0JMVUUIR0xfQUxQSEEHR0xfWkVSTwZHTF9PTkUCEGdsVGV4UGFyYW1ldGVyZnYDjikMjisIji0KEGdsVGV4UGFyYW1ldGVyZnYGdGFyZ2V0CRFHTF9URVhUVVJFX0JVRkZFUg1HTF9URVhUVVJFXzJEF0dMX1RFWFRVUkVfRVhURVJOQUxfT0VTE0dMX1RFWFRVUkVfMkRfQVJSQVkZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZDUdMX1RFWFRVUkVfM0QTR0xfVEVYVFVSRV9DVUJFX01BUBlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZji8MjjEIjjMKEGdsVGV4UGFyYW1ldGVyZnYFcG5hbWUTFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhVHTF9URVhUVVJFX01JTl9GSUxURVIRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QVR0xfVEVYVFVSRV9CQVNFX0xFVkVMF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFFEdMX1RFWFRVUkVfTUFYX0xFVkVMEkdMX1RFWFRVUkVfTUFYX0xPRBJHTF9URVhUVVJFX01JTl9MT0QUR0xfVEVYVFVSRV9TV0laWkxFX0EUR0xfVEVYVFVSRV9TV0laWkxFX0IUR0xfVEVYVFVSRV9TV0laWkxFX0cUR0xfVEVYVFVSRV9TV0laWkxFX1IRR0xfVEVYVFVSRV9XUkFQX1IdR0xfREVQVEhfU1RFTkNJTF9URVhUVVJFX01PREUXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1IdR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQaR0xfVEVYVFVSRV9TUkdCX0RFQ09ERV9FWFSONQyONwaOOQaOOwiOPQoQZ2xUZXhQYXJhbWV0ZXJmdgZwYXJhbXMEAhAKR0xfTkVBUkVTVAlHTF9MSU5FQVIZR0xfTkVBUkVTVF9NSVBNQVBfTkVBUkVTVBhHTF9MSU5FQVJfTUlQTUFQX05FQVJFU1QYR0xfTkVBUkVTVF9NSVBNQVBfTElORUFSF0dMX0xJTkVBUl9NSVBNQVBfTElORUFSEEdMX0NMQU1QX1RPX0VER0UJR0xfUkVQRUFUEkdMX01JUlJPUkVEX1JFUEVBVBJHTF9DTEFNUF9UT19CT1JERVIGR0xfUkVECEdMX0dSRUVOB0dMX0JMVUUIR0xfQUxQSEEHR0xfWkVSTwZHTF9PTkUCD2dsVGV4UGFyYW1ldGVyaQOOPwyOQQiOQwoPZ2xUZXhQYXJhbWV0ZXJpBnRhcmdldAkRR0xfVEVYVFVSRV9CVUZGRVINR0xfVEVYVFVSRV8yRBdHTF9URVhUVVJFX0VYVEVSTkFMX09FUxNHTF9URVhUVVJFXzJEX0FSUkFZGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWQ1HTF9URVhUVVJFXzNEE0dMX1RFWFRVUkVfQ1VCRV9NQVAZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWY5FDI5HCI5JCg9nbFRleFBhcmFtZXRlcmkJcGFyYW1ldGVyExdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUhVHTF9URVhUVVJFX01BR19GSUxURVIVR0xfVEVYVFVSRV9NSU5fRklMVEVSEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UFUdMX1RFWFRVUkVfQkFTRV9MRVZFTBdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRRHTF9URVhUVVJFX01BWF9MRVZFTBJHTF9URVhUVVJFX01BWF9MT0QSR0xfVEVYVFVSRV9NSU5fTE9EFEdMX1RFWFRVUkVfU1dJWlpMRV9BFEdMX1RFWFRVUkVfU1dJWlpMRV9CFEdMX1RFWFRVUkVfU1dJWlpMRV9HFEdMX1RFWFRVUkVfU1dJWlpMRV9SEUdMX1RFWFRVUkVfV1JBUF9SHUdMX0RFUFRIX1NURU5DSUxfVEVYVFVSRV9NT0RFHUdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUGkdMX1RFWFRVUkVfU1JHQl9ERUNPREVfRVhUjksMjk0Ijk8KD2dsVGV4UGFyYW1ldGVyaQV2YWx1ZRAKR0xfTkVBUkVTVAlHTF9MSU5FQVIZR0xfTkVBUkVTVF9NSVBNQVBfTkVBUkVTVBhHTF9MSU5FQVJfTUlQTUFQX05FQVJFU1QYR0xfTkVBUkVTVF9NSVBNQVBfTElORUFSF0dMX0xJTkVBUl9NSVBNQVBfTElORUFSEEdMX0NMQU1QX1RPX0VER0UJR0xfUkVQRUFUEkdMX01JUlJPUkVEX1JFUEVBVBJHTF9DTEFNUF9UT19CT1JERVIGR0xfUkVECEdMX0dSRUVOB0dMX0JMVUUIR0xfQUxQSEEHR0xfWkVSTwZHTF9PTkUCEGdsVGV4UGFyYW1ldGVyaXYDjlEMjlMIjlUKEGdsVGV4UGFyYW1ldGVyaXYGdGFyZ2V0CRFHTF9URVhUVVJFX0JVRkZFUg1HTF9URVhUVVJFXzJEF0dMX1RFWFRVUkVfRVhURVJOQUxfT0VTE0dMX1RFWFRVUkVfMkRfQVJSQVkZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZDUdMX1RFWFRVUkVfM0QTR0xfVEVYVFVSRV9DVUJFX01BUBlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZjlcMjlkIjlsKEGdsVGV4UGFyYW1ldGVyaXYFcG5hbWUTFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhVHTF9URVhUVVJFX01JTl9GSUxURVIRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QVR0xfVEVYVFVSRV9CQVNFX0xFVkVMF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFFEdMX1RFWFRVUkVfTUFYX0xFVkVMEkdMX1RFWFRVUkVfTUFYX0xPRBJHTF9URVhUVVJFX01JTl9MT0QUR0xfVEVYVFVSRV9TV0laWkxFX0EUR0xfVEVYVFVSRV9TV0laWkxFX0IUR0xfVEVYVFVSRV9TV0laWkxFX0cUR0xfVEVYVFVSRV9TV0laWkxFX1IRR0xfVEVYVFVSRV9XUkFQX1IdR0xfREVQVEhfU1RFTkNJTF9URVhUVVJFX01PREUXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1IdR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQaR0xfVEVYVFVSRV9TUkdCX0RFQ09ERV9FWFSOXQyOXwaOYQaOYwiOZQoQZ2xUZXhQYXJhbWV0ZXJpdgZwYXJhbXMEAhAKR0xfTkVBUkVTVAlHTF9MSU5FQVIZR0xfTkVBUkVTVF9NSVBNQVBfTkVBUkVTVBhHTF9MSU5FQVJfTUlQTUFQX05FQVJFU1QYR0xfTkVBUkVTVF9NSVBNQVBfTElORUFSF0dMX0xJTkVBUl9NSVBNQVBfTElORUFSEEdMX0NMQU1QX1RPX0VER0UJR0xfUkVQRUFUEkdMX01JUlJPUkVEX1JFUEVBVBJHTF9DTEFNUF9UT19CT1JERVIGR0xfUkVECEdMX0dSRUVOB0dMX0JMVUUIR0xfQUxQSEEHR0xfWkVSTwZHTF9PTkUCDmdsVGV4U3RvcmFnZTJEAo5nDI5pCI5rCg5nbFRleFN0b3JhZ2UyRAZ0YXJnZXQCDUdMX1RFWFRVUkVfMkQTR0xfVEVYVFVSRV9DVUJFX01BUI5tDI5vCI5xCg5nbFRleFN0b3JhZ2UyRA5pbnRlcm5hbGZvcm1hdGgVR0xfQ09NUFJFU1NFRF9SMTFfRUFDFkdMX0NPTVBSRVNTRURfUkcxMV9FQUMXR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIrR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMhxHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDHEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMdR0xfQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUMjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMYR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyLEdMX0NPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyE0dMX0RFUFRIMjRfU1RFTkNJTDgUR0xfREVQVEgzMkZfU1RFTkNJTDgUR0xfREVQVEhfQ09NUE9ORU5UMTYUR0xfREVQVEhfQ09NUE9ORU5UMjQVR0xfREVQVEhfQ09NUE9ORU5UMzJGEUdMX1IxMUZfRzExRl9CMTBGB0dMX1IxNkYHR0xfUjE2SQhHTF9SMTZVSQdHTF9SMzJGB0dMX1IzMkkIR0xfUjMyVUkFR0xfUjgGR0xfUjhJB0dMX1I4VUkLR0xfUjhfU05PUk0IR0xfUkcxNkYIR0xfUkcxNkkJR0xfUkcxNlVJCEdMX1JHMzJGCEdMX1JHMzJJCUdMX1JHMzJVSQZHTF9SRzgHR0xfUkc4SQhHTF9SRzhVSQxHTF9SRzhfU05PUk0LR0xfUkdCMTBfQTINR0xfUkdCMTBfQTJVSQlHTF9SR0IxNkYJR0xfUkdCMTZJCkdMX1JHQjE2VUkJR0xfUkdCMzJGCUdMX1JHQjMySQpHTF9SR0IzMlVJCUdMX1JHQjU2NQpHTF9SR0I1X0ExB0dMX1JHQjgIR0xfUkdCOEkJR0xfUkdCOFVJDUdMX1JHQjhfU05PUk0KR0xfUkdCOV9FNQpHTF9SR0JBMTZGCkdMX1JHQkExNkkLR0xfUkdCQTE2VUkKR0xfUkdCQTMyRgpHTF9SR0JBMzJJC0dMX1JHQkEzMlVJCEdMX1JHQkE0CEdMX1JHQkE4CUdMX1JHQkE4SQpHTF9SR0JBOFVJDkdMX1JHQkE4X1NOT1JNCEdMX1NSR0I4D0dMX1NSR0I4X0FMUEhBOAZHTF9SMTYMR0xfUjE2X1NOT1JNB0dMX1JHMTYNR0xfUkcxNl9TTk9STQhHTF9SR0IxNg5HTF9SR0IxNl9TTk9STQlHTF9SR0JBMTYPR0xfUkdCQTE2X1NOT1JNHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwHEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDUcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NhxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4HUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyG0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzR4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDglR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMCRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDUkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTIjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDgRR0xfU1RFTkNJTF9JTkRFWDgNR0xfQUxQSEE4X0VYVBBHTF9FVEMxX1JHQjhfT0VTC0dMX0JHUkFfRVhUAhFnbFRleFN0b3JhZ2UyREVYVAKOcwyOdQiOdwoRZ2xUZXhTdG9yYWdlMkRFWFQGdGFyZ2V0Ag1HTF9URVhUVVJFXzJEE0dMX1RFWFRVUkVfQ1VCRV9NQVCOeQyOewiOfQoRZ2xUZXhTdG9yYWdlMkRFWFQOaW50ZXJuYWxmb3JtYXRoFUdMX0NPTVBSRVNTRURfUjExX0VBQxZHTF9DT01QUkVTU0VEX1JHMTFfRUFDF0dMX0NPTVBSRVNTRURfUkdCOF9FVEMyK0dMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIcR0xfQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQxxHTF9DT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDHUdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDGEdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMixHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMhNHTF9ERVBUSDI0X1NURU5DSUw4FEdMX0RFUFRIMzJGX1NURU5DSUw4FEdMX0RFUFRIX0NPTVBPTkVOVDE2FEdMX0RFUFRIX0NPTVBPTkVOVDI0FUdMX0RFUFRIX0NPTVBPTkVOVDMyRhFHTF9SMTFGX0cxMUZfQjEwRgdHTF9SMTZGB0dMX1IxNkkIR0xfUjE2VUkHR0xfUjMyRgdHTF9SMzJJCEdMX1IzMlVJBUdMX1I4BkdMX1I4SQdHTF9SOFVJC0dMX1I4X1NOT1JNCEdMX1JHMTZGCEdMX1JHMTZJCUdMX1JHMTZVSQhHTF9SRzMyRghHTF9SRzMySQlHTF9SRzMyVUkGR0xfUkc4B0dMX1JHOEkIR0xfUkc4VUkMR0xfUkc4X1NOT1JNC0dMX1JHQjEwX0EyDUdMX1JHQjEwX0EyVUkJR0xfUkdCMTZGCUdMX1JHQjE2SQpHTF9SR0IxNlVJCUdMX1JHQjMyRglHTF9SR0IzMkkKR0xfUkdCMzJVSQlHTF9SR0I1NjUKR0xfUkdCNV9BMQdHTF9SR0I4CEdMX1JHQjhJCUdMX1JHQjhVSQ1HTF9SR0I4X1NOT1JNCkdMX1JHQjlfRTUKR0xfUkdCQTE2RgpHTF9SR0JBMTZJC0dMX1JHQkExNlVJCkdMX1JHQkEzMkYKR0xfUkdCQTMySQtHTF9SR0JBMzJVSQhHTF9SR0JBNAhHTF9SR0JBOAlHTF9SR0JBOEkKR0xfUkdCQThVSQ5HTF9SR0JBOF9TTk9STQhHTF9TUkdCOA9HTF9TUkdCOF9BTFBIQTgGR0xfUjE2DEdMX1IxNl9TTk9STQdHTF9SRzE2DUdMX1JHMTZfU05PUk0IR0xfUkdCMTYOR0xfUkdCMTZfU05PUk0JR0xfUkdCQTE2D0dMX1JHQkExNl9TTk9STR1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMBxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDYcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg4JUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTAkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NiRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDglR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4EUdMX1NURU5DSUxfSU5ERVg4DUdMX0FMUEhBOF9FWFQQR0xfRVRDMV9SR0I4X09FUwtHTF9CR1JBX0VYVAIZZ2xUZXhTdG9yYWdlMkRNdWx0aXNhbXBsZQKOfwyOgQiOgwoZZ2xUZXhTdG9yYWdlMkRNdWx0aXNhbXBsZQZ0YXJnZXQBGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEWOhQyOhwiOiQoZZ2xUZXhTdG9yYWdlMkRNdWx0aXNhbXBsZQ5pbnRlcm5hbGZvcm1hdDcTR0xfREVQVEgyNF9TVEVOQ0lMOBRHTF9ERVBUSDMyRl9TVEVOQ0lMOBRHTF9ERVBUSF9DT01QT05FTlQxNhRHTF9ERVBUSF9DT01QT05FTlQyNBVHTF9ERVBUSF9DT01QT05FTlQzMkYRR0xfUjExRl9HMTFGX0IxMEYHR0xfUjE2RgdHTF9SMTZJCEdMX1IxNlVJB0dMX1IzMkYHR0xfUjMySQhHTF9SMzJVSQVHTF9SOAZHTF9SOEkHR0xfUjhVSQtHTF9SOF9TTk9STQhHTF9SRzE2RghHTF9SRzE2SQlHTF9SRzE2VUkIR0xfUkczMkYIR0xfUkczMkkJR0xfUkczMlVJBkdMX1JHOAdHTF9SRzhJCEdMX1JHOFVJDEdMX1JHOF9TTk9STQtHTF9SR0IxMF9BMg1HTF9SR0IxMF9BMlVJCUdMX1JHQjE2RglHTF9SR0IxNkkKR0xfUkdCMTZVSQlHTF9SR0IzMkYJR0xfUkdCMzJJCkdMX1JHQjMyVUkJR0xfUkdCNTY1CkdMX1JHQjVfQTEHR0xfUkdCOAhHTF9SR0I4SQlHTF9SR0I4VUkNR0xfUkdCOF9TTk9STQpHTF9SR0I5X0U1CkdMX1JHQkExNkYKR0xfUkdCQTE2SQtHTF9SR0JBMTZVSQpHTF9SR0JBMzJGCkdMX1JHQkEzMkkLR0xfUkdCQTMyVUkIR0xfUkdCQTQIR0xfUkdCQTgJR0xfUkdCQThJCkdMX1JHQkE4VUkOR0xfUkdCQThfU05PUk0IR0xfU1JHQjgPR0xfU1JHQjhfQUxQSEE4EUdMX1NURU5DSUxfSU5ERVg4Ag5nbFRleFN0b3JhZ2UzRAKOiwyOjQiOjwoOZ2xUZXhTdG9yYWdlM0QGdGFyZ2V0AxNHTF9URVhUVVJFXzJEX0FSUkFZDUdMX1RFWFRVUkVfM0QZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWY6RDI6TCI6VCg5nbFRleFN0b3JhZ2UzRA5pbnRlcm5hbGZvcm1hdF0VR0xfQ09NUFJFU1NFRF9SMTFfRUFDFkdMX0NPTVBSRVNTRURfUkcxMV9FQUMXR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIrR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMhxHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDHEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMdR0xfQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUMjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMYR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyLEdMX0NPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyE0dMX0RFUFRIMjRfU1RFTkNJTDgUR0xfREVQVEgzMkZfU1RFTkNJTDgUR0xfREVQVEhfQ09NUE9ORU5UMTYUR0xfREVQVEhfQ09NUE9ORU5UMjQVR0xfREVQVEhfQ09NUE9ORU5UMzJGEUdMX1IxMUZfRzExRl9CMTBGB0dMX1IxNkYHR0xfUjE2SQhHTF9SMTZVSQdHTF9SMzJGB0dMX1IzMkkIR0xfUjMyVUkFR0xfUjgGR0xfUjhJB0dMX1I4VUkLR0xfUjhfU05PUk0IR0xfUkcxNkYIR0xfUkcxNkkJR0xfUkcxNlVJCEdMX1JHMzJGCEdMX1JHMzJJCUdMX1JHMzJVSQZHTF9SRzgHR0xfUkc4SQhHTF9SRzhVSQxHTF9SRzhfU05PUk0LR0xfUkdCMTBfQTINR0xfUkdCMTBfQTJVSQlHTF9SR0IxNkYJR0xfUkdCMTZJCkdMX1JHQjE2VUkJR0xfUkdCMzJGCUdMX1JHQjMySQpHTF9SR0IzMlVJCUdMX1JHQjU2NQpHTF9SR0I1X0ExB0dMX1JHQjgIR0xfUkdCOEkJR0xfUkdCOFVJDUdMX1JHQjhfU05PUk0KR0xfUkdCOV9FNQpHTF9SR0JBMTZGCkdMX1JHQkExNkkLR0xfUkdCQTE2VUkKR0xfUkdCQTMyRgpHTF9SR0JBMzJJC0dMX1JHQkEzMlVJCEdMX1JHQkE0CEdMX1JHQkE4CUdMX1JHQkE4SQpHTF9SR0JBOFVJDkdMX1JHQkE4X1NOT1JNCEdMX1NSR0I4D0dMX1NSR0I4X0FMUEhBOB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMBxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDYcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg4JUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTAkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NiRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDglR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4EUdMX1NURU5DSUxfSU5ERVg4AhFnbFRleFN0b3JhZ2UzREVYVAKOlwyOmQiOmwoRZ2xUZXhTdG9yYWdlM0RFWFQGdGFyZ2V0AxNHTF9URVhUVVJFXzJEX0FSUkFZDUdMX1RFWFRVUkVfM0QZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWY6dDI6fCI6hChFnbFRleFN0b3JhZ2UzREVYVA5pbnRlcm5hbGZvcm1hdF0VR0xfQ09NUFJFU1NFRF9SMTFfRUFDFkdMX0NPTVBSRVNTRURfUkcxMV9FQUMXR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIrR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMhxHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDHEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMdR0xfQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUMjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMYR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyLEdMX0NPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyE0dMX0RFUFRIMjRfU1RFTkNJTDgUR0xfREVQVEgzMkZfU1RFTkNJTDgUR0xfREVQVEhfQ09NUE9ORU5UMTYUR0xfREVQVEhfQ09NUE9ORU5UMjQVR0xfREVQVEhfQ09NUE9ORU5UMzJGEUdMX1IxMUZfRzExRl9CMTBGB0dMX1IxNkYHR0xfUjE2SQhHTF9SMTZVSQdHTF9SMzJGB0dMX1IzMkkIR0xfUjMyVUkFR0xfUjgGR0xfUjhJB0dMX1I4VUkLR0xfUjhfU05PUk0IR0xfUkcxNkYIR0xfUkcxNkkJR0xfUkcxNlVJCEdMX1JHMzJGCEdMX1JHMzJJCUdMX1JHMzJVSQZHTF9SRzgHR0xfUkc4SQhHTF9SRzhVSQxHTF9SRzhfU05PUk0LR0xfUkdCMTBfQTINR0xfUkdCMTBfQTJVSQlHTF9SR0IxNkYJR0xfUkdCMTZJCkdMX1JHQjE2VUkJR0xfUkdCMzJGCUdMX1JHQjMySQpHTF9SR0IzMlVJCUdMX1JHQjU2NQpHTF9SR0I1X0ExB0dMX1JHQjgIR0xfUkdCOEkJR0xfUkdCOFVJDUdMX1JHQjhfU05PUk0KR0xfUkdCOV9FNQpHTF9SR0JBMTZGCkdMX1JHQkExNkkLR0xfUkdCQTE2VUkKR0xfUkdCQTMyRgpHTF9SR0JBMzJJC0dMX1JHQkEzMlVJCEdMX1JHQkE0CEdMX1JHQkE4CUdMX1JHQkE4SQpHTF9SR0JBOFVJDkdMX1JHQkE4X1NOT1JNCEdMX1NSR0I4D0dMX1NSR0I4X0FMUEhBOB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMBxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDYcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg4JUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTAkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NiRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDglR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4EUdMX1NURU5DSUxfSU5ERVg4AhlnbFRleFN0b3JhZ2UzRE11bHRpc2FtcGxlAo6jDI6lCI6nChlnbFRleFN0b3JhZ2UzRE11bHRpc2FtcGxlBnRhcmdldAEfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWY6pDI6rCI6tChlnbFRleFN0b3JhZ2UzRE11bHRpc2FtcGxlDmludGVybmFsZm9ybWF0NxNHTF9ERVBUSDI0X1NURU5DSUw4FEdMX0RFUFRIMzJGX1NURU5DSUw4FEdMX0RFUFRIX0NPTVBPTkVOVDE2FEdMX0RFUFRIX0NPTVBPTkVOVDI0FUdMX0RFUFRIX0NPTVBPTkVOVDMyRhFHTF9SMTFGX0cxMUZfQjEwRgdHTF9SMTZGB0dMX1IxNkkIR0xfUjE2VUkHR0xfUjMyRgdHTF9SMzJJCEdMX1IzMlVJBUdMX1I4BkdMX1I4SQdHTF9SOFVJC0dMX1I4X1NOT1JNCEdMX1JHMTZGCEdMX1JHMTZJCUdMX1JHMTZVSQhHTF9SRzMyRghHTF9SRzMySQlHTF9SRzMyVUkGR0xfUkc4B0dMX1JHOEkIR0xfUkc4VUkMR0xfUkc4X1NOT1JNC0dMX1JHQjEwX0EyDUdMX1JHQjEwX0EyVUkJR0xfUkdCMTZGCUdMX1JHQjE2SQpHTF9SR0IxNlVJCUdMX1JHQjMyRglHTF9SR0IzMkkKR0xfUkdCMzJVSQlHTF9SR0I1NjUKR0xfUkdCNV9BMQdHTF9SR0I4CEdMX1JHQjhJCUdMX1JHQjhVSQ1HTF9SR0I4X1NOT1JNCkdMX1JHQjlfRTUKR0xfUkdCQTE2RgpHTF9SR0JBMTZJC0dMX1JHQkExNlVJCkdMX1JHQkEzMkYKR0xfUkdCQTMySQtHTF9SR0JBMzJVSQhHTF9SR0JBNAhHTF9SR0JBOAlHTF9SR0JBOEkKR0xfUkdCQThVSQ5HTF9SR0JBOF9TTk9STQhHTF9TUkdCOA9HTF9TUkdCOF9BTFBIQTgRR0xfU1RFTkNJTF9JTkRFWDgCHGdsVGV4U3RvcmFnZTNETXVsdGlzYW1wbGVPRVMCjq8MjrEIjrMKHGdsVGV4U3RvcmFnZTNETXVsdGlzYW1wbGVPRVMGdGFyZ2V0AR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZjrUMjrcIjrkKHGdsVGV4U3RvcmFnZTNETXVsdGlzYW1wbGVPRVMOaW50ZXJuYWxmb3JtYXQ3E0dMX0RFUFRIMjRfU1RFTkNJTDgUR0xfREVQVEgzMkZfU1RFTkNJTDgUR0xfREVQVEhfQ09NUE9ORU5UMTYUR0xfREVQVEhfQ09NUE9ORU5UMjQVR0xfREVQVEhfQ09NUE9ORU5UMzJGEUdMX1IxMUZfRzExRl9CMTBGB0dMX1IxNkYHR0xfUjE2SQhHTF9SMTZVSQdHTF9SMzJGB0dMX1IzMkkIR0xfUjMyVUkFR0xfUjgGR0xfUjhJB0dMX1I4VUkLR0xfUjhfU05PUk0IR0xfUkcxNkYIR0xfUkcxNkkJR0xfUkcxNlVJCEdMX1JHMzJGCEdMX1JHMzJJCUdMX1JHMzJVSQZHTF9SRzgHR0xfUkc4SQhHTF9SRzhVSQxHTF9SRzhfU05PUk0LR0xfUkdCMTBfQTINR0xfUkdCMTBfQTJVSQlHTF9SR0IxNkYJR0xfUkdCMTZJCkdMX1JHQjE2VUkJR0xfUkdCMzJGCUdMX1JHQjMySQpHTF9SR0IzMlVJCUdMX1JHQjU2NQpHTF9SR0I1X0ExB0dMX1JHQjgIR0xfUkdCOEkJR0xfUkdCOFVJDUdMX1JHQjhfU05PUk0KR0xfUkdCOV9FNQpHTF9SR0JBMTZGCkdMX1JHQkExNkkLR0xfUkdCQTE2VUkKR0xfUkdCQTMyRgpHTF9SR0JBMzJJC0dMX1JHQkEzMlVJCEdMX1JHQkE0CEdMX1JHQkE4CUdMX1JHQkE4SQpHTF9SR0JBOFVJDkdMX1JHQkE4X1NOT1JNCEdMX1NSR0I4D0dMX1NSR0I4X0FMUEhBOBFHTF9TVEVOQ0lMX0lOREVYOAIPZ2xUZXhTdWJJbWFnZTJEA467DI69CI6/Cg9nbFRleFN1YkltYWdlMkQGdGFyZ2V0Bw1HTF9URVhUVVJFXzJEHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWB5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1keR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWB5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1keR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ajsEMjsMIjsUKD2dsVGV4U3ViSW1hZ2UyRAZmb3JtYXQPCEdMX0FMUEhBDEdMX0xVTUlOQU5DRRJHTF9MVU1JTkFOQ0VfQUxQSEEGR0xfUkdCB0dMX1JHQkESR0xfREVQVEhfQ09NUE9ORU5UEEdMX0RFUFRIX1NURU5DSUwGR0xfUkVEDkdMX1JFRF9JTlRFR0VSBUdMX1JHD0dMX1JHQkFfSU5URUdFUg5HTF9SR0JfSU5URUdFUg1HTF9SR19JTlRFR0VSEEdMX1NURU5DSUxfSU5ERVgLR0xfQkdSQV9FWFSOxwyOyQiOywoPZ2xUZXhTdWJJbWFnZTJEBHR5cGU4EEdMX1VOU0lHTkVEX0JZVEUZR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNBlHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xF0dMX1VOU0lHTkVEX1NIT1JUXzVfNl81EUdMX0hBTEZfRkxPQVRfT0VTB0dMX0JZVEUIR0xfRkxPQVQhR0xfRkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWDUdMX0hBTEZfRkxPQVQGR0xfSU5UCEdMX1NIT1JUD0dMX1VOU0lHTkVEX0lOVB9HTF9VTlNJR05FRF9JTlRfMTBGXzExRl8xMUZfUkVWFEdMX1VOU0lHTkVEX0lOVF8yNF84HkdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVhtHTF9VTlNJR05FRF9JTlRfNV85XzlfOV9SRVYRR0xfVU5TSUdORURfU0hPUlQVR0xfQ09NUFJFU1NFRF9SMTFfRUFDHEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMXR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIYR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyK0dMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIsR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIWR0xfQ09NUFJFU1NFRF9SRzExX0VBQx1HTF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQxxHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDG0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzR4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDgjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDgcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NSRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDUcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NiRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDYcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OCRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDgdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTAlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTIQR0xfRVRDMV9SR0I4X09FUwIPZ2xUZXhTdWJJbWFnZTNEBI7NDI7PCI7RCg9nbFRleFN1YkltYWdlM0QGdGFyZ2V0AxNHTF9URVhUVVJFXzJEX0FSUkFZDUdMX1RFWFRVUkVfM0QZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWY7TDI7VCI7XCg9nbFRleFN1YkltYWdlM0QGZm9ybWF0DwhHTF9BTFBIQRJHTF9ERVBUSF9DT01QT05FTlQQR0xfREVQVEhfU1RFTkNJTAxHTF9MVU1JTkFOQ0USR0xfTFVNSU5BTkNFX0FMUEhBBkdMX1JFRA5HTF9SRURfSU5URUdFUgVHTF9SRwZHTF9SR0IHR0xfUkdCQQ9HTF9SR0JBX0lOVEVHRVIOR0xfUkdCX0lOVEVHRVINR0xfUkdfSU5URUdFUhBHTF9TVEVOQ0lMX0lOREVYC0dMX0JHUkFfRVhUjtkMjtsIjt0KD2dsVGV4U3ViSW1hZ2UzRAR0eXBlOBFHTF9IQUxGX0ZMT0FUX09FUwdHTF9CWVRFCEdMX0ZMT0FUIUdMX0ZMT0FUXzMyX1VOU0lHTkVEX0lOVF8yNF84X1JFVg1HTF9IQUxGX0ZMT0FUBkdMX0lOVAhHTF9TSE9SVBBHTF9VTlNJR05FRF9CWVRFD0dMX1VOU0lHTkVEX0lOVB9HTF9VTlNJR05FRF9JTlRfMTBGXzExRl8xMUZfUkVWFEdMX1VOU0lHTkVEX0lOVF8yNF84HkdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVhtHTF9VTlNJR05FRF9JTlRfNV85XzlfOV9SRVYRR0xfVU5TSUdORURfU0hPUlQZR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNBlHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xF0dMX1VOU0lHTkVEX1NIT1JUXzVfNl81FUdMX0NPTVBSRVNTRURfUjExX0VBQxxHTF9DT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDF0dMX0NPTVBSRVNTRURfUkdCOF9FVEMyGEdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMitHTF9DT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyLEdMX0NPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyFkdMX0NPTVBSRVNTRURfUkcxMV9FQUMdR0xfQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUMcR0xfQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQyNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQxtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg4I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDUkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDYkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDgkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4HUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTAdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTAlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMiVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyEEdMX0VUQzFfUkdCOF9PRVOO3wSO4QaO4wiO5QoPZ2xUZXhTdWJJbWFnZTNEBGRhdGEEAQACEmdsVGV4U3ViSW1hZ2UzRE9FUwSO5wyO6QiO6woSZ2xUZXhTdWJJbWFnZTNET0VTBnRhcmdldAMTR0xfVEVYVFVSRV8yRF9BUlJBWQ1HTF9URVhUVVJFXzNEGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVmO7QyO7wiO8QoSZ2xUZXhTdWJJbWFnZTNET0VTBmZvcm1hdA8IR0xfQUxQSEESR0xfREVQVEhfQ09NUE9ORU5UEEdMX0RFUFRIX1NURU5DSUwMR0xfTFVNSU5BTkNFEkdMX0xVTUlOQU5DRV9BTFBIQQZHTF9SRUQOR0xfUkVEX0lOVEVHRVIFR0xfUkcGR0xfUkdCB0dMX1JHQkEPR0xfUkdCQV9JTlRFR0VSDkdMX1JHQl9JTlRFR0VSDUdMX1JHX0lOVEVHRVIQR0xfU1RFTkNJTF9JTkRFWAtHTF9CR1JBX0VYVI7zDI71CI73ChJnbFRleFN1YkltYWdlM0RPRVMEdHlwZTgRR0xfSEFMRl9GTE9BVF9PRVMHR0xfQllURQhHTF9GTE9BVCFHTF9GTE9BVF8zMl9VTlNJR05FRF9JTlRfMjRfOF9SRVYNR0xfSEFMRl9GTE9BVAZHTF9JTlQIR0xfU0hPUlQQR0xfVU5TSUdORURfQllURQ9HTF9VTlNJR05FRF9JTlQfR0xfVU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFVhRHTF9VTlNJR05FRF9JTlRfMjRfOB5HTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYbR0xfVU5TSUdORURfSU5UXzVfOV85XzlfUkVWEUdMX1VOU0lHTkVEX1NIT1JUGUdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQZR0xfVU5TSUdORURfU0hPUlRfNV81XzVfMRdHTF9VTlNJR05FRF9TSE9SVF81XzZfNRVHTF9DT01QUkVTU0VEX1IxMV9FQUMcR0xfQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQxdHTF9DT01QUkVTU0VEX1JHQjhfRVRDMhhHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzIrR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMixHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMhZHTF9DT01QUkVTU0VEX1JHMTFfRUFDHUdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDHEdMX0NPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4OCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OBxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NRxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NhxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTAdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTIlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMhBHTF9FVEMxX1JHQjhfT0VTjvkEjvsGjv0Ijv8KEmdsVGV4U3ViSW1hZ2UzRE9FUwZwaXhlbHMEAQACG2dsVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncwGPAQyPAwiPBQobZ2xUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzCmJ1ZmZlck1vZGUCFkdMX0lOVEVSTEVBVkVEX0FUVFJJQlMTR0xfU0VQQVJBVEVfQVRUUklCUwILZ2xVbmlmb3JtMWYAAgxnbFVuaWZvcm0xZnYBjwcEjwkGjwsIjw0KDGdsVW5pZm9ybTFmdgZ2YWx1ZXMEAgIAAgtnbFVuaWZvcm0xaQACDGdsVW5pZm9ybTFpdgGPDwSPEQaPEwiPFQoMZ2xVbmlmb3JtMWl2BnZhbHVlcwQCAgACDGdsVW5pZm9ybTF1aQACDWdsVW5pZm9ybTF1aXYBjxcEjxkGjxsIjx0KDWdsVW5pZm9ybTF1aXYGdmFsdWVzBAICAAILZ2xVbmlmb3JtMmYAAgxnbFVuaWZvcm0yZnYBjx8EjyEGjyMIjyUKDGdsVW5pZm9ybTJmdgZ2YWx1ZXMEAgIAAgtnbFVuaWZvcm0yaQACDGdsVW5pZm9ybTJpdgGPJwSPKQaPKwiPLQoMZ2xVbmlmb3JtMml2BnZhbHVlcwQCAgACDGdsVW5pZm9ybTJ1aQACDWdsVW5pZm9ybTJ1aXYBjy8EjzEGjzMIjzUKDWdsVW5pZm9ybTJ1aXYGdmFsdWVzBAICAAILZ2xVbmlmb3JtM2YAAgxnbFVuaWZvcm0zZnYBjzcEjzkGjzsIjz0KDGdsVW5pZm9ybTNmdgZ2YWx1ZXMEAgIAAgtnbFVuaWZvcm0zaQACDGdsVW5pZm9ybTNpdgGPPwSPQQaPQwiPRQoMZ2xVbmlmb3JtM2l2BnZhbHVlcwQCAgACDGdsVW5pZm9ybTN1aQACDWdsVW5pZm9ybTN1aXYBj0cEj0kGj0sIj00KDWdsVW5pZm9ybTN1aXYGdmFsdWVzBAICAAILZ2xVbmlmb3JtNGYAAgxnbFVuaWZvcm00ZnYBj08Ej1EGj1MIj1UKDGdsVW5pZm9ybTRmdgZ2YWx1ZXMEAgIAAgtnbFVuaWZvcm00aQACDGdsVW5pZm9ybTRpdgGPVwSPWQaPWwiPXQoMZ2xVbmlmb3JtNGl2BnZhbHVlcwQCAgACDGdsVW5pZm9ybTR1aQACDWdsVW5pZm9ybTR1aXYBj18Ej2EGj2MIj2UKDWdsVW5pZm9ybTR1aXYGdmFsdWVzBAICAAISZ2xVbmlmb3JtTWF0cml4MmZ2AY9nBI9pBo9rCI9tChJnbFVuaWZvcm1NYXRyaXgyZnYGdmFsdWVzBAICAAIUZ2xVbmlmb3JtTWF0cml4MngzZnYBj28Ej3EGj3MIj3UKFGdsVW5pZm9ybU1hdHJpeDJ4M2Z2BnZhbHVlcwQCAgACFmdsVW5pZm9ybU1hdHJpeDJ4M2Z2TlYBj3cEj3kGj3sIj30KFmdsVW5pZm9ybU1hdHJpeDJ4M2Z2TlYFdmFsdWUEAgIAAhRnbFVuaWZvcm1NYXRyaXgyeDRmdgGPfwSPgQaPgwiPhQoUZ2xVbmlmb3JtTWF0cml4Mng0ZnYGdmFsdWVzBAICAAIWZ2xVbmlmb3JtTWF0cml4Mng0ZnZOVgGPhwSPiQaPiwiPjQoWZ2xVbmlmb3JtTWF0cml4Mng0ZnZOVgV2YWx1ZQQCAgACEmdsVW5pZm9ybU1hdHJpeDNmdgGPjwSPkQaPkwiPlQoSZ2xVbmlmb3JtTWF0cml4M2Z2BnZhbHVlcwQCAgACFGdsVW5pZm9ybU1hdHJpeDN4MmZ2AY+XBI+ZBo+bCI+dChRnbFVuaWZvcm1NYXRyaXgzeDJmdgZ2YWx1ZXMEAgIAAhZnbFVuaWZvcm1NYXRyaXgzeDJmdk5WAY+fBI+hBo+jCI+lChZnbFVuaWZvcm1NYXRyaXgzeDJmdk5WBXZhbHVlBAICAAIUZ2xVbmlmb3JtTWF0cml4M3g0ZnYBj6cEj6kGj6sIj60KFGdsVW5pZm9ybU1hdHJpeDN4NGZ2BnZhbHVlcwQCAgACFmdsVW5pZm9ybU1hdHJpeDN4NGZ2TlYBj68Ej7EGj7MIj7UKFmdsVW5pZm9ybU1hdHJpeDN4NGZ2TlYFdmFsdWUEAgIAAhJnbFVuaWZvcm1NYXRyaXg0ZnYBj7cEj7kGj7sIj70KEmdsVW5pZm9ybU1hdHJpeDRmdgZ2YWx1ZXMEAgIAAhRnbFVuaWZvcm1NYXRyaXg0eDJmdgGPvwSPwQaPwwiPxQoUZ2xVbmlmb3JtTWF0cml4NHgyZnYGdmFsdWVzBAICAAIWZ2xVbmlmb3JtTWF0cml4NHgyZnZOVgGPxwSPyQaPywiPzQoWZ2xVbmlmb3JtTWF0cml4NHgyZnZOVgV2YWx1ZQQCAgACFGdsVW5pZm9ybU1hdHJpeDR4M2Z2AY/PBI/RBo/TCI/VChRnbFVuaWZvcm1NYXRyaXg0eDNmdgZ2YWx1ZXMEAgIAAhZnbFVuaWZvcm1NYXRyaXg0eDNmdk5WAY/XBI/ZBo/bCI/dChZnbFVuaWZvcm1NYXRyaXg0eDNmdk5WBXZhbHVlBAICAAINZ2xVbm1hcEJ1ZmZlcgGP3wyP4QiP4woNZ2xVbm1hcEJ1ZmZlcgZ0YXJnZXQND0dMX0FSUkFZX0JVRkZFUhdHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUhNHTF9DT1BZX1JFQURfQlVGRkVSFEdMX0NPUFlfV1JJVEVfQlVGRkVSFEdMX1BJWEVMX1BBQ0tfQlVGRkVSFkdMX1BJWEVMX1VOUEFDS19CVUZGRVIcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUhFHTF9VTklGT1JNX0JVRkZFUhhHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVIbR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSF0dMX0RSQVdfSU5ESVJFQ1RfQlVGRkVSGEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUhFHTF9URVhUVVJFX0JVRkZFUgIQZ2xVbm1hcEJ1ZmZlck9FUwGP5QyP5wiP6QoQZ2xVbm1hcEJ1ZmZlck9FUwZ0YXJnZXQND0dMX0FSUkFZX0JVRkZFUhdHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUhNHTF9DT1BZX1JFQURfQlVGRkVSFEdMX0NPUFlfV1JJVEVfQlVGRkVSFEdMX1BJWEVMX1BBQ0tfQlVGRkVSFkdMX1BJWEVMX1VOUEFDS19CVUZGRVIcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUhFHTF9VTklGT1JNX0JVRkZFUhhHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVIbR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSF0dMX0RSQVdfSU5ESVJFQ1RfQlVGRkVSGEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUhFHTF9URVhUVVJFX0JVRkZFUgISZ2xVc2VQcm9ncmFtU3RhZ2VzAY/rDI/tCI/vChJnbFVzZVByb2dyYW1TdGFnZXMGc3RhZ2VzBBJHTF9BTExfU0hBREVSX0JJVFMVR0xfQ09NUFVURV9TSEFERVJfQklUFkdMX0ZSQUdNRU5UX1NIQURFUl9CSVQUR0xfVkVSVEVYX1NIQURFUl9CSVQCFGdsVmVydGV4QXR0cmliRm9ybWF0AY/xDI/zCI/1ChRnbFZlcnRleEF0dHJpYkZvcm1hdAR0eXBlDAdHTF9CWVRFBkdMX0lOVAhHTF9TSE9SVBBHTF9VTlNJR05FRF9CWVRFD0dMX1VOU0lHTkVEX0lOVBFHTF9VTlNJR05FRF9TSE9SVAhHTF9GSVhFRAhHTF9GTE9BVBFHTF9IQUxGX0ZMT0FUX09FUw1HTF9IQUxGX0ZMT0FUFUdMX0lOVF8yXzEwXzEwXzEwX1JFVh5HTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYCFWdsVmVydGV4QXR0cmliSUZvcm1hdAGP9wyP+QiP+woVZ2xWZXJ0ZXhBdHRyaWJJRm9ybWF0BHR5cGUMB0dMX0JZVEUGR0xfSU5UCEdMX1NIT1JUEEdMX1VOU0lHTkVEX0JZVEUPR0xfVU5TSUdORURfSU5UEUdMX1VOU0lHTkVEX1NIT1JUCEdMX0ZJWEVECEdMX0ZMT0FUEUdMX0hBTEZfRkxPQVRfT0VTDUdMX0hBTEZfRkxPQVQVR0xfSU5UXzJfMTBfMTBfMTBfUkVWHkdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVgIWZ2xWZXJ0ZXhBdHRyaWJJUG9pbnRlcgGP/QyP/wiQAQoWZ2xWZXJ0ZXhBdHRyaWJJUG9pbnRlcgR0eXBlDAdHTF9CWVRFBkdMX0lOVAhHTF9TSE9SVBBHTF9VTlNJR05FRF9CWVRFD0dMX1VOU0lHTkVEX0lOVBFHTF9VTlNJR05FRF9TSE9SVAhHTF9GSVhFRAhHTF9GTE9BVBFHTF9IQUxGX0ZMT0FUX09FUw1HTF9IQUxGX0ZMT0FUFUdMX0lOVF8yXzEwXzEwXzEwX1JFVh5HTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYCFWdsVmVydGV4QXR0cmliUG9pbnRlcgGQAwyQBQiQBwoVZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyBHR5cGUMB0dMX0JZVEUGR0xfSU5UCEdMX1NIT1JUEEdMX1VOU0lHTkVEX0JZVEUPR0xfVU5TSUdORURfSU5UEUdMX1VOU0lHTkVEX1NIT1JUCEdMX0ZJWEVECEdMX0ZMT0FUEUdMX0hBTEZfRkxPQVRfT0VTDUdMX0hBTEZfRkxPQVQVR0xfSU5UXzJfMTBfMTBfMTBfUkVWHkdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVg==
\ No newline at end of file
+AwhzbmlwcGV0cwxBdG9tU25pcHBldHMAArAGAxNDR1NHZXRTdXJmYWNlQm91bmRzAQMFCHNuaXBwZXRzDE9ic2VydmF0aW9ucwACAwZQBQcIc25pcHBldHMIcGFydFBhdGgAAgNQBwkIc25pcHBldHMJZmllbGRQYXRoAAIDsAkLCHNuaXBwZXRzDHJlbGF0aXZlUGF0aAABsBNDR1NHZXRTdXJmYWNlQm91bmRzBmJvdW5kcwQBAgIPZWdsQ2hvb3NlQ29uZmlnAgsNCHNuaXBwZXRzBkxhYmVscwACAwawDQYPBhEIEwoPZWdsQ2hvb3NlQ29uZmlnC2F0dHJpYl9saXN0BAIBCEVHTF9OT05FFQQXBhkIGwoPZWdsQ2hvb3NlQ29uZmlnB2NvbmZpZ3MEAQICEGVnbENyZWF0ZUNvbnRleHQBHQwfBiEGIwglChBlZ2xDcmVhdGVDb250ZXh0C2F0dHJpYl9saXN0BAIBCEVHTF9OT05FAhFlZ2xDcmVhdGVJbWFnZUtIUgInDCkIKwoRZWdsQ3JlYXRlSW1hZ2VLSFIGdGFyZ2V0ARlFR0xfTkFUSVZFX0JVRkZFUl9BTkRST0lELQwvBjEGMwg1ChFlZ2xDcmVhdGVJbWFnZUtIUgthdHRyaWJfbGlzdAQCAQhFR0xfTk9ORQIiZWdsQ3JlYXRlTmF0aXZlQ2xpZW50QnVmZmVyQU5EUk9JRAE3DDkGOwY9CD8KImVnbENyZWF0ZU5hdGl2ZUNsaWVudEJ1ZmZlckFORFJPSUQLYXR0cmliX2xpc3QEAgEIRUdMX05PTkUCIGVnbENyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyAUEMQwZFBkcISQogZWdsQ3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXILYXR0cmliX2xpc3QEAgEIRUdMX05PTkUCF2VnbENyZWF0ZVBidWZmZXJTdXJmYWNlAUsMTQZPBlEIUwoXZWdsQ3JlYXRlUGJ1ZmZlclN1cmZhY2ULYXR0cmliX2xpc3QEAgEIRUdMX05PTkUCFmVnbENyZWF0ZVBpeG1hcFN1cmZhY2UBVQxXBlkGWwhdChZlZ2xDcmVhdGVQaXhtYXBTdXJmYWNlC2F0dHJpYl9saXN0BAIBCEVHTF9OT05FAhBlZ2xDcmVhdGVTeW5jS0hSAV8MYQZjBmUIZwoQZWdsQ3JlYXRlU3luY0tIUgthdHRyaWJfbGlzdAQCAQhFR0xfTk9ORQIWZWdsQ3JlYXRlV2luZG93U3VyZmFjZQFpDGsGbQZvCHEKFmVnbENyZWF0ZVdpbmRvd1N1cmZhY2ULYXR0cmliX2xpc3QEAgEIRUdMX05PTkUCDWVnbEdldENvbmZpZ3MBcwR1BncIeQoNZWdsR2V0Q29uZmlncwdjb25maWdzBAECAg5lZ2xNYWtlQ3VycmVudAACG2VnbFN3YXBCdWZmZXJzV2l0aERhbWFnZUtIUgF7BH0GfwiAgQobZWdsU3dhcEJ1ZmZlcnNXaXRoRGFtYWdlS0hSBXJlY3RzBAEAAg9nbEFjdGl2ZVRleHR1cmUBgIMMgIUIgIcKD2dsQWN0aXZlVGV4dHVyZQR1bml0IAtHTF9URVhUVVJFMAtHTF9URVhUVVJFMQxHTF9URVhUVVJFMTAMR0xfVEVYVFVSRTExDEdMX1RFWFRVUkUxMgxHTF9URVhUVVJFMTMMR0xfVEVYVFVSRTE0DEdMX1RFWFRVUkUxNQxHTF9URVhUVVJFMTYMR0xfVEVYVFVSRTE3DEdMX1RFWFRVUkUxOAxHTF9URVhUVVJFMTkLR0xfVEVYVFVSRTIMR0xfVEVYVFVSRTIwDEdMX1RFWFRVUkUyMQxHTF9URVhUVVJFMjIMR0xfVEVYVFVSRTIzDEdMX1RFWFRVUkUyNAxHTF9URVhUVVJFMjUMR0xfVEVYVFVSRTI2DEdMX1RFWFRVUkUyNwxHTF9URVhUVVJFMjgMR0xfVEVYVFVSRTI5C0dMX1RFWFRVUkUzDEdMX1RFWFRVUkUzMAxHTF9URVhUVVJFMzELR0xfVEVYVFVSRTQLR0xfVEVYVFVSRTULR0xfVEVYVFVSRTYLR0xfVEVYVFVSRTcLR0xfVEVYVFVSRTgLR0xfVEVYVFVSRTkCDGdsQmVnaW5RdWVyeQGAiQyAiwiAjQoMZ2xCZWdpblF1ZXJ5BnRhcmdldAQVR0xfQU5ZX1NBTVBMRVNfUEFTU0VEIkdMX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkUoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1BSSU1JVElWRVNfV1JJVFRFThdHTF9QUklNSVRJVkVTX0dFTkVSQVRFRAIYZ2xCZWdpblRyYW5zZm9ybUZlZWRiYWNrAYCPDICRCICTChhnbEJlZ2luVHJhbnNmb3JtRmVlZGJhY2sNcHJpbWl0aXZlTW9kZQMIR0xfTElORVMJR0xfUE9JTlRTDEdMX1RSSUFOR0xFUwIMZ2xCaW5kQnVmZmVyAYCVDICXCICZCgxnbEJpbmRCdWZmZXIGdGFyZ2V0DQ9HTF9BUlJBWV9CVUZGRVIXR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVITR0xfQ09QWV9SRUFEX0JVRkZFUhRHTF9DT1BZX1dSSVRFX0JVRkZFUhRHTF9QSVhFTF9QQUNLX0JVRkZFUhZHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSHEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIRR0xfVU5JRk9STV9CVUZGRVIYR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSG0dMX0RJU1BBVENIX0lORElSRUNUX0JVRkZFUhdHTF9EUkFXX0lORElSRUNUX0JVRkZFUhhHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVIRR0xfVEVYVFVSRV9CVUZGRVICEGdsQmluZEJ1ZmZlckJhc2UBgJsMgJ0IgJ8KEGdsQmluZEJ1ZmZlckJhc2UGdGFyZ2V0BBxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSEUdMX1VOSUZPUk1fQlVGRkVSGEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUhhHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVICEWdsQmluZEJ1ZmZlclJhbmdlAYChDICjCIClChFnbEJpbmRCdWZmZXJSYW5nZQZ0YXJnZXQEHEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIRR0xfVU5JRk9STV9CVUZGRVIYR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSGEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUgIRZ2xCaW5kRnJhbWVidWZmZXIBgKcMgKkIgKsKEWdsQmluZEZyYW1lYnVmZmVyBnRhcmdldAMTR0xfUkVBRF9GUkFNRUJVRkZFUhNHTF9EUkFXX0ZSQU1FQlVGRkVSDkdMX0ZSQU1FQlVGRkVSAhJnbEJpbmRJbWFnZVRleHR1cmUCgK0MgK8IgLEKEmdsQmluZEltYWdlVGV4dHVyZQZhY2Nlc3MDDEdMX1JFQURfT05MWQ1HTF9SRUFEX1dSSVRFDUdMX1dSSVRFX09OTFmAswyAtQiAtwoSZ2xCaW5kSW1hZ2VUZXh0dXJlBmZvcm1hdA0HR0xfUjMyRgdHTF9SMzJJCEdMX1IzMlVJCkdMX1JHQkExNkYKR0xfUkdCQTE2SQtHTF9SR0JBMTZVSQpHTF9SR0JBMzJGCkdMX1JHQkEzMkkLR0xfUkdCQTMyVUkIR0xfUkdCQTgJR0xfUkdCQThJCkdMX1JHQkE4VUkOR0xfUkdCQThfU05PUk0CEmdsQmluZFJlbmRlcmJ1ZmZlcgGAuQyAuwiAvQoSZ2xCaW5kUmVuZGVyYnVmZmVyBnRhcmdldAEPR0xfUkVOREVSQlVGRkVSAg1nbEJpbmRTYW1wbGVyAYC/DIDBCIDDCg1nbEJpbmRTYW1wbGVyBWluZGV4AQtHTF9URVhUVVJFMAINZ2xCaW5kVGV4dHVyZQGAxQyAxwiAyQoNZ2xCaW5kVGV4dHVyZQZ0YXJnZXQJF0dMX1RFWFRVUkVfRVhURVJOQUxfT0VTDUdMX1RFWFRVUkVfMkQTR0xfVEVYVFVSRV8yRF9BUlJBWRlHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFH0dMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVkNR0xfVEVYVFVSRV8zRBFHTF9URVhUVVJFX0JVRkZFUhNHTF9URVhUVVJFX0NVQkVfTUFQGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVkCF2dsQmluZFRyYW5zZm9ybUZlZWRiYWNrAYDLDIDNCIDPChdnbEJpbmRUcmFuc2Zvcm1GZWVkYmFjawZ0YXJnZXQBFUdMX1RSQU5TRk9STV9GRUVEQkFDSwIPZ2xCbGVuZEVxdWF0aW9uAYDRDIDTCIDVCg9nbEJsZW5kRXF1YXRpb24IZXF1YXRpb24FC0dMX0ZVTkNfQUREGEdMX0ZVTkNfUkVWRVJTRV9TVUJUUkFDVBBHTF9GVU5DX1NVQlRSQUNUBkdMX01BWAZHTF9NSU4CF2dsQmxlbmRFcXVhdGlvblNlcGFyYXRlAoDXDIDZCIDbChdnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZQNyZ2IFC0dMX0ZVTkNfQUREGEdMX0ZVTkNfUkVWRVJTRV9TVUJUUkFDVBBHTF9GVU5DX1NVQlRSQUNUBkdMX01BWAZHTF9NSU6A3QyA3wiA4QoXZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUFYWxwaGEFC0dMX0ZVTkNfQUREGEdMX0ZVTkNfUkVWRVJTRV9TVUJUUkFDVBBHTF9GVU5DX1NVQlRSQUNUBkdMX01BWAZHTF9NSU4CGGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlaQKA4wyA5QiA5woYZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVpB21vZGVSR0IFC0dMX0ZVTkNfQUREGEdMX0ZVTkNfUkVWRVJTRV9TVUJUUkFDVBBHTF9GVU5DX1NVQlRSQUNUBkdMX01BWAZHTF9NSU6A6QyA6wiA7QoYZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVpCW1vZGVBbHBoYQULR0xfRlVOQ19BREQYR0xfRlVOQ19SRVZFUlNFX1NVQlRSQUNUEEdMX0ZVTkNfU1VCVFJBQ1QGR0xfTUFYBkdMX01JTgIbZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVpRVhUAoDvDIDxCIDzChtnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZWlFWFQHbW9kZVJHQgULR0xfRlVOQ19BREQYR0xfRlVOQ19SRVZFUlNFX1NVQlRSQUNUEEdMX0ZVTkNfU1VCVFJBQ1QGR0xfTUFYBkdMX01JToD1DID3CID5ChtnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZWlFWFQJbW9kZUFscGhhBQtHTF9GVU5DX0FERBhHTF9GVU5DX1JFVkVSU0VfU1VCVFJBQ1QQR0xfRlVOQ19TVUJUUkFDVAZHTF9NQVgGR0xfTUlOAhtnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZWlPRVMCgPsMgP0IgP8KG2dsQmxlbmRFcXVhdGlvblNlcGFyYXRlaU9FUwdtb2RlUkdCBQtHTF9GVU5DX0FERBhHTF9GVU5DX1JFVkVSU0VfU1VCVFJBQ1QQR0xfRlVOQ19TVUJUUkFDVAZHTF9NQVgGR0xfTUlOgQEMgQMIgQUKG2dsQmxlbmRFcXVhdGlvblNlcGFyYXRlaU9FUwltb2RlQWxwaGEFC0dMX0ZVTkNfQUREGEdMX0ZVTkNfUkVWRVJTRV9TVUJUUkFDVBBHTF9GVU5DX1NVQlRSQUNUBkdMX01BWAZHTF9NSU4CEGdsQmxlbmRFcXVhdGlvbmkBgQcMgQkIgQsKEGdsQmxlbmRFcXVhdGlvbmkEbW9kZQULR0xfRlVOQ19BREQYR0xfRlVOQ19SRVZFUlNFX1NVQlRSQUNUEEdMX0ZVTkNfU1VCVFJBQ1QGR0xfTUFYBkdMX01JTgITZ2xCbGVuZEVxdWF0aW9uaUVYVAGBDQyBDwiBEQoTZ2xCbGVuZEVxdWF0aW9uaUVYVARtb2RlBQtHTF9GVU5DX0FERBhHTF9GVU5DX1JFVkVSU0VfU1VCVFJBQ1QQR0xfRlVOQ19TVUJUUkFDVAZHTF9NQVgGR0xfTUlOAhNnbEJsZW5kRXF1YXRpb25pT0VTAYETDIEVCIEXChNnbEJsZW5kRXF1YXRpb25pT0VTBG1vZGUFC0dMX0ZVTkNfQUREGEdMX0ZVTkNfUkVWRVJTRV9TVUJUUkFDVBBHTF9GVU5DX1NVQlRSQUNUBkdMX01BWAZHTF9NSU4CC2dsQmxlbmRGdW5jAoEZDIEbCIEdCgtnbEJsZW5kRnVuYwpzcmNfZmFjdG9yDxFHTF9DT05TVEFOVF9BTFBIQRFHTF9DT05TVEFOVF9DT0xPUgxHTF9EU1RfQUxQSEEMR0xfRFNUX0NPTE9SBkdMX09ORRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEbR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SFkdMX09ORV9NSU5VU19EU1RfQUxQSEEWR0xfT05FX01JTlVTX0RTVF9DT0xPUhZHTF9PTkVfTUlOVVNfU1JDX0FMUEhBFkdMX09ORV9NSU5VU19TUkNfQ09MT1IMR0xfU1JDX0FMUEhBFUdMX1NSQ19BTFBIQV9TQVRVUkFURQxHTF9TUkNfQ09MT1IHR0xfWkVST4EfDIEhCIEjCgtnbEJsZW5kRnVuYwpkc3RfZmFjdG9yDxFHTF9DT05TVEFOVF9BTFBIQRFHTF9DT05TVEFOVF9DT0xPUgxHTF9EU1RfQUxQSEEMR0xfRFNUX0NPTE9SBkdMX09ORRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEbR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SFkdMX09ORV9NSU5VU19EU1RfQUxQSEEWR0xfT05FX01JTlVTX0RTVF9DT0xPUhZHTF9PTkVfTUlOVVNfU1JDX0FMUEhBFkdMX09ORV9NSU5VU19TUkNfQ09MT1IMR0xfU1JDX0FMUEhBFUdMX1NSQ19BTFBIQV9TQVRVUkFURQxHTF9TUkNfQ09MT1IHR0xfWkVSTwITZ2xCbGVuZEZ1bmNTZXBhcmF0ZQSBJQyBJwiBKQoTZ2xCbGVuZEZ1bmNTZXBhcmF0ZQ5zcmNfZmFjdG9yX3JnYg8RR0xfQ09OU1RBTlRfQUxQSEERR0xfQ09OU1RBTlRfQ09MT1IMR0xfRFNUX0FMUEhBDEdMX0RTVF9DT0xPUgZHTF9PTkUbR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBG0dMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUhZHTF9PTkVfTUlOVVNfRFNUX0FMUEhBFkdMX09ORV9NSU5VU19EU1RfQ09MT1IWR0xfT05FX01JTlVTX1NSQ19BTFBIQRZHTF9PTkVfTUlOVVNfU1JDX0NPTE9SDEdMX1NSQ19BTFBIQRVHTF9TUkNfQUxQSEFfU0FUVVJBVEUMR0xfU1JDX0NPTE9SB0dMX1pFUk+BKwyBLQiBLwoTZ2xCbGVuZEZ1bmNTZXBhcmF0ZQ5kc3RfZmFjdG9yX3JnYg8RR0xfQ09OU1RBTlRfQUxQSEERR0xfQ09OU1RBTlRfQ09MT1IMR0xfRFNUX0FMUEhBDEdMX0RTVF9DT0xPUgZHTF9PTkUbR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBG0dMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUhZHTF9PTkVfTUlOVVNfRFNUX0FMUEhBFkdMX09ORV9NSU5VU19EU1RfQ09MT1IWR0xfT05FX01JTlVTX1NSQ19BTFBIQRZHTF9PTkVfTUlOVVNfU1JDX0NPTE9SDEdMX1NSQ19BTFBIQRVHTF9TUkNfQUxQSEFfU0FUVVJBVEUMR0xfU1JDX0NPTE9SB0dMX1pFUk+BMQyBMwiBNQoTZ2xCbGVuZEZ1bmNTZXBhcmF0ZRBzcmNfZmFjdG9yX2FscGhhDxFHTF9DT05TVEFOVF9BTFBIQRFHTF9DT05TVEFOVF9DT0xPUgxHTF9EU1RfQUxQSEEMR0xfRFNUX0NPTE9SBkdMX09ORRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEbR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SFkdMX09ORV9NSU5VU19EU1RfQUxQSEEWR0xfT05FX01JTlVTX0RTVF9DT0xPUhZHTF9PTkVfTUlOVVNfU1JDX0FMUEhBFkdMX09ORV9NSU5VU19TUkNfQ09MT1IMR0xfU1JDX0FMUEhBFUdMX1NSQ19BTFBIQV9TQVRVUkFURQxHTF9TUkNfQ09MT1IHR0xfWkVST4E3DIE5CIE7ChNnbEJsZW5kRnVuY1NlcGFyYXRlEGRzdF9mYWN0b3JfYWxwaGEPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPAhRnbEJsZW5kRnVuY1NlcGFyYXRlaQSBPQyBPwiBQQoUZ2xCbGVuZEZ1bmNTZXBhcmF0ZWkGc3JjUkdCDxFHTF9DT05TVEFOVF9BTFBIQRFHTF9DT05TVEFOVF9DT0xPUgxHTF9EU1RfQUxQSEEMR0xfRFNUX0NPTE9SBkdMX09ORRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEbR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SFkdMX09ORV9NSU5VU19EU1RfQUxQSEEWR0xfT05FX01JTlVTX0RTVF9DT0xPUhZHTF9PTkVfTUlOVVNfU1JDX0FMUEhBFkdMX09ORV9NSU5VU19TUkNfQ09MT1IMR0xfU1JDX0FMUEhBFUdMX1NSQ19BTFBIQV9TQVRVUkFURQxHTF9TUkNfQ09MT1IHR0xfWkVST4FDDIFFCIFHChRnbEJsZW5kRnVuY1NlcGFyYXRlaQZkc3RSR0IPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPgUkMgUsIgU0KFGdsQmxlbmRGdW5jU2VwYXJhdGVpCHNyY0FscGhhDxFHTF9DT05TVEFOVF9BTFBIQRFHTF9DT05TVEFOVF9DT0xPUgxHTF9EU1RfQUxQSEEMR0xfRFNUX0NPTE9SBkdMX09ORRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEbR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SFkdMX09ORV9NSU5VU19EU1RfQUxQSEEWR0xfT05FX01JTlVTX0RTVF9DT0xPUhZHTF9PTkVfTUlOVVNfU1JDX0FMUEhBFkdMX09ORV9NSU5VU19TUkNfQ09MT1IMR0xfU1JDX0FMUEhBFUdMX1NSQ19BTFBIQV9TQVRVUkFURQxHTF9TUkNfQ09MT1IHR0xfWkVST4FPDIFRCIFTChRnbEJsZW5kRnVuY1NlcGFyYXRlaQhkc3RBbHBoYQ8RR0xfQ09OU1RBTlRfQUxQSEERR0xfQ09OU1RBTlRfQ09MT1IMR0xfRFNUX0FMUEhBDEdMX0RTVF9DT0xPUgZHTF9PTkUbR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBG0dMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUhZHTF9PTkVfTUlOVVNfRFNUX0FMUEhBFkdMX09ORV9NSU5VU19EU1RfQ09MT1IWR0xfT05FX01JTlVTX1NSQ19BTFBIQRZHTF9PTkVfTUlOVVNfU1JDX0NPTE9SDEdMX1NSQ19BTFBIQRVHTF9TUkNfQUxQSEFfU0FUVVJBVEUMR0xfU1JDX0NPTE9SB0dMX1pFUk8CF2dsQmxlbmRGdW5jU2VwYXJhdGVpRVhUBIFVDIFXCIFZChdnbEJsZW5kRnVuY1NlcGFyYXRlaUVYVAZzcmNSR0IPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPgVsMgV0IgV8KF2dsQmxlbmRGdW5jU2VwYXJhdGVpRVhUBmRzdFJHQg8RR0xfQ09OU1RBTlRfQUxQSEERR0xfQ09OU1RBTlRfQ09MT1IMR0xfRFNUX0FMUEhBDEdMX0RTVF9DT0xPUgZHTF9PTkUbR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBG0dMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUhZHTF9PTkVfTUlOVVNfRFNUX0FMUEhBFkdMX09ORV9NSU5VU19EU1RfQ09MT1IWR0xfT05FX01JTlVTX1NSQ19BTFBIQRZHTF9PTkVfTUlOVVNfU1JDX0NPTE9SDEdMX1NSQ19BTFBIQRVHTF9TUkNfQUxQSEFfU0FUVVJBVEUMR0xfU1JDX0NPTE9SB0dMX1pFUk+BYQyBYwiBZQoXZ2xCbGVuZEZ1bmNTZXBhcmF0ZWlFWFQIc3JjQWxwaGEPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPgWcMgWkIgWsKF2dsQmxlbmRGdW5jU2VwYXJhdGVpRVhUCGRzdEFscGhhDxFHTF9DT05TVEFOVF9BTFBIQRFHTF9DT05TVEFOVF9DT0xPUgxHTF9EU1RfQUxQSEEMR0xfRFNUX0NPTE9SBkdMX09ORRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEbR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SFkdMX09ORV9NSU5VU19EU1RfQUxQSEEWR0xfT05FX01JTlVTX0RTVF9DT0xPUhZHTF9PTkVfTUlOVVNfU1JDX0FMUEhBFkdMX09ORV9NSU5VU19TUkNfQ09MT1IMR0xfU1JDX0FMUEhBFUdMX1NSQ19BTFBIQV9TQVRVUkFURQxHTF9TUkNfQ09MT1IHR0xfWkVSTwIXZ2xCbGVuZEZ1bmNTZXBhcmF0ZWlPRVMEgW0MgW8IgXEKF2dsQmxlbmRGdW5jU2VwYXJhdGVpT0VTBnNyY1JHQg8RR0xfQ09OU1RBTlRfQUxQSEERR0xfQ09OU1RBTlRfQ09MT1IMR0xfRFNUX0FMUEhBDEdMX0RTVF9DT0xPUgZHTF9PTkUbR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBG0dMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUhZHTF9PTkVfTUlOVVNfRFNUX0FMUEhBFkdMX09ORV9NSU5VU19EU1RfQ09MT1IWR0xfT05FX01JTlVTX1NSQ19BTFBIQRZHTF9PTkVfTUlOVVNfU1JDX0NPTE9SDEdMX1NSQ19BTFBIQRVHTF9TUkNfQUxQSEFfU0FUVVJBVEUMR0xfU1JDX0NPTE9SB0dMX1pFUk+BcwyBdQiBdwoXZ2xCbGVuZEZ1bmNTZXBhcmF0ZWlPRVMGZHN0UkdCDxFHTF9DT05TVEFOVF9BTFBIQRFHTF9DT05TVEFOVF9DT0xPUgxHTF9EU1RfQUxQSEEMR0xfRFNUX0NPTE9SBkdMX09ORRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEbR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SFkdMX09ORV9NSU5VU19EU1RfQUxQSEEWR0xfT05FX01JTlVTX0RTVF9DT0xPUhZHTF9PTkVfTUlOVVNfU1JDX0FMUEhBFkdMX09ORV9NSU5VU19TUkNfQ09MT1IMR0xfU1JDX0FMUEhBFUdMX1NSQ19BTFBIQV9TQVRVUkFURQxHTF9TUkNfQ09MT1IHR0xfWkVST4F5DIF7CIF9ChdnbEJsZW5kRnVuY1NlcGFyYXRlaU9FUwhzcmNBbHBoYQ8RR0xfQ09OU1RBTlRfQUxQSEERR0xfQ09OU1RBTlRfQ09MT1IMR0xfRFNUX0FMUEhBDEdMX0RTVF9DT0xPUgZHTF9PTkUbR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBG0dMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUhZHTF9PTkVfTUlOVVNfRFNUX0FMUEhBFkdMX09ORV9NSU5VU19EU1RfQ09MT1IWR0xfT05FX01JTlVTX1NSQ19BTFBIQRZHTF9PTkVfTUlOVVNfU1JDX0NPTE9SDEdMX1NSQ19BTFBIQRVHTF9TUkNfQUxQSEFfU0FUVVJBVEUMR0xfU1JDX0NPTE9SB0dMX1pFUk+BfwyBgQiBgwoXZ2xCbGVuZEZ1bmNTZXBhcmF0ZWlPRVMIZHN0QWxwaGEPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPAgxnbEJsZW5kRnVuY2kCgYUMgYcIgYkKDGdsQmxlbmRGdW5jaQNzcmMPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPgYsMgY0IgY8KDGdsQmxlbmRGdW5jaQNkc3QPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPAg9nbEJsZW5kRnVuY2lFWFQCgZEMgZMIgZUKD2dsQmxlbmRGdW5jaUVYVANzcmMPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPgZcMgZkIgZsKD2dsQmxlbmRGdW5jaUVYVANkc3QPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPAg9nbEJsZW5kRnVuY2lPRVMCgZ0MgZ8IgaEKD2dsQmxlbmRGdW5jaU9FUwNzcmMPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPgaMMgaUIgacKD2dsQmxlbmRGdW5jaU9FUwNkc3QPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPAhFnbEJsaXRGcmFtZWJ1ZmZlcgKBqQyBqwiBrQoRZ2xCbGl0RnJhbWVidWZmZXIEbWFzawMTR0xfQ09MT1JfQlVGRkVSX0JJVBNHTF9ERVBUSF9CVUZGRVJfQklUFUdMX1NURU5DSUxfQlVGRkVSX0JJVIGvDIGxCIGzChFnbEJsaXRGcmFtZWJ1ZmZlcgZmaWx0ZXICCUdMX0xJTkVBUgpHTF9ORUFSRVNUAhNnbEJsaXRGcmFtZWJ1ZmZlck5WAoG1DIG3CIG5ChNnbEJsaXRGcmFtZWJ1ZmZlck5WBG1hc2sDE0dMX0NPTE9SX0JVRkZFUl9CSVQTR0xfREVQVEhfQlVGRkVSX0JJVBVHTF9TVEVOQ0lMX0JVRkZFUl9CSVSBuwyBvQiBvwoTZ2xCbGl0RnJhbWVidWZmZXJOVgZmaWx0ZXICCUdMX0xJTkVBUgpHTF9ORUFSRVNUAgxnbEJ1ZmZlckRhdGECgcEMgcMIgcUKDGdsQnVmZmVyRGF0YQZ0YXJnZXQND0dMX0FSUkFZX0JVRkZFUhdHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUhNHTF9DT1BZX1JFQURfQlVGRkVSFEdMX0NPUFlfV1JJVEVfQlVGRkVSFEdMX1BJWEVMX1BBQ0tfQlVGRkVSFkdMX1BJWEVMX1VOUEFDS19CVUZGRVIcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUhFHTF9VTklGT1JNX0JVRkZFUhhHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVIbR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSF0dMX0RSQVdfSU5ESVJFQ1RfQlVGRkVSGEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUhFHTF9URVhUVVJFX0JVRkZFUoHHDIHJCIHLCgxnbEJ1ZmZlckRhdGEFdXNhZ2UJD0dMX0RZTkFNSUNfRFJBVw5HTF9TVEFUSUNfRFJBVw5HTF9TVFJFQU1fRFJBVw9HTF9EWU5BTUlDX0NPUFkPR0xfRFlOQU1JQ19SRUFEDkdMX1NUQVRJQ19DT1BZDkdMX1NUQVRJQ19SRUFEDkdMX1NUUkVBTV9DT1BZDkdMX1NUUkVBTV9SRUFEAg9nbEJ1ZmZlclN1YkRhdGECgc0Mgc8IgdEKD2dsQnVmZmVyU3ViRGF0YQZ0YXJnZXQND0dMX0FSUkFZX0JVRkZFUhdHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUhNHTF9DT1BZX1JFQURfQlVGRkVSFEdMX0NPUFlfV1JJVEVfQlVGRkVSFEdMX1BJWEVMX1BBQ0tfQlVGRkVSFkdMX1BJWEVMX1VOUEFDS19CVUZGRVIcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUhFHTF9VTklGT1JNX0JVRkZFUhhHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVIbR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSF0dMX0RSQVdfSU5ESVJFQ1RfQlVGRkVSGEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUhFHTF9URVhUVVJFX0JVRkZFUoHTBIHVBoHXCIHZCg9nbEJ1ZmZlclN1YkRhdGEEZGF0YQQCAgACGGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cwGB2wyB3QiB3woYZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzBnRhcmdldAMOR0xfRlJBTUVCVUZGRVITR0xfRFJBV19GUkFNRUJVRkZFUhNHTF9SRUFEX0ZSQU1FQlVGRkVSAgdnbENsZWFyAYHhDIHjCIHlCgdnbENsZWFyBG1hc2sDE0dMX0NPTE9SX0JVRkZFUl9CSVQTR0xfREVQVEhfQlVGRkVSX0JJVBVHTF9TVEVOQ0lMX0JVRkZFUl9CSVQCD2dsQ2xlYXJCdWZmZXJmaQGB5wyB6QiB6woPZ2xDbGVhckJ1ZmZlcmZpBmJ1ZmZlcgEQR0xfREVQVEhfU1RFTkNJTAIPZ2xDbGVhckJ1ZmZlcmZ2AoHtDIHvCIHxCg9nbENsZWFyQnVmZmVyZnYGYnVmZmVyAghHTF9DT0xPUghHTF9ERVBUSIHzBIH1BoH3CIH5Cg9nbENsZWFyQnVmZmVyZnYFdmFsdWUEAQACD2dsQ2xlYXJCdWZmZXJpdgKB+wyB/QiB/woPZ2xDbGVhckJ1ZmZlcml2BmJ1ZmZlcgIIR0xfQ09MT1IKR0xfU1RFTkNJTIIBBIIDBoIFCIIHCg9nbENsZWFyQnVmZmVyaXYFdmFsdWUEAQACEGdsQ2xlYXJCdWZmZXJ1aXYCggkMggsIgg0KEGdsQ2xlYXJCdWZmZXJ1aXYGYnVmZmVyAQhHTF9DT0xPUoIPBIIRBoITCIIVChBnbENsZWFyQnVmZmVydWl2BXZhbHVlBAEAAhBnbENsaWVudFdhaXRTeW5jAYIXDIIZCIIbChBnbENsaWVudFdhaXRTeW5jCXN5bmNGbGFncwEaR0xfU1lOQ19GTFVTSF9DT01NQU5EU19CSVQCFWdsQ2xpZW50V2FpdFN5bmNBUFBMRQGCHQyCHwiCIQoVZ2xDbGllbnRXYWl0U3luY0FQUExFBGZsYWcBGkdMX1NZTkNfRkxVU0hfQ09NTUFORFNfQklUAhZnbENvbXByZXNzZWRUZXhJbWFnZTJEA4IjDIIlCIInChZnbENvbXByZXNzZWRUZXhJbWFnZTJEBnRhcmdldAcNR0xfVEVYVFVSRV8yRB5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1geR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWh5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1geR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWoIpDIIrCIItChZnbENvbXByZXNzZWRUZXhJbWFnZTJEBmZvcm1hdC4VR0xfQ09NUFJFU1NFRF9SMTFfRUFDFkdMX0NPTVBSRVNTRURfUkcxMV9FQUMXR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIrR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMhxHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDHEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMdR0xfQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUMjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMYR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyLEdMX0NPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyDkdMX0FUQ19SR0JfQU1EHkdMX0FUQ19SR0JBX0VYUExJQ0lUX0FMUEhBX0FNRCJHTF9BVENfUkdCQV9JTlRFUlBPTEFURURfQUxQSEFfQU1EEEdMX0VUQzFfUkdCOF9PRVMdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTAcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NRxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDgdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTAdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTIbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4OCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwJEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NSRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDYkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4JUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTAlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OB9HTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUgi8EgjEGgjMIgjUKFmdsQ29tcHJlc3NlZFRleEltYWdlMkQEZGF0YQQBAAIWZ2xDb21wcmVzc2VkVGV4SW1hZ2UzRAOCNwyCOQiCOwoWZ2xDb21wcmVzc2VkVGV4SW1hZ2UzRAZ0YXJnZXQDE0dMX1RFWFRVUkVfMkRfQVJSQVkNR0xfVEVYVFVSRV8zRBlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZgj0Mgj8IgkEKFmdsQ29tcHJlc3NlZFRleEltYWdlM0QOaW50ZXJuYWxmb3JtYXQqFUdMX0NPTVBSRVNTRURfUjExX0VBQxZHTF9DT01QUkVTU0VEX1JHMTFfRUFDF0dMX0NPTVBSRVNTRURfUkdCOF9FVEMyK0dMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIcR0xfQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQxxHTF9DT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDHUdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDGEdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMixHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMh1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMBxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDYcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg4JUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTAkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NiRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDglR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4H0dMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFSCQwSCRQaCRwiCSQoWZ2xDb21wcmVzc2VkVGV4SW1hZ2UzRARkYXRhBAEAAhlnbENvbXByZXNzZWRUZXhJbWFnZTNET0VTA4JLDIJNCIJPChlnbENvbXByZXNzZWRUZXhJbWFnZTNET0VTBnRhcmdldAMTR0xfVEVYVFVSRV8yRF9BUlJBWQ1HTF9URVhUVVJFXzNEGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVmCUQyCUwiCVQoZZ2xDb21wcmVzc2VkVGV4SW1hZ2UzRE9FUw5pbnRlcm5hbGZvcm1hdCoVR0xfQ09NUFJFU1NFRF9SMTFfRUFDFkdMX0NPTVBSRVNTRURfUkcxMV9FQUMXR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIrR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMhxHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDHEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMdR0xfQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUMjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMYR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyLEdMX0NPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwHEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDUcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NhxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4HUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyG0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzR4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDglR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMCRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDUkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTIjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDgfR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVIJXBIJZBoJbCIJdChlnbENvbXByZXNzZWRUZXhJbWFnZTNET0VTBGRhdGEEAQACGWdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQDgl8MgmEIgmMKGWdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQGdGFyZ2V0Bw1HTF9URVhUVVJFXzJEHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWB5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1keR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWB5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1keR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9agmUMgmcIgmkKGWdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQGZm9ybWF0KxVHTF9DT01QUkVTU0VEX1IxMV9FQUMWR0xfQ09NUFJFU1NFRF9SRzExX0VBQxdHTF9DT01QUkVTU0VEX1JHQjhfRVRDMitHTF9DT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyHEdMX0NPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMcR0xfQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQx1HTF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQyNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQxhHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzIsR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTAcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NRxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDgdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTAdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTIbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4OCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwJEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NSRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDYkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4JUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTAlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OBBHTF9FVEMxX1JHQjhfT0VTH0dMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFSCawSCbQaCbwiCcQoZZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRARkYXRhBAEAAhlnbENvbXByZXNzZWRUZXhTdWJJbWFnZTNEA4JzDIJ1CIJ3ChlnbENvbXByZXNzZWRUZXhTdWJJbWFnZTNEBnRhcmdldAMTR0xfVEVYVFVSRV8yRF9BUlJBWQ1HTF9URVhUVVJFXzNEGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVmCeQyCewiCfQoZZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRAZmb3JtYXQqFUdMX0NPTVBSRVNTRURfUjExX0VBQxZHTF9DT01QUkVTU0VEX1JHMTFfRUFDF0dMX0NPTVBSRVNTRURfUkdCOF9FVEMyK0dMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIcR0xfQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQxxHTF9DT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDHUdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDGEdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMixHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMh1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMBxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDYcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg4JUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTAkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NiRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDglR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4H0dMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFSCfwSCgQaCgwiChQoZZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRARkYXRhBAEAAhxnbENvbXByZXNzZWRUZXhTdWJJbWFnZTNET0VTA4KHDIKJCIKLChxnbENvbXByZXNzZWRUZXhTdWJJbWFnZTNET0VTBnRhcmdldAMTR0xfVEVYVFVSRV8yRF9BUlJBWQ1HTF9URVhUVVJFXzNEGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVmCjQyCjwiCkQocZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRE9FUwZmb3JtYXQqFUdMX0NPTVBSRVNTRURfUjExX0VBQxZHTF9DT01QUkVTU0VEX1JHMTFfRUFDF0dMX0NPTVBSRVNTRURfUkdCOF9FVEMyK0dMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIcR0xfQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQxxHTF9DT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDHUdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDGEdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMixHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMh1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMBxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDYcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg4JUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTAkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NiRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDglR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4H0dMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFSCkwSClQaClwiCmQocZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRE9FUwRkYXRhBAEAAhNnbENvcHlCdWZmZXJTdWJEYXRhAoKbDIKdCIKfChNnbENvcHlCdWZmZXJTdWJEYXRhCnJlYWRUYXJnZXQND0dMX0FSUkFZX0JVRkZFUhdHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUhNHTF9DT1BZX1JFQURfQlVGRkVSFEdMX0NPUFlfV1JJVEVfQlVGRkVSFEdMX1BJWEVMX1BBQ0tfQlVGRkVSFkdMX1BJWEVMX1VOUEFDS19CVUZGRVIcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUhFHTF9VTklGT1JNX0JVRkZFUhhHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVIbR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSF0dMX0RSQVdfSU5ESVJFQ1RfQlVGRkVSGEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUhFHTF9URVhUVVJFX0JVRkZFUoKhDIKjCIKlChNnbENvcHlCdWZmZXJTdWJEYXRhC3dyaXRlVGFyZ2V0DQ9HTF9BUlJBWV9CVUZGRVIXR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVITR0xfQ09QWV9SRUFEX0JVRkZFUhRHTF9DT1BZX1dSSVRFX0JVRkZFUhRHTF9QSVhFTF9QQUNLX0JVRkZFUhZHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSHEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIRR0xfVU5JRk9STV9CVUZGRVIYR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSG0dMX0RJU1BBVENIX0lORElSRUNUX0JVRkZFUhdHTF9EUkFXX0lORElSRUNUX0JVRkZFUhhHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVIRR0xfVEVYVFVSRV9CVUZGRVICFWdsQ29weUJ1ZmZlclN1YkRhdGFOVgKCpwyCqQiCqwoVZ2xDb3B5QnVmZmVyU3ViRGF0YU5WCnJlYWRUYXJnZXQND0dMX0FSUkFZX0JVRkZFUhdHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUhNHTF9DT1BZX1JFQURfQlVGRkVSFEdMX0NPUFlfV1JJVEVfQlVGRkVSFEdMX1BJWEVMX1BBQ0tfQlVGRkVSFkdMX1BJWEVMX1VOUEFDS19CVUZGRVIcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUhFHTF9VTklGT1JNX0JVRkZFUhhHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVIbR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSF0dMX0RSQVdfSU5ESVJFQ1RfQlVGRkVSGEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUhFHTF9URVhUVVJFX0JVRkZFUoKtDIKvCIKxChVnbENvcHlCdWZmZXJTdWJEYXRhTlYLd3JpdGVUYXJnZXQND0dMX0FSUkFZX0JVRkZFUhdHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUhNHTF9DT1BZX1JFQURfQlVGRkVSFEdMX0NPUFlfV1JJVEVfQlVGRkVSFEdMX1BJWEVMX1BBQ0tfQlVGRkVSFkdMX1BJWEVMX1VOUEFDS19CVUZGRVIcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUhFHTF9VTklGT1JNX0JVRkZFUhhHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVIbR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSF0dMX0RSQVdfSU5ESVJFQ1RfQlVGRkVSGEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUhFHTF9URVhUVVJFX0JVRkZFUgISZ2xDb3B5SW1hZ2VTdWJEYXRhAoKzDIK1CIK3ChJnbENvcHlJbWFnZVN1YkRhdGEJc3JjVGFyZ2V0CA9HTF9SRU5ERVJCVUZGRVINR0xfVEVYVFVSRV8yRBNHTF9URVhUVVJFXzJEX0FSUkFZGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWQ1HTF9URVhUVVJFXzNEE0dMX1RFWFRVUkVfQ1VCRV9NQVAZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWYK5DIK7CIK9ChJnbENvcHlJbWFnZVN1YkRhdGEJZHN0VGFyZ2V0CA9HTF9SRU5ERVJCVUZGRVINR0xfVEVYVFVSRV8yRBNHTF9URVhUVVJFXzJEX0FSUkFZGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWQ1HTF9URVhUVVJFXzNEE0dMX1RFWFRVUkVfQ1VCRV9NQVAZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWQIVZ2xDb3B5SW1hZ2VTdWJEYXRhRVhUAoK/DILBCILDChVnbENvcHlJbWFnZVN1YkRhdGFFWFQJc3JjVGFyZ2V0CA9HTF9SRU5ERVJCVUZGRVINR0xfVEVYVFVSRV8yRBNHTF9URVhUVVJFXzJEX0FSUkFZGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWQ1HTF9URVhUVVJFXzNEE0dMX1RFWFRVUkVfQ1VCRV9NQVAZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWYLFDILHCILJChVnbENvcHlJbWFnZVN1YkRhdGFFWFQJZHN0VGFyZ2V0CA9HTF9SRU5ERVJCVUZGRVINR0xfVEVYVFVSRV8yRBNHTF9URVhUVVJFXzJEX0FSUkFZGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWQ1HTF9URVhUVVJFXzNEE0dMX1RFWFRVUkVfQ1VCRV9NQVAZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWQIVZ2xDb3B5SW1hZ2VTdWJEYXRhT0VTAoLLDILNCILPChVnbENvcHlJbWFnZVN1YkRhdGFPRVMJc3JjVGFyZ2V0CA9HTF9SRU5ERVJCVUZGRVINR0xfVEVYVFVSRV8yRBNHTF9URVhUVVJFXzJEX0FSUkFZGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWQ1HTF9URVhUVVJFXzNEE0dMX1RFWFRVUkVfQ1VCRV9NQVAZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWYLRDILTCILVChVnbENvcHlJbWFnZVN1YkRhdGFPRVMJZHN0VGFyZ2V0CA9HTF9SRU5ERVJCVUZGRVINR0xfVEVYVFVSRV8yRBNHTF9URVhUVVJFXzJEX0FSUkFZGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWQ1HTF9URVhUVVJFXzNEE0dMX1RFWFRVUkVfQ1VCRV9NQVAZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWQIQZ2xDb3B5VGV4SW1hZ2UyRAKC1wyC2QiC2woQZ2xDb3B5VGV4SW1hZ2UyRAZ0YXJnZXQHDUdMX1RFWFRVUkVfMkQeR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWR5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1oeR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWR5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1qC3QyC3wiC4QoQZ2xDb3B5VGV4SW1hZ2UyRA5pbnRlcm5hbGZvcm1hdCIIR0xfQUxQSEEMR0xfTFVNSU5BTkNFEkdMX0xVTUlOQU5DRV9BTFBIQQZHTF9SR0IHR0xfUkdCQQdHTF9SMTZJCEdMX1IxNlVJB0dMX1IzMkkIR0xfUjMyVUkFR0xfUjgGR0xfUjhJB0dMX1I4VUkIR0xfUkcxNkkJR0xfUkcxNlVJCEdMX1JHMzJJCUdMX1JHMzJVSQZHTF9SRzgHR0xfUkc4SQhHTF9SRzhVSQtHTF9SR0IxMF9BMg1HTF9SR0IxMF9BMlVJCUdMX1JHQjU2NQpHTF9SR0I1X0ExB0dMX1JHQjgKR0xfUkdCQTE2SQtHTF9SR0JBMTZVSQpHTF9SR0JBMzJJC0dMX1JHQkEzMlVJCEdMX1JHQkE0CEdMX1JHQkE4CUdMX1JHQkE4SQpHTF9SR0JBOFVJCEdMX1NSR0I4D0dMX1NSR0I4X0FMUEhBOAITZ2xDb3B5VGV4U3ViSW1hZ2UyRAGC4wyC5QiC5woTZ2xDb3B5VGV4U3ViSW1hZ2UyRAZ0YXJnZXQPDUdMX1RFWFRVUkVfMkQeR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWR5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1oeR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWR5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1oXR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMTR0xfVEVYVFVSRV8yRF9BUlJBWRlHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFH0dMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVkNR0xfVEVYVFVSRV8zRBFHTF9URVhUVVJFX0JVRkZFUhNHTF9URVhUVVJFX0NVQkVfTUFQGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVkCE2dsQ29weVRleFN1YkltYWdlM0QBgukMgusIgu0KE2dsQ29weVRleFN1YkltYWdlM0QGdGFyZ2V0DxNHTF9URVhUVVJFXzJEX0FSUkFZDUdMX1RFWFRVUkVfM0QZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWQ1HTF9URVhUVVJFXzJEHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWB5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1keR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWB5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1keR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aF0dMX1RFWFRVUkVfRVhURVJOQUxfT0VTGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWRFHTF9URVhUVVJFX0JVRkZFUhNHTF9URVhUVVJFX0NVQkVfTUFQAhZnbENvcHlUZXhTdWJJbWFnZTNET0VTAYLvDILxCILzChZnbENvcHlUZXhTdWJJbWFnZTNET0VTBnRhcmdldA8TR0xfVEVYVFVSRV8yRF9BUlJBWQ1HTF9URVhUVVJFXzNEGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVkNR0xfVEVYVFVSRV8yRB5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1geR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWh5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1geR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWhdHTF9URVhUVVJFX0VYVEVSTkFMX09FUxlHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFH0dMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVkRR0xfVEVYVFVSRV9CVUZGRVITR0xfVEVYVFVSRV9DVUJFX01BUAIOZ2xDcmVhdGVTaGFkZXIBgvUMgvcIgvkKDmdsQ3JlYXRlU2hhZGVyBHR5cGUGEkdMX0ZSQUdNRU5UX1NIQURFUhBHTF9WRVJURVhfU0hBREVSEUdMX0NPTVBVVEVfU0hBREVSEkdMX0dFT01FVFJZX1NIQURFUhZHTF9URVNTX0NPTlRST0xfU0hBREVSGUdMX1RFU1NfRVZBTFVBVElPTl9TSEFERVICFmdsQ3JlYXRlU2hhZGVyUHJvZ3JhbXYBgvsMgv0Igv8KFmdsQ3JlYXRlU2hhZGVyUHJvZ3JhbXYEdHlwZQYRR0xfQ09NUFVURV9TSEFERVISR0xfRlJBR01FTlRfU0hBREVSEEdMX1ZFUlRFWF9TSEFERVISR0xfR0VPTUVUUllfU0hBREVSFkdMX1RFU1NfQ09OVFJPTF9TSEFERVIZR0xfVEVTU19FVkFMVUFUSU9OX1NIQURFUgIKZ2xDdWxsRmFjZQGDAQyDAwiDBQoKZ2xDdWxsRmFjZQRtb2RlAwdHTF9CQUNLCEdMX0ZST05UEUdMX0ZST05UX0FORF9CQUNLAhVnbERlYnVnTWVzc2FnZUNvbnRyb2wEgwcMgwkIgwsKFWdsRGVidWdNZXNzYWdlQ29udHJvbAZzb3VyY2UHE0dMX0RFQlVHX1NPVVJDRV9BUEkbR0xfREVCVUdfU09VUkNFX0FQUExJQ0FUSU9OFUdMX0RFQlVHX1NPVVJDRV9PVEhFUh9HTF9ERUJVR19TT1VSQ0VfU0hBREVSX0NPTVBJTEVSG0dMX0RFQlVHX1NPVVJDRV9USElSRF9QQVJUWR1HTF9ERUJVR19TT1VSQ0VfV0lORE9XX1NZU1RFTQxHTF9ET05UX0NBUkWDDQyDDwiDEQoVZ2xEZWJ1Z01lc3NhZ2VDb250cm9sBHR5cGUKIUdMX0RFQlVHX1RZUEVfREVQUkVDQVRFRF9CRUhBVklPUhNHTF9ERUJVR19UWVBFX0VSUk9SFEdMX0RFQlVHX1RZUEVfTUFSS0VSE0dMX0RFQlVHX1RZUEVfT1RIRVIZR0xfREVCVUdfVFlQRV9QRVJGT1JNQU5DRRdHTF9ERUJVR19UWVBFX1BPUF9HUk9VUBlHTF9ERUJVR19UWVBFX1BPUlRBQklMSVRZGEdMX0RFQlVHX1RZUEVfUFVTSF9HUk9VUCBHTF9ERUJVR19UWVBFX1VOREVGSU5FRF9CRUhBVklPUgxHTF9ET05UX0NBUkWDEwyDFQiDFwoVZ2xEZWJ1Z01lc3NhZ2VDb250cm9sCHNldmVyaXR5BRZHTF9ERUJVR19TRVZFUklUWV9ISUdIFUdMX0RFQlVHX1NFVkVSSVRZX0xPVxhHTF9ERUJVR19TRVZFUklUWV9NRURJVU0eR0xfREVCVUdfU0VWRVJJVFlfTk9USUZJQ0FUSU9ODEdMX0RPTlRfQ0FSRYMZBIMbBoMdCIMfChVnbERlYnVnTWVzc2FnZUNvbnRyb2wDaWRzBAEAAhhnbERlYnVnTWVzc2FnZUNvbnRyb2xLSFIEgyEMgyMIgyUKGGdsRGVidWdNZXNzYWdlQ29udHJvbEtIUgZzb3VyY2UHE0dMX0RFQlVHX1NPVVJDRV9BUEkbR0xfREVCVUdfU09VUkNFX0FQUExJQ0FUSU9OFUdMX0RFQlVHX1NPVVJDRV9PVEhFUh9HTF9ERUJVR19TT1VSQ0VfU0hBREVSX0NPTVBJTEVSG0dMX0RFQlVHX1NPVVJDRV9USElSRF9QQVJUWR1HTF9ERUJVR19TT1VSQ0VfV0lORE9XX1NZU1RFTQxHTF9ET05UX0NBUkWDJwyDKQiDKwoYZ2xEZWJ1Z01lc3NhZ2VDb250cm9sS0hSBHR5cGUKIUdMX0RFQlVHX1RZUEVfREVQUkVDQVRFRF9CRUhBVklPUhNHTF9ERUJVR19UWVBFX0VSUk9SFEdMX0RFQlVHX1RZUEVfTUFSS0VSE0dMX0RFQlVHX1RZUEVfT1RIRVIZR0xfREVCVUdfVFlQRV9QRVJGT1JNQU5DRRdHTF9ERUJVR19UWVBFX1BPUF9HUk9VUBlHTF9ERUJVR19UWVBFX1BPUlRBQklMSVRZGEdMX0RFQlVHX1RZUEVfUFVTSF9HUk9VUCBHTF9ERUJVR19UWVBFX1VOREVGSU5FRF9CRUhBVklPUgxHTF9ET05UX0NBUkWDLQyDLwiDMQoYZ2xEZWJ1Z01lc3NhZ2VDb250cm9sS0hSCHNldmVyaXR5BRZHTF9ERUJVR19TRVZFUklUWV9ISUdIFUdMX0RFQlVHX1NFVkVSSVRZX0xPVxhHTF9ERUJVR19TRVZFUklUWV9NRURJVU0eR0xfREVCVUdfU0VWRVJJVFlfTk9USUZJQ0FUSU9ODEdMX0RPTlRfQ0FSRYMzBIM1BoM3CIM5ChhnbERlYnVnTWVzc2FnZUNvbnRyb2xLSFIDaWRzBAEAAhRnbERlYnVnTWVzc2FnZUluc2VydASDOwyDPQiDPwoUZ2xEZWJ1Z01lc3NhZ2VJbnNlcnQGc291cmNlAhtHTF9ERUJVR19TT1VSQ0VfQVBQTElDQVRJT04bR0xfREVCVUdfU09VUkNFX1RISVJEX1BBUlRZg0EMg0MIg0UKFGdsRGVidWdNZXNzYWdlSW5zZXJ0BHR5cGUJIUdMX0RFQlVHX1RZUEVfREVQUkVDQVRFRF9CRUhBVklPUhNHTF9ERUJVR19UWVBFX0VSUk9SFEdMX0RFQlVHX1RZUEVfTUFSS0VSE0dMX0RFQlVHX1RZUEVfT1RIRVIZR0xfREVCVUdfVFlQRV9QRVJGT1JNQU5DRRdHTF9ERUJVR19UWVBFX1BPUF9HUk9VUBlHTF9ERUJVR19UWVBFX1BPUlRBQklMSVRZGEdMX0RFQlVHX1RZUEVfUFVTSF9HUk9VUCBHTF9ERUJVR19UWVBFX1VOREVGSU5FRF9CRUhBVklPUoNHDINJCINLChRnbERlYnVnTWVzc2FnZUluc2VydAhzZXZlcml0eQQWR0xfREVCVUdfU0VWRVJJVFlfSElHSBVHTF9ERUJVR19TRVZFUklUWV9MT1cYR0xfREVCVUdfU0VWRVJJVFlfTUVESVVNHkdMX0RFQlVHX1NFVkVSSVRZX05PVElGSUNBVElPToNNBINPBoNRCINTChRnbERlYnVnTWVzc2FnZUluc2VydAdtZXNzYWdlBAEAAhdnbERlYnVnTWVzc2FnZUluc2VydEtIUgSDVQyDVwiDWQoXZ2xEZWJ1Z01lc3NhZ2VJbnNlcnRLSFIGc291cmNlAhtHTF9ERUJVR19TT1VSQ0VfQVBQTElDQVRJT04bR0xfREVCVUdfU09VUkNFX1RISVJEX1BBUlRZg1sMg10Ig18KF2dsRGVidWdNZXNzYWdlSW5zZXJ0S0hSBHR5cGUJIUdMX0RFQlVHX1RZUEVfREVQUkVDQVRFRF9CRUhBVklPUhNHTF9ERUJVR19UWVBFX0VSUk9SFEdMX0RFQlVHX1RZUEVfTUFSS0VSE0dMX0RFQlVHX1RZUEVfT1RIRVIZR0xfREVCVUdfVFlQRV9QRVJGT1JNQU5DRRdHTF9ERUJVR19UWVBFX1BPUF9HUk9VUBlHTF9ERUJVR19UWVBFX1BPUlRBQklMSVRZGEdMX0RFQlVHX1RZUEVfUFVTSF9HUk9VUCBHTF9ERUJVR19UWVBFX1VOREVGSU5FRF9CRUhBVklPUoNhDINjCINlChdnbERlYnVnTWVzc2FnZUluc2VydEtIUghzZXZlcml0eQQWR0xfREVCVUdfU0VWRVJJVFlfSElHSBVHTF9ERUJVR19TRVZFUklUWV9MT1cYR0xfREVCVUdfU0VWRVJJVFlfTUVESVVNHkdMX0RFQlVHX1NFVkVSSVRZX05PVElGSUNBVElPToNnBINpBoNrCINtChdnbERlYnVnTWVzc2FnZUluc2VydEtIUgdtZXNzYWdlBAEAAhRnbERlbGV0ZUZyYW1lYnVmZmVycwACGGdsRGVsZXRlUHJvZ3JhbVBpcGVsaW5lcwGDbwSDcQaDcwiDdQoYZ2xEZWxldGVQcm9ncmFtUGlwZWxpbmVzCXBpcGVsaW5lcwQBAAILZ2xEZXB0aEZ1bmMBg3cMg3kIg3sKC2dsRGVwdGhGdW5jCGZ1bmN0aW9uCAlHTF9BTFdBWVMIR0xfRVFVQUwJR0xfR0VRVUFMCkdMX0dSRUFURVIJR0xfTEVRVUFMB0dMX0xFU1MIR0xfTkVWRVILR0xfTk9URVFVQUwCCWdsRGlzYWJsZQGDfQyDfwiDgQoJZ2xEaXNhYmxlCmNhcGFiaWxpdHkQCEdMX0JMRU5EDEdMX0NVTExfRkFDRQ1HTF9ERVBUSF9URVNUCUdMX0RJVEhFUhZHTF9QT0xZR09OX09GRlNFVF9GSUxMG0dMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRRJHTF9TQU1QTEVfQ09WRVJBR0UPR0xfU0NJU1NPUl9URVNUD0dMX1NURU5DSUxfVEVTVCBHTF9QUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWBVHTF9SQVNURVJJWkVSX0RJU0NBUkQOR0xfU0FNUExFX01BU0sPR0xfREVCVUdfT1VUUFVUG0dMX0RFQlVHX09VVFBVVF9TWU5DSFJPTk9VUxJHTF9BTFBIQV9URVNUX1FDT00XR0xfRlJBTUVCVUZGRVJfU1JHQl9FWFQCGmdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5AAIKZ2xEaXNhYmxlaQGDgwyDhQiDhwoKZ2xEaXNhYmxlaQpjYXBhYmlsaXR5EAhHTF9CTEVORAxHTF9DVUxMX0ZBQ0UNR0xfREVQVEhfVEVTVAlHTF9ESVRIRVIWR0xfUE9MWUdPTl9PRkZTRVRfRklMTBtHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0USR0xfU0FNUExFX0NPVkVSQUdFD0dMX1NDSVNTT1JfVEVTVA9HTF9TVEVOQ0lMX1RFU1QgR0xfUFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgVR0xfUkFTVEVSSVpFUl9ESVNDQVJEDkdMX1NBTVBMRV9NQVNLD0dMX0RFQlVHX09VVFBVVBtHTF9ERUJVR19PVVRQVVRfU1lOQ0hST05PVVMSR0xfQUxQSEFfVEVTVF9RQ09NF0dMX0ZSQU1FQlVGRkVSX1NSR0JfRVhUAg1nbERpc2FibGVpRVhUAYOJDIOLCIONCg1nbERpc2FibGVpRVhUBnRhcmdldBAIR0xfQkxFTkQMR0xfQ1VMTF9GQUNFDUdMX0RFUFRIX1RFU1QJR0xfRElUSEVSFkdMX1BPTFlHT05fT0ZGU0VUX0ZJTEwbR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFEkdMX1NBTVBMRV9DT1ZFUkFHRQ9HTF9TQ0lTU09SX1RFU1QPR0xfU1RFTkNJTF9URVNUIEdMX1BSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYFUdMX1JBU1RFUklaRVJfRElTQ0FSRA5HTF9TQU1QTEVfTUFTSw9HTF9ERUJVR19PVVRQVVQbR0xfREVCVUdfT1VUUFVUX1NZTkNIUk9OT1VTEkdMX0FMUEhBX1RFU1RfUUNPTRdHTF9GUkFNRUJVRkZFUl9TUkdCX0VYVAIMZ2xEaXNhYmxlaU5WAYOPDIORCIOTCgxnbERpc2FibGVpTlYGdGFyZ2V0EAhHTF9CTEVORAxHTF9DVUxMX0ZBQ0UNR0xfREVQVEhfVEVTVAlHTF9ESVRIRVIWR0xfUE9MWUdPTl9PRkZTRVRfRklMTBtHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0USR0xfU0FNUExFX0NPVkVSQUdFD0dMX1NDSVNTT1JfVEVTVA9HTF9TVEVOQ0lMX1RFU1QgR0xfUFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgVR0xfUkFTVEVSSVpFUl9ESVNDQVJEDkdMX1NBTVBMRV9NQVNLD0dMX0RFQlVHX09VVFBVVBtHTF9ERUJVR19PVVRQVVRfU1lOQ0hST05PVVMSR0xfQUxQSEFfVEVTVF9RQ09NF0dMX0ZSQU1FQlVGRkVSX1NSR0JfRVhUAg1nbERpc2FibGVpT0VTAYOVDIOXCIOZCg1nbERpc2FibGVpT0VTBnRhcmdldBAIR0xfQkxFTkQMR0xfQ1VMTF9GQUNFDUdMX0RFUFRIX1RFU1QJR0xfRElUSEVSFkdMX1BPTFlHT05fT0ZGU0VUX0ZJTEwbR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFEkdMX1NBTVBMRV9DT1ZFUkFHRQ9HTF9TQ0lTU09SX1RFU1QPR0xfU1RFTkNJTF9URVNUIEdMX1BSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYFUdMX1JBU1RFUklaRVJfRElTQ0FSRA5HTF9TQU1QTEVfTUFTSw9HTF9ERUJVR19PVVRQVVQbR0xfREVCVUdfT1VUUFVUX1NZTkNIUk9OT1VTEkdMX0FMUEhBX1RFU1RfUUNPTRdHTF9GUkFNRUJVRkZFUl9TUkdCX0VYVAIXZ2xEaXNjYXJkRnJhbWVidWZmZXJFWFQCg5sMg50Ig58KF2dsRGlzY2FyZEZyYW1lYnVmZmVyRVhUBnRhcmdldAMOR0xfRlJBTUVCVUZGRVITR0xfRFJBV19GUkFNRUJVRkZFUhNHTF9SRUFEX0ZSQU1FQlVGRkVSg6EMg6MGg6UGg6cIg6kKF2dsRGlzY2FyZEZyYW1lYnVmZmVyRVhUC2F0dGFjaG1lbnRzBAIWCEdMX0NPTE9SCEdMX0RFUFRICkdMX1NURU5DSUwUR0xfQ09MT1JfQVRUQUNITUVOVDAUR0xfQ09MT1JfQVRUQUNITUVOVDEVR0xfQ09MT1JfQVRUQUNITUVOVDEwFUdMX0NPTE9SX0FUVEFDSE1FTlQxMRVHTF9DT0xPUl9BVFRBQ0hNRU5UMTIVR0xfQ09MT1JfQVRUQUNITUVOVDEzFUdMX0NPTE9SX0FUVEFDSE1FTlQxNBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTUUR0xfQ09MT1JfQVRUQUNITUVOVDIUR0xfQ09MT1JfQVRUQUNITUVOVDMUR0xfQ09MT1JfQVRUQUNITUVOVDQUR0xfQ09MT1JfQVRUQUNITUVOVDUUR0xfQ09MT1JfQVRUQUNITUVOVDYUR0xfQ09MT1JfQVRUQUNITUVOVDcUR0xfQ09MT1JfQVRUQUNITUVOVDgUR0xfQ09MT1JfQVRUQUNITUVOVDkTR0xfREVQVEhfQVRUQUNITUVOVBtHTF9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQVR0xfU1RFTkNJTF9BVFRBQ0hNRU5UAgxnbERyYXdBcnJheXMBg6sMg60Ig68KDGdsRHJhd0FycmF5cwlkcmF3X21vZGUMCEdMX0xJTkVTDEdMX0xJTkVfTE9PUA1HTF9MSU5FX1NUUklQCUdMX1BPSU5UUwxHTF9UUklBTkdMRVMPR0xfVFJJQU5HTEVfRkFOEUdMX1RSSUFOR0xFX1NUUklQEkdMX0xJTkVTX0FESkFDRU5DWRdHTF9MSU5FX1NUUklQX0FESkFDRU5DWQpHTF9QQVRDSEVTFkdMX1RSSUFOR0xFU19BREpBQ0VOQ1kbR0xfVFJJQU5HTEVfU1RSSVBfQURKQUNFTkNZAhRnbERyYXdBcnJheXNJbmRpcmVjdAGDsQyDswiDtQoUZ2xEcmF3QXJyYXlzSW5kaXJlY3QJZHJhd19tb2RlDAhHTF9MSU5FUwxHTF9MSU5FX0xPT1ANR0xfTElORV9TVFJJUAlHTF9QT0lOVFMMR0xfVFJJQU5HTEVTD0dMX1RSSUFOR0xFX0ZBThFHTF9UUklBTkdMRV9TVFJJUBJHTF9MSU5FU19BREpBQ0VOQ1kXR0xfTElORV9TVFJJUF9BREpBQ0VOQ1kKR0xfUEFUQ0hFUxZHTF9UUklBTkdMRVNfQURKQUNFTkNZG0dMX1RSSUFOR0xFX1NUUklQX0FESkFDRU5DWQIVZ2xEcmF3QXJyYXlzSW5zdGFuY2VkAYO3DIO5CIO7ChVnbERyYXdBcnJheXNJbnN0YW5jZWQJZHJhd19tb2RlDAhHTF9MSU5FUwxHTF9MSU5FX0xPT1ANR0xfTElORV9TVFJJUAlHTF9QT0lOVFMMR0xfVFJJQU5HTEVTD0dMX1RSSUFOR0xFX0ZBThFHTF9UUklBTkdMRV9TVFJJUBJHTF9MSU5FU19BREpBQ0VOQ1kXR0xfTElORV9TVFJJUF9BREpBQ0VOQ1kKR0xfUEFUQ0hFUxZHTF9UUklBTkdMRVNfQURKQUNFTkNZG0dMX1RSSUFOR0xFX1NUUklQX0FESkFDRU5DWQIaZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUBg70Mg78Ig8EKGmdsRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFBG1vZGUMCEdMX0xJTkVTDEdMX0xJTkVfTE9PUA1HTF9MSU5FX1NUUklQCUdMX1BPSU5UUwxHTF9UUklBTkdMRVMPR0xfVFJJQU5HTEVfRkFOEUdMX1RSSUFOR0xFX1NUUklQEkdMX0xJTkVTX0FESkFDRU5DWRdHTF9MSU5FX1NUUklQX0FESkFDRU5DWQpHTF9QQVRDSEVTFkdMX1RSSUFOR0xFU19BREpBQ0VOQ1kbR0xfVFJJQU5HTEVfU1RSSVBfQURKQUNFTkNZAhhnbERyYXdBcnJheXNJbnN0YW5jZWRFWFQBg8MMg8UIg8cKGGdsRHJhd0FycmF5c0luc3RhbmNlZEVYVARtb2RlDAhHTF9MSU5FUwxHTF9MSU5FX0xPT1ANR0xfTElORV9TVFJJUAlHTF9QT0lOVFMMR0xfVFJJQU5HTEVTD0dMX1RSSUFOR0xFX0ZBThFHTF9UUklBTkdMRV9TVFJJUBJHTF9MSU5FU19BREpBQ0VOQ1kXR0xfTElORV9TVFJJUF9BREpBQ0VOQ1kKR0xfUEFUQ0hFUxZHTF9UUklBTkdMRVNfQURKQUNFTkNZG0dMX1RSSUFOR0xFX1NUUklQX0FESkFDRU5DWQIXZ2xEcmF3QXJyYXlzSW5zdGFuY2VkTlYBg8kMg8sIg80KF2dsRHJhd0FycmF5c0luc3RhbmNlZE5WBG1vZGUMCEdMX0xJTkVTDEdMX0xJTkVfTE9PUA1HTF9MSU5FX1NUUklQCUdMX1BPSU5UUwxHTF9UUklBTkdMRVMPR0xfVFJJQU5HTEVfRkFOEUdMX1RSSUFOR0xFX1NUUklQEkdMX0xJTkVTX0FESkFDRU5DWRdHTF9MSU5FX1NUUklQX0FESkFDRU5DWQpHTF9QQVRDSEVTFkdMX1RSSUFOR0xFU19BREpBQ0VOQ1kbR0xfVFJJQU5HTEVfU1RSSVBfQURKQUNFTkNZAg1nbERyYXdCdWZmZXJzAYPPDIPRBoPTBoPVCIPXCg1nbERyYXdCdWZmZXJzBGJ1ZnMEAgEHR0xfTk9ORQIQZ2xEcmF3QnVmZmVyc0VYVAGD2QyD2waD3QaD3wiD4QoQZ2xEcmF3QnVmZmVyc0VYVARidWZzBAIBB0dMX05PTkUCD2dsRHJhd0J1ZmZlcnNOVgGD4wyD5QaD5waD6QiD6woPZ2xEcmF3QnVmZmVyc05WBGJ1ZnMEAgEHR0xfTk9ORQIOZ2xEcmF3RWxlbWVudHMDg+0Mg+8Ig/EKDmdsRHJhd0VsZW1lbnRzCWRyYXdfbW9kZQwIR0xfTElORVMMR0xfTElORV9MT09QDUdMX0xJTkVfU1RSSVAJR0xfUE9JTlRTDEdMX1RSSUFOR0xFUw9HTF9UUklBTkdMRV9GQU4RR0xfVFJJQU5HTEVfU1RSSVASR0xfTElORVNfQURKQUNFTkNZF0dMX0xJTkVfU1RSSVBfQURKQUNFTkNZCkdMX1BBVENIRVMWR0xfVFJJQU5HTEVTX0FESkFDRU5DWRtHTF9UUklBTkdMRV9TVFJJUF9BREpBQ0VOQ1mD8wyD9QiD9woOZ2xEcmF3RWxlbWVudHMMaW5kaWNlc190eXBlAxBHTF9VTlNJR05FRF9CWVRFEUdMX1VOU0lHTkVEX1NIT1JUD0dMX1VOU0lHTkVEX0lOVIP5BIP7BoP9CIP/Cg5nbERyYXdFbGVtZW50cwdpbmRpY2VzBAEAAhhnbERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXgDhAEMhAMIhAUKGGdsRHJhd0VsZW1lbnRzQmFzZVZlcnRleAlkcmF3X21vZGUMCEdMX0xJTkVTDEdMX0xJTkVfTE9PUA1HTF9MSU5FX1NUUklQCUdMX1BPSU5UUwxHTF9UUklBTkdMRVMPR0xfVFJJQU5HTEVfRkFOEUdMX1RSSUFOR0xFX1NUUklQEkdMX0xJTkVTX0FESkFDRU5DWRdHTF9MSU5FX1NUUklQX0FESkFDRU5DWQpHTF9QQVRDSEVTFkdMX1RSSUFOR0xFU19BREpBQ0VOQ1kbR0xfVFJJQU5HTEVfU1RSSVBfQURKQUNFTkNZhAcMhAkIhAsKGGdsRHJhd0VsZW1lbnRzQmFzZVZlcnRleAxpbmRpY2VzX3R5cGUDEEdMX1VOU0lHTkVEX0JZVEURR0xfVU5TSUdORURfU0hPUlQPR0xfVU5TSUdORURfSU5UhA0EhA8GhBEIhBMKGGdsRHJhd0VsZW1lbnRzQmFzZVZlcnRleAdpbmRpY2VzBAEAAhtnbERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhFWFQDhBUMhBcIhBkKG2dsRHJhd0VsZW1lbnRzQmFzZVZlcnRleEVYVARtb2RlDAhHTF9MSU5FUwxHTF9MSU5FX0xPT1ANR0xfTElORV9TVFJJUAlHTF9QT0lOVFMMR0xfVFJJQU5HTEVTD0dMX1RSSUFOR0xFX0ZBThFHTF9UUklBTkdMRV9TVFJJUBJHTF9MSU5FU19BREpBQ0VOQ1kXR0xfTElORV9TVFJJUF9BREpBQ0VOQ1kKR0xfUEFUQ0hFUxZHTF9UUklBTkdMRVNfQURKQUNFTkNZG0dMX1RSSUFOR0xFX1NUUklQX0FESkFDRU5DWYQbDIQdCIQfChtnbERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhFWFQEdHlwZQMQR0xfVU5TSUdORURfQllURRFHTF9VTlNJR05FRF9TSE9SVA9HTF9VTlNJR05FRF9JTlSEIQSEIwaEJQiEJwobZ2xEcmF3RWxlbWVudHNCYXNlVmVydGV4RVhUB2luZGljZXMEAQACG2dsRHJhd0VsZW1lbnRzQmFzZVZlcnRleE9FUwOEKQyEKwiELQobZ2xEcmF3RWxlbWVudHNCYXNlVmVydGV4T0VTBG1vZGUMCEdMX0xJTkVTDEdMX0xJTkVfTE9PUA1HTF9MSU5FX1NUUklQCUdMX1BPSU5UUwxHTF9UUklBTkdMRVMPR0xfVFJJQU5HTEVfRkFOEUdMX1RSSUFOR0xFX1NUUklQEkdMX0xJTkVTX0FESkFDRU5DWRdHTF9MSU5FX1NUUklQX0FESkFDRU5DWQpHTF9QQVRDSEVTFkdMX1RSSUFOR0xFU19BREpBQ0VOQ1kbR0xfVFJJQU5HTEVfU1RSSVBfQURKQUNFTkNZhC8MhDEIhDMKG2dsRHJhd0VsZW1lbnRzQmFzZVZlcnRleE9FUwR0eXBlAxBHTF9VTlNJR05FRF9CWVRFEUdMX1VOU0lHTkVEX1NIT1JUD0dMX1VOU0lHTkVEX0lOVIQ1BIQ3BoQ5CIQ7ChtnbERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhPRVMHaW5kaWNlcwQBAAIWZ2xEcmF3RWxlbWVudHNJbmRpcmVjdAKEPQyEPwiEQQoWZ2xEcmF3RWxlbWVudHNJbmRpcmVjdAlkcmF3X21vZGUMCEdMX0xJTkVTDEdMX0xJTkVfTE9PUA1HTF9MSU5FX1NUUklQCUdMX1BPSU5UUwxHTF9UUklBTkdMRVMPR0xfVFJJQU5HTEVfRkFOEUdMX1RSSUFOR0xFX1NUUklQEkdMX0xJTkVTX0FESkFDRU5DWRdHTF9MSU5FX1NUUklQX0FESkFDRU5DWQpHTF9QQVRDSEVTFkdMX1RSSUFOR0xFU19BREpBQ0VOQ1kbR0xfVFJJQU5HTEVfU1RSSVBfQURKQUNFTkNZhEMMhEUIhEcKFmdsRHJhd0VsZW1lbnRzSW5kaXJlY3QMaW5kaWNlc190eXBlAxBHTF9VTlNJR05FRF9CWVRFEUdMX1VOU0lHTkVEX1NIT1JUD0dMX1VOU0lHTkVEX0lOVAIXZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWQDhEkMhEsIhE0KF2dsRHJhd0VsZW1lbnRzSW5zdGFuY2VkCWRyYXdfbW9kZQwIR0xfTElORVMMR0xfTElORV9MT09QDUdMX0xJTkVfU1RSSVAJR0xfUE9JTlRTDEdMX1RSSUFOR0xFUw9HTF9UUklBTkdMRV9GQU4RR0xfVFJJQU5HTEVfU1RSSVASR0xfTElORVNfQURKQUNFTkNZF0dMX0xJTkVfU1RSSVBfQURKQUNFTkNZCkdMX1BBVENIRVMWR0xfVFJJQU5HTEVTX0FESkFDRU5DWRtHTF9UUklBTkdMRV9TVFJJUF9BREpBQ0VOQ1mETwyEUQiEUwoXZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWQMaW5kaWNlc190eXBlAxBHTF9VTlNJR05FRF9CWVRFEUdMX1VOU0lHTkVEX1NIT1JUD0dMX1VOU0lHTkVEX0lOVIRVBIRXBoRZCIRbChdnbERyYXdFbGVtZW50c0luc3RhbmNlZAdpbmRpY2VzBAEAAhxnbERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFA4RdDIRfCIRhChxnbERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFBG1vZGUMCEdMX0xJTkVTDEdMX0xJTkVfTE9PUA1HTF9MSU5FX1NUUklQCUdMX1BPSU5UUwxHTF9UUklBTkdMRVMPR0xfVFJJQU5HTEVfRkFOEUdMX1RSSUFOR0xFX1NUUklQEkdMX0xJTkVTX0FESkFDRU5DWRdHTF9MSU5FX1NUUklQX0FESkFDRU5DWQpHTF9QQVRDSEVTFkdMX1RSSUFOR0xFU19BREpBQ0VOQ1kbR0xfVFJJQU5HTEVfU1RSSVBfQURKQUNFTkNZhGMMhGUIhGcKHGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUEdHlwZQMQR0xfVU5TSUdORURfQllURRFHTF9VTlNJR05FRF9TSE9SVA9HTF9VTlNJR05FRF9JTlSEaQSEawaEbQiEbwocZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRQdpbmRpY2VzBAEAAiFnbERyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXgDhHEMhHMIhHUKIWdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleAlkcmF3X21vZGUMCEdMX0xJTkVTDEdMX0xJTkVfTE9PUA1HTF9MSU5FX1NUUklQCUdMX1BPSU5UUwxHTF9UUklBTkdMRVMPR0xfVFJJQU5HTEVfRkFOEUdMX1RSSUFOR0xFX1NUUklQEkdMX0xJTkVTX0FESkFDRU5DWRdHTF9MSU5FX1NUUklQX0FESkFDRU5DWQpHTF9QQVRDSEVTFkdMX1RSSUFOR0xFU19BREpBQ0VOQ1kbR0xfVFJJQU5HTEVfU1RSSVBfQURKQUNFTkNZhHcMhHkIhHsKIWdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleAxpbmRpY2VzX3R5cGUDEEdMX1VOU0lHTkVEX0JZVEURR0xfVU5TSUdORURfU0hPUlQPR0xfVU5TSUdORURfSU5UhH0EhH8GhIEIhIMKIWdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleAdpbmRpY2VzBAEAAiRnbERyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhFWFQDhIUMhIcIhIkKJGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleEVYVARtb2RlDAhHTF9MSU5FUwxHTF9MSU5FX0xPT1ANR0xfTElORV9TVFJJUAlHTF9QT0lOVFMMR0xfVFJJQU5HTEVTD0dMX1RSSUFOR0xFX0ZBThFHTF9UUklBTkdMRV9TVFJJUBJHTF9MSU5FU19BREpBQ0VOQ1kXR0xfTElORV9TVFJJUF9BREpBQ0VOQ1kKR0xfUEFUQ0hFUxZHTF9UUklBTkdMRVNfQURKQUNFTkNZG0dMX1RSSUFOR0xFX1NUUklQX0FESkFDRU5DWYSLDISNCISPCiRnbERyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhFWFQEdHlwZQMQR0xfVU5TSUdORURfQllURRFHTF9VTlNJR05FRF9TSE9SVA9HTF9VTlNJR05FRF9JTlSEkQSEkwaElQiElwokZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4RVhUB2luZGljZXMEAQACJGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleE9FUwOEmQyEmwiEnQokZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4T0VTBG1vZGUMCEdMX0xJTkVTDEdMX0xJTkVfTE9PUA1HTF9MSU5FX1NUUklQCUdMX1BPSU5UUwxHTF9UUklBTkdMRVMPR0xfVFJJQU5HTEVfRkFOEUdMX1RSSUFOR0xFX1NUUklQEkdMX0xJTkVTX0FESkFDRU5DWRdHTF9MSU5FX1NUUklQX0FESkFDRU5DWQpHTF9QQVRDSEVTFkdMX1RSSUFOR0xFU19BREpBQ0VOQ1kbR0xfVFJJQU5HTEVfU1RSSVBfQURKQUNFTkNZhJ8MhKEIhKMKJGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleE9FUwR0eXBlAxBHTF9VTlNJR05FRF9CWVRFEUdMX1VOU0lHTkVEX1NIT1JUD0dMX1VOU0lHTkVEX0lOVISlBISnBoSpCISrCiRnbERyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhPRVMHaW5kaWNlcwQBAAIaZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRFWFQDhK0MhK8IhLEKGmdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkRVhUBG1vZGUMCEdMX0xJTkVTDEdMX0xJTkVfTE9PUA1HTF9MSU5FX1NUUklQCUdMX1BPSU5UUwxHTF9UUklBTkdMRVMPR0xfVFJJQU5HTEVfRkFOEUdMX1RSSUFOR0xFX1NUUklQEkdMX0xJTkVTX0FESkFDRU5DWRdHTF9MSU5FX1NUUklQX0FESkFDRU5DWQpHTF9QQVRDSEVTFkdMX1RSSUFOR0xFU19BREpBQ0VOQ1kbR0xfVFJJQU5HTEVfU1RSSVBfQURKQUNFTkNZhLMMhLUIhLcKGmdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkRVhUBHR5cGUDEEdMX1VOU0lHTkVEX0JZVEURR0xfVU5TSUdORURfU0hPUlQPR0xfVU5TSUdORURfSU5UhLkEhLsGhL0IhL8KGmdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkRVhUB2luZGljZXMEAQACGWdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkTlYDhMEMhMMIhMUKGWdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkTlYEbW9kZQwIR0xfTElORVMMR0xfTElORV9MT09QDUdMX0xJTkVfU1RSSVAJR0xfUE9JTlRTDEdMX1RSSUFOR0xFUw9HTF9UUklBTkdMRV9GQU4RR0xfVFJJQU5HTEVfU1RSSVASR0xfTElORVNfQURKQUNFTkNZF0dMX0xJTkVfU1RSSVBfQURKQUNFTkNZCkdMX1BBVENIRVMWR0xfVFJJQU5HTEVTX0FESkFDRU5DWRtHTF9UUklBTkdMRV9TVFJJUF9BREpBQ0VOQ1mExwyEyQiEywoZZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWROVgR0eXBlAxBHTF9VTlNJR05FRF9CWVRFEUdMX1VOU0lHTkVEX1NIT1JUD0dMX1VOU0lHTkVEX0lOVITNBITPBoTRCITTChlnbERyYXdFbGVtZW50c0luc3RhbmNlZE5WB2luZGljZXMEAQACE2dsRHJhd1JhbmdlRWxlbWVudHMDhNUMhNcIhNkKE2dsRHJhd1JhbmdlRWxlbWVudHMJZHJhd19tb2RlDAhHTF9MSU5FUwxHTF9MSU5FX0xPT1ANR0xfTElORV9TVFJJUAlHTF9QT0lOVFMMR0xfVFJJQU5HTEVTD0dMX1RSSUFOR0xFX0ZBThFHTF9UUklBTkdMRV9TVFJJUBJHTF9MSU5FU19BREpBQ0VOQ1kXR0xfTElORV9TVFJJUF9BREpBQ0VOQ1kKR0xfUEFUQ0hFUxZHTF9UUklBTkdMRVNfQURKQUNFTkNZG0dMX1RSSUFOR0xFX1NUUklQX0FESkFDRU5DWYTbDITdCITfChNnbERyYXdSYW5nZUVsZW1lbnRzDGluZGljZXNfdHlwZQMQR0xfVU5TSUdORURfQllURRFHTF9VTlNJR05FRF9TSE9SVA9HTF9VTlNJR05FRF9JTlSE4QSE4waE5QiE5woTZ2xEcmF3UmFuZ2VFbGVtZW50cwdpbmRpY2VzBAEAAh1nbERyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleAOE6QyE6wiE7QodZ2xEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXgJZHJhd19tb2RlDAhHTF9MSU5FUwxHTF9MSU5FX0xPT1ANR0xfTElORV9TVFJJUAlHTF9QT0lOVFMMR0xfVFJJQU5HTEVTD0dMX1RSSUFOR0xFX0ZBThFHTF9UUklBTkdMRV9TVFJJUBJHTF9MSU5FU19BREpBQ0VOQ1kXR0xfTElORV9TVFJJUF9BREpBQ0VOQ1kKR0xfUEFUQ0hFUxZHTF9UUklBTkdMRVNfQURKQUNFTkNZG0dMX1RSSUFOR0xFX1NUUklQX0FESkFDRU5DWYTvDITxCITzCh1nbERyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleAxpbmRpY2VzX3R5cGUDEEdMX1VOU0lHTkVEX0JZVEURR0xfVU5TSUdORURfU0hPUlQPR0xfVU5TSUdORURfSU5UhPUEhPcGhPkIhPsKHWdsRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4B2luZGljZXMEAQACIGdsRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4RVhUA4T9DIT/CIUBCiBnbERyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleEVYVARtb2RlDAhHTF9MSU5FUwxHTF9MSU5FX0xPT1ANR0xfTElORV9TVFJJUAlHTF9QT0lOVFMMR0xfVFJJQU5HTEVTD0dMX1RSSUFOR0xFX0ZBThFHTF9UUklBTkdMRV9TVFJJUBJHTF9MSU5FU19BREpBQ0VOQ1kXR0xfTElORV9TVFJJUF9BREpBQ0VOQ1kKR0xfUEFUQ0hFUxZHTF9UUklBTkdMRVNfQURKQUNFTkNZG0dMX1RSSUFOR0xFX1NUUklQX0FESkFDRU5DWYUDDIUFCIUHCiBnbERyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleEVYVAR0eXBlAxBHTF9VTlNJR05FRF9CWVRFEUdMX1VOU0lHTkVEX1NIT1JUD0dMX1VOU0lHTkVEX0lOVIUJBIULBoUNCIUPCiBnbERyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleEVYVAdpbmRpY2VzBAEAAiBnbERyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleE9FUwOFEQyFEwiFFQogZ2xEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXhPRVMEbW9kZQwIR0xfTElORVMMR0xfTElORV9MT09QDUdMX0xJTkVfU1RSSVAJR0xfUE9JTlRTDEdMX1RSSUFOR0xFUw9HTF9UUklBTkdMRV9GQU4RR0xfVFJJQU5HTEVfU1RSSVASR0xfTElORVNfQURKQUNFTkNZF0dMX0xJTkVfU1RSSVBfQURKQUNFTkNZCkdMX1BBVENIRVMWR0xfVFJJQU5HTEVTX0FESkFDRU5DWRtHTF9UUklBTkdMRV9TVFJJUF9BREpBQ0VOQ1mFFwyFGQiFGwogZ2xEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXhPRVMEdHlwZQMQR0xfVU5TSUdORURfQllURRFHTF9VTlNJR05FRF9TSE9SVA9HTF9VTlNJR05FRF9JTlSFHQSFHwaFIQiFIwogZ2xEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXhPRVMHaW5kaWNlcwQBAAIcZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUwGFJQyFJwiFKQocZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUwZ0YXJnZXQJDUdMX1RFWFRVUkVfMkQXR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMTR0xfVEVYVFVSRV8yRF9BUlJBWRlHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFH0dMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVkNR0xfVEVYVFVSRV8zRBFHTF9URVhUVVJFX0JVRkZFUhNHTF9URVhUVVJFX0NVQkVfTUFQGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVkCCGdsRW5hYmxlAYUrDIUtCIUvCghnbEVuYWJsZQpjYXBhYmlsaXR5EAhHTF9CTEVORAxHTF9DVUxMX0ZBQ0UNR0xfREVQVEhfVEVTVAlHTF9ESVRIRVIWR0xfUE9MWUdPTl9PRkZTRVRfRklMTBtHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0USR0xfU0FNUExFX0NPVkVSQUdFD0dMX1NDSVNTT1JfVEVTVA9HTF9TVEVOQ0lMX1RFU1QgR0xfUFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgVR0xfUkFTVEVSSVpFUl9ESVNDQVJEDkdMX1NBTVBMRV9NQVNLD0dMX0RFQlVHX09VVFBVVBtHTF9ERUJVR19PVVRQVVRfU1lOQ0hST05PVVMSR0xfQUxQSEFfVEVTVF9RQ09NF0dMX0ZSQU1FQlVGRkVSX1NSR0JfRVhUAhlnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5AAIJZ2xFbmFibGVpAYUxDIUzCIU1CglnbEVuYWJsZWkKY2FwYWJpbGl0eRAIR0xfQkxFTkQMR0xfQ1VMTF9GQUNFDUdMX0RFUFRIX1RFU1QJR0xfRElUSEVSFkdMX1BPTFlHT05fT0ZGU0VUX0ZJTEwbR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFEkdMX1NBTVBMRV9DT1ZFUkFHRQ9HTF9TQ0lTU09SX1RFU1QPR0xfU1RFTkNJTF9URVNUIEdMX1BSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYFUdMX1JBU1RFUklaRVJfRElTQ0FSRA5HTF9TQU1QTEVfTUFTSw9HTF9ERUJVR19PVVRQVVQbR0xfREVCVUdfT1VUUFVUX1NZTkNIUk9OT1VTEkdMX0FMUEhBX1RFU1RfUUNPTRdHTF9GUkFNRUJVRkZFUl9TUkdCX0VYVAIMZ2xFbmFibGVpRVhUAYU3DIU5CIU7CgxnbEVuYWJsZWlFWFQGdGFyZ2V0EAhHTF9CTEVORAxHTF9DVUxMX0ZBQ0UNR0xfREVQVEhfVEVTVAlHTF9ESVRIRVIWR0xfUE9MWUdPTl9PRkZTRVRfRklMTBtHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0USR0xfU0FNUExFX0NPVkVSQUdFD0dMX1NDSVNTT1JfVEVTVA9HTF9TVEVOQ0lMX1RFU1QgR0xfUFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgVR0xfUkFTVEVSSVpFUl9ESVNDQVJEDkdMX1NBTVBMRV9NQVNLD0dMX0RFQlVHX09VVFBVVBtHTF9ERUJVR19PVVRQVVRfU1lOQ0hST05PVVMSR0xfQUxQSEFfVEVTVF9RQ09NF0dMX0ZSQU1FQlVGRkVSX1NSR0JfRVhUAgtnbEVuYWJsZWlOVgGFPQyFPwiFQQoLZ2xFbmFibGVpTlYGdGFyZ2V0EAhHTF9CTEVORAxHTF9DVUxMX0ZBQ0UNR0xfREVQVEhfVEVTVAlHTF9ESVRIRVIWR0xfUE9MWUdPTl9PRkZTRVRfRklMTBtHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0USR0xfU0FNUExFX0NPVkVSQUdFD0dMX1NDSVNTT1JfVEVTVA9HTF9TVEVOQ0lMX1RFU1QgR0xfUFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgVR0xfUkFTVEVSSVpFUl9ESVNDQVJEDkdMX1NBTVBMRV9NQVNLD0dMX0RFQlVHX09VVFBVVBtHTF9ERUJVR19PVVRQVVRfU1lOQ0hST05PVVMSR0xfQUxQSEFfVEVTVF9RQ09NF0dMX0ZSQU1FQlVGRkVSX1NSR0JfRVhUAgxnbEVuYWJsZWlPRVMBhUMMhUUIhUcKDGdsRW5hYmxlaU9FUwZ0YXJnZXQQCEdMX0JMRU5EDEdMX0NVTExfRkFDRQ1HTF9ERVBUSF9URVNUCUdMX0RJVEhFUhZHTF9QT0xZR09OX09GRlNFVF9GSUxMG0dMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRRJHTF9TQU1QTEVfQ09WRVJBR0UPR0xfU0NJU1NPUl9URVNUD0dMX1NURU5DSUxfVEVTVCBHTF9QUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWBVHTF9SQVNURVJJWkVSX0RJU0NBUkQOR0xfU0FNUExFX01BU0sPR0xfREVCVUdfT1VUUFVUG0dMX0RFQlVHX09VVFBVVF9TWU5DSFJPTk9VUxJHTF9BTFBIQV9URVNUX1FDT00XR0xfRlJBTUVCVUZGRVJfU1JHQl9FWFQCCmdsRW5kUXVlcnkBhUkMhUsIhU0KCmdsRW5kUXVlcnkGdGFyZ2V0BBVHTF9BTllfU0FNUExFU19QQVNTRUQiR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRShHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfUFJJTUlUSVZFU19XUklUVEVOF0dMX1BSSU1JVElWRVNfR0VORVJBVEVEAgtnbEZlbmNlU3luYwGFTwyFUQiFUwoLZ2xGZW5jZVN5bmMJY29uZGl0aW9uAR1HTF9TWU5DX0dQVV9DT01NQU5EU19DT01QTEVURQIQZ2xGZW5jZVN5bmNBUFBMRQGFVQyFVwiFWQoQZ2xGZW5jZVN5bmNBUFBMRQljb25kaXRpb24BHUdMX1NZTkNfR1BVX0NPTU1BTkRTX0NPTVBMRVRFAhhnbEZsdXNoTWFwcGVkQnVmZmVyUmFuZ2UBhVsMhV0IhV8KGGdsRmx1c2hNYXBwZWRCdWZmZXJSYW5nZQZ0YXJnZXQND0dMX0FSUkFZX0JVRkZFUhdHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUhNHTF9DT1BZX1JFQURfQlVGRkVSFEdMX0NPUFlfV1JJVEVfQlVGRkVSFEdMX1BJWEVMX1BBQ0tfQlVGRkVSFkdMX1BJWEVMX1VOUEFDS19CVUZGRVIcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUhFHTF9VTklGT1JNX0JVRkZFUhhHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVIbR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSF0dMX0RSQVdfSU5ESVJFQ1RfQlVGRkVSGEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUhFHTF9URVhUVVJFX0JVRkZFUgIbZ2xGbHVzaE1hcHBlZEJ1ZmZlclJhbmdlRVhUAYVhDIVjCIVlChtnbEZsdXNoTWFwcGVkQnVmZmVyUmFuZ2VFWFQGdGFyZ2V0DQ9HTF9BUlJBWV9CVUZGRVIXR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVITR0xfQ09QWV9SRUFEX0JVRkZFUhRHTF9DT1BZX1dSSVRFX0JVRkZFUhRHTF9QSVhFTF9QQUNLX0JVRkZFUhZHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSHEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIRR0xfVU5JRk9STV9CVUZGRVIYR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSG0dMX0RJU1BBVENIX0lORElSRUNUX0JVRkZFUhdHTF9EUkFXX0lORElSRUNUX0JVRkZFUhhHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVIRR0xfVEVYVFVSRV9CVUZGRVICF2dsRnJhbWVidWZmZXJQYXJhbWV0ZXJpAoVnDIVpCIVrChdnbEZyYW1lYnVmZmVyUGFyYW1ldGVyaQZ0YXJnZXQDDkdMX0ZSQU1FQlVGRkVSE0dMX0RSQVdfRlJBTUVCVUZGRVITR0xfUkVBRF9GUkFNRUJVRkZFUoVtDIVvCIVxChdnbEZyYW1lYnVmZmVyUGFyYW1ldGVyaQVwbmFtZQUtR0xfRlJBTUVCVUZGRVJfREVGQVVMVF9GSVhFRF9TQU1QTEVfTE9DQVRJT05THUdMX0ZSQU1FQlVGRkVSX0RFRkFVTFRfSEVJR0hUHkdMX0ZSQU1FQlVGRkVSX0RFRkFVTFRfU0FNUExFUxxHTF9GUkFNRUJVRkZFUl9ERUZBVUxUX1dJRFRIHUdMX0ZSQU1FQlVGRkVSX0RFRkFVTFRfTEFZRVJTAhlnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyA4VzDIV1CIV3ChlnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyEmZyYW1lYnVmZmVyX3RhcmdldAMOR0xfRlJBTUVCVUZGRVITR0xfRFJBV19GUkFNRUJVRkZFUhNHTF9SRUFEX0ZSQU1FQlVGRkVShXkMhXsIhX0KGWdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIWZnJhbWVidWZmZXJfYXR0YWNobWVudBMTR0xfREVQVEhfQVRUQUNITUVOVBVHTF9TVEVOQ0lMX0FUVEFDSE1FTlQUR0xfQ09MT1JfQVRUQUNITUVOVDAUR0xfQ09MT1JfQVRUQUNITUVOVDEVR0xfQ09MT1JfQVRUQUNITUVOVDEwFUdMX0NPTE9SX0FUVEFDSE1FTlQxMRVHTF9DT0xPUl9BVFRBQ0hNRU5UMTIVR0xfQ09MT1JfQVRUQUNITUVOVDEzFUdMX0NPTE9SX0FUVEFDSE1FTlQxNBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTUUR0xfQ09MT1JfQVRUQUNITUVOVDIUR0xfQ09MT1JfQVRUQUNITUVOVDMUR0xfQ09MT1JfQVRUQUNITUVOVDQUR0xfQ09MT1JfQVRUQUNITUVOVDUUR0xfQ09MT1JfQVRUQUNITUVOVDYUR0xfQ09MT1JfQVRUQUNITUVOVDcUR0xfQ09MT1JfQVRUQUNITUVOVDgUR0xfQ09MT1JfQVRUQUNITUVOVDkbR0xfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UhX8MhYEIhYMKGWdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXITcmVuZGVyYnVmZmVyX3RhcmdldAEPR0xfUkVOREVSQlVGRkVSAhRnbEZyYW1lYnVmZmVyVGV4dHVyZQKFhQyFhwiFiQoUZ2xGcmFtZWJ1ZmZlclRleHR1cmUGdGFyZ2V0Aw5HTF9GUkFNRUJVRkZFUhNHTF9EUkFXX0ZSQU1FQlVGRkVSE0dMX1JFQURfRlJBTUVCVUZGRVKFiwyFjQiFjwoUZ2xGcmFtZWJ1ZmZlclRleHR1cmUKYXR0YWNobWVudBMTR0xfREVQVEhfQVRUQUNITUVOVBVHTF9TVEVOQ0lMX0FUVEFDSE1FTlQUR0xfQ09MT1JfQVRUQUNITUVOVDAUR0xfQ09MT1JfQVRUQUNITUVOVDEVR0xfQ09MT1JfQVRUQUNITUVOVDEwFUdMX0NPTE9SX0FUVEFDSE1FTlQxMRVHTF9DT0xPUl9BVFRBQ0hNRU5UMTIVR0xfQ09MT1JfQVRUQUNITUVOVDEzFUdMX0NPTE9SX0FUVEFDSE1FTlQxNBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTUUR0xfQ09MT1JfQVRUQUNITUVOVDIUR0xfQ09MT1JfQVRUQUNITUVOVDMUR0xfQ09MT1JfQVRUQUNITUVOVDQUR0xfQ09MT1JfQVRUQUNITUVOVDUUR0xfQ09MT1JfQVRUQUNITUVOVDYUR0xfQ09MT1JfQVRUQUNITUVOVDcUR0xfQ09MT1JfQVRUQUNITUVOVDgUR0xfQ09MT1JfQVRUQUNITUVOVDkbR0xfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UAhZnbEZyYW1lYnVmZmVyVGV4dHVyZTJEA4WRDIWTCIWVChZnbEZyYW1lYnVmZmVyVGV4dHVyZTJEEmZyYW1lYnVmZmVyX3RhcmdldAMOR0xfRlJBTUVCVUZGRVITR0xfRFJBV19GUkFNRUJVRkZFUhNHTF9SRUFEX0ZSQU1FQlVGRkVShZcMhZkIhZsKFmdsRnJhbWVidWZmZXJUZXh0dXJlMkQWZnJhbWVidWZmZXJfYXR0YWNobWVudBMTR0xfREVQVEhfQVRUQUNITUVOVBVHTF9TVEVOQ0lMX0FUVEFDSE1FTlQUR0xfQ09MT1JfQVRUQUNITUVOVDAUR0xfQ09MT1JfQVRUQUNITUVOVDEVR0xfQ09MT1JfQVRUQUNITUVOVDEwFUdMX0NPTE9SX0FUVEFDSE1FTlQxMRVHTF9DT0xPUl9BVFRBQ0hNRU5UMTIVR0xfQ09MT1JfQVRUQUNITUVOVDEzFUdMX0NPTE9SX0FUVEFDSE1FTlQxNBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTUUR0xfQ09MT1JfQVRUQUNITUVOVDIUR0xfQ09MT1JfQVRUQUNITUVOVDMUR0xfQ09MT1JfQVRUQUNITUVOVDQUR0xfQ09MT1JfQVRUQUNITUVOVDUUR0xfQ09MT1JfQVRUQUNITUVOVDYUR0xfQ09MT1JfQVRUQUNITUVOVDcUR0xfQ09MT1JfQVRUQUNITUVOVDgUR0xfQ09MT1JfQVRUQUNITUVOVDkbR0xfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UhZ0MhZ8IhaEKFmdsRnJhbWVidWZmZXJUZXh0dXJlMkQOdGV4dHVyZV90YXJnZXQIDUdMX1RFWFRVUkVfMkQeR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWR5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1oeR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWR5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1oZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRQIkZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlRVhUA4WjDIWlCIWnCiRnbEZyYW1lYnVmZmVyVGV4dHVyZTJETXVsdGlzYW1wbGVFWFQGdGFyZ2V0Aw5HTF9GUkFNRUJVRkZFUhNHTF9EUkFXX0ZSQU1FQlVGRkVSE0dMX1JFQURfRlJBTUVCVUZGRVKFqQyFqwiFrQokZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlRVhUCmF0dGFjaG1lbnQTE0dMX0RFUFRIX0FUVEFDSE1FTlQVR0xfU1RFTkNJTF9BVFRBQ0hNRU5UFEdMX0NPTE9SX0FUVEFDSE1FTlQwFEdMX0NPTE9SX0FUVEFDSE1FTlQxFUdMX0NPTE9SX0FUVEFDSE1FTlQxMBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTEVR0xfQ09MT1JfQVRUQUNITUVOVDEyFUdMX0NPTE9SX0FUVEFDSE1FTlQxMxVHTF9DT0xPUl9BVFRBQ0hNRU5UMTQVR0xfQ09MT1JfQVRUQUNITUVOVDE1FEdMX0NPTE9SX0FUVEFDSE1FTlQyFEdMX0NPTE9SX0FUVEFDSE1FTlQzFEdMX0NPTE9SX0FUVEFDSE1FTlQ0FEdMX0NPTE9SX0FUVEFDSE1FTlQ1FEdMX0NPTE9SX0FUVEFDSE1FTlQ2FEdMX0NPTE9SX0FUVEFDSE1FTlQ3FEdMX0NPTE9SX0FUVEFDSE1FTlQ4FEdMX0NPTE9SX0FUVEFDSE1FTlQ5G0dMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVIWvDIWxCIWzCiRnbEZyYW1lYnVmZmVyVGV4dHVyZTJETXVsdGlzYW1wbGVFWFQJdGV4dGFyZ2V0CA1HTF9URVhUVVJFXzJEHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWB5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1keR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWB5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1keR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUCGWdsRnJhbWVidWZmZXJUZXh0dXJlMkRPRVMDhbUMhbcIhbkKGWdsRnJhbWVidWZmZXJUZXh0dXJlMkRPRVMGdGFyZ2V0Aw5HTF9GUkFNRUJVRkZFUhNHTF9EUkFXX0ZSQU1FQlVGRkVSE0dMX1JFQURfRlJBTUVCVUZGRVKFuwyFvQiFvwoZZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRE9FUwphdHRhY2htZW50ExNHTF9ERVBUSF9BVFRBQ0hNRU5UFUdMX1NURU5DSUxfQVRUQUNITUVOVBRHTF9DT0xPUl9BVFRBQ0hNRU5UMBRHTF9DT0xPUl9BVFRBQ0hNRU5UMRVHTF9DT0xPUl9BVFRBQ0hNRU5UMTAVR0xfQ09MT1JfQVRUQUNITUVOVDExFUdMX0NPTE9SX0FUVEFDSE1FTlQxMhVHTF9DT0xPUl9BVFRBQ0hNRU5UMTMVR0xfQ09MT1JfQVRUQUNITUVOVDE0FUdMX0NPTE9SX0FUVEFDSE1FTlQxNRRHTF9DT0xPUl9BVFRBQ0hNRU5UMhRHTF9DT0xPUl9BVFRBQ0hNRU5UMxRHTF9DT0xPUl9BVFRBQ0hNRU5UNBRHTF9DT0xPUl9BVFRBQ0hNRU5UNRRHTF9DT0xPUl9BVFRBQ0hNRU5UNhRHTF9DT0xPUl9BVFRBQ0hNRU5UNxRHTF9DT0xPUl9BVFRBQ0hNRU5UOBRHTF9DT0xPUl9BVFRBQ0hNRU5UORtHTF9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlSFwQyFwwiFxQoZZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRE9FUwl0ZXh0YXJnZXQIDUdMX1RFWFRVUkVfMkQeR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWR5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1oeR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWR5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1oZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRQIXZ2xGcmFtZWJ1ZmZlclRleHR1cmVFWFQChccMhckIhcsKF2dsRnJhbWVidWZmZXJUZXh0dXJlRVhUBnRhcmdldAMOR0xfRlJBTUVCVUZGRVITR0xfRFJBV19GUkFNRUJVRkZFUhNHTF9SRUFEX0ZSQU1FQlVGRkVShc0Mhc8IhdEKF2dsRnJhbWVidWZmZXJUZXh0dXJlRVhUCmF0dGFjaG1lbnQTE0dMX0RFUFRIX0FUVEFDSE1FTlQVR0xfU1RFTkNJTF9BVFRBQ0hNRU5UFEdMX0NPTE9SX0FUVEFDSE1FTlQwFEdMX0NPTE9SX0FUVEFDSE1FTlQxFUdMX0NPTE9SX0FUVEFDSE1FTlQxMBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTEVR0xfQ09MT1JfQVRUQUNITUVOVDEyFUdMX0NPTE9SX0FUVEFDSE1FTlQxMxVHTF9DT0xPUl9BVFRBQ0hNRU5UMTQVR0xfQ09MT1JfQVRUQUNITUVOVDE1FEdMX0NPTE9SX0FUVEFDSE1FTlQyFEdMX0NPTE9SX0FUVEFDSE1FTlQzFEdMX0NPTE9SX0FUVEFDSE1FTlQ0FEdMX0NPTE9SX0FUVEFDSE1FTlQ1FEdMX0NPTE9SX0FUVEFDSE1FTlQ2FEdMX0NPTE9SX0FUVEFDSE1FTlQ3FEdMX0NPTE9SX0FUVEFDSE1FTlQ4FEdMX0NPTE9SX0FUVEFDSE1FTlQ5G0dMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVAIZZ2xGcmFtZWJ1ZmZlclRleHR1cmVMYXllcgKF0wyF1QiF1woZZ2xGcmFtZWJ1ZmZlclRleHR1cmVMYXllcgZ0YXJnZXQDDkdMX0ZSQU1FQlVGRkVSE0dMX0RSQVdfRlJBTUVCVUZGRVITR0xfUkVBRF9GUkFNRUJVRkZFUoXZDIXbCIXdChlnbEZyYW1lYnVmZmVyVGV4dHVyZUxheWVyCmF0dGFjaG1lbnQTE0dMX0RFUFRIX0FUVEFDSE1FTlQVR0xfU1RFTkNJTF9BVFRBQ0hNRU5UFEdMX0NPTE9SX0FUVEFDSE1FTlQwFEdMX0NPTE9SX0FUVEFDSE1FTlQxFUdMX0NPTE9SX0FUVEFDSE1FTlQxMBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTEVR0xfQ09MT1JfQVRUQUNITUVOVDEyFUdMX0NPTE9SX0FUVEFDSE1FTlQxMxVHTF9DT0xPUl9BVFRBQ0hNRU5UMTQVR0xfQ09MT1JfQVRUQUNITUVOVDE1FEdMX0NPTE9SX0FUVEFDSE1FTlQyFEdMX0NPTE9SX0FUVEFDSE1FTlQzFEdMX0NPTE9SX0FUVEFDSE1FTlQ0FEdMX0NPTE9SX0FUVEFDSE1FTlQ1FEdMX0NPTE9SX0FUVEFDSE1FTlQ2FEdMX0NPTE9SX0FUVEFDSE1FTlQ3FEdMX0NPTE9SX0FUVEFDSE1FTlQ4FEdMX0NPTE9SX0FUVEFDSE1FTlQ5G0dMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVAIXZ2xGcmFtZWJ1ZmZlclRleHR1cmVPRVMChd8MheEIheMKF2dsRnJhbWVidWZmZXJUZXh0dXJlT0VTBnRhcmdldAMOR0xfRlJBTUVCVUZGRVITR0xfRFJBV19GUkFNRUJVRkZFUhNHTF9SRUFEX0ZSQU1FQlVGRkVSheUMhecIhekKF2dsRnJhbWVidWZmZXJUZXh0dXJlT0VTCmF0dGFjaG1lbnQTE0dMX0RFUFRIX0FUVEFDSE1FTlQVR0xfU1RFTkNJTF9BVFRBQ0hNRU5UFEdMX0NPTE9SX0FUVEFDSE1FTlQwFEdMX0NPTE9SX0FUVEFDSE1FTlQxFUdMX0NPTE9SX0FUVEFDSE1FTlQxMBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTEVR0xfQ09MT1JfQVRUQUNITUVOVDEyFUdMX0NPTE9SX0FUVEFDSE1FTlQxMxVHTF9DT0xPUl9BVFRBQ0hNRU5UMTQVR0xfQ09MT1JfQVRUQUNITUVOVDE1FEdMX0NPTE9SX0FUVEFDSE1FTlQyFEdMX0NPTE9SX0FUVEFDSE1FTlQzFEdMX0NPTE9SX0FUVEFDSE1FTlQ0FEdMX0NPTE9SX0FUVEFDSE1FTlQ1FEdMX0NPTE9SX0FUVEFDSE1FTlQ2FEdMX0NPTE9SX0FUVEFDSE1FTlQ3FEdMX0NPTE9SX0FUVEFDSE1FTlQ4FEdMX0NPTE9SX0FUVEFDSE1FTlQ5G0dMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVAILZ2xGcm9udEZhY2UBhesMhe0Ihe8KC2dsRnJvbnRGYWNlC29yaWVudGF0aW9uAgZHTF9DQ1cFR0xfQ1cCFWdsR2VuUHJvZ3JhbVBpcGVsaW5lcwGF8QSF8waF9QiF9woVZ2xHZW5Qcm9ncmFtUGlwZWxpbmVzCXBpcGVsaW5lcwQBAgIQZ2xHZW5lcmF0ZU1pcG1hcAGF+QyF+wiF/QoQZ2xHZW5lcmF0ZU1pcG1hcAZ0YXJnZXQFDUdMX1RFWFRVUkVfMkQTR0xfVEVYVFVSRV9DVUJFX01BUBNHTF9URVhUVVJFXzJEX0FSUkFZDUdMX1RFWFRVUkVfM0QZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWQIRZ2xHZXRBY3RpdmVBdHRyaWIBhf8EhgEGhgMIhgUKEWdsR2V0QWN0aXZlQXR0cmliBG5hbWUEAQICEmdsR2V0QWN0aXZlVW5pZm9ybQGGBwSGCQaGCwiGDQoSZ2xHZXRBY3RpdmVVbmlmb3JtBG5hbWUEAQICG2dsR2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZQGGDwSGEQaGEwiGFQobZ2xHZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lBG5hbWUEAQICGWdsR2V0QWN0aXZlVW5pZm9ybUJsb2NraXYBhhcMhhkIhhsKGWdsR2V0QWN0aXZlVW5pZm9ybUJsb2NraXYOcGFyYW1ldGVyX25hbWUHIEdMX1VOSUZPUk1fQkxPQ0tfQUNUSVZFX1VOSUZPUk1TJ0dMX1VOSUZPUk1fQkxPQ0tfQUNUSVZFX1VOSUZPUk1fSU5ESUNFUxhHTF9VTklGT1JNX0JMT0NLX0JJTkRJTkcaR0xfVU5JRk9STV9CTE9DS19EQVRBX1NJWkUcR0xfVU5JRk9STV9CTE9DS19OQU1FX0xFTkdUSC5HTF9VTklGT1JNX0JMT0NLX1JFRkVSRU5DRURfQllfRlJBR01FTlRfU0hBREVSLEdMX1VOSUZPUk1fQkxPQ0tfUkVGRVJFTkNFRF9CWV9WRVJURVhfU0hBREVSAhVnbEdldEFjdGl2ZVVuaWZvcm1zaXYDhh0Ehh8GhiEIhiMKFWdsR2V0QWN0aXZlVW5pZm9ybXNpdg91bmlmb3JtX2luZGljZXMEAQCGJQyGJwiGKQoVZ2xHZXRBY3RpdmVVbmlmb3Jtc2l2DnBhcmFtZXRlcl9uYW1lCBdHTF9VTklGT1JNX0FSUkFZX1NUUklERRZHTF9VTklGT1JNX0JMT0NLX0lOREVYF0dMX1VOSUZPUk1fSVNfUk9XX01BSk9SGEdMX1VOSUZPUk1fTUFUUklYX1NUUklERRZHTF9VTklGT1JNX05BTUVfTEVOR1RIEUdMX1VOSUZPUk1fT0ZGU0VUD0dMX1VOSUZPUk1fU0laRQ9HTF9VTklGT1JNX1RZUEWGKwSGLQaGLwiGMQoVZ2xHZXRBY3RpdmVVbmlmb3Jtc2l2CnBhcmFtZXRlcnMEAQICD2dsR2V0Qm9vbGVhbmlfdgKGMwyGNQiGNwoPZ2xHZXRCb29sZWFuaV92BXBhcmFtgSoRR0xfQUNUSVZFX1RFWFRVUkUbR0xfQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFG0dMX0FMSUFTRURfUE9JTlRfU0laRV9SQU5HRQ1HTF9BTFBIQV9CSVRTF0dMX0FSUkFZX0JVRkZFUl9CSU5ESU5HIEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9CSU5ESU5HHUdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TSVpFHkdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TVEFSVAhHTF9CTEVORA5HTF9CTEVORF9DT0xPUhJHTF9CTEVORF9EU1RfQUxQSEEQR0xfQkxFTkRfRFNUX1JHQhdHTF9CTEVORF9FUVVBVElPTl9BTFBIQRVHTF9CTEVORF9FUVVBVElPTl9SR0ISR0xfQkxFTkRfU1JDX0FMUEhBEEdMX0JMRU5EX1NSQ19SR0IMR0xfQkxVRV9CSVRTFEdMX0NPTE9SX0NMRUFSX1ZBTFVFEkdMX0NPTE9SX1dSSVRFTUFTSx1HTF9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUxBHTF9DT05URVhUX0ZMQUdTGEdMX0NPTlRFWFRfUk9CVVNUX0FDQ0VTUxtHTF9DT1BZX1JFQURfQlVGRkVSX0JJTkRJTkccR0xfQ09QWV9XUklURV9CVUZGRVJfQklORElORwxHTF9DVUxMX0ZBQ0URR0xfQ1VMTF9GQUNFX01PREUSR0xfQ1VSUkVOVF9QUk9HUkFNGkdMX0RFQlVHX0dST1VQX1NUQUNLX0RFUFRIGEdMX0RFQlVHX0xPR0dFRF9NRVNTQUdFUyNHTF9ERUJVR19ORVhUX0xPR0dFRF9NRVNTQUdFX0xFTkdUSA1HTF9ERVBUSF9CSVRTFEdMX0RFUFRIX0NMRUFSX1ZBTFVFDUdMX0RFUFRIX0ZVTkMOR0xfREVQVEhfUkFOR0UNR0xfREVQVEhfVEVTVBJHTF9ERVBUSF9XUklURU1BU0sjR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSX0JJTkRJTkcJR0xfRElUSEVSDkdMX0RSQVdfQlVGRkVSD0dMX0RSQVdfQlVGRkVSMA9HTF9EUkFXX0JVRkZFUjEPR0xfRFJBV19CVUZGRVIyD0dMX0RSQVdfQlVGRkVSMw9HTF9EUkFXX0JVRkZFUjQPR0xfRFJBV19CVUZGRVI1D0dMX0RSQVdfQlVGRkVSNg9HTF9EUkFXX0JVRkZFUjcPR0xfRFJBV19CVUZGRVI4D0dMX0RSQVdfQlVGRkVSORBHTF9EUkFXX0JVRkZFUjEwEEdMX0RSQVdfQlVGRkVSMTEQR0xfRFJBV19CVUZGRVIxMhBHTF9EUkFXX0JVRkZFUjEzEEdMX0RSQVdfQlVGRkVSMTQQR0xfRFJBV19CVUZGRVIxNRtHTF9EUkFXX0ZSQU1FQlVGRkVSX0JJTkRJTkcfR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORyVHTF9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVF9CSVRTIkdMX0ZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlQNR0xfRlJPTlRfRkFDRRdHTF9HRU5FUkFURV9NSVBNQVBfSElOVA1HTF9HUkVFTl9CSVRTFUdMX0lNQUdFX0JJTkRJTkdfTkFNRRZHTF9JTUFHRV9CSU5ESU5HX0xFVkVMGEdMX0lNQUdFX0JJTkRJTkdfTEFZRVJFRBZHTF9JTUFHRV9CSU5ESU5HX0xBWUVSF0dMX0lNQUdFX0JJTkRJTkdfQUNDRVNTF0dMX0lNQUdFX0JJTkRJTkdfRk9STUFUI0dMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfRk9STUFUIUdMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfVFlQRRlHTF9MQVlFUl9QUk9WT0tJTkdfVkVSVEVYDUdMX0xJTkVfV0lEVEgqR0xfUFJJTUlUSVZFX1JFU1RBUlRfRk9SX1BBVENIRVNfU1VQUE9SVEVEEEdMX01BSk9SX1ZFUlNJT04WR0xfTUFYXzNEX1RFWFRVUkVfU0laRRtHTF9NQVhfQVJSQVlfVEVYVFVSRV9MQVlFUlMlR0xfTUFYX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9CSU5ESU5HUyFHTF9NQVhfQVRPTUlDX0NPVU5URVJfQlVGRkVSX1NJWkUmR0xfTUFYX0NPTUJJTkVEX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMYR0xfTUFYX0NPTE9SX0FUVEFDSE1FTlRTHEdMX01BWF9DT0xPUl9URVhUVVJFX1NBTVBMRVMcR0xfTUFYX0RFUFRIX1RFWFRVUkVfU0FNUExFUx9HTF9NQVhfQ09NQklORURfQVRPTUlDX0NPVU5URVJTEkdMX01BWF9JTUFHRV9VTklUUypHTF9NQVhfQ09NQklORURfQ09NUFVURV9VTklGT1JNX0NPTVBPTkVOVFMrR0xfTUFYX0NPTUJJTkVEX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UUytHTF9NQVhfQ09NQklORURfR0VPTUVUUllfVU5JRk9STV9DT01QT05FTlRTJUdMX01BWF9DT01CSU5FRF9TSEFERVJfU1RPUkFHRV9CTE9DS1MvR0xfTUFYX0NPTUJJTkVEX1RFU1NfQ09OVFJPTF9VTklGT1JNX0NPTVBPTkVOVFMyR0xfTUFYX0NPTUJJTkVEX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0NPTVBPTkVOVFMjR0xfTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMnR0xfTUFYX0NPTUJJTkVEX1NIQURFUl9PVVRQVVRfUkVTT1VSQ0VTHkdMX01BWF9DT01CSU5FRF9VTklGT1JNX0JMT0NLUylHTF9NQVhfQ09NQklORURfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUyVHTF9NQVhfQ09NUFVURV9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTHkdMX01BWF9DT01QVVRFX0FUT01JQ19DT1VOVEVSUx1HTF9NQVhfQ09NUFVURV9JTUFHRV9VTklGT1JNUx5HTF9NQVhfQ09NQklORURfSU1BR0VfVU5JRk9STVMkR0xfTUFYX0NPTVBVVEVfU0hBREVSX1NUT1JBR0VfQkxPQ0tTIkdMX01BWF9DT01QVVRFX1RFWFRVUkVfSU1BR0VfVU5JVFMhR0xfTUFYX0NPTVBVVEVfU0hBUkVEX01FTU9SWV9TSVpFHUdMX01BWF9DT01QVVRFX1VOSUZPUk1fQkxPQ0tTIUdMX01BWF9DT01QVVRFX1VOSUZPUk1fQ09NUE9ORU5UUx9HTF9NQVhfQ09NUFVURV9XT1JLX0dST1VQX0NPVU5UJUdMX01BWF9DT01QVVRFX1dPUktfR1JPVVBfSU5WT0NBVElPTlMeR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9TSVpFHEdMX01BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUeR0xfTUFYX0RFQlVHX0dST1VQX1NUQUNLX0RFUFRIHEdMX01BWF9ERUJVR19MT0dHRURfTUVTU0FHRVMbR0xfTUFYX0RFQlVHX01FU1NBR0VfTEVOR1RIE0dMX01BWF9EUkFXX0JVRkZFUlMUR0xfTUFYX0VMRU1FTlRfSU5ERVgXR0xfTUFYX0VMRU1FTlRTX0lORElDRVMYR0xfTUFYX0VMRU1FTlRTX1ZFUlRJQ0VTJkdMX01BWF9GUkFHTUVOVF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTH0dMX01BWF9GUkFHTUVOVF9BVE9NSUNfQ09VTlRFUlMeR0xfTUFYX0ZSQUdNRU5UX0lNQUdFX1VOSUZPUk1TIEdMX01BWF9GUkFHTUVOVF9JTlBVVF9DT01QT05FTlRTJEdMX01BWF9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVCVHTF9NQVhfRlJBR01FTlRfU0hBREVSX1NUT1JBR0VfQkxPQ0tTJEdMX01JTl9QUk9HUkFNX1RFWFRVUkVfR0FUSEVSX09GRlNFVCRHTF9NQVhfUFJPR1JBTV9URVhUVVJFX0dBVEhFUl9PRkZTRVQeR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQkxPQ0tTIkdMX01BWF9GUkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFMfR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUxlHTF9NQVhfRlJBTUVCVUZGRVJfSEVJR0hUGUdMX01BWF9GUkFNRUJVRkZFUl9MQVlFUlMaR0xfTUFYX0ZSQU1FQlVGRkVSX1NBTVBMRVMYR0xfTUFYX0ZSQU1FQlVGRkVSX1dJRFRIJkdMX01BWF9HRU9NRVRSWV9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTH0dMX01BWF9HRU9NRVRSWV9BVE9NSUNfQ09VTlRFUlMeR0xfTUFYX0dFT01FVFJZX0lNQUdFX1VOSUZPUk1TIEdMX01BWF9HRU9NRVRSWV9JTlBVVF9DT01QT05FTlRTIUdMX01BWF9HRU9NRVRSWV9PVVRQVVRfQ09NUE9ORU5UUx9HTF9NQVhfR0VPTUVUUllfT1VUUFVUX1ZFUlRJQ0VTIkdMX01BWF9HRU9NRVRSWV9TSEFERVJfSU5WT0NBVElPTlMlR0xfTUFYX0dFT01FVFJZX1NIQURFUl9TVE9SQUdFX0JMT0NLUyNHTF9NQVhfR0VPTUVUUllfVEVYVFVSRV9JTUFHRV9VTklUUydHTF9NQVhfR0VPTUVUUllfVE9UQUxfT1VUUFVUX0NPTVBPTkVOVFMeR0xfTUFYX0dFT01FVFJZX1VOSUZPUk1fQkxPQ0tTIkdMX01BWF9HRU9NRVRSWV9VTklGT1JNX0NPTVBPTkVOVFMWR0xfTUFYX0lOVEVHRVJfU0FNUExFUxNHTF9NQVhfTEFCRUxfTEVOR1RIG0dMX01BWF9QUk9HUkFNX1RFWEVMX09GRlNFVBhHTF9NQVhfUkVOREVSQlVGRkVSX1NJWkUYR0xfTUFYX1NBTVBMRV9NQVNLX1dPUkRTDkdMX01BWF9TQU1QTEVTGkdMX01BWF9TRVJWRVJfV0FJVF9USU1FT1VUIEdMX01BWF9TSEFERVJfU1RPUkFHRV9CTE9DS19TSVpFJUdMX01BWF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfQklORElOR1MqR0xfTUFYX1RFU1NfQ09OVFJPTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTI0dMX01BWF9URVNTX0NPTlRST0xfQVRPTUlDX0NPVU5URVJTIkdMX01BWF9URVNTX0NPTlRST0xfSU1BR0VfVU5JRk9STVMkR0xfTUFYX1RFU1NfQ09OVFJPTF9JTlBVVF9DT01QT05FTlRTJUdMX01BWF9URVNTX0NPTlRST0xfT1VUUFVUX0NPTVBPTkVOVFMpR0xfTUFYX1RFU1NfQ09OVFJPTF9TSEFERVJfU1RPUkFHRV9CTE9DS1MnR0xfTUFYX1RFU1NfQ09OVFJPTF9URVhUVVJFX0lNQUdFX1VOSVRTK0dMX01BWF9URVNTX0NPTlRST0xfVE9UQUxfT1VUUFVUX0NPTVBPTkVOVFMiR0xfTUFYX1RFU1NfQ09OVFJPTF9VTklGT1JNX0JMT0NLUyZHTF9NQVhfVEVTU19DT05UUk9MX1VOSUZPUk1fQ09NUE9ORU5UUy1HTF9NQVhfVEVTU19FVkFMVUFUSU9OX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMmR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9BVE9NSUNfQ09VTlRFUlMlR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9JTUFHRV9VTklGT1JNUydHTF9NQVhfVEVTU19FVkFMVUFUSU9OX0lOUFVUX0NPTVBPTkVOVFMoR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9PVVRQVVRfQ09NUE9ORU5UUyxHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1NIQURFUl9TVE9SQUdFX0JMT0NLUypHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1RFWFRVUkVfSU1BR0VfVU5JVFMlR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0JMT0NLUylHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1VOSUZPUk1fQ09NUE9ORU5UUxVHTF9NQVhfVEVTU19HRU5fTEVWRUwVR0xfTUFYX1BBVENIX1ZFUlRJQ0VTHEdMX01BWF9URVNTX1BBVENIX0NPTVBPTkVOVFMaR0xfTUFYX1RFWFRVUkVfQlVGRkVSX1NJWkUaR0xfTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMXR0xfTUFYX1RFWFRVUkVfTE9EX0JJQVMTR0xfTUFYX1RFWFRVUkVfU0laRTBHTF9NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX0lOVEVSTEVBVkVEX0NPTVBPTkVOVFMqR0xfTUFYX1RSQU5TRk9STV9GRUVEQkFDS19TRVBBUkFURV9BVFRSSUJTLUdMX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQ09NUE9ORU5UUxlHTF9NQVhfVU5JRk9STV9CTE9DS19TSVpFHkdMX01BWF9VTklGT1JNX0JVRkZFUl9CSU5ESU5HUxhHTF9NQVhfVU5JRk9STV9MT0NBVElPTlMZR0xfTUFYX1ZBUllJTkdfQ09NUE9ORU5UUxZHTF9NQVhfVkFSWUlOR19WRUNUT1JTHUdMX01BWF9WRVJURVhfQVRPTUlDX0NPVU5URVJTJEdMX01BWF9WRVJURVhfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx1HTF9NQVhfVkVSVEVYX0FUVFJJQl9CSU5ESU5HUxtHTF9NQVhfVkVSVEVYX0FUVFJJQl9TVFJJREUkR0xfTUFYX1ZFUlRFWF9BVFRSSUJfUkVMQVRJVkVfT0ZGU0VUFUdMX01BWF9WRVJURVhfQVRUUklCUxxHTF9NQVhfVkVSVEVYX0lNQUdFX1VOSUZPUk1TH0dMX01BWF9WRVJURVhfT1VUUFVUX0NPTVBPTkVOVFMjR0xfTUFYX1ZFUlRFWF9TSEFERVJfU1RPUkFHRV9CTE9DS1MhR0xfTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTHEdMX01BWF9WRVJURVhfVU5JRk9STV9CTE9DS1MgR0xfTUFYX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFMdR0xfTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMUR0xfTUFYX1ZJRVdQT1JUX0RJTVMkR0xfTUlOX0ZSQUdNRU5UX0lOVEVSUE9MQVRJT05fT0ZGU0VUG0dMX01JTl9QUk9HUkFNX1RFWEVMX09GRlNFVBtHTF9NSU5fU0FNUExFX1NIQURJTkdfVkFMVUUQR0xfTUlOT1JfVkVSU0lPTh9HTF9NVUxUSVNBTVBMRV9MSU5FX1dJRFRIX1JBTkdFJUdMX01VTFRJU0FNUExFX0xJTkVfV0lEVEhfR1JBTlVMQVJJVFkhR0xfTlVNX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTEUdMX05VTV9FWFRFTlNJT05THUdMX05VTV9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTHEdMX05VTV9TSEFERVJfQklOQVJZX0ZPUk1BVFMRR0xfUEFDS19BTElHTk1FTlQUR0xfUEFDS19JTUFHRV9IRUlHSFQSR0xfUEFDS19ST1dfTEVOR1RIE0dMX1BBQ0tfU0tJUF9JTUFHRVMTR0xfUEFDS19TS0lQX1BJWEVMUxFHTF9QQUNLX1NLSVBfUk9XUxFHTF9QQVRDSF9WRVJUSUNFUxxHTF9QSVhFTF9QQUNLX0JVRkZFUl9CSU5ESU5HHkdMX1BJWEVMX1VOUEFDS19CVUZGRVJfQklORElORxhHTF9QT0xZR09OX09GRlNFVF9GQUNUT1IWR0xfUE9MWUdPTl9PRkZTRVRfRklMTBdHTF9QT0xZR09OX09GRlNFVF9VTklUUxlHTF9QUklNSVRJVkVfQk9VTkRJTkdfQk9YIEdMX1BSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYGUdMX1BST0dSQU1fQklOQVJZX0ZPUk1BVFMbR0xfUFJPR1JBTV9QSVBFTElORV9CSU5ESU5HFUdMX1JBU1RFUklaRVJfRElTQ0FSRA5HTF9SRUFEX0JVRkZFUhtHTF9SRUFEX0ZSQU1FQlVGRkVSX0JJTkRJTkcLR0xfUkVEX0JJVFMXR0xfUkVOREVSQlVGRkVSX0JJTkRJTkceR0xfUkVTRVRfTk9USUZJQ0FUSU9OX1NUUkFURUdZG0dMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRRFHTF9TQU1QTEVfQlVGRkVSUxJHTF9TQU1QTEVfQ09WRVJBR0UZR0xfU0FNUExFX0NPVkVSQUdFX0lOVkVSVBhHTF9TQU1QTEVfQ09WRVJBR0VfVkFMVUURR0xfU0FNUExFX1NIQURJTkcSR0xfU0FNUExFUl9CSU5ESU5HCkdMX1NBTVBMRVMOR0xfU0NJU1NPUl9CT1gPR0xfU0NJU1NPUl9URVNUGEdMX1NIQURFUl9CSU5BUllfRk9STUFUUxJHTF9TSEFERVJfQ09NUElMRVIgR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX0JJTkRJTkcpR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX09GRlNFVF9BTElHTk1FTlQdR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX1NJWkUeR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX1NUQVJUFEdMX1NURU5DSUxfQkFDS19GQUlMFEdMX1NURU5DSUxfQkFDS19GVU5DH0dMX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZBSUwfR0xfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTUxNHTF9TVEVOQ0lMX0JBQ0tfUkVGGkdMX1NURU5DSUxfQkFDS19WQUxVRV9NQVNLGUdMX1NURU5DSUxfQkFDS19XUklURU1BU0sPR0xfU1RFTkNJTF9CSVRTFkdMX1NURU5DSUxfQ0xFQVJfVkFMVUUPR0xfU1RFTkNJTF9GQUlMD0dMX1NURU5DSUxfRlVOQxpHTF9TVEVOQ0lMX1BBU1NfREVQVEhfRkFJTBpHTF9TVEVOQ0lMX1BBU1NfREVQVEhfUEFTUw5HTF9TVEVOQ0lMX1JFRg9HTF9TVEVOQ0lMX1RFU1QVR0xfU1RFTkNJTF9WQUxVRV9NQVNLFEdMX1NURU5DSUxfV1JJVEVNQVNLEEdMX1NVQlBJWEVMX0JJVFMVR0xfVEVYVFVSRV9CSU5ESU5HXzJEH0dMX1RFWFRVUkVfQklORElOR19FWFRFUk5BTF9PRVMbR0xfVEVYVFVSRV9CSU5ESU5HXzJEX0FSUkFZIUdMX1RFWFRVUkVfQklORElOR18yRF9NVUxUSVNBTVBMRSdHTF9URVhUVVJFX0JJTkRJTkdfMkRfTVVMVElTQU1QTEVfQVJSQVkVR0xfVEVYVFVSRV9CSU5ESU5HXzNEGUdMX1RFWFRVUkVfQklORElOR19CVUZGRVIbR0xfVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQIUdMX1RFWFRVUkVfQklORElOR19DVUJFX01BUF9BUlJBWRlHTF9URVhUVVJFX0JVRkZFUl9CSU5ESU5HIkdMX1RFWFRVUkVfQlVGRkVSX09GRlNFVF9BTElHTk1FTlQcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0FDVElWRR1HTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQklORElORyRHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkchR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TSVpFIkdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU1RBUlQcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1BBVVNFRBlHTF9VTklGT1JNX0JVRkZFUl9CSU5ESU5HIkdMX1VOSUZPUk1fQlVGRkVSX09GRlNFVF9BTElHTk1FTlQWR0xfVU5JRk9STV9CVUZGRVJfU0laRRdHTF9VTklGT1JNX0JVRkZFUl9TVEFSVBNHTF9VTlBBQ0tfQUxJR05NRU5UFkdMX1VOUEFDS19JTUFHRV9IRUlHSFQUR0xfVU5QQUNLX1JPV19MRU5HVEgVR0xfVU5QQUNLX1NLSVBfSU1BR0VTFUdMX1VOUEFDS19TS0lQX1BJWEVMUxNHTF9VTlBBQ0tfU0tJUF9ST1dTF0dMX1ZFUlRFWF9BUlJBWV9CSU5ESU5HGUdMX1ZFUlRFWF9CSU5ESU5HX0RJVklTT1IYR0xfVkVSVEVYX0JJTkRJTkdfT0ZGU0VUGEdMX1ZFUlRFWF9CSU5ESU5HX1NUUklERQtHTF9WSUVXUE9SVCFHTF9NQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQTR0xfR1BVX0RJU0pPSU5UX0VYVIY5BIY7BoY9CIY/Cg9nbEdldEJvb2xlYW5pX3YGdmFsdWVzBAECAg1nbEdldEJvb2xlYW52AoZBDIZDCIZFCg1nbEdldEJvb2xlYW52BXBhcmFtgSoRR0xfQUNUSVZFX1RFWFRVUkUbR0xfQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFG0dMX0FMSUFTRURfUE9JTlRfU0laRV9SQU5HRQ1HTF9BTFBIQV9CSVRTF0dMX0FSUkFZX0JVRkZFUl9CSU5ESU5HIEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9CSU5ESU5HHUdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TSVpFHkdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TVEFSVAhHTF9CTEVORA5HTF9CTEVORF9DT0xPUhJHTF9CTEVORF9EU1RfQUxQSEEQR0xfQkxFTkRfRFNUX1JHQhdHTF9CTEVORF9FUVVBVElPTl9BTFBIQRVHTF9CTEVORF9FUVVBVElPTl9SR0ISR0xfQkxFTkRfU1JDX0FMUEhBEEdMX0JMRU5EX1NSQ19SR0IMR0xfQkxVRV9CSVRTFEdMX0NPTE9SX0NMRUFSX1ZBTFVFEkdMX0NPTE9SX1dSSVRFTUFTSx1HTF9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUxBHTF9DT05URVhUX0ZMQUdTGEdMX0NPTlRFWFRfUk9CVVNUX0FDQ0VTUxtHTF9DT1BZX1JFQURfQlVGRkVSX0JJTkRJTkccR0xfQ09QWV9XUklURV9CVUZGRVJfQklORElORwxHTF9DVUxMX0ZBQ0URR0xfQ1VMTF9GQUNFX01PREUSR0xfQ1VSUkVOVF9QUk9HUkFNGkdMX0RFQlVHX0dST1VQX1NUQUNLX0RFUFRIGEdMX0RFQlVHX0xPR0dFRF9NRVNTQUdFUyNHTF9ERUJVR19ORVhUX0xPR0dFRF9NRVNTQUdFX0xFTkdUSA1HTF9ERVBUSF9CSVRTFEdMX0RFUFRIX0NMRUFSX1ZBTFVFDUdMX0RFUFRIX0ZVTkMOR0xfREVQVEhfUkFOR0UNR0xfREVQVEhfVEVTVBJHTF9ERVBUSF9XUklURU1BU0sjR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSX0JJTkRJTkcJR0xfRElUSEVSDkdMX0RSQVdfQlVGRkVSD0dMX0RSQVdfQlVGRkVSMA9HTF9EUkFXX0JVRkZFUjEPR0xfRFJBV19CVUZGRVIyD0dMX0RSQVdfQlVGRkVSMw9HTF9EUkFXX0JVRkZFUjQPR0xfRFJBV19CVUZGRVI1D0dMX0RSQVdfQlVGRkVSNg9HTF9EUkFXX0JVRkZFUjcPR0xfRFJBV19CVUZGRVI4D0dMX0RSQVdfQlVGRkVSORBHTF9EUkFXX0JVRkZFUjEwEEdMX0RSQVdfQlVGRkVSMTEQR0xfRFJBV19CVUZGRVIxMhBHTF9EUkFXX0JVRkZFUjEzEEdMX0RSQVdfQlVGRkVSMTQQR0xfRFJBV19CVUZGRVIxNRtHTF9EUkFXX0ZSQU1FQlVGRkVSX0JJTkRJTkcfR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORyVHTF9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVF9CSVRTIkdMX0ZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlQNR0xfRlJPTlRfRkFDRRdHTF9HRU5FUkFURV9NSVBNQVBfSElOVA1HTF9HUkVFTl9CSVRTFUdMX0lNQUdFX0JJTkRJTkdfTkFNRRZHTF9JTUFHRV9CSU5ESU5HX0xFVkVMGEdMX0lNQUdFX0JJTkRJTkdfTEFZRVJFRBZHTF9JTUFHRV9CSU5ESU5HX0xBWUVSF0dMX0lNQUdFX0JJTkRJTkdfQUNDRVNTF0dMX0lNQUdFX0JJTkRJTkdfRk9STUFUI0dMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfRk9STUFUIUdMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfVFlQRRlHTF9MQVlFUl9QUk9WT0tJTkdfVkVSVEVYDUdMX0xJTkVfV0lEVEgqR0xfUFJJTUlUSVZFX1JFU1RBUlRfRk9SX1BBVENIRVNfU1VQUE9SVEVEEEdMX01BSk9SX1ZFUlNJT04WR0xfTUFYXzNEX1RFWFRVUkVfU0laRRtHTF9NQVhfQVJSQVlfVEVYVFVSRV9MQVlFUlMlR0xfTUFYX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9CSU5ESU5HUyFHTF9NQVhfQVRPTUlDX0NPVU5URVJfQlVGRkVSX1NJWkUmR0xfTUFYX0NPTUJJTkVEX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMYR0xfTUFYX0NPTE9SX0FUVEFDSE1FTlRTHEdMX01BWF9DT0xPUl9URVhUVVJFX1NBTVBMRVMcR0xfTUFYX0RFUFRIX1RFWFRVUkVfU0FNUExFUx9HTF9NQVhfQ09NQklORURfQVRPTUlDX0NPVU5URVJTEkdMX01BWF9JTUFHRV9VTklUUypHTF9NQVhfQ09NQklORURfQ09NUFVURV9VTklGT1JNX0NPTVBPTkVOVFMrR0xfTUFYX0NPTUJJTkVEX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UUytHTF9NQVhfQ09NQklORURfR0VPTUVUUllfVU5JRk9STV9DT01QT05FTlRTJUdMX01BWF9DT01CSU5FRF9TSEFERVJfU1RPUkFHRV9CTE9DS1MvR0xfTUFYX0NPTUJJTkVEX1RFU1NfQ09OVFJPTF9VTklGT1JNX0NPTVBPTkVOVFMyR0xfTUFYX0NPTUJJTkVEX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0NPTVBPTkVOVFMjR0xfTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMnR0xfTUFYX0NPTUJJTkVEX1NIQURFUl9PVVRQVVRfUkVTT1VSQ0VTHkdMX01BWF9DT01CSU5FRF9VTklGT1JNX0JMT0NLUylHTF9NQVhfQ09NQklORURfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUyVHTF9NQVhfQ09NUFVURV9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTHkdMX01BWF9DT01QVVRFX0FUT01JQ19DT1VOVEVSUx1HTF9NQVhfQ09NUFVURV9JTUFHRV9VTklGT1JNUx5HTF9NQVhfQ09NQklORURfSU1BR0VfVU5JRk9STVMkR0xfTUFYX0NPTVBVVEVfU0hBREVSX1NUT1JBR0VfQkxPQ0tTIkdMX01BWF9DT01QVVRFX1RFWFRVUkVfSU1BR0VfVU5JVFMhR0xfTUFYX0NPTVBVVEVfU0hBUkVEX01FTU9SWV9TSVpFHUdMX01BWF9DT01QVVRFX1VOSUZPUk1fQkxPQ0tTIUdMX01BWF9DT01QVVRFX1VOSUZPUk1fQ09NUE9ORU5UUx9HTF9NQVhfQ09NUFVURV9XT1JLX0dST1VQX0NPVU5UJUdMX01BWF9DT01QVVRFX1dPUktfR1JPVVBfSU5WT0NBVElPTlMeR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9TSVpFHEdMX01BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUeR0xfTUFYX0RFQlVHX0dST1VQX1NUQUNLX0RFUFRIHEdMX01BWF9ERUJVR19MT0dHRURfTUVTU0FHRVMbR0xfTUFYX0RFQlVHX01FU1NBR0VfTEVOR1RIE0dMX01BWF9EUkFXX0JVRkZFUlMUR0xfTUFYX0VMRU1FTlRfSU5ERVgXR0xfTUFYX0VMRU1FTlRTX0lORElDRVMYR0xfTUFYX0VMRU1FTlRTX1ZFUlRJQ0VTJkdMX01BWF9GUkFHTUVOVF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTH0dMX01BWF9GUkFHTUVOVF9BVE9NSUNfQ09VTlRFUlMeR0xfTUFYX0ZSQUdNRU5UX0lNQUdFX1VOSUZPUk1TIEdMX01BWF9GUkFHTUVOVF9JTlBVVF9DT01QT05FTlRTJEdMX01BWF9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVCVHTF9NQVhfRlJBR01FTlRfU0hBREVSX1NUT1JBR0VfQkxPQ0tTJEdMX01JTl9QUk9HUkFNX1RFWFRVUkVfR0FUSEVSX09GRlNFVCRHTF9NQVhfUFJPR1JBTV9URVhUVVJFX0dBVEhFUl9PRkZTRVQeR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQkxPQ0tTIkdMX01BWF9GUkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFMfR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUxlHTF9NQVhfRlJBTUVCVUZGRVJfSEVJR0hUGUdMX01BWF9GUkFNRUJVRkZFUl9MQVlFUlMaR0xfTUFYX0ZSQU1FQlVGRkVSX1NBTVBMRVMYR0xfTUFYX0ZSQU1FQlVGRkVSX1dJRFRIJkdMX01BWF9HRU9NRVRSWV9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTH0dMX01BWF9HRU9NRVRSWV9BVE9NSUNfQ09VTlRFUlMeR0xfTUFYX0dFT01FVFJZX0lNQUdFX1VOSUZPUk1TIEdMX01BWF9HRU9NRVRSWV9JTlBVVF9DT01QT05FTlRTIUdMX01BWF9HRU9NRVRSWV9PVVRQVVRfQ09NUE9ORU5UUx9HTF9NQVhfR0VPTUVUUllfT1VUUFVUX1ZFUlRJQ0VTIkdMX01BWF9HRU9NRVRSWV9TSEFERVJfSU5WT0NBVElPTlMlR0xfTUFYX0dFT01FVFJZX1NIQURFUl9TVE9SQUdFX0JMT0NLUyNHTF9NQVhfR0VPTUVUUllfVEVYVFVSRV9JTUFHRV9VTklUUydHTF9NQVhfR0VPTUVUUllfVE9UQUxfT1VUUFVUX0NPTVBPTkVOVFMeR0xfTUFYX0dFT01FVFJZX1VOSUZPUk1fQkxPQ0tTIkdMX01BWF9HRU9NRVRSWV9VTklGT1JNX0NPTVBPTkVOVFMWR0xfTUFYX0lOVEVHRVJfU0FNUExFUxNHTF9NQVhfTEFCRUxfTEVOR1RIG0dMX01BWF9QUk9HUkFNX1RFWEVMX09GRlNFVBhHTF9NQVhfUkVOREVSQlVGRkVSX1NJWkUYR0xfTUFYX1NBTVBMRV9NQVNLX1dPUkRTDkdMX01BWF9TQU1QTEVTGkdMX01BWF9TRVJWRVJfV0FJVF9USU1FT1VUIEdMX01BWF9TSEFERVJfU1RPUkFHRV9CTE9DS19TSVpFJUdMX01BWF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfQklORElOR1MqR0xfTUFYX1RFU1NfQ09OVFJPTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTI0dMX01BWF9URVNTX0NPTlRST0xfQVRPTUlDX0NPVU5URVJTIkdMX01BWF9URVNTX0NPTlRST0xfSU1BR0VfVU5JRk9STVMkR0xfTUFYX1RFU1NfQ09OVFJPTF9JTlBVVF9DT01QT05FTlRTJUdMX01BWF9URVNTX0NPTlRST0xfT1VUUFVUX0NPTVBPTkVOVFMpR0xfTUFYX1RFU1NfQ09OVFJPTF9TSEFERVJfU1RPUkFHRV9CTE9DS1MnR0xfTUFYX1RFU1NfQ09OVFJPTF9URVhUVVJFX0lNQUdFX1VOSVRTK0dMX01BWF9URVNTX0NPTlRST0xfVE9UQUxfT1VUUFVUX0NPTVBPTkVOVFMiR0xfTUFYX1RFU1NfQ09OVFJPTF9VTklGT1JNX0JMT0NLUyZHTF9NQVhfVEVTU19DT05UUk9MX1VOSUZPUk1fQ09NUE9ORU5UUy1HTF9NQVhfVEVTU19FVkFMVUFUSU9OX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMmR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9BVE9NSUNfQ09VTlRFUlMlR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9JTUFHRV9VTklGT1JNUydHTF9NQVhfVEVTU19FVkFMVUFUSU9OX0lOUFVUX0NPTVBPTkVOVFMoR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9PVVRQVVRfQ09NUE9ORU5UUyxHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1NIQURFUl9TVE9SQUdFX0JMT0NLUypHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1RFWFRVUkVfSU1BR0VfVU5JVFMlR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0JMT0NLUylHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1VOSUZPUk1fQ09NUE9ORU5UUxVHTF9NQVhfVEVTU19HRU5fTEVWRUwVR0xfTUFYX1BBVENIX1ZFUlRJQ0VTHEdMX01BWF9URVNTX1BBVENIX0NPTVBPTkVOVFMaR0xfTUFYX1RFWFRVUkVfQlVGRkVSX1NJWkUaR0xfTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMXR0xfTUFYX1RFWFRVUkVfTE9EX0JJQVMTR0xfTUFYX1RFWFRVUkVfU0laRTBHTF9NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX0lOVEVSTEVBVkVEX0NPTVBPTkVOVFMqR0xfTUFYX1RSQU5TRk9STV9GRUVEQkFDS19TRVBBUkFURV9BVFRSSUJTLUdMX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQ09NUE9ORU5UUxlHTF9NQVhfVU5JRk9STV9CTE9DS19TSVpFHkdMX01BWF9VTklGT1JNX0JVRkZFUl9CSU5ESU5HUxhHTF9NQVhfVU5JRk9STV9MT0NBVElPTlMZR0xfTUFYX1ZBUllJTkdfQ09NUE9ORU5UUxZHTF9NQVhfVkFSWUlOR19WRUNUT1JTHUdMX01BWF9WRVJURVhfQVRPTUlDX0NPVU5URVJTJEdMX01BWF9WRVJURVhfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx1HTF9NQVhfVkVSVEVYX0FUVFJJQl9CSU5ESU5HUxtHTF9NQVhfVkVSVEVYX0FUVFJJQl9TVFJJREUkR0xfTUFYX1ZFUlRFWF9BVFRSSUJfUkVMQVRJVkVfT0ZGU0VUFUdMX01BWF9WRVJURVhfQVRUUklCUxxHTF9NQVhfVkVSVEVYX0lNQUdFX1VOSUZPUk1TH0dMX01BWF9WRVJURVhfT1VUUFVUX0NPTVBPTkVOVFMjR0xfTUFYX1ZFUlRFWF9TSEFERVJfU1RPUkFHRV9CTE9DS1MhR0xfTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTHEdMX01BWF9WRVJURVhfVU5JRk9STV9CTE9DS1MgR0xfTUFYX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFMdR0xfTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMUR0xfTUFYX1ZJRVdQT1JUX0RJTVMkR0xfTUlOX0ZSQUdNRU5UX0lOVEVSUE9MQVRJT05fT0ZGU0VUG0dMX01JTl9QUk9HUkFNX1RFWEVMX09GRlNFVBtHTF9NSU5fU0FNUExFX1NIQURJTkdfVkFMVUUQR0xfTUlOT1JfVkVSU0lPTh9HTF9NVUxUSVNBTVBMRV9MSU5FX1dJRFRIX1JBTkdFJUdMX01VTFRJU0FNUExFX0xJTkVfV0lEVEhfR1JBTlVMQVJJVFkhR0xfTlVNX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTEUdMX05VTV9FWFRFTlNJT05THUdMX05VTV9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTHEdMX05VTV9TSEFERVJfQklOQVJZX0ZPUk1BVFMRR0xfUEFDS19BTElHTk1FTlQUR0xfUEFDS19JTUFHRV9IRUlHSFQSR0xfUEFDS19ST1dfTEVOR1RIE0dMX1BBQ0tfU0tJUF9JTUFHRVMTR0xfUEFDS19TS0lQX1BJWEVMUxFHTF9QQUNLX1NLSVBfUk9XUxFHTF9QQVRDSF9WRVJUSUNFUxxHTF9QSVhFTF9QQUNLX0JVRkZFUl9CSU5ESU5HHkdMX1BJWEVMX1VOUEFDS19CVUZGRVJfQklORElORxhHTF9QT0xZR09OX09GRlNFVF9GQUNUT1IWR0xfUE9MWUdPTl9PRkZTRVRfRklMTBdHTF9QT0xZR09OX09GRlNFVF9VTklUUxlHTF9QUklNSVRJVkVfQk9VTkRJTkdfQk9YIEdMX1BSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYGUdMX1BST0dSQU1fQklOQVJZX0ZPUk1BVFMbR0xfUFJPR1JBTV9QSVBFTElORV9CSU5ESU5HFUdMX1JBU1RFUklaRVJfRElTQ0FSRA5HTF9SRUFEX0JVRkZFUhtHTF9SRUFEX0ZSQU1FQlVGRkVSX0JJTkRJTkcLR0xfUkVEX0JJVFMXR0xfUkVOREVSQlVGRkVSX0JJTkRJTkceR0xfUkVTRVRfTk9USUZJQ0FUSU9OX1NUUkFURUdZG0dMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRRFHTF9TQU1QTEVfQlVGRkVSUxJHTF9TQU1QTEVfQ09WRVJBR0UZR0xfU0FNUExFX0NPVkVSQUdFX0lOVkVSVBhHTF9TQU1QTEVfQ09WRVJBR0VfVkFMVUURR0xfU0FNUExFX1NIQURJTkcSR0xfU0FNUExFUl9CSU5ESU5HCkdMX1NBTVBMRVMOR0xfU0NJU1NPUl9CT1gPR0xfU0NJU1NPUl9URVNUGEdMX1NIQURFUl9CSU5BUllfRk9STUFUUxJHTF9TSEFERVJfQ09NUElMRVIgR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX0JJTkRJTkcpR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX09GRlNFVF9BTElHTk1FTlQdR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX1NJWkUeR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX1NUQVJUFEdMX1NURU5DSUxfQkFDS19GQUlMFEdMX1NURU5DSUxfQkFDS19GVU5DH0dMX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZBSUwfR0xfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTUxNHTF9TVEVOQ0lMX0JBQ0tfUkVGGkdMX1NURU5DSUxfQkFDS19WQUxVRV9NQVNLGUdMX1NURU5DSUxfQkFDS19XUklURU1BU0sPR0xfU1RFTkNJTF9CSVRTFkdMX1NURU5DSUxfQ0xFQVJfVkFMVUUPR0xfU1RFTkNJTF9GQUlMD0dMX1NURU5DSUxfRlVOQxpHTF9TVEVOQ0lMX1BBU1NfREVQVEhfRkFJTBpHTF9TVEVOQ0lMX1BBU1NfREVQVEhfUEFTUw5HTF9TVEVOQ0lMX1JFRg9HTF9TVEVOQ0lMX1RFU1QVR0xfU1RFTkNJTF9WQUxVRV9NQVNLFEdMX1NURU5DSUxfV1JJVEVNQVNLEEdMX1NVQlBJWEVMX0JJVFMVR0xfVEVYVFVSRV9CSU5ESU5HXzJEH0dMX1RFWFRVUkVfQklORElOR19FWFRFUk5BTF9PRVMbR0xfVEVYVFVSRV9CSU5ESU5HXzJEX0FSUkFZIUdMX1RFWFRVUkVfQklORElOR18yRF9NVUxUSVNBTVBMRSdHTF9URVhUVVJFX0JJTkRJTkdfMkRfTVVMVElTQU1QTEVfQVJSQVkVR0xfVEVYVFVSRV9CSU5ESU5HXzNEGUdMX1RFWFRVUkVfQklORElOR19CVUZGRVIbR0xfVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQIUdMX1RFWFRVUkVfQklORElOR19DVUJFX01BUF9BUlJBWRlHTF9URVhUVVJFX0JVRkZFUl9CSU5ESU5HIkdMX1RFWFRVUkVfQlVGRkVSX09GRlNFVF9BTElHTk1FTlQcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0FDVElWRR1HTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQklORElORyRHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkchR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TSVpFIkdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU1RBUlQcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1BBVVNFRBlHTF9VTklGT1JNX0JVRkZFUl9CSU5ESU5HIkdMX1VOSUZPUk1fQlVGRkVSX09GRlNFVF9BTElHTk1FTlQWR0xfVU5JRk9STV9CVUZGRVJfU0laRRdHTF9VTklGT1JNX0JVRkZFUl9TVEFSVBNHTF9VTlBBQ0tfQUxJR05NRU5UFkdMX1VOUEFDS19JTUFHRV9IRUlHSFQUR0xfVU5QQUNLX1JPV19MRU5HVEgVR0xfVU5QQUNLX1NLSVBfSU1BR0VTFUdMX1VOUEFDS19TS0lQX1BJWEVMUxNHTF9VTlBBQ0tfU0tJUF9ST1dTF0dMX1ZFUlRFWF9BUlJBWV9CSU5ESU5HGUdMX1ZFUlRFWF9CSU5ESU5HX0RJVklTT1IYR0xfVkVSVEVYX0JJTkRJTkdfT0ZGU0VUGEdMX1ZFUlRFWF9CSU5ESU5HX1NUUklERQtHTF9WSUVXUE9SVCFHTF9NQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQTR0xfR1BVX0RJU0pPSU5UX0VYVIZHBIZJBoZLCIZNCg1nbEdldEJvb2xlYW52BnZhbHVlcwQBAgIYZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpNjR2AoZPDIZRCIZTChhnbEdldEJ1ZmZlclBhcmFtZXRlcmk2NHYGdGFyZ2V0DQ9HTF9BUlJBWV9CVUZGRVIXR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVITR0xfQ09QWV9SRUFEX0JVRkZFUhRHTF9DT1BZX1dSSVRFX0JVRkZFUhRHTF9QSVhFTF9QQUNLX0JVRkZFUhZHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSHEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIRR0xfVU5JRk9STV9CVUZGRVIYR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSG0dMX0RJU1BBVENIX0lORElSRUNUX0JVRkZFUhdHTF9EUkFXX0lORElSRUNUX0JVRkZFUhhHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVIRR0xfVEVYVFVSRV9CVUZGRVKGVQyGVwiGWQoYZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpNjR2CXBhcmFtZXRlcgYOR0xfQlVGRkVSX1NJWkUPR0xfQlVGRkVSX1VTQUdFFkdMX0JVRkZFUl9BQ0NFU1NfRkxBR1MQR0xfQlVGRkVSX01BUFBFRBRHTF9CVUZGRVJfTUFQX0xFTkdUSBRHTF9CVUZGRVJfTUFQX09GRlNFVAIWZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdgKGWwyGXQiGXwoWZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdgZ0YXJnZXQND0dMX0FSUkFZX0JVRkZFUhdHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUhNHTF9DT1BZX1JFQURfQlVGRkVSFEdMX0NPUFlfV1JJVEVfQlVGRkVSFEdMX1BJWEVMX1BBQ0tfQlVGRkVSFkdMX1BJWEVMX1VOUEFDS19CVUZGRVIcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUhFHTF9VTklGT1JNX0JVRkZFUhhHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVIbR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSF0dMX0RSQVdfSU5ESVJFQ1RfQlVGRkVSGEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUhFHTF9URVhUVVJFX0JVRkZFUoZhDIZjCIZlChZnbEdldEJ1ZmZlclBhcmFtZXRlcml2CXBhcmFtZXRlcgYOR0xfQlVGRkVSX1NJWkUPR0xfQlVGRkVSX1VTQUdFFkdMX0JVRkZFUl9BQ0NFU1NfRkxBR1MQR0xfQlVGRkVSX01BUFBFRBRHTF9CVUZGRVJfTUFQX0xFTkdUSBRHTF9CVUZGRVJfTUFQX09GRlNFVAITZ2xHZXRCdWZmZXJQb2ludGVydgOGZwyGaQiGawoTZ2xHZXRCdWZmZXJQb2ludGVydgZ0YXJnZXQND0dMX0FSUkFZX0JVRkZFUhNHTF9DT1BZX1JFQURfQlVGRkVSFEdMX0NPUFlfV1JJVEVfQlVGRkVSF0dMX0VMRU1FTlRfQVJSQVlfQlVGRkVSFEdMX1BJWEVMX1BBQ0tfQlVGRkVSFkdMX1BJWEVMX1VOUEFDS19CVUZGRVIcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUhFHTF9VTklGT1JNX0JVRkZFUhhHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVIbR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSF0dMX0RSQVdfSU5ESVJFQ1RfQlVGRkVSGEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUhFHTF9URVhUVVJFX0JVRkZFUoZtDIZvCIZxChNnbEdldEJ1ZmZlclBvaW50ZXJ2BXBuYW1lARVHTF9CVUZGRVJfTUFQX1BPSU5URVKGcwSGdQaGdwiGeQoTZ2xHZXRCdWZmZXJQb2ludGVydgZwYXJhbXMEAQICFmdsR2V0QnVmZmVyUG9pbnRlcnZPRVMDhnsMhn0Ihn8KFmdsR2V0QnVmZmVyUG9pbnRlcnZPRVMGdGFyZ2V0DQ9HTF9BUlJBWV9CVUZGRVITR0xfQ09QWV9SRUFEX0JVRkZFUhRHTF9DT1BZX1dSSVRFX0JVRkZFUhdHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUhRHTF9QSVhFTF9QQUNLX0JVRkZFUhZHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSHEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIRR0xfVU5JRk9STV9CVUZGRVIYR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSG0dMX0RJU1BBVENIX0lORElSRUNUX0JVRkZFUhdHTF9EUkFXX0lORElSRUNUX0JVRkZFUhhHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVIRR0xfVEVYVFVSRV9CVUZGRVKGgQyGgwiGhQoWZ2xHZXRCdWZmZXJQb2ludGVydk9FUwVwbmFtZQEVR0xfQlVGRkVSX01BUF9QT0lOVEVShocEhokGhosIho0KFmdsR2V0QnVmZmVyUG9pbnRlcnZPRVMGcGFyYW1zBAECAhRnbEdldERlYnVnTWVzc2FnZUxvZwaGjwSGkQaGkwiGlQoUZ2xHZXREZWJ1Z01lc3NhZ2VMb2cHc291cmNlcwQBAoaXBIaZBoabCIadChRnbEdldERlYnVnTWVzc2FnZUxvZwV0eXBlcwQBAoafBIahBoajCIalChRnbEdldERlYnVnTWVzc2FnZUxvZwNpZHMEAQKGpwSGqQaGqwiGrQoUZ2xHZXREZWJ1Z01lc3NhZ2VMb2cKc2V2ZXJpdGllcwQBAoavBIaxBoazCIa1ChRnbEdldERlYnVnTWVzc2FnZUxvZwdsZW5ndGhzBAEChrcEhrkGhrsIhr0KFGdsR2V0RGVidWdNZXNzYWdlTG9nCm1lc3NhZ2VMb2cEAQICF2dsR2V0RGVidWdNZXNzYWdlTG9nS0hSBoa/BIbBBobDCIbFChdnbEdldERlYnVnTWVzc2FnZUxvZ0tIUgdzb3VyY2VzBAEChscEhskGhssIhs0KF2dsR2V0RGVidWdNZXNzYWdlTG9nS0hSBXR5cGVzBAEChs8EhtEGhtMIhtUKF2dsR2V0RGVidWdNZXNzYWdlTG9nS0hSA2lkcwQBAobXBIbZBobbCIbdChdnbEdldERlYnVnTWVzc2FnZUxvZ0tIUgpzZXZlcml0aWVzBAECht8EhuEGhuMIhuUKF2dsR2V0RGVidWdNZXNzYWdlTG9nS0hSB2xlbmd0aHMEAQKG5wSG6QaG6wiG7QoXZ2xHZXREZWJ1Z01lc3NhZ2VMb2dLSFIKbWVzc2FnZUxvZwQBAgILZ2xHZXRGbG9hdHYChu8MhvEIhvMKC2dsR2V0RmxvYXR2BXBhcmFtgSoRR0xfQUNUSVZFX1RFWFRVUkUbR0xfQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFG0dMX0FMSUFTRURfUE9JTlRfU0laRV9SQU5HRQ1HTF9BTFBIQV9CSVRTF0dMX0FSUkFZX0JVRkZFUl9CSU5ESU5HIEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9CSU5ESU5HHUdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TSVpFHkdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TVEFSVAhHTF9CTEVORA5HTF9CTEVORF9DT0xPUhJHTF9CTEVORF9EU1RfQUxQSEEQR0xfQkxFTkRfRFNUX1JHQhdHTF9CTEVORF9FUVVBVElPTl9BTFBIQRVHTF9CTEVORF9FUVVBVElPTl9SR0ISR0xfQkxFTkRfU1JDX0FMUEhBEEdMX0JMRU5EX1NSQ19SR0IMR0xfQkxVRV9CSVRTFEdMX0NPTE9SX0NMRUFSX1ZBTFVFEkdMX0NPTE9SX1dSSVRFTUFTSx1HTF9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUxBHTF9DT05URVhUX0ZMQUdTGEdMX0NPTlRFWFRfUk9CVVNUX0FDQ0VTUxtHTF9DT1BZX1JFQURfQlVGRkVSX0JJTkRJTkccR0xfQ09QWV9XUklURV9CVUZGRVJfQklORElORwxHTF9DVUxMX0ZBQ0URR0xfQ1VMTF9GQUNFX01PREUSR0xfQ1VSUkVOVF9QUk9HUkFNGkdMX0RFQlVHX0dST1VQX1NUQUNLX0RFUFRIGEdMX0RFQlVHX0xPR0dFRF9NRVNTQUdFUyNHTF9ERUJVR19ORVhUX0xPR0dFRF9NRVNTQUdFX0xFTkdUSA1HTF9ERVBUSF9CSVRTFEdMX0RFUFRIX0NMRUFSX1ZBTFVFDUdMX0RFUFRIX0ZVTkMOR0xfREVQVEhfUkFOR0UNR0xfREVQVEhfVEVTVBJHTF9ERVBUSF9XUklURU1BU0sjR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSX0JJTkRJTkcJR0xfRElUSEVSDkdMX0RSQVdfQlVGRkVSD0dMX0RSQVdfQlVGRkVSMA9HTF9EUkFXX0JVRkZFUjEPR0xfRFJBV19CVUZGRVIyD0dMX0RSQVdfQlVGRkVSMw9HTF9EUkFXX0JVRkZFUjQPR0xfRFJBV19CVUZGRVI1D0dMX0RSQVdfQlVGRkVSNg9HTF9EUkFXX0JVRkZFUjcPR0xfRFJBV19CVUZGRVI4D0dMX0RSQVdfQlVGRkVSORBHTF9EUkFXX0JVRkZFUjEwEEdMX0RSQVdfQlVGRkVSMTEQR0xfRFJBV19CVUZGRVIxMhBHTF9EUkFXX0JVRkZFUjEzEEdMX0RSQVdfQlVGRkVSMTQQR0xfRFJBV19CVUZGRVIxNRtHTF9EUkFXX0ZSQU1FQlVGRkVSX0JJTkRJTkcfR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORyVHTF9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVF9CSVRTIkdMX0ZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlQNR0xfRlJPTlRfRkFDRRdHTF9HRU5FUkFURV9NSVBNQVBfSElOVA1HTF9HUkVFTl9CSVRTFUdMX0lNQUdFX0JJTkRJTkdfTkFNRRZHTF9JTUFHRV9CSU5ESU5HX0xFVkVMGEdMX0lNQUdFX0JJTkRJTkdfTEFZRVJFRBZHTF9JTUFHRV9CSU5ESU5HX0xBWUVSF0dMX0lNQUdFX0JJTkRJTkdfQUNDRVNTF0dMX0lNQUdFX0JJTkRJTkdfRk9STUFUI0dMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfRk9STUFUIUdMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfVFlQRRlHTF9MQVlFUl9QUk9WT0tJTkdfVkVSVEVYDUdMX0xJTkVfV0lEVEgqR0xfUFJJTUlUSVZFX1JFU1RBUlRfRk9SX1BBVENIRVNfU1VQUE9SVEVEEEdMX01BSk9SX1ZFUlNJT04WR0xfTUFYXzNEX1RFWFRVUkVfU0laRRtHTF9NQVhfQVJSQVlfVEVYVFVSRV9MQVlFUlMlR0xfTUFYX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9CSU5ESU5HUyFHTF9NQVhfQVRPTUlDX0NPVU5URVJfQlVGRkVSX1NJWkUmR0xfTUFYX0NPTUJJTkVEX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMYR0xfTUFYX0NPTE9SX0FUVEFDSE1FTlRTHEdMX01BWF9DT0xPUl9URVhUVVJFX1NBTVBMRVMcR0xfTUFYX0RFUFRIX1RFWFRVUkVfU0FNUExFUx9HTF9NQVhfQ09NQklORURfQVRPTUlDX0NPVU5URVJTEkdMX01BWF9JTUFHRV9VTklUUypHTF9NQVhfQ09NQklORURfQ09NUFVURV9VTklGT1JNX0NPTVBPTkVOVFMrR0xfTUFYX0NPTUJJTkVEX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UUytHTF9NQVhfQ09NQklORURfR0VPTUVUUllfVU5JRk9STV9DT01QT05FTlRTJUdMX01BWF9DT01CSU5FRF9TSEFERVJfU1RPUkFHRV9CTE9DS1MvR0xfTUFYX0NPTUJJTkVEX1RFU1NfQ09OVFJPTF9VTklGT1JNX0NPTVBPTkVOVFMyR0xfTUFYX0NPTUJJTkVEX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0NPTVBPTkVOVFMjR0xfTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMnR0xfTUFYX0NPTUJJTkVEX1NIQURFUl9PVVRQVVRfUkVTT1VSQ0VTHkdMX01BWF9DT01CSU5FRF9VTklGT1JNX0JMT0NLUylHTF9NQVhfQ09NQklORURfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUyVHTF9NQVhfQ09NUFVURV9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTHkdMX01BWF9DT01QVVRFX0FUT01JQ19DT1VOVEVSUx1HTF9NQVhfQ09NUFVURV9JTUFHRV9VTklGT1JNUx5HTF9NQVhfQ09NQklORURfSU1BR0VfVU5JRk9STVMkR0xfTUFYX0NPTVBVVEVfU0hBREVSX1NUT1JBR0VfQkxPQ0tTIkdMX01BWF9DT01QVVRFX1RFWFRVUkVfSU1BR0VfVU5JVFMhR0xfTUFYX0NPTVBVVEVfU0hBUkVEX01FTU9SWV9TSVpFHUdMX01BWF9DT01QVVRFX1VOSUZPUk1fQkxPQ0tTIUdMX01BWF9DT01QVVRFX1VOSUZPUk1fQ09NUE9ORU5UUx9HTF9NQVhfQ09NUFVURV9XT1JLX0dST1VQX0NPVU5UJUdMX01BWF9DT01QVVRFX1dPUktfR1JPVVBfSU5WT0NBVElPTlMeR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9TSVpFHEdMX01BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUeR0xfTUFYX0RFQlVHX0dST1VQX1NUQUNLX0RFUFRIHEdMX01BWF9ERUJVR19MT0dHRURfTUVTU0FHRVMbR0xfTUFYX0RFQlVHX01FU1NBR0VfTEVOR1RIE0dMX01BWF9EUkFXX0JVRkZFUlMUR0xfTUFYX0VMRU1FTlRfSU5ERVgXR0xfTUFYX0VMRU1FTlRTX0lORElDRVMYR0xfTUFYX0VMRU1FTlRTX1ZFUlRJQ0VTJkdMX01BWF9GUkFHTUVOVF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTH0dMX01BWF9GUkFHTUVOVF9BVE9NSUNfQ09VTlRFUlMeR0xfTUFYX0ZSQUdNRU5UX0lNQUdFX1VOSUZPUk1TIEdMX01BWF9GUkFHTUVOVF9JTlBVVF9DT01QT05FTlRTJEdMX01BWF9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVCVHTF9NQVhfRlJBR01FTlRfU0hBREVSX1NUT1JBR0VfQkxPQ0tTJEdMX01JTl9QUk9HUkFNX1RFWFRVUkVfR0FUSEVSX09GRlNFVCRHTF9NQVhfUFJPR1JBTV9URVhUVVJFX0dBVEhFUl9PRkZTRVQeR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQkxPQ0tTIkdMX01BWF9GUkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFMfR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUxlHTF9NQVhfRlJBTUVCVUZGRVJfSEVJR0hUGUdMX01BWF9GUkFNRUJVRkZFUl9MQVlFUlMaR0xfTUFYX0ZSQU1FQlVGRkVSX1NBTVBMRVMYR0xfTUFYX0ZSQU1FQlVGRkVSX1dJRFRIJkdMX01BWF9HRU9NRVRSWV9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTH0dMX01BWF9HRU9NRVRSWV9BVE9NSUNfQ09VTlRFUlMeR0xfTUFYX0dFT01FVFJZX0lNQUdFX1VOSUZPUk1TIEdMX01BWF9HRU9NRVRSWV9JTlBVVF9DT01QT05FTlRTIUdMX01BWF9HRU9NRVRSWV9PVVRQVVRfQ09NUE9ORU5UUx9HTF9NQVhfR0VPTUVUUllfT1VUUFVUX1ZFUlRJQ0VTIkdMX01BWF9HRU9NRVRSWV9TSEFERVJfSU5WT0NBVElPTlMlR0xfTUFYX0dFT01FVFJZX1NIQURFUl9TVE9SQUdFX0JMT0NLUyNHTF9NQVhfR0VPTUVUUllfVEVYVFVSRV9JTUFHRV9VTklUUydHTF9NQVhfR0VPTUVUUllfVE9UQUxfT1VUUFVUX0NPTVBPTkVOVFMeR0xfTUFYX0dFT01FVFJZX1VOSUZPUk1fQkxPQ0tTIkdMX01BWF9HRU9NRVRSWV9VTklGT1JNX0NPTVBPTkVOVFMWR0xfTUFYX0lOVEVHRVJfU0FNUExFUxNHTF9NQVhfTEFCRUxfTEVOR1RIG0dMX01BWF9QUk9HUkFNX1RFWEVMX09GRlNFVBhHTF9NQVhfUkVOREVSQlVGRkVSX1NJWkUYR0xfTUFYX1NBTVBMRV9NQVNLX1dPUkRTDkdMX01BWF9TQU1QTEVTGkdMX01BWF9TRVJWRVJfV0FJVF9USU1FT1VUIEdMX01BWF9TSEFERVJfU1RPUkFHRV9CTE9DS19TSVpFJUdMX01BWF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfQklORElOR1MqR0xfTUFYX1RFU1NfQ09OVFJPTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTI0dMX01BWF9URVNTX0NPTlRST0xfQVRPTUlDX0NPVU5URVJTIkdMX01BWF9URVNTX0NPTlRST0xfSU1BR0VfVU5JRk9STVMkR0xfTUFYX1RFU1NfQ09OVFJPTF9JTlBVVF9DT01QT05FTlRTJUdMX01BWF9URVNTX0NPTlRST0xfT1VUUFVUX0NPTVBPTkVOVFMpR0xfTUFYX1RFU1NfQ09OVFJPTF9TSEFERVJfU1RPUkFHRV9CTE9DS1MnR0xfTUFYX1RFU1NfQ09OVFJPTF9URVhUVVJFX0lNQUdFX1VOSVRTK0dMX01BWF9URVNTX0NPTlRST0xfVE9UQUxfT1VUUFVUX0NPTVBPTkVOVFMiR0xfTUFYX1RFU1NfQ09OVFJPTF9VTklGT1JNX0JMT0NLUyZHTF9NQVhfVEVTU19DT05UUk9MX1VOSUZPUk1fQ09NUE9ORU5UUy1HTF9NQVhfVEVTU19FVkFMVUFUSU9OX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMmR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9BVE9NSUNfQ09VTlRFUlMlR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9JTUFHRV9VTklGT1JNUydHTF9NQVhfVEVTU19FVkFMVUFUSU9OX0lOUFVUX0NPTVBPTkVOVFMoR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9PVVRQVVRfQ09NUE9ORU5UUyxHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1NIQURFUl9TVE9SQUdFX0JMT0NLUypHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1RFWFRVUkVfSU1BR0VfVU5JVFMlR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0JMT0NLUylHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1VOSUZPUk1fQ09NUE9ORU5UUxVHTF9NQVhfVEVTU19HRU5fTEVWRUwVR0xfTUFYX1BBVENIX1ZFUlRJQ0VTHEdMX01BWF9URVNTX1BBVENIX0NPTVBPTkVOVFMaR0xfTUFYX1RFWFRVUkVfQlVGRkVSX1NJWkUaR0xfTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMXR0xfTUFYX1RFWFRVUkVfTE9EX0JJQVMTR0xfTUFYX1RFWFRVUkVfU0laRTBHTF9NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX0lOVEVSTEVBVkVEX0NPTVBPTkVOVFMqR0xfTUFYX1RSQU5TRk9STV9GRUVEQkFDS19TRVBBUkFURV9BVFRSSUJTLUdMX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQ09NUE9ORU5UUxlHTF9NQVhfVU5JRk9STV9CTE9DS19TSVpFHkdMX01BWF9VTklGT1JNX0JVRkZFUl9CSU5ESU5HUxhHTF9NQVhfVU5JRk9STV9MT0NBVElPTlMZR0xfTUFYX1ZBUllJTkdfQ09NUE9ORU5UUxZHTF9NQVhfVkFSWUlOR19WRUNUT1JTHUdMX01BWF9WRVJURVhfQVRPTUlDX0NPVU5URVJTJEdMX01BWF9WRVJURVhfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx1HTF9NQVhfVkVSVEVYX0FUVFJJQl9CSU5ESU5HUxtHTF9NQVhfVkVSVEVYX0FUVFJJQl9TVFJJREUkR0xfTUFYX1ZFUlRFWF9BVFRSSUJfUkVMQVRJVkVfT0ZGU0VUFUdMX01BWF9WRVJURVhfQVRUUklCUxxHTF9NQVhfVkVSVEVYX0lNQUdFX1VOSUZPUk1TH0dMX01BWF9WRVJURVhfT1VUUFVUX0NPTVBPTkVOVFMjR0xfTUFYX1ZFUlRFWF9TSEFERVJfU1RPUkFHRV9CTE9DS1MhR0xfTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTHEdMX01BWF9WRVJURVhfVU5JRk9STV9CTE9DS1MgR0xfTUFYX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFMdR0xfTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMUR0xfTUFYX1ZJRVdQT1JUX0RJTVMkR0xfTUlOX0ZSQUdNRU5UX0lOVEVSUE9MQVRJT05fT0ZGU0VUG0dMX01JTl9QUk9HUkFNX1RFWEVMX09GRlNFVBtHTF9NSU5fU0FNUExFX1NIQURJTkdfVkFMVUUQR0xfTUlOT1JfVkVSU0lPTh9HTF9NVUxUSVNBTVBMRV9MSU5FX1dJRFRIX1JBTkdFJUdMX01VTFRJU0FNUExFX0xJTkVfV0lEVEhfR1JBTlVMQVJJVFkhR0xfTlVNX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTEUdMX05VTV9FWFRFTlNJT05THUdMX05VTV9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTHEdMX05VTV9TSEFERVJfQklOQVJZX0ZPUk1BVFMRR0xfUEFDS19BTElHTk1FTlQUR0xfUEFDS19JTUFHRV9IRUlHSFQSR0xfUEFDS19ST1dfTEVOR1RIE0dMX1BBQ0tfU0tJUF9JTUFHRVMTR0xfUEFDS19TS0lQX1BJWEVMUxFHTF9QQUNLX1NLSVBfUk9XUxFHTF9QQVRDSF9WRVJUSUNFUxxHTF9QSVhFTF9QQUNLX0JVRkZFUl9CSU5ESU5HHkdMX1BJWEVMX1VOUEFDS19CVUZGRVJfQklORElORxhHTF9QT0xZR09OX09GRlNFVF9GQUNUT1IWR0xfUE9MWUdPTl9PRkZTRVRfRklMTBdHTF9QT0xZR09OX09GRlNFVF9VTklUUxlHTF9QUklNSVRJVkVfQk9VTkRJTkdfQk9YIEdMX1BSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYGUdMX1BST0dSQU1fQklOQVJZX0ZPUk1BVFMbR0xfUFJPR1JBTV9QSVBFTElORV9CSU5ESU5HFUdMX1JBU1RFUklaRVJfRElTQ0FSRA5HTF9SRUFEX0JVRkZFUhtHTF9SRUFEX0ZSQU1FQlVGRkVSX0JJTkRJTkcLR0xfUkVEX0JJVFMXR0xfUkVOREVSQlVGRkVSX0JJTkRJTkceR0xfUkVTRVRfTk9USUZJQ0FUSU9OX1NUUkFURUdZG0dMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRRFHTF9TQU1QTEVfQlVGRkVSUxJHTF9TQU1QTEVfQ09WRVJBR0UZR0xfU0FNUExFX0NPVkVSQUdFX0lOVkVSVBhHTF9TQU1QTEVfQ09WRVJBR0VfVkFMVUURR0xfU0FNUExFX1NIQURJTkcSR0xfU0FNUExFUl9CSU5ESU5HCkdMX1NBTVBMRVMOR0xfU0NJU1NPUl9CT1gPR0xfU0NJU1NPUl9URVNUGEdMX1NIQURFUl9CSU5BUllfRk9STUFUUxJHTF9TSEFERVJfQ09NUElMRVIgR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX0JJTkRJTkcpR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX09GRlNFVF9BTElHTk1FTlQdR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX1NJWkUeR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX1NUQVJUFEdMX1NURU5DSUxfQkFDS19GQUlMFEdMX1NURU5DSUxfQkFDS19GVU5DH0dMX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZBSUwfR0xfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTUxNHTF9TVEVOQ0lMX0JBQ0tfUkVGGkdMX1NURU5DSUxfQkFDS19WQUxVRV9NQVNLGUdMX1NURU5DSUxfQkFDS19XUklURU1BU0sPR0xfU1RFTkNJTF9CSVRTFkdMX1NURU5DSUxfQ0xFQVJfVkFMVUUPR0xfU1RFTkNJTF9GQUlMD0dMX1NURU5DSUxfRlVOQxpHTF9TVEVOQ0lMX1BBU1NfREVQVEhfRkFJTBpHTF9TVEVOQ0lMX1BBU1NfREVQVEhfUEFTUw5HTF9TVEVOQ0lMX1JFRg9HTF9TVEVOQ0lMX1RFU1QVR0xfU1RFTkNJTF9WQUxVRV9NQVNLFEdMX1NURU5DSUxfV1JJVEVNQVNLEEdMX1NVQlBJWEVMX0JJVFMVR0xfVEVYVFVSRV9CSU5ESU5HXzJEH0dMX1RFWFRVUkVfQklORElOR19FWFRFUk5BTF9PRVMbR0xfVEVYVFVSRV9CSU5ESU5HXzJEX0FSUkFZIUdMX1RFWFRVUkVfQklORElOR18yRF9NVUxUSVNBTVBMRSdHTF9URVhUVVJFX0JJTkRJTkdfMkRfTVVMVElTQU1QTEVfQVJSQVkVR0xfVEVYVFVSRV9CSU5ESU5HXzNEGUdMX1RFWFRVUkVfQklORElOR19CVUZGRVIbR0xfVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQIUdMX1RFWFRVUkVfQklORElOR19DVUJFX01BUF9BUlJBWRlHTF9URVhUVVJFX0JVRkZFUl9CSU5ESU5HIkdMX1RFWFRVUkVfQlVGRkVSX09GRlNFVF9BTElHTk1FTlQcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0FDVElWRR1HTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQklORElORyRHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkchR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TSVpFIkdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU1RBUlQcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1BBVVNFRBlHTF9VTklGT1JNX0JVRkZFUl9CSU5ESU5HIkdMX1VOSUZPUk1fQlVGRkVSX09GRlNFVF9BTElHTk1FTlQWR0xfVU5JRk9STV9CVUZGRVJfU0laRRdHTF9VTklGT1JNX0JVRkZFUl9TVEFSVBNHTF9VTlBBQ0tfQUxJR05NRU5UFkdMX1VOUEFDS19JTUFHRV9IRUlHSFQUR0xfVU5QQUNLX1JPV19MRU5HVEgVR0xfVU5QQUNLX1NLSVBfSU1BR0VTFUdMX1VOUEFDS19TS0lQX1BJWEVMUxNHTF9VTlBBQ0tfU0tJUF9ST1dTF0dMX1ZFUlRFWF9BUlJBWV9CSU5ESU5HGUdMX1ZFUlRFWF9CSU5ESU5HX0RJVklTT1IYR0xfVkVSVEVYX0JJTkRJTkdfT0ZGU0VUGEdMX1ZFUlRFWF9CSU5ESU5HX1NUUklERQtHTF9WSUVXUE9SVCFHTF9NQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQTR0xfR1BVX0RJU0pPSU5UX0VYVIb1BIb3Bob5CIb7CgtnbEdldEZsb2F0dgZ2YWx1ZXMEAQICJWdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYDhv0Mhv8IhwEKJWdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYSZnJhbWVidWZmZXJfdGFyZ2V0Aw5HTF9GUkFNRUJVRkZFUhNHTF9EUkFXX0ZSQU1FQlVGRkVSE0dMX1JFQURfRlJBTUVCVUZGRVKHAwyHBQiHBwolZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdgphdHRhY2htZW50FhRHTF9DT0xPUl9BVFRBQ0hNRU5UMBNHTF9ERVBUSF9BVFRBQ0hNRU5UFUdMX1NURU5DSUxfQVRUQUNITUVOVAdHTF9CQUNLFEdMX0NPTE9SX0FUVEFDSE1FTlQxFUdMX0NPTE9SX0FUVEFDSE1FTlQxMBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTEVR0xfQ09MT1JfQVRUQUNITUVOVDEyFUdMX0NPTE9SX0FUVEFDSE1FTlQxMxVHTF9DT0xPUl9BVFRBQ0hNRU5UMTQVR0xfQ09MT1JfQVRUQUNITUVOVDE1FEdMX0NPTE9SX0FUVEFDSE1FTlQyFEdMX0NPTE9SX0FUVEFDSE1FTlQzFEdMX0NPTE9SX0FUVEFDSE1FTlQ0FEdMX0NPTE9SX0FUVEFDSE1FTlQ1FEdMX0NPTE9SX0FUVEFDSE1FTlQ2FEdMX0NPTE9SX0FUVEFDSE1FTlQ3FEdMX0NPTE9SX0FUVEFDSE1FTlQ4FEdMX0NPTE9SX0FUVEFDSE1FTlQ5CEdMX0RFUFRIG0dMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVApHTF9TVEVOQ0lMhwkMhwsIhw0KJWdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYJcGFyYW1ldGVyDiVHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FJUdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUvR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0UnR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMJEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQUxQSEFfU0laRSNHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0JMVUVfU0laRShHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5HKEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09NUE9ORU5UX1RZUEUkR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9ERVBUSF9TSVpFJEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfR1JFRU5fU0laRSJHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1JFRF9TSVpFJkdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfU1RFTkNJTF9TSVpFJ0dMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MQVlFUiFHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0xBWUVSRUQCG2dsR2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdgKHDwyHEQiHEwobZ2xHZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2BnRhcmdldAMOR0xfRlJBTUVCVUZGRVITR0xfRFJBV19GUkFNRUJVRkZFUhNHTF9SRUFEX0ZSQU1FQlVGRkVShxUMhxcIhxkKG2dsR2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdgVwbmFtZQUtR0xfRlJBTUVCVUZGRVJfREVGQVVMVF9GSVhFRF9TQU1QTEVfTE9DQVRJT05THUdMX0ZSQU1FQlVGRkVSX0RFRkFVTFRfSEVJR0hUHkdMX0ZSQU1FQlVGRkVSX0RFRkFVTFRfU0FNUExFUxxHTF9GUkFNRUJVRkZFUl9ERUZBVUxUX1dJRFRIHUdMX0ZSQU1FQlVGRkVSX0RFRkFVTFRfTEFZRVJTAhFnbEdldEludGVnZXI2NGlfdgKHGwyHHQiHHwoRZ2xHZXRJbnRlZ2VyNjRpX3YFcGFyYW2BKhFHTF9BQ1RJVkVfVEVYVFVSRRtHTF9BTElBU0VEX0xJTkVfV0lEVEhfUkFOR0UbR0xfQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFDUdMX0FMUEhBX0JJVFMXR0xfQVJSQVlfQlVGRkVSX0JJTkRJTkcgR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSX0JJTkRJTkcdR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSX1NJWkUeR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSX1NUQVJUCEdMX0JMRU5EDkdMX0JMRU5EX0NPTE9SEkdMX0JMRU5EX0RTVF9BTFBIQRBHTF9CTEVORF9EU1RfUkdCF0dMX0JMRU5EX0VRVUFUSU9OX0FMUEhBFUdMX0JMRU5EX0VRVUFUSU9OX1JHQhJHTF9CTEVORF9TUkNfQUxQSEEQR0xfQkxFTkRfU1JDX1JHQgxHTF9CTFVFX0JJVFMUR0xfQ09MT1JfQ0xFQVJfVkFMVUUSR0xfQ09MT1JfV1JJVEVNQVNLHUdMX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTEEdMX0NPTlRFWFRfRkxBR1MYR0xfQ09OVEVYVF9ST0JVU1RfQUNDRVNTG0dMX0NPUFlfUkVBRF9CVUZGRVJfQklORElORxxHTF9DT1BZX1dSSVRFX0JVRkZFUl9CSU5ESU5HDEdMX0NVTExfRkFDRRFHTF9DVUxMX0ZBQ0VfTU9ERRJHTF9DVVJSRU5UX1BST0dSQU0aR0xfREVCVUdfR1JPVVBfU1RBQ0tfREVQVEgYR0xfREVCVUdfTE9HR0VEX01FU1NBR0VTI0dMX0RFQlVHX05FWFRfTE9HR0VEX01FU1NBR0VfTEVOR1RIDUdMX0RFUFRIX0JJVFMUR0xfREVQVEhfQ0xFQVJfVkFMVUUNR0xfREVQVEhfRlVOQw5HTF9ERVBUSF9SQU5HRQ1HTF9ERVBUSF9URVNUEkdMX0RFUFRIX1dSSVRFTUFTSyNHTF9ESVNQQVRDSF9JTkRJUkVDVF9CVUZGRVJfQklORElORwlHTF9ESVRIRVIOR0xfRFJBV19CVUZGRVIPR0xfRFJBV19CVUZGRVIwD0dMX0RSQVdfQlVGRkVSMQ9HTF9EUkFXX0JVRkZFUjIPR0xfRFJBV19CVUZGRVIzD0dMX0RSQVdfQlVGRkVSNA9HTF9EUkFXX0JVRkZFUjUPR0xfRFJBV19CVUZGRVI2D0dMX0RSQVdfQlVGRkVSNw9HTF9EUkFXX0JVRkZFUjgPR0xfRFJBV19CVUZGRVI5EEdMX0RSQVdfQlVGRkVSMTAQR0xfRFJBV19CVUZGRVIxMRBHTF9EUkFXX0JVRkZFUjEyEEdMX0RSQVdfQlVGRkVSMTMQR0xfRFJBV19CVUZGRVIxNBBHTF9EUkFXX0JVRkZFUjE1G0dMX0RSQVdfRlJBTUVCVUZGRVJfQklORElORx9HTF9FTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HJUdMX0ZSQUdNRU5UX0lOVEVSUE9MQVRJT05fT0ZGU0VUX0JJVFMiR0xfRlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVA1HTF9GUk9OVF9GQUNFF0dMX0dFTkVSQVRFX01JUE1BUF9ISU5UDUdMX0dSRUVOX0JJVFMVR0xfSU1BR0VfQklORElOR19OQU1FFkdMX0lNQUdFX0JJTkRJTkdfTEVWRUwYR0xfSU1BR0VfQklORElOR19MQVlFUkVEFkdMX0lNQUdFX0JJTkRJTkdfTEFZRVIXR0xfSU1BR0VfQklORElOR19BQ0NFU1MXR0xfSU1BR0VfQklORElOR19GT1JNQVQjR0xfSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9GT1JNQVQhR0xfSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9UWVBFGUdMX0xBWUVSX1BST1ZPS0lOR19WRVJURVgNR0xfTElORV9XSURUSCpHTF9QUklNSVRJVkVfUkVTVEFSVF9GT1JfUEFUQ0hFU19TVVBQT1JURUQQR0xfTUFKT1JfVkVSU0lPThZHTF9NQVhfM0RfVEVYVFVSRV9TSVpFG0dMX01BWF9BUlJBWV9URVhUVVJFX0xBWUVSUyVHTF9NQVhfQVRPTUlDX0NPVU5URVJfQlVGRkVSX0JJTkRJTkdTIUdMX01BWF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfU0laRSZHTF9NQVhfQ09NQklORURfQVRPTUlDX0NPVU5URVJfQlVGRkVSUxhHTF9NQVhfQ09MT1JfQVRUQUNITUVOVFMcR0xfTUFYX0NPTE9SX1RFWFRVUkVfU0FNUExFUxxHTF9NQVhfREVQVEhfVEVYVFVSRV9TQU1QTEVTH0dMX01BWF9DT01CSU5FRF9BVE9NSUNfQ09VTlRFUlMSR0xfTUFYX0lNQUdFX1VOSVRTKkdMX01BWF9DT01CSU5FRF9DT01QVVRFX1VOSUZPUk1fQ09NUE9ORU5UUytHTF9NQVhfQ09NQklORURfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTK0dMX01BWF9DT01CSU5FRF9HRU9NRVRSWV9VTklGT1JNX0NPTVBPTkVOVFMlR0xfTUFYX0NPTUJJTkVEX1NIQURFUl9TVE9SQUdFX0JMT0NLUy9HTF9NQVhfQ09NQklORURfVEVTU19DT05UUk9MX1VOSUZPUk1fQ09NUE9ORU5UUzJHTF9NQVhfQ09NQklORURfVEVTU19FVkFMVUFUSU9OX1VOSUZPUk1fQ09NUE9ORU5UUyNHTF9NQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUydHTF9NQVhfQ09NQklORURfU0hBREVSX09VVFBVVF9SRVNPVVJDRVMeR0xfTUFYX0NPTUJJTkVEX1VOSUZPUk1fQkxPQ0tTKUdMX01BWF9DT01CSU5FRF9WRVJURVhfVU5JRk9STV9DT01QT05FTlRTJUdMX01BWF9DT01QVVRFX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMeR0xfTUFYX0NPTVBVVEVfQVRPTUlDX0NPVU5URVJTHUdMX01BWF9DT01QVVRFX0lNQUdFX1VOSUZPUk1THkdMX01BWF9DT01CSU5FRF9JTUFHRV9VTklGT1JNUyRHTF9NQVhfQ09NUFVURV9TSEFERVJfU1RPUkFHRV9CTE9DS1MiR0xfTUFYX0NPTVBVVEVfVEVYVFVSRV9JTUFHRV9VTklUUyFHTF9NQVhfQ09NUFVURV9TSEFSRURfTUVNT1JZX1NJWkUdR0xfTUFYX0NPTVBVVEVfVU5JRk9STV9CTE9DS1MhR0xfTUFYX0NPTVBVVEVfVU5JRk9STV9DT01QT05FTlRTH0dMX01BWF9DT01QVVRFX1dPUktfR1JPVVBfQ09VTlQlR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9JTlZPQ0FUSU9OUx5HTF9NQVhfQ09NUFVURV9XT1JLX0dST1VQX1NJWkUcR0xfTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRR5HTF9NQVhfREVCVUdfR1JPVVBfU1RBQ0tfREVQVEgcR0xfTUFYX0RFQlVHX0xPR0dFRF9NRVNTQUdFUxtHTF9NQVhfREVCVUdfTUVTU0FHRV9MRU5HVEgTR0xfTUFYX0RSQVdfQlVGRkVSUxRHTF9NQVhfRUxFTUVOVF9JTkRFWBdHTF9NQVhfRUxFTUVOVFNfSU5ESUNFUxhHTF9NQVhfRUxFTUVOVFNfVkVSVElDRVMmR0xfTUFYX0ZSQUdNRU5UX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMfR0xfTUFYX0ZSQUdNRU5UX0FUT01JQ19DT1VOVEVSUx5HTF9NQVhfRlJBR01FTlRfSU1BR0VfVU5JRk9STVMgR0xfTUFYX0ZSQUdNRU5UX0lOUFVUX0NPTVBPTkVOVFMkR0xfTUFYX0ZSQUdNRU5UX0lOVEVSUE9MQVRJT05fT0ZGU0VUJUdMX01BWF9GUkFHTUVOVF9TSEFERVJfU1RPUkFHRV9CTE9DS1MkR0xfTUlOX1BST0dSQU1fVEVYVFVSRV9HQVRIRVJfT0ZGU0VUJEdMX01BWF9QUk9HUkFNX1RFWFRVUkVfR0FUSEVSX09GRlNFVB5HTF9NQVhfRlJBR01FTlRfVU5JRk9STV9CTE9DS1MiR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UUx9HTF9NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTGUdMX01BWF9GUkFNRUJVRkZFUl9IRUlHSFQZR0xfTUFYX0ZSQU1FQlVGRkVSX0xBWUVSUxpHTF9NQVhfRlJBTUVCVUZGRVJfU0FNUExFUxhHTF9NQVhfRlJBTUVCVUZGRVJfV0lEVEgmR0xfTUFYX0dFT01FVFJZX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMfR0xfTUFYX0dFT01FVFJZX0FUT01JQ19DT1VOVEVSUx5HTF9NQVhfR0VPTUVUUllfSU1BR0VfVU5JRk9STVMgR0xfTUFYX0dFT01FVFJZX0lOUFVUX0NPTVBPTkVOVFMhR0xfTUFYX0dFT01FVFJZX09VVFBVVF9DT01QT05FTlRTH0dMX01BWF9HRU9NRVRSWV9PVVRQVVRfVkVSVElDRVMiR0xfTUFYX0dFT01FVFJZX1NIQURFUl9JTlZPQ0FUSU9OUyVHTF9NQVhfR0VPTUVUUllfU0hBREVSX1NUT1JBR0VfQkxPQ0tTI0dMX01BWF9HRU9NRVRSWV9URVhUVVJFX0lNQUdFX1VOSVRTJ0dMX01BWF9HRU9NRVRSWV9UT1RBTF9PVVRQVVRfQ09NUE9ORU5UUx5HTF9NQVhfR0VPTUVUUllfVU5JRk9STV9CTE9DS1MiR0xfTUFYX0dFT01FVFJZX1VOSUZPUk1fQ09NUE9ORU5UUxZHTF9NQVhfSU5URUdFUl9TQU1QTEVTE0dMX01BWF9MQUJFTF9MRU5HVEgbR0xfTUFYX1BST0dSQU1fVEVYRUxfT0ZGU0VUGEdMX01BWF9SRU5ERVJCVUZGRVJfU0laRRhHTF9NQVhfU0FNUExFX01BU0tfV09SRFMOR0xfTUFYX1NBTVBMRVMaR0xfTUFYX1NFUlZFUl9XQUlUX1RJTUVPVVQgR0xfTUFYX1NIQURFUl9TVE9SQUdFX0JMT0NLX1NJWkUlR0xfTUFYX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9CSU5ESU5HUypHTF9NQVhfVEVTU19DT05UUk9MX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMjR0xfTUFYX1RFU1NfQ09OVFJPTF9BVE9NSUNfQ09VTlRFUlMiR0xfTUFYX1RFU1NfQ09OVFJPTF9JTUFHRV9VTklGT1JNUyRHTF9NQVhfVEVTU19DT05UUk9MX0lOUFVUX0NPTVBPTkVOVFMlR0xfTUFYX1RFU1NfQ09OVFJPTF9PVVRQVVRfQ09NUE9ORU5UUylHTF9NQVhfVEVTU19DT05UUk9MX1NIQURFUl9TVE9SQUdFX0JMT0NLUydHTF9NQVhfVEVTU19DT05UUk9MX1RFWFRVUkVfSU1BR0VfVU5JVFMrR0xfTUFYX1RFU1NfQ09OVFJPTF9UT1RBTF9PVVRQVVRfQ09NUE9ORU5UUyJHTF9NQVhfVEVTU19DT05UUk9MX1VOSUZPUk1fQkxPQ0tTJkdMX01BWF9URVNTX0NPTlRST0xfVU5JRk9STV9DT01QT05FTlRTLUdMX01BWF9URVNTX0VWQUxVQVRJT05fQVRPTUlDX0NPVU5URVJfQlVGRkVSUyZHTF9NQVhfVEVTU19FVkFMVUFUSU9OX0FUT01JQ19DT1VOVEVSUyVHTF9NQVhfVEVTU19FVkFMVUFUSU9OX0lNQUdFX1VOSUZPUk1TJ0dMX01BWF9URVNTX0VWQUxVQVRJT05fSU5QVVRfQ09NUE9ORU5UUyhHTF9NQVhfVEVTU19FVkFMVUFUSU9OX09VVFBVVF9DT01QT05FTlRTLEdMX01BWF9URVNTX0VWQUxVQVRJT05fU0hBREVSX1NUT1JBR0VfQkxPQ0tTKkdMX01BWF9URVNTX0VWQUxVQVRJT05fVEVYVFVSRV9JTUFHRV9VTklUUyVHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1VOSUZPUk1fQkxPQ0tTKUdMX01BWF9URVNTX0VWQUxVQVRJT05fVU5JRk9STV9DT01QT05FTlRTFUdMX01BWF9URVNTX0dFTl9MRVZFTBVHTF9NQVhfUEFUQ0hfVkVSVElDRVMcR0xfTUFYX1RFU1NfUEFUQ0hfQ09NUE9ORU5UUxpHTF9NQVhfVEVYVFVSRV9CVUZGRVJfU0laRRpHTF9NQVhfVEVYVFVSRV9JTUFHRV9VTklUUxdHTF9NQVhfVEVYVFVSRV9MT0RfQklBUxNHTF9NQVhfVEVYVFVSRV9TSVpFMEdMX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfSU5URVJMRUFWRURfQ09NUE9ORU5UUypHTF9NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFSQVRFX0FUVFJJQlMtR0xfTUFYX1RSQU5TRk9STV9GRUVEQkFDS19TRVBBUkFURV9DT01QT05FTlRTGUdMX01BWF9VTklGT1JNX0JMT0NLX1NJWkUeR0xfTUFYX1VOSUZPUk1fQlVGRkVSX0JJTkRJTkdTGEdMX01BWF9VTklGT1JNX0xPQ0FUSU9OUxlHTF9NQVhfVkFSWUlOR19DT01QT05FTlRTFkdMX01BWF9WQVJZSU5HX1ZFQ1RPUlMdR0xfTUFYX1ZFUlRFWF9BVE9NSUNfQ09VTlRFUlMkR0xfTUFYX1ZFUlRFWF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTHUdMX01BWF9WRVJURVhfQVRUUklCX0JJTkRJTkdTG0dMX01BWF9WRVJURVhfQVRUUklCX1NUUklERSRHTF9NQVhfVkVSVEVYX0FUVFJJQl9SRUxBVElWRV9PRkZTRVQVR0xfTUFYX1ZFUlRFWF9BVFRSSUJTHEdMX01BWF9WRVJURVhfSU1BR0VfVU5JRk9STVMfR0xfTUFYX1ZFUlRFWF9PVVRQVVRfQ09NUE9ORU5UUyNHTF9NQVhfVkVSVEVYX1NIQURFUl9TVE9SQUdFX0JMT0NLUyFHTF9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFMcR0xfTUFYX1ZFUlRFWF9VTklGT1JNX0JMT0NLUyBHTF9NQVhfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUx1HTF9NQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUxRHTF9NQVhfVklFV1BPUlRfRElNUyRHTF9NSU5fRlJBR01FTlRfSU5URVJQT0xBVElPTl9PRkZTRVQbR0xfTUlOX1BST0dSQU1fVEVYRUxfT0ZGU0VUG0dMX01JTl9TQU1QTEVfU0hBRElOR19WQUxVRRBHTF9NSU5PUl9WRVJTSU9OH0dMX01VTFRJU0FNUExFX0xJTkVfV0lEVEhfUkFOR0UlR0xfTVVMVElTQU1QTEVfTElORV9XSURUSF9HUkFOVUxBUklUWSFHTF9OVU1fQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMRR0xfTlVNX0VYVEVOU0lPTlMdR0xfTlVNX1BST0dSQU1fQklOQVJZX0ZPUk1BVFMcR0xfTlVNX1NIQURFUl9CSU5BUllfRk9STUFUUxFHTF9QQUNLX0FMSUdOTUVOVBRHTF9QQUNLX0lNQUdFX0hFSUdIVBJHTF9QQUNLX1JPV19MRU5HVEgTR0xfUEFDS19TS0lQX0lNQUdFUxNHTF9QQUNLX1NLSVBfUElYRUxTEUdMX1BBQ0tfU0tJUF9ST1dTEUdMX1BBVENIX1ZFUlRJQ0VTHEdMX1BJWEVMX1BBQ0tfQlVGRkVSX0JJTkRJTkceR0xfUElYRUxfVU5QQUNLX0JVRkZFUl9CSU5ESU5HGEdMX1BPTFlHT05fT0ZGU0VUX0ZBQ1RPUhZHTF9QT0xZR09OX09GRlNFVF9GSUxMF0dMX1BPTFlHT05fT0ZGU0VUX1VOSVRTGUdMX1BSSU1JVElWRV9CT1VORElOR19CT1ggR0xfUFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgZR0xfUFJPR1JBTV9CSU5BUllfRk9STUFUUxtHTF9QUk9HUkFNX1BJUEVMSU5FX0JJTkRJTkcVR0xfUkFTVEVSSVpFUl9ESVNDQVJEDkdMX1JFQURfQlVGRkVSG0dMX1JFQURfRlJBTUVCVUZGRVJfQklORElORwtHTF9SRURfQklUUxdHTF9SRU5ERVJCVUZGRVJfQklORElORx5HTF9SRVNFVF9OT1RJRklDQVRJT05fU1RSQVRFR1kbR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFEUdMX1NBTVBMRV9CVUZGRVJTEkdMX1NBTVBMRV9DT1ZFUkFHRRlHTF9TQU1QTEVfQ09WRVJBR0VfSU5WRVJUGEdMX1NBTVBMRV9DT1ZFUkFHRV9WQUxVRRFHTF9TQU1QTEVfU0hBRElORxJHTF9TQU1QTEVSX0JJTkRJTkcKR0xfU0FNUExFUw5HTF9TQ0lTU09SX0JPWA9HTF9TQ0lTU09SX1RFU1QYR0xfU0hBREVSX0JJTkFSWV9GT1JNQVRTEkdMX1NIQURFUl9DT01QSUxFUiBHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfQklORElORylHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVB1HTF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfU0laRR5HTF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfU1RBUlQUR0xfU1RFTkNJTF9CQUNLX0ZBSUwUR0xfU1RFTkNJTF9CQUNLX0ZVTkMfR0xfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfRkFJTB9HTF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9QQVNTE0dMX1NURU5DSUxfQkFDS19SRUYaR0xfU1RFTkNJTF9CQUNLX1ZBTFVFX01BU0sZR0xfU1RFTkNJTF9CQUNLX1dSSVRFTUFTSw9HTF9TVEVOQ0lMX0JJVFMWR0xfU1RFTkNJTF9DTEVBUl9WQUxVRQ9HTF9TVEVOQ0lMX0ZBSUwPR0xfU1RFTkNJTF9GVU5DGkdMX1NURU5DSUxfUEFTU19ERVBUSF9GQUlMGkdMX1NURU5DSUxfUEFTU19ERVBUSF9QQVNTDkdMX1NURU5DSUxfUkVGD0dMX1NURU5DSUxfVEVTVBVHTF9TVEVOQ0lMX1ZBTFVFX01BU0sUR0xfU1RFTkNJTF9XUklURU1BU0sQR0xfU1VCUElYRUxfQklUUxVHTF9URVhUVVJFX0JJTkRJTkdfMkQfR0xfVEVYVFVSRV9CSU5ESU5HX0VYVEVSTkFMX09FUxtHTF9URVhUVVJFX0JJTkRJTkdfMkRfQVJSQVkhR0xfVEVYVFVSRV9CSU5ESU5HXzJEX01VTFRJU0FNUExFJ0dMX1RFWFRVUkVfQklORElOR18yRF9NVUxUSVNBTVBMRV9BUlJBWRVHTF9URVhUVVJFX0JJTkRJTkdfM0QZR0xfVEVYVFVSRV9CSU5ESU5HX0JVRkZFUhtHTF9URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVAhR0xfVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQX0FSUkFZGUdMX1RFWFRVUkVfQlVGRkVSX0JJTkRJTkciR0xfVEVYVFVSRV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVBxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQUNUSVZFHUdMX1RSQU5TRk9STV9GRUVEQkFDS19CSU5ESU5HJEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfQklORElORyFHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NJWkUiR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TVEFSVBxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfUEFVU0VEGUdMX1VOSUZPUk1fQlVGRkVSX0JJTkRJTkciR0xfVU5JRk9STV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVBZHTF9VTklGT1JNX0JVRkZFUl9TSVpFF0dMX1VOSUZPUk1fQlVGRkVSX1NUQVJUE0dMX1VOUEFDS19BTElHTk1FTlQWR0xfVU5QQUNLX0lNQUdFX0hFSUdIVBRHTF9VTlBBQ0tfUk9XX0xFTkdUSBVHTF9VTlBBQ0tfU0tJUF9JTUFHRVMVR0xfVU5QQUNLX1NLSVBfUElYRUxTE0dMX1VOUEFDS19TS0lQX1JPV1MXR0xfVkVSVEVYX0FSUkFZX0JJTkRJTkcZR0xfVkVSVEVYX0JJTkRJTkdfRElWSVNPUhhHTF9WRVJURVhfQklORElOR19PRkZTRVQYR0xfVkVSVEVYX0JJTkRJTkdfU1RSSURFC0dMX1ZJRVdQT1JUIUdMX01BWF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVBNHTF9HUFVfRElTSk9JTlRfRVhUhyEEhyMGhyUIhycKEWdsR2V0SW50ZWdlcjY0aV92BnZhbHVlcwQBAgIPZ2xHZXRJbnRlZ2VyNjR2AocpDIcrCIctCg9nbEdldEludGVnZXI2NHYFcGFyYW2BKhFHTF9BQ1RJVkVfVEVYVFVSRRtHTF9BTElBU0VEX0xJTkVfV0lEVEhfUkFOR0UbR0xfQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFDUdMX0FMUEhBX0JJVFMXR0xfQVJSQVlfQlVGRkVSX0JJTkRJTkcgR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSX0JJTkRJTkcdR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSX1NJWkUeR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSX1NUQVJUCEdMX0JMRU5EDkdMX0JMRU5EX0NPTE9SEkdMX0JMRU5EX0RTVF9BTFBIQRBHTF9CTEVORF9EU1RfUkdCF0dMX0JMRU5EX0VRVUFUSU9OX0FMUEhBFUdMX0JMRU5EX0VRVUFUSU9OX1JHQhJHTF9CTEVORF9TUkNfQUxQSEEQR0xfQkxFTkRfU1JDX1JHQgxHTF9CTFVFX0JJVFMUR0xfQ09MT1JfQ0xFQVJfVkFMVUUSR0xfQ09MT1JfV1JJVEVNQVNLHUdMX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTEEdMX0NPTlRFWFRfRkxBR1MYR0xfQ09OVEVYVF9ST0JVU1RfQUNDRVNTG0dMX0NPUFlfUkVBRF9CVUZGRVJfQklORElORxxHTF9DT1BZX1dSSVRFX0JVRkZFUl9CSU5ESU5HDEdMX0NVTExfRkFDRRFHTF9DVUxMX0ZBQ0VfTU9ERRJHTF9DVVJSRU5UX1BST0dSQU0aR0xfREVCVUdfR1JPVVBfU1RBQ0tfREVQVEgYR0xfREVCVUdfTE9HR0VEX01FU1NBR0VTI0dMX0RFQlVHX05FWFRfTE9HR0VEX01FU1NBR0VfTEVOR1RIDUdMX0RFUFRIX0JJVFMUR0xfREVQVEhfQ0xFQVJfVkFMVUUNR0xfREVQVEhfRlVOQw5HTF9ERVBUSF9SQU5HRQ1HTF9ERVBUSF9URVNUEkdMX0RFUFRIX1dSSVRFTUFTSyNHTF9ESVNQQVRDSF9JTkRJUkVDVF9CVUZGRVJfQklORElORwlHTF9ESVRIRVIOR0xfRFJBV19CVUZGRVIPR0xfRFJBV19CVUZGRVIwD0dMX0RSQVdfQlVGRkVSMQ9HTF9EUkFXX0JVRkZFUjIPR0xfRFJBV19CVUZGRVIzD0dMX0RSQVdfQlVGRkVSNA9HTF9EUkFXX0JVRkZFUjUPR0xfRFJBV19CVUZGRVI2D0dMX0RSQVdfQlVGRkVSNw9HTF9EUkFXX0JVRkZFUjgPR0xfRFJBV19CVUZGRVI5EEdMX0RSQVdfQlVGRkVSMTAQR0xfRFJBV19CVUZGRVIxMRBHTF9EUkFXX0JVRkZFUjEyEEdMX0RSQVdfQlVGRkVSMTMQR0xfRFJBV19CVUZGRVIxNBBHTF9EUkFXX0JVRkZFUjE1G0dMX0RSQVdfRlJBTUVCVUZGRVJfQklORElORx9HTF9FTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HJUdMX0ZSQUdNRU5UX0lOVEVSUE9MQVRJT05fT0ZGU0VUX0JJVFMiR0xfRlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVA1HTF9GUk9OVF9GQUNFF0dMX0dFTkVSQVRFX01JUE1BUF9ISU5UDUdMX0dSRUVOX0JJVFMVR0xfSU1BR0VfQklORElOR19OQU1FFkdMX0lNQUdFX0JJTkRJTkdfTEVWRUwYR0xfSU1BR0VfQklORElOR19MQVlFUkVEFkdMX0lNQUdFX0JJTkRJTkdfTEFZRVIXR0xfSU1BR0VfQklORElOR19BQ0NFU1MXR0xfSU1BR0VfQklORElOR19GT1JNQVQjR0xfSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9GT1JNQVQhR0xfSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9UWVBFGUdMX0xBWUVSX1BST1ZPS0lOR19WRVJURVgNR0xfTElORV9XSURUSCpHTF9QUklNSVRJVkVfUkVTVEFSVF9GT1JfUEFUQ0hFU19TVVBQT1JURUQQR0xfTUFKT1JfVkVSU0lPThZHTF9NQVhfM0RfVEVYVFVSRV9TSVpFG0dMX01BWF9BUlJBWV9URVhUVVJFX0xBWUVSUyVHTF9NQVhfQVRPTUlDX0NPVU5URVJfQlVGRkVSX0JJTkRJTkdTIUdMX01BWF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfU0laRSZHTF9NQVhfQ09NQklORURfQVRPTUlDX0NPVU5URVJfQlVGRkVSUxhHTF9NQVhfQ09MT1JfQVRUQUNITUVOVFMcR0xfTUFYX0NPTE9SX1RFWFRVUkVfU0FNUExFUxxHTF9NQVhfREVQVEhfVEVYVFVSRV9TQU1QTEVTH0dMX01BWF9DT01CSU5FRF9BVE9NSUNfQ09VTlRFUlMSR0xfTUFYX0lNQUdFX1VOSVRTKkdMX01BWF9DT01CSU5FRF9DT01QVVRFX1VOSUZPUk1fQ09NUE9ORU5UUytHTF9NQVhfQ09NQklORURfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTK0dMX01BWF9DT01CSU5FRF9HRU9NRVRSWV9VTklGT1JNX0NPTVBPTkVOVFMlR0xfTUFYX0NPTUJJTkVEX1NIQURFUl9TVE9SQUdFX0JMT0NLUy9HTF9NQVhfQ09NQklORURfVEVTU19DT05UUk9MX1VOSUZPUk1fQ09NUE9ORU5UUzJHTF9NQVhfQ09NQklORURfVEVTU19FVkFMVUFUSU9OX1VOSUZPUk1fQ09NUE9ORU5UUyNHTF9NQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUydHTF9NQVhfQ09NQklORURfU0hBREVSX09VVFBVVF9SRVNPVVJDRVMeR0xfTUFYX0NPTUJJTkVEX1VOSUZPUk1fQkxPQ0tTKUdMX01BWF9DT01CSU5FRF9WRVJURVhfVU5JRk9STV9DT01QT05FTlRTJUdMX01BWF9DT01QVVRFX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMeR0xfTUFYX0NPTVBVVEVfQVRPTUlDX0NPVU5URVJTHUdMX01BWF9DT01QVVRFX0lNQUdFX1VOSUZPUk1THkdMX01BWF9DT01CSU5FRF9JTUFHRV9VTklGT1JNUyRHTF9NQVhfQ09NUFVURV9TSEFERVJfU1RPUkFHRV9CTE9DS1MiR0xfTUFYX0NPTVBVVEVfVEVYVFVSRV9JTUFHRV9VTklUUyFHTF9NQVhfQ09NUFVURV9TSEFSRURfTUVNT1JZX1NJWkUdR0xfTUFYX0NPTVBVVEVfVU5JRk9STV9CTE9DS1MhR0xfTUFYX0NPTVBVVEVfVU5JRk9STV9DT01QT05FTlRTH0dMX01BWF9DT01QVVRFX1dPUktfR1JPVVBfQ09VTlQlR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9JTlZPQ0FUSU9OUx5HTF9NQVhfQ09NUFVURV9XT1JLX0dST1VQX1NJWkUcR0xfTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRR5HTF9NQVhfREVCVUdfR1JPVVBfU1RBQ0tfREVQVEgcR0xfTUFYX0RFQlVHX0xPR0dFRF9NRVNTQUdFUxtHTF9NQVhfREVCVUdfTUVTU0FHRV9MRU5HVEgTR0xfTUFYX0RSQVdfQlVGRkVSUxRHTF9NQVhfRUxFTUVOVF9JTkRFWBdHTF9NQVhfRUxFTUVOVFNfSU5ESUNFUxhHTF9NQVhfRUxFTUVOVFNfVkVSVElDRVMmR0xfTUFYX0ZSQUdNRU5UX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMfR0xfTUFYX0ZSQUdNRU5UX0FUT01JQ19DT1VOVEVSUx5HTF9NQVhfRlJBR01FTlRfSU1BR0VfVU5JRk9STVMgR0xfTUFYX0ZSQUdNRU5UX0lOUFVUX0NPTVBPTkVOVFMkR0xfTUFYX0ZSQUdNRU5UX0lOVEVSUE9MQVRJT05fT0ZGU0VUJUdMX01BWF9GUkFHTUVOVF9TSEFERVJfU1RPUkFHRV9CTE9DS1MkR0xfTUlOX1BST0dSQU1fVEVYVFVSRV9HQVRIRVJfT0ZGU0VUJEdMX01BWF9QUk9HUkFNX1RFWFRVUkVfR0FUSEVSX09GRlNFVB5HTF9NQVhfRlJBR01FTlRfVU5JRk9STV9CTE9DS1MiR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UUx9HTF9NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTGUdMX01BWF9GUkFNRUJVRkZFUl9IRUlHSFQZR0xfTUFYX0ZSQU1FQlVGRkVSX0xBWUVSUxpHTF9NQVhfRlJBTUVCVUZGRVJfU0FNUExFUxhHTF9NQVhfRlJBTUVCVUZGRVJfV0lEVEgmR0xfTUFYX0dFT01FVFJZX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMfR0xfTUFYX0dFT01FVFJZX0FUT01JQ19DT1VOVEVSUx5HTF9NQVhfR0VPTUVUUllfSU1BR0VfVU5JRk9STVMgR0xfTUFYX0dFT01FVFJZX0lOUFVUX0NPTVBPTkVOVFMhR0xfTUFYX0dFT01FVFJZX09VVFBVVF9DT01QT05FTlRTH0dMX01BWF9HRU9NRVRSWV9PVVRQVVRfVkVSVElDRVMiR0xfTUFYX0dFT01FVFJZX1NIQURFUl9JTlZPQ0FUSU9OUyVHTF9NQVhfR0VPTUVUUllfU0hBREVSX1NUT1JBR0VfQkxPQ0tTI0dMX01BWF9HRU9NRVRSWV9URVhUVVJFX0lNQUdFX1VOSVRTJ0dMX01BWF9HRU9NRVRSWV9UT1RBTF9PVVRQVVRfQ09NUE9ORU5UUx5HTF9NQVhfR0VPTUVUUllfVU5JRk9STV9CTE9DS1MiR0xfTUFYX0dFT01FVFJZX1VOSUZPUk1fQ09NUE9ORU5UUxZHTF9NQVhfSU5URUdFUl9TQU1QTEVTE0dMX01BWF9MQUJFTF9MRU5HVEgbR0xfTUFYX1BST0dSQU1fVEVYRUxfT0ZGU0VUGEdMX01BWF9SRU5ERVJCVUZGRVJfU0laRRhHTF9NQVhfU0FNUExFX01BU0tfV09SRFMOR0xfTUFYX1NBTVBMRVMaR0xfTUFYX1NFUlZFUl9XQUlUX1RJTUVPVVQgR0xfTUFYX1NIQURFUl9TVE9SQUdFX0JMT0NLX1NJWkUlR0xfTUFYX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9CSU5ESU5HUypHTF9NQVhfVEVTU19DT05UUk9MX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMjR0xfTUFYX1RFU1NfQ09OVFJPTF9BVE9NSUNfQ09VTlRFUlMiR0xfTUFYX1RFU1NfQ09OVFJPTF9JTUFHRV9VTklGT1JNUyRHTF9NQVhfVEVTU19DT05UUk9MX0lOUFVUX0NPTVBPTkVOVFMlR0xfTUFYX1RFU1NfQ09OVFJPTF9PVVRQVVRfQ09NUE9ORU5UUylHTF9NQVhfVEVTU19DT05UUk9MX1NIQURFUl9TVE9SQUdFX0JMT0NLUydHTF9NQVhfVEVTU19DT05UUk9MX1RFWFRVUkVfSU1BR0VfVU5JVFMrR0xfTUFYX1RFU1NfQ09OVFJPTF9UT1RBTF9PVVRQVVRfQ09NUE9ORU5UUyJHTF9NQVhfVEVTU19DT05UUk9MX1VOSUZPUk1fQkxPQ0tTJkdMX01BWF9URVNTX0NPTlRST0xfVU5JRk9STV9DT01QT05FTlRTLUdMX01BWF9URVNTX0VWQUxVQVRJT05fQVRPTUlDX0NPVU5URVJfQlVGRkVSUyZHTF9NQVhfVEVTU19FVkFMVUFUSU9OX0FUT01JQ19DT1VOVEVSUyVHTF9NQVhfVEVTU19FVkFMVUFUSU9OX0lNQUdFX1VOSUZPUk1TJ0dMX01BWF9URVNTX0VWQUxVQVRJT05fSU5QVVRfQ09NUE9ORU5UUyhHTF9NQVhfVEVTU19FVkFMVUFUSU9OX09VVFBVVF9DT01QT05FTlRTLEdMX01BWF9URVNTX0VWQUxVQVRJT05fU0hBREVSX1NUT1JBR0VfQkxPQ0tTKkdMX01BWF9URVNTX0VWQUxVQVRJT05fVEVYVFVSRV9JTUFHRV9VTklUUyVHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1VOSUZPUk1fQkxPQ0tTKUdMX01BWF9URVNTX0VWQUxVQVRJT05fVU5JRk9STV9DT01QT05FTlRTFUdMX01BWF9URVNTX0dFTl9MRVZFTBVHTF9NQVhfUEFUQ0hfVkVSVElDRVMcR0xfTUFYX1RFU1NfUEFUQ0hfQ09NUE9ORU5UUxpHTF9NQVhfVEVYVFVSRV9CVUZGRVJfU0laRRpHTF9NQVhfVEVYVFVSRV9JTUFHRV9VTklUUxdHTF9NQVhfVEVYVFVSRV9MT0RfQklBUxNHTF9NQVhfVEVYVFVSRV9TSVpFMEdMX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfSU5URVJMRUFWRURfQ09NUE9ORU5UUypHTF9NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFSQVRFX0FUVFJJQlMtR0xfTUFYX1RSQU5TRk9STV9GRUVEQkFDS19TRVBBUkFURV9DT01QT05FTlRTGUdMX01BWF9VTklGT1JNX0JMT0NLX1NJWkUeR0xfTUFYX1VOSUZPUk1fQlVGRkVSX0JJTkRJTkdTGEdMX01BWF9VTklGT1JNX0xPQ0FUSU9OUxlHTF9NQVhfVkFSWUlOR19DT01QT05FTlRTFkdMX01BWF9WQVJZSU5HX1ZFQ1RPUlMdR0xfTUFYX1ZFUlRFWF9BVE9NSUNfQ09VTlRFUlMkR0xfTUFYX1ZFUlRFWF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTHUdMX01BWF9WRVJURVhfQVRUUklCX0JJTkRJTkdTG0dMX01BWF9WRVJURVhfQVRUUklCX1NUUklERSRHTF9NQVhfVkVSVEVYX0FUVFJJQl9SRUxBVElWRV9PRkZTRVQVR0xfTUFYX1ZFUlRFWF9BVFRSSUJTHEdMX01BWF9WRVJURVhfSU1BR0VfVU5JRk9STVMfR0xfTUFYX1ZFUlRFWF9PVVRQVVRfQ09NUE9ORU5UUyNHTF9NQVhfVkVSVEVYX1NIQURFUl9TVE9SQUdFX0JMT0NLUyFHTF9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFMcR0xfTUFYX1ZFUlRFWF9VTklGT1JNX0JMT0NLUyBHTF9NQVhfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUx1HTF9NQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUxRHTF9NQVhfVklFV1BPUlRfRElNUyRHTF9NSU5fRlJBR01FTlRfSU5URVJQT0xBVElPTl9PRkZTRVQbR0xfTUlOX1BST0dSQU1fVEVYRUxfT0ZGU0VUG0dMX01JTl9TQU1QTEVfU0hBRElOR19WQUxVRRBHTF9NSU5PUl9WRVJTSU9OH0dMX01VTFRJU0FNUExFX0xJTkVfV0lEVEhfUkFOR0UlR0xfTVVMVElTQU1QTEVfTElORV9XSURUSF9HUkFOVUxBUklUWSFHTF9OVU1fQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMRR0xfTlVNX0VYVEVOU0lPTlMdR0xfTlVNX1BST0dSQU1fQklOQVJZX0ZPUk1BVFMcR0xfTlVNX1NIQURFUl9CSU5BUllfRk9STUFUUxFHTF9QQUNLX0FMSUdOTUVOVBRHTF9QQUNLX0lNQUdFX0hFSUdIVBJHTF9QQUNLX1JPV19MRU5HVEgTR0xfUEFDS19TS0lQX0lNQUdFUxNHTF9QQUNLX1NLSVBfUElYRUxTEUdMX1BBQ0tfU0tJUF9ST1dTEUdMX1BBVENIX1ZFUlRJQ0VTHEdMX1BJWEVMX1BBQ0tfQlVGRkVSX0JJTkRJTkceR0xfUElYRUxfVU5QQUNLX0JVRkZFUl9CSU5ESU5HGEdMX1BPTFlHT05fT0ZGU0VUX0ZBQ1RPUhZHTF9QT0xZR09OX09GRlNFVF9GSUxMF0dMX1BPTFlHT05fT0ZGU0VUX1VOSVRTGUdMX1BSSU1JVElWRV9CT1VORElOR19CT1ggR0xfUFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgZR0xfUFJPR1JBTV9CSU5BUllfRk9STUFUUxtHTF9QUk9HUkFNX1BJUEVMSU5FX0JJTkRJTkcVR0xfUkFTVEVSSVpFUl9ESVNDQVJEDkdMX1JFQURfQlVGRkVSG0dMX1JFQURfRlJBTUVCVUZGRVJfQklORElORwtHTF9SRURfQklUUxdHTF9SRU5ERVJCVUZGRVJfQklORElORx5HTF9SRVNFVF9OT1RJRklDQVRJT05fU1RSQVRFR1kbR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFEUdMX1NBTVBMRV9CVUZGRVJTEkdMX1NBTVBMRV9DT1ZFUkFHRRlHTF9TQU1QTEVfQ09WRVJBR0VfSU5WRVJUGEdMX1NBTVBMRV9DT1ZFUkFHRV9WQUxVRRFHTF9TQU1QTEVfU0hBRElORxJHTF9TQU1QTEVSX0JJTkRJTkcKR0xfU0FNUExFUw5HTF9TQ0lTU09SX0JPWA9HTF9TQ0lTU09SX1RFU1QYR0xfU0hBREVSX0JJTkFSWV9GT1JNQVRTEkdMX1NIQURFUl9DT01QSUxFUiBHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfQklORElORylHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVB1HTF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfU0laRR5HTF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfU1RBUlQUR0xfU1RFTkNJTF9CQUNLX0ZBSUwUR0xfU1RFTkNJTF9CQUNLX0ZVTkMfR0xfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfRkFJTB9HTF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9QQVNTE0dMX1NURU5DSUxfQkFDS19SRUYaR0xfU1RFTkNJTF9CQUNLX1ZBTFVFX01BU0sZR0xfU1RFTkNJTF9CQUNLX1dSSVRFTUFTSw9HTF9TVEVOQ0lMX0JJVFMWR0xfU1RFTkNJTF9DTEVBUl9WQUxVRQ9HTF9TVEVOQ0lMX0ZBSUwPR0xfU1RFTkNJTF9GVU5DGkdMX1NURU5DSUxfUEFTU19ERVBUSF9GQUlMGkdMX1NURU5DSUxfUEFTU19ERVBUSF9QQVNTDkdMX1NURU5DSUxfUkVGD0dMX1NURU5DSUxfVEVTVBVHTF9TVEVOQ0lMX1ZBTFVFX01BU0sUR0xfU1RFTkNJTF9XUklURU1BU0sQR0xfU1VCUElYRUxfQklUUxVHTF9URVhUVVJFX0JJTkRJTkdfMkQfR0xfVEVYVFVSRV9CSU5ESU5HX0VYVEVSTkFMX09FUxtHTF9URVhUVVJFX0JJTkRJTkdfMkRfQVJSQVkhR0xfVEVYVFVSRV9CSU5ESU5HXzJEX01VTFRJU0FNUExFJ0dMX1RFWFRVUkVfQklORElOR18yRF9NVUxUSVNBTVBMRV9BUlJBWRVHTF9URVhUVVJFX0JJTkRJTkdfM0QZR0xfVEVYVFVSRV9CSU5ESU5HX0JVRkZFUhtHTF9URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVAhR0xfVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQX0FSUkFZGUdMX1RFWFRVUkVfQlVGRkVSX0JJTkRJTkciR0xfVEVYVFVSRV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVBxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQUNUSVZFHUdMX1RSQU5TRk9STV9GRUVEQkFDS19CSU5ESU5HJEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfQklORElORyFHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NJWkUiR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TVEFSVBxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfUEFVU0VEGUdMX1VOSUZPUk1fQlVGRkVSX0JJTkRJTkciR0xfVU5JRk9STV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVBZHTF9VTklGT1JNX0JVRkZFUl9TSVpFF0dMX1VOSUZPUk1fQlVGRkVSX1NUQVJUE0dMX1VOUEFDS19BTElHTk1FTlQWR0xfVU5QQUNLX0lNQUdFX0hFSUdIVBRHTF9VTlBBQ0tfUk9XX0xFTkdUSBVHTF9VTlBBQ0tfU0tJUF9JTUFHRVMVR0xfVU5QQUNLX1NLSVBfUElYRUxTE0dMX1VOUEFDS19TS0lQX1JPV1MXR0xfVkVSVEVYX0FSUkFZX0JJTkRJTkcZR0xfVkVSVEVYX0JJTkRJTkdfRElWSVNPUhhHTF9WRVJURVhfQklORElOR19PRkZTRVQYR0xfVkVSVEVYX0JJTkRJTkdfU1RSSURFC0dMX1ZJRVdQT1JUIUdMX01BWF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVBNHTF9HUFVfRElTSk9JTlRfRVhUhy8EhzEGhzMIhzUKD2dsR2V0SW50ZWdlcjY0dgZ2YWx1ZXMEAQICFGdsR2V0SW50ZWdlcjY0dkFQUExFAoc3DIc5CIc7ChRnbEdldEludGVnZXI2NHZBUFBMRQVwbmFtZYEqEUdMX0FDVElWRV9URVhUVVJFG0dMX0FMSUFTRURfTElORV9XSURUSF9SQU5HRRtHTF9BTElBU0VEX1BPSU5UX1NJWkVfUkFOR0UNR0xfQUxQSEFfQklUUxdHTF9BUlJBWV9CVUZGRVJfQklORElORyBHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfQklORElORx1HTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfU0laRR5HTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfU1RBUlQIR0xfQkxFTkQOR0xfQkxFTkRfQ09MT1ISR0xfQkxFTkRfRFNUX0FMUEhBEEdMX0JMRU5EX0RTVF9SR0IXR0xfQkxFTkRfRVFVQVRJT05fQUxQSEEVR0xfQkxFTkRfRVFVQVRJT05fUkdCEkdMX0JMRU5EX1NSQ19BTFBIQRBHTF9CTEVORF9TUkNfUkdCDEdMX0JMVUVfQklUUxRHTF9DT0xPUl9DTEVBUl9WQUxVRRJHTF9DT0xPUl9XUklURU1BU0sdR0xfQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMQR0xfQ09OVEVYVF9GTEFHUxhHTF9DT05URVhUX1JPQlVTVF9BQ0NFU1MbR0xfQ09QWV9SRUFEX0JVRkZFUl9CSU5ESU5HHEdMX0NPUFlfV1JJVEVfQlVGRkVSX0JJTkRJTkcMR0xfQ1VMTF9GQUNFEUdMX0NVTExfRkFDRV9NT0RFEkdMX0NVUlJFTlRfUFJPR1JBTRpHTF9ERUJVR19HUk9VUF9TVEFDS19ERVBUSBhHTF9ERUJVR19MT0dHRURfTUVTU0FHRVMjR0xfREVCVUdfTkVYVF9MT0dHRURfTUVTU0FHRV9MRU5HVEgNR0xfREVQVEhfQklUUxRHTF9ERVBUSF9DTEVBUl9WQUxVRQ1HTF9ERVBUSF9GVU5DDkdMX0RFUFRIX1JBTkdFDUdMX0RFUFRIX1RFU1QSR0xfREVQVEhfV1JJVEVNQVNLI0dMX0RJU1BBVENIX0lORElSRUNUX0JVRkZFUl9CSU5ESU5HCUdMX0RJVEhFUg5HTF9EUkFXX0JVRkZFUg9HTF9EUkFXX0JVRkZFUjAPR0xfRFJBV19CVUZGRVIxD0dMX0RSQVdfQlVGRkVSMg9HTF9EUkFXX0JVRkZFUjMPR0xfRFJBV19CVUZGRVI0D0dMX0RSQVdfQlVGRkVSNQ9HTF9EUkFXX0JVRkZFUjYPR0xfRFJBV19CVUZGRVI3D0dMX0RSQVdfQlVGRkVSOA9HTF9EUkFXX0JVRkZFUjkQR0xfRFJBV19CVUZGRVIxMBBHTF9EUkFXX0JVRkZFUjExEEdMX0RSQVdfQlVGRkVSMTIQR0xfRFJBV19CVUZGRVIxMxBHTF9EUkFXX0JVRkZFUjE0EEdMX0RSQVdfQlVGRkVSMTUbR0xfRFJBV19GUkFNRUJVRkZFUl9CSU5ESU5HH0dMX0VMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkclR0xfRlJBR01FTlRfSU5URVJQT0xBVElPTl9PRkZTRVRfQklUUyJHTF9GUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UDUdMX0ZST05UX0ZBQ0UXR0xfR0VORVJBVEVfTUlQTUFQX0hJTlQNR0xfR1JFRU5fQklUUxVHTF9JTUFHRV9CSU5ESU5HX05BTUUWR0xfSU1BR0VfQklORElOR19MRVZFTBhHTF9JTUFHRV9CSU5ESU5HX0xBWUVSRUQWR0xfSU1BR0VfQklORElOR19MQVlFUhdHTF9JTUFHRV9CSU5ESU5HX0FDQ0VTUxdHTF9JTUFHRV9CSU5ESU5HX0ZPUk1BVCNHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX0ZPUk1BVCFHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX1RZUEUZR0xfTEFZRVJfUFJPVk9LSU5HX1ZFUlRFWA1HTF9MSU5FX1dJRFRIKkdMX1BSSU1JVElWRV9SRVNUQVJUX0ZPUl9QQVRDSEVTX1NVUFBPUlRFRBBHTF9NQUpPUl9WRVJTSU9OFkdMX01BWF8zRF9URVhUVVJFX1NJWkUbR0xfTUFYX0FSUkFZX1RFWFRVUkVfTEFZRVJTJUdMX01BWF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfQklORElOR1MhR0xfTUFYX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TSVpFJkdMX01BWF9DT01CSU5FRF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTGEdMX01BWF9DT0xPUl9BVFRBQ0hNRU5UUxxHTF9NQVhfQ09MT1JfVEVYVFVSRV9TQU1QTEVTHEdMX01BWF9ERVBUSF9URVhUVVJFX1NBTVBMRVMfR0xfTUFYX0NPTUJJTkVEX0FUT01JQ19DT1VOVEVSUxJHTF9NQVhfSU1BR0VfVU5JVFMqR0xfTUFYX0NPTUJJTkVEX0NPTVBVVEVfVU5JRk9STV9DT01QT05FTlRTK0dMX01BWF9DT01CSU5FRF9GUkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFMrR0xfTUFYX0NPTUJJTkVEX0dFT01FVFJZX1VOSUZPUk1fQ09NUE9ORU5UUyVHTF9NQVhfQ09NQklORURfU0hBREVSX1NUT1JBR0VfQkxPQ0tTL0dMX01BWF9DT01CSU5FRF9URVNTX0NPTlRST0xfVU5JRk9STV9DT01QT05FTlRTMkdMX01BWF9DT01CSU5FRF9URVNTX0VWQUxVQVRJT05fVU5JRk9STV9DT01QT05FTlRTI0dMX01BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTJ0dMX01BWF9DT01CSU5FRF9TSEFERVJfT1VUUFVUX1JFU09VUkNFUx5HTF9NQVhfQ09NQklORURfVU5JRk9STV9CTE9DS1MpR0xfTUFYX0NPTUJJTkVEX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFMlR0xfTUFYX0NPTVBVVEVfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx5HTF9NQVhfQ09NUFVURV9BVE9NSUNfQ09VTlRFUlMdR0xfTUFYX0NPTVBVVEVfSU1BR0VfVU5JRk9STVMeR0xfTUFYX0NPTUJJTkVEX0lNQUdFX1VOSUZPUk1TJEdMX01BWF9DT01QVVRFX1NIQURFUl9TVE9SQUdFX0JMT0NLUyJHTF9NQVhfQ09NUFVURV9URVhUVVJFX0lNQUdFX1VOSVRTIUdMX01BWF9DT01QVVRFX1NIQVJFRF9NRU1PUllfU0laRR1HTF9NQVhfQ09NUFVURV9VTklGT1JNX0JMT0NLUyFHTF9NQVhfQ09NUFVURV9VTklGT1JNX0NPTVBPTkVOVFMfR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9DT1VOVCVHTF9NQVhfQ09NUFVURV9XT1JLX0dST1VQX0lOVk9DQVRJT05THkdMX01BWF9DT01QVVRFX1dPUktfR1JPVVBfU0laRRxHTF9NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFHkdMX01BWF9ERUJVR19HUk9VUF9TVEFDS19ERVBUSBxHTF9NQVhfREVCVUdfTE9HR0VEX01FU1NBR0VTG0dMX01BWF9ERUJVR19NRVNTQUdFX0xFTkdUSBNHTF9NQVhfRFJBV19CVUZGRVJTFEdMX01BWF9FTEVNRU5UX0lOREVYF0dMX01BWF9FTEVNRU5UU19JTkRJQ0VTGEdMX01BWF9FTEVNRU5UU19WRVJUSUNFUyZHTF9NQVhfRlJBR01FTlRfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx9HTF9NQVhfRlJBR01FTlRfQVRPTUlDX0NPVU5URVJTHkdMX01BWF9GUkFHTUVOVF9JTUFHRV9VTklGT1JNUyBHTF9NQVhfRlJBR01FTlRfSU5QVVRfQ09NUE9ORU5UUyRHTF9NQVhfRlJBR01FTlRfSU5URVJQT0xBVElPTl9PRkZTRVQlR0xfTUFYX0ZSQUdNRU5UX1NIQURFUl9TVE9SQUdFX0JMT0NLUyRHTF9NSU5fUFJPR1JBTV9URVhUVVJFX0dBVEhFUl9PRkZTRVQkR0xfTUFYX1BST0dSQU1fVEVYVFVSRV9HQVRIRVJfT0ZGU0VUHkdMX01BWF9GUkFHTUVOVF9VTklGT1JNX0JMT0NLUyJHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTH0dMX01BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMZR0xfTUFYX0ZSQU1FQlVGRkVSX0hFSUdIVBlHTF9NQVhfRlJBTUVCVUZGRVJfTEFZRVJTGkdMX01BWF9GUkFNRUJVRkZFUl9TQU1QTEVTGEdMX01BWF9GUkFNRUJVRkZFUl9XSURUSCZHTF9NQVhfR0VPTUVUUllfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx9HTF9NQVhfR0VPTUVUUllfQVRPTUlDX0NPVU5URVJTHkdMX01BWF9HRU9NRVRSWV9JTUFHRV9VTklGT1JNUyBHTF9NQVhfR0VPTUVUUllfSU5QVVRfQ09NUE9ORU5UUyFHTF9NQVhfR0VPTUVUUllfT1VUUFVUX0NPTVBPTkVOVFMfR0xfTUFYX0dFT01FVFJZX09VVFBVVF9WRVJUSUNFUyJHTF9NQVhfR0VPTUVUUllfU0hBREVSX0lOVk9DQVRJT05TJUdMX01BWF9HRU9NRVRSWV9TSEFERVJfU1RPUkFHRV9CTE9DS1MjR0xfTUFYX0dFT01FVFJZX1RFWFRVUkVfSU1BR0VfVU5JVFMnR0xfTUFYX0dFT01FVFJZX1RPVEFMX09VVFBVVF9DT01QT05FTlRTHkdMX01BWF9HRU9NRVRSWV9VTklGT1JNX0JMT0NLUyJHTF9NQVhfR0VPTUVUUllfVU5JRk9STV9DT01QT05FTlRTFkdMX01BWF9JTlRFR0VSX1NBTVBMRVMTR0xfTUFYX0xBQkVMX0xFTkdUSBtHTF9NQVhfUFJPR1JBTV9URVhFTF9PRkZTRVQYR0xfTUFYX1JFTkRFUkJVRkZFUl9TSVpFGEdMX01BWF9TQU1QTEVfTUFTS19XT1JEUw5HTF9NQVhfU0FNUExFUxpHTF9NQVhfU0VSVkVSX1dBSVRfVElNRU9VVCBHTF9NQVhfU0hBREVSX1NUT1JBR0VfQkxPQ0tfU0laRSVHTF9NQVhfU0hBREVSX1NUT1JBR0VfQlVGRkVSX0JJTkRJTkdTKkdMX01BWF9URVNTX0NPTlRST0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSUyNHTF9NQVhfVEVTU19DT05UUk9MX0FUT01JQ19DT1VOVEVSUyJHTF9NQVhfVEVTU19DT05UUk9MX0lNQUdFX1VOSUZPUk1TJEdMX01BWF9URVNTX0NPTlRST0xfSU5QVVRfQ09NUE9ORU5UUyVHTF9NQVhfVEVTU19DT05UUk9MX09VVFBVVF9DT01QT05FTlRTKUdMX01BWF9URVNTX0NPTlRST0xfU0hBREVSX1NUT1JBR0VfQkxPQ0tTJ0dMX01BWF9URVNTX0NPTlRST0xfVEVYVFVSRV9JTUFHRV9VTklUUytHTF9NQVhfVEVTU19DT05UUk9MX1RPVEFMX09VVFBVVF9DT01QT05FTlRTIkdMX01BWF9URVNTX0NPTlRST0xfVU5JRk9STV9CTE9DS1MmR0xfTUFYX1RFU1NfQ09OVFJPTF9VTklGT1JNX0NPTVBPTkVOVFMtR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTJkdMX01BWF9URVNTX0VWQUxVQVRJT05fQVRPTUlDX0NPVU5URVJTJUdMX01BWF9URVNTX0VWQUxVQVRJT05fSU1BR0VfVU5JRk9STVMnR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9JTlBVVF9DT01QT05FTlRTKEdMX01BWF9URVNTX0VWQUxVQVRJT05fT1VUUFVUX0NPTVBPTkVOVFMsR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9TSEFERVJfU1RPUkFHRV9CTE9DS1MqR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9URVhUVVJFX0lNQUdFX1VOSVRTJUdMX01BWF9URVNTX0VWQUxVQVRJT05fVU5JRk9STV9CTE9DS1MpR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0NPTVBPTkVOVFMVR0xfTUFYX1RFU1NfR0VOX0xFVkVMFUdMX01BWF9QQVRDSF9WRVJUSUNFUxxHTF9NQVhfVEVTU19QQVRDSF9DT01QT05FTlRTGkdMX01BWF9URVhUVVJFX0JVRkZFUl9TSVpFGkdMX01BWF9URVhUVVJFX0lNQUdFX1VOSVRTF0dMX01BWF9URVhUVVJFX0xPRF9CSUFTE0dMX01BWF9URVhUVVJFX1NJWkUwR0xfTUFYX1RSQU5TRk9STV9GRUVEQkFDS19JTlRFUkxFQVZFRF9DT01QT05FTlRTKkdMX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQVRUUklCUy1HTF9NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFSQVRFX0NPTVBPTkVOVFMZR0xfTUFYX1VOSUZPUk1fQkxPQ0tfU0laRR5HTF9NQVhfVU5JRk9STV9CVUZGRVJfQklORElOR1MYR0xfTUFYX1VOSUZPUk1fTE9DQVRJT05TGUdMX01BWF9WQVJZSU5HX0NPTVBPTkVOVFMWR0xfTUFYX1ZBUllJTkdfVkVDVE9SUx1HTF9NQVhfVkVSVEVYX0FUT01JQ19DT1VOVEVSUyRHTF9NQVhfVkVSVEVYX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMdR0xfTUFYX1ZFUlRFWF9BVFRSSUJfQklORElOR1MbR0xfTUFYX1ZFUlRFWF9BVFRSSUJfU1RSSURFJEdMX01BWF9WRVJURVhfQVRUUklCX1JFTEFUSVZFX09GRlNFVBVHTF9NQVhfVkVSVEVYX0FUVFJJQlMcR0xfTUFYX1ZFUlRFWF9JTUFHRV9VTklGT1JNUx9HTF9NQVhfVkVSVEVYX09VVFBVVF9DT01QT05FTlRTI0dMX01BWF9WRVJURVhfU0hBREVSX1NUT1JBR0VfQkxPQ0tTIUdMX01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUxxHTF9NQVhfVkVSVEVYX1VOSUZPUk1fQkxPQ0tTIEdMX01BWF9WRVJURVhfVU5JRk9STV9DT01QT05FTlRTHUdMX01BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTFEdMX01BWF9WSUVXUE9SVF9ESU1TJEdMX01JTl9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVBtHTF9NSU5fUFJPR1JBTV9URVhFTF9PRkZTRVQbR0xfTUlOX1NBTVBMRV9TSEFESU5HX1ZBTFVFEEdMX01JTk9SX1ZFUlNJT04fR0xfTVVMVElTQU1QTEVfTElORV9XSURUSF9SQU5HRSVHTF9NVUxUSVNBTVBMRV9MSU5FX1dJRFRIX0dSQU5VTEFSSVRZIUdMX05VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUxFHTF9OVU1fRVhURU5TSU9OUx1HTF9OVU1fUFJPR1JBTV9CSU5BUllfRk9STUFUUxxHTF9OVU1fU0hBREVSX0JJTkFSWV9GT1JNQVRTEUdMX1BBQ0tfQUxJR05NRU5UFEdMX1BBQ0tfSU1BR0VfSEVJR0hUEkdMX1BBQ0tfUk9XX0xFTkdUSBNHTF9QQUNLX1NLSVBfSU1BR0VTE0dMX1BBQ0tfU0tJUF9QSVhFTFMRR0xfUEFDS19TS0lQX1JPV1MRR0xfUEFUQ0hfVkVSVElDRVMcR0xfUElYRUxfUEFDS19CVUZGRVJfQklORElORx5HTF9QSVhFTF9VTlBBQ0tfQlVGRkVSX0JJTkRJTkcYR0xfUE9MWUdPTl9PRkZTRVRfRkFDVE9SFkdMX1BPTFlHT05fT0ZGU0VUX0ZJTEwXR0xfUE9MWUdPTl9PRkZTRVRfVU5JVFMZR0xfUFJJTUlUSVZFX0JPVU5ESU5HX0JPWCBHTF9QUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWBlHTF9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTG0dMX1BST0dSQU1fUElQRUxJTkVfQklORElORxVHTF9SQVNURVJJWkVSX0RJU0NBUkQOR0xfUkVBRF9CVUZGRVIbR0xfUkVBRF9GUkFNRUJVRkZFUl9CSU5ESU5HC0dMX1JFRF9CSVRTF0dMX1JFTkRFUkJVRkZFUl9CSU5ESU5HHkdMX1JFU0VUX05PVElGSUNBVElPTl9TVFJBVEVHWRtHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0URR0xfU0FNUExFX0JVRkZFUlMSR0xfU0FNUExFX0NPVkVSQUdFGUdMX1NBTVBMRV9DT1ZFUkFHRV9JTlZFUlQYR0xfU0FNUExFX0NPVkVSQUdFX1ZBTFVFEUdMX1NBTVBMRV9TSEFESU5HEkdMX1NBTVBMRVJfQklORElORwpHTF9TQU1QTEVTDkdMX1NDSVNTT1JfQk9YD0dMX1NDSVNTT1JfVEVTVBhHTF9TSEFERVJfQklOQVJZX0ZPUk1BVFMSR0xfU0hBREVSX0NPTVBJTEVSIEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9CSU5ESU5HKUdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UHUdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9TSVpFHkdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9TVEFSVBRHTF9TVEVOQ0lMX0JBQ0tfRkFJTBRHTF9TVEVOQ0lMX0JBQ0tfRlVOQx9HTF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMH0dMX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1MTR0xfU1RFTkNJTF9CQUNLX1JFRhpHTF9TVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTSxlHTF9TVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLD0dMX1NURU5DSUxfQklUUxZHTF9TVEVOQ0lMX0NMRUFSX1ZBTFVFD0dMX1NURU5DSUxfRkFJTA9HTF9TVEVOQ0lMX0ZVTkMaR0xfU1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUwaR0xfU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1MOR0xfU1RFTkNJTF9SRUYPR0xfU1RFTkNJTF9URVNUFUdMX1NURU5DSUxfVkFMVUVfTUFTSxRHTF9TVEVOQ0lMX1dSSVRFTUFTSxBHTF9TVUJQSVhFTF9CSVRTFUdMX1RFWFRVUkVfQklORElOR18yRB9HTF9URVhUVVJFX0JJTkRJTkdfRVhURVJOQUxfT0VTG0dMX1RFWFRVUkVfQklORElOR18yRF9BUlJBWSFHTF9URVhUVVJFX0JJTkRJTkdfMkRfTVVMVElTQU1QTEUnR0xfVEVYVFVSRV9CSU5ESU5HXzJEX01VTFRJU0FNUExFX0FSUkFZFUdMX1RFWFRVUkVfQklORElOR18zRBlHTF9URVhUVVJFX0JJTkRJTkdfQlVGRkVSG0dMX1RFWFRVUkVfQklORElOR19DVUJFX01BUCFHTF9URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVBfQVJSQVkZR0xfVEVYVFVSRV9CVUZGRVJfQklORElORyJHTF9URVhUVVJFX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UHEdMX1RSQU5TRk9STV9GRUVEQkFDS19BQ1RJVkUdR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JJTkRJTkckR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9CSU5ESU5HIUdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU0laRSJHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NUQVJUHEdMX1RSQU5TRk9STV9GRUVEQkFDS19QQVVTRUQZR0xfVU5JRk9STV9CVUZGRVJfQklORElORyJHTF9VTklGT1JNX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UFkdMX1VOSUZPUk1fQlVGRkVSX1NJWkUXR0xfVU5JRk9STV9CVUZGRVJfU1RBUlQTR0xfVU5QQUNLX0FMSUdOTUVOVBZHTF9VTlBBQ0tfSU1BR0VfSEVJR0hUFEdMX1VOUEFDS19ST1dfTEVOR1RIFUdMX1VOUEFDS19TS0lQX0lNQUdFUxVHTF9VTlBBQ0tfU0tJUF9QSVhFTFMTR0xfVU5QQUNLX1NLSVBfUk9XUxdHTF9WRVJURVhfQVJSQVlfQklORElORxlHTF9WRVJURVhfQklORElOR19ESVZJU09SGEdMX1ZFUlRFWF9CSU5ESU5HX09GRlNFVBhHTF9WRVJURVhfQklORElOR19TVFJJREULR0xfVklFV1BPUlQhR0xfTUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUE0dMX0dQVV9ESVNKT0lOVF9FWFSHPQSHPwaHQQiHQwoUZ2xHZXRJbnRlZ2VyNjR2QVBQTEUGcGFyYW1zBAECAg9nbEdldEludGVnZXJpX3YCh0UMh0cIh0kKD2dsR2V0SW50ZWdlcmlfdgVwYXJhbYEqEUdMX0FDVElWRV9URVhUVVJFG0dMX0FMSUFTRURfTElORV9XSURUSF9SQU5HRRtHTF9BTElBU0VEX1BPSU5UX1NJWkVfUkFOR0UNR0xfQUxQSEFfQklUUxdHTF9BUlJBWV9CVUZGRVJfQklORElORyBHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfQklORElORx1HTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfU0laRR5HTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfU1RBUlQIR0xfQkxFTkQOR0xfQkxFTkRfQ09MT1ISR0xfQkxFTkRfRFNUX0FMUEhBEEdMX0JMRU5EX0RTVF9SR0IXR0xfQkxFTkRfRVFVQVRJT05fQUxQSEEVR0xfQkxFTkRfRVFVQVRJT05fUkdCEkdMX0JMRU5EX1NSQ19BTFBIQRBHTF9CTEVORF9TUkNfUkdCDEdMX0JMVUVfQklUUxRHTF9DT0xPUl9DTEVBUl9WQUxVRRJHTF9DT0xPUl9XUklURU1BU0sdR0xfQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMQR0xfQ09OVEVYVF9GTEFHUxhHTF9DT05URVhUX1JPQlVTVF9BQ0NFU1MbR0xfQ09QWV9SRUFEX0JVRkZFUl9CSU5ESU5HHEdMX0NPUFlfV1JJVEVfQlVGRkVSX0JJTkRJTkcMR0xfQ1VMTF9GQUNFEUdMX0NVTExfRkFDRV9NT0RFEkdMX0NVUlJFTlRfUFJPR1JBTRpHTF9ERUJVR19HUk9VUF9TVEFDS19ERVBUSBhHTF9ERUJVR19MT0dHRURfTUVTU0FHRVMjR0xfREVCVUdfTkVYVF9MT0dHRURfTUVTU0FHRV9MRU5HVEgNR0xfREVQVEhfQklUUxRHTF9ERVBUSF9DTEVBUl9WQUxVRQ1HTF9ERVBUSF9GVU5DDkdMX0RFUFRIX1JBTkdFDUdMX0RFUFRIX1RFU1QSR0xfREVQVEhfV1JJVEVNQVNLI0dMX0RJU1BBVENIX0lORElSRUNUX0JVRkZFUl9CSU5ESU5HCUdMX0RJVEhFUg5HTF9EUkFXX0JVRkZFUg9HTF9EUkFXX0JVRkZFUjAPR0xfRFJBV19CVUZGRVIxD0dMX0RSQVdfQlVGRkVSMg9HTF9EUkFXX0JVRkZFUjMPR0xfRFJBV19CVUZGRVI0D0dMX0RSQVdfQlVGRkVSNQ9HTF9EUkFXX0JVRkZFUjYPR0xfRFJBV19CVUZGRVI3D0dMX0RSQVdfQlVGRkVSOA9HTF9EUkFXX0JVRkZFUjkQR0xfRFJBV19CVUZGRVIxMBBHTF9EUkFXX0JVRkZFUjExEEdMX0RSQVdfQlVGRkVSMTIQR0xfRFJBV19CVUZGRVIxMxBHTF9EUkFXX0JVRkZFUjE0EEdMX0RSQVdfQlVGRkVSMTUbR0xfRFJBV19GUkFNRUJVRkZFUl9CSU5ESU5HH0dMX0VMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkclR0xfRlJBR01FTlRfSU5URVJQT0xBVElPTl9PRkZTRVRfQklUUyJHTF9GUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UDUdMX0ZST05UX0ZBQ0UXR0xfR0VORVJBVEVfTUlQTUFQX0hJTlQNR0xfR1JFRU5fQklUUxVHTF9JTUFHRV9CSU5ESU5HX05BTUUWR0xfSU1BR0VfQklORElOR19MRVZFTBhHTF9JTUFHRV9CSU5ESU5HX0xBWUVSRUQWR0xfSU1BR0VfQklORElOR19MQVlFUhdHTF9JTUFHRV9CSU5ESU5HX0FDQ0VTUxdHTF9JTUFHRV9CSU5ESU5HX0ZPUk1BVCNHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX0ZPUk1BVCFHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX1RZUEUZR0xfTEFZRVJfUFJPVk9LSU5HX1ZFUlRFWA1HTF9MSU5FX1dJRFRIKkdMX1BSSU1JVElWRV9SRVNUQVJUX0ZPUl9QQVRDSEVTX1NVUFBPUlRFRBBHTF9NQUpPUl9WRVJTSU9OFkdMX01BWF8zRF9URVhUVVJFX1NJWkUbR0xfTUFYX0FSUkFZX1RFWFRVUkVfTEFZRVJTJUdMX01BWF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfQklORElOR1MhR0xfTUFYX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TSVpFJkdMX01BWF9DT01CSU5FRF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTGEdMX01BWF9DT0xPUl9BVFRBQ0hNRU5UUxxHTF9NQVhfQ09MT1JfVEVYVFVSRV9TQU1QTEVTHEdMX01BWF9ERVBUSF9URVhUVVJFX1NBTVBMRVMfR0xfTUFYX0NPTUJJTkVEX0FUT01JQ19DT1VOVEVSUxJHTF9NQVhfSU1BR0VfVU5JVFMqR0xfTUFYX0NPTUJJTkVEX0NPTVBVVEVfVU5JRk9STV9DT01QT05FTlRTK0dMX01BWF9DT01CSU5FRF9GUkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFMrR0xfTUFYX0NPTUJJTkVEX0dFT01FVFJZX1VOSUZPUk1fQ09NUE9ORU5UUyVHTF9NQVhfQ09NQklORURfU0hBREVSX1NUT1JBR0VfQkxPQ0tTL0dMX01BWF9DT01CSU5FRF9URVNTX0NPTlRST0xfVU5JRk9STV9DT01QT05FTlRTMkdMX01BWF9DT01CSU5FRF9URVNTX0VWQUxVQVRJT05fVU5JRk9STV9DT01QT05FTlRTI0dMX01BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTJ0dMX01BWF9DT01CSU5FRF9TSEFERVJfT1VUUFVUX1JFU09VUkNFUx5HTF9NQVhfQ09NQklORURfVU5JRk9STV9CTE9DS1MpR0xfTUFYX0NPTUJJTkVEX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFMlR0xfTUFYX0NPTVBVVEVfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx5HTF9NQVhfQ09NUFVURV9BVE9NSUNfQ09VTlRFUlMdR0xfTUFYX0NPTVBVVEVfSU1BR0VfVU5JRk9STVMeR0xfTUFYX0NPTUJJTkVEX0lNQUdFX1VOSUZPUk1TJEdMX01BWF9DT01QVVRFX1NIQURFUl9TVE9SQUdFX0JMT0NLUyJHTF9NQVhfQ09NUFVURV9URVhUVVJFX0lNQUdFX1VOSVRTIUdMX01BWF9DT01QVVRFX1NIQVJFRF9NRU1PUllfU0laRR1HTF9NQVhfQ09NUFVURV9VTklGT1JNX0JMT0NLUyFHTF9NQVhfQ09NUFVURV9VTklGT1JNX0NPTVBPTkVOVFMfR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9DT1VOVCVHTF9NQVhfQ09NUFVURV9XT1JLX0dST1VQX0lOVk9DQVRJT05THkdMX01BWF9DT01QVVRFX1dPUktfR1JPVVBfU0laRRxHTF9NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFHkdMX01BWF9ERUJVR19HUk9VUF9TVEFDS19ERVBUSBxHTF9NQVhfREVCVUdfTE9HR0VEX01FU1NBR0VTG0dMX01BWF9ERUJVR19NRVNTQUdFX0xFTkdUSBNHTF9NQVhfRFJBV19CVUZGRVJTFEdMX01BWF9FTEVNRU5UX0lOREVYF0dMX01BWF9FTEVNRU5UU19JTkRJQ0VTGEdMX01BWF9FTEVNRU5UU19WRVJUSUNFUyZHTF9NQVhfRlJBR01FTlRfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx9HTF9NQVhfRlJBR01FTlRfQVRPTUlDX0NPVU5URVJTHkdMX01BWF9GUkFHTUVOVF9JTUFHRV9VTklGT1JNUyBHTF9NQVhfRlJBR01FTlRfSU5QVVRfQ09NUE9ORU5UUyRHTF9NQVhfRlJBR01FTlRfSU5URVJQT0xBVElPTl9PRkZTRVQlR0xfTUFYX0ZSQUdNRU5UX1NIQURFUl9TVE9SQUdFX0JMT0NLUyRHTF9NSU5fUFJPR1JBTV9URVhUVVJFX0dBVEhFUl9PRkZTRVQkR0xfTUFYX1BST0dSQU1fVEVYVFVSRV9HQVRIRVJfT0ZGU0VUHkdMX01BWF9GUkFHTUVOVF9VTklGT1JNX0JMT0NLUyJHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTH0dMX01BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMZR0xfTUFYX0ZSQU1FQlVGRkVSX0hFSUdIVBlHTF9NQVhfRlJBTUVCVUZGRVJfTEFZRVJTGkdMX01BWF9GUkFNRUJVRkZFUl9TQU1QTEVTGEdMX01BWF9GUkFNRUJVRkZFUl9XSURUSCZHTF9NQVhfR0VPTUVUUllfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx9HTF9NQVhfR0VPTUVUUllfQVRPTUlDX0NPVU5URVJTHkdMX01BWF9HRU9NRVRSWV9JTUFHRV9VTklGT1JNUyBHTF9NQVhfR0VPTUVUUllfSU5QVVRfQ09NUE9ORU5UUyFHTF9NQVhfR0VPTUVUUllfT1VUUFVUX0NPTVBPTkVOVFMfR0xfTUFYX0dFT01FVFJZX09VVFBVVF9WRVJUSUNFUyJHTF9NQVhfR0VPTUVUUllfU0hBREVSX0lOVk9DQVRJT05TJUdMX01BWF9HRU9NRVRSWV9TSEFERVJfU1RPUkFHRV9CTE9DS1MjR0xfTUFYX0dFT01FVFJZX1RFWFRVUkVfSU1BR0VfVU5JVFMnR0xfTUFYX0dFT01FVFJZX1RPVEFMX09VVFBVVF9DT01QT05FTlRTHkdMX01BWF9HRU9NRVRSWV9VTklGT1JNX0JMT0NLUyJHTF9NQVhfR0VPTUVUUllfVU5JRk9STV9DT01QT05FTlRTFkdMX01BWF9JTlRFR0VSX1NBTVBMRVMTR0xfTUFYX0xBQkVMX0xFTkdUSBtHTF9NQVhfUFJPR1JBTV9URVhFTF9PRkZTRVQYR0xfTUFYX1JFTkRFUkJVRkZFUl9TSVpFGEdMX01BWF9TQU1QTEVfTUFTS19XT1JEUw5HTF9NQVhfU0FNUExFUxpHTF9NQVhfU0VSVkVSX1dBSVRfVElNRU9VVCBHTF9NQVhfU0hBREVSX1NUT1JBR0VfQkxPQ0tfU0laRSVHTF9NQVhfU0hBREVSX1NUT1JBR0VfQlVGRkVSX0JJTkRJTkdTKkdMX01BWF9URVNTX0NPTlRST0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSUyNHTF9NQVhfVEVTU19DT05UUk9MX0FUT01JQ19DT1VOVEVSUyJHTF9NQVhfVEVTU19DT05UUk9MX0lNQUdFX1VOSUZPUk1TJEdMX01BWF9URVNTX0NPTlRST0xfSU5QVVRfQ09NUE9ORU5UUyVHTF9NQVhfVEVTU19DT05UUk9MX09VVFBVVF9DT01QT05FTlRTKUdMX01BWF9URVNTX0NPTlRST0xfU0hBREVSX1NUT1JBR0VfQkxPQ0tTJ0dMX01BWF9URVNTX0NPTlRST0xfVEVYVFVSRV9JTUFHRV9VTklUUytHTF9NQVhfVEVTU19DT05UUk9MX1RPVEFMX09VVFBVVF9DT01QT05FTlRTIkdMX01BWF9URVNTX0NPTlRST0xfVU5JRk9STV9CTE9DS1MmR0xfTUFYX1RFU1NfQ09OVFJPTF9VTklGT1JNX0NPTVBPTkVOVFMtR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTJkdMX01BWF9URVNTX0VWQUxVQVRJT05fQVRPTUlDX0NPVU5URVJTJUdMX01BWF9URVNTX0VWQUxVQVRJT05fSU1BR0VfVU5JRk9STVMnR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9JTlBVVF9DT01QT05FTlRTKEdMX01BWF9URVNTX0VWQUxVQVRJT05fT1VUUFVUX0NPTVBPTkVOVFMsR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9TSEFERVJfU1RPUkFHRV9CTE9DS1MqR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9URVhUVVJFX0lNQUdFX1VOSVRTJUdMX01BWF9URVNTX0VWQUxVQVRJT05fVU5JRk9STV9CTE9DS1MpR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0NPTVBPTkVOVFMVR0xfTUFYX1RFU1NfR0VOX0xFVkVMFUdMX01BWF9QQVRDSF9WRVJUSUNFUxxHTF9NQVhfVEVTU19QQVRDSF9DT01QT05FTlRTGkdMX01BWF9URVhUVVJFX0JVRkZFUl9TSVpFGkdMX01BWF9URVhUVVJFX0lNQUdFX1VOSVRTF0dMX01BWF9URVhUVVJFX0xPRF9CSUFTE0dMX01BWF9URVhUVVJFX1NJWkUwR0xfTUFYX1RSQU5TRk9STV9GRUVEQkFDS19JTlRFUkxFQVZFRF9DT01QT05FTlRTKkdMX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQVRUUklCUy1HTF9NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFSQVRFX0NPTVBPTkVOVFMZR0xfTUFYX1VOSUZPUk1fQkxPQ0tfU0laRR5HTF9NQVhfVU5JRk9STV9CVUZGRVJfQklORElOR1MYR0xfTUFYX1VOSUZPUk1fTE9DQVRJT05TGUdMX01BWF9WQVJZSU5HX0NPTVBPTkVOVFMWR0xfTUFYX1ZBUllJTkdfVkVDVE9SUx1HTF9NQVhfVkVSVEVYX0FUT01JQ19DT1VOVEVSUyRHTF9NQVhfVkVSVEVYX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMdR0xfTUFYX1ZFUlRFWF9BVFRSSUJfQklORElOR1MbR0xfTUFYX1ZFUlRFWF9BVFRSSUJfU1RSSURFJEdMX01BWF9WRVJURVhfQVRUUklCX1JFTEFUSVZFX09GRlNFVBVHTF9NQVhfVkVSVEVYX0FUVFJJQlMcR0xfTUFYX1ZFUlRFWF9JTUFHRV9VTklGT1JNUx9HTF9NQVhfVkVSVEVYX09VVFBVVF9DT01QT05FTlRTI0dMX01BWF9WRVJURVhfU0hBREVSX1NUT1JBR0VfQkxPQ0tTIUdMX01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUxxHTF9NQVhfVkVSVEVYX1VOSUZPUk1fQkxPQ0tTIEdMX01BWF9WRVJURVhfVU5JRk9STV9DT01QT05FTlRTHUdMX01BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTFEdMX01BWF9WSUVXUE9SVF9ESU1TJEdMX01JTl9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVBtHTF9NSU5fUFJPR1JBTV9URVhFTF9PRkZTRVQbR0xfTUlOX1NBTVBMRV9TSEFESU5HX1ZBTFVFEEdMX01JTk9SX1ZFUlNJT04fR0xfTVVMVElTQU1QTEVfTElORV9XSURUSF9SQU5HRSVHTF9NVUxUSVNBTVBMRV9MSU5FX1dJRFRIX0dSQU5VTEFSSVRZIUdMX05VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUxFHTF9OVU1fRVhURU5TSU9OUx1HTF9OVU1fUFJPR1JBTV9CSU5BUllfRk9STUFUUxxHTF9OVU1fU0hBREVSX0JJTkFSWV9GT1JNQVRTEUdMX1BBQ0tfQUxJR05NRU5UFEdMX1BBQ0tfSU1BR0VfSEVJR0hUEkdMX1BBQ0tfUk9XX0xFTkdUSBNHTF9QQUNLX1NLSVBfSU1BR0VTE0dMX1BBQ0tfU0tJUF9QSVhFTFMRR0xfUEFDS19TS0lQX1JPV1MRR0xfUEFUQ0hfVkVSVElDRVMcR0xfUElYRUxfUEFDS19CVUZGRVJfQklORElORx5HTF9QSVhFTF9VTlBBQ0tfQlVGRkVSX0JJTkRJTkcYR0xfUE9MWUdPTl9PRkZTRVRfRkFDVE9SFkdMX1BPTFlHT05fT0ZGU0VUX0ZJTEwXR0xfUE9MWUdPTl9PRkZTRVRfVU5JVFMZR0xfUFJJTUlUSVZFX0JPVU5ESU5HX0JPWCBHTF9QUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWBlHTF9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTG0dMX1BST0dSQU1fUElQRUxJTkVfQklORElORxVHTF9SQVNURVJJWkVSX0RJU0NBUkQOR0xfUkVBRF9CVUZGRVIbR0xfUkVBRF9GUkFNRUJVRkZFUl9CSU5ESU5HC0dMX1JFRF9CSVRTF0dMX1JFTkRFUkJVRkZFUl9CSU5ESU5HHkdMX1JFU0VUX05PVElGSUNBVElPTl9TVFJBVEVHWRtHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0URR0xfU0FNUExFX0JVRkZFUlMSR0xfU0FNUExFX0NPVkVSQUdFGUdMX1NBTVBMRV9DT1ZFUkFHRV9JTlZFUlQYR0xfU0FNUExFX0NPVkVSQUdFX1ZBTFVFEUdMX1NBTVBMRV9TSEFESU5HEkdMX1NBTVBMRVJfQklORElORwpHTF9TQU1QTEVTDkdMX1NDSVNTT1JfQk9YD0dMX1NDSVNTT1JfVEVTVBhHTF9TSEFERVJfQklOQVJZX0ZPUk1BVFMSR0xfU0hBREVSX0NPTVBJTEVSIEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9CSU5ESU5HKUdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UHUdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9TSVpFHkdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9TVEFSVBRHTF9TVEVOQ0lMX0JBQ0tfRkFJTBRHTF9TVEVOQ0lMX0JBQ0tfRlVOQx9HTF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMH0dMX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1MTR0xfU1RFTkNJTF9CQUNLX1JFRhpHTF9TVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTSxlHTF9TVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLD0dMX1NURU5DSUxfQklUUxZHTF9TVEVOQ0lMX0NMRUFSX1ZBTFVFD0dMX1NURU5DSUxfRkFJTA9HTF9TVEVOQ0lMX0ZVTkMaR0xfU1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUwaR0xfU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1MOR0xfU1RFTkNJTF9SRUYPR0xfU1RFTkNJTF9URVNUFUdMX1NURU5DSUxfVkFMVUVfTUFTSxRHTF9TVEVOQ0lMX1dSSVRFTUFTSxBHTF9TVUJQSVhFTF9CSVRTFUdMX1RFWFRVUkVfQklORElOR18yRB9HTF9URVhUVVJFX0JJTkRJTkdfRVhURVJOQUxfT0VTG0dMX1RFWFRVUkVfQklORElOR18yRF9BUlJBWSFHTF9URVhUVVJFX0JJTkRJTkdfMkRfTVVMVElTQU1QTEUnR0xfVEVYVFVSRV9CSU5ESU5HXzJEX01VTFRJU0FNUExFX0FSUkFZFUdMX1RFWFRVUkVfQklORElOR18zRBlHTF9URVhUVVJFX0JJTkRJTkdfQlVGRkVSG0dMX1RFWFRVUkVfQklORElOR19DVUJFX01BUCFHTF9URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVBfQVJSQVkZR0xfVEVYVFVSRV9CVUZGRVJfQklORElORyJHTF9URVhUVVJFX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UHEdMX1RSQU5TRk9STV9GRUVEQkFDS19BQ1RJVkUdR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JJTkRJTkckR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9CSU5ESU5HIUdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU0laRSJHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NUQVJUHEdMX1RSQU5TRk9STV9GRUVEQkFDS19QQVVTRUQZR0xfVU5JRk9STV9CVUZGRVJfQklORElORyJHTF9VTklGT1JNX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UFkdMX1VOSUZPUk1fQlVGRkVSX1NJWkUXR0xfVU5JRk9STV9CVUZGRVJfU1RBUlQTR0xfVU5QQUNLX0FMSUdOTUVOVBZHTF9VTlBBQ0tfSU1BR0VfSEVJR0hUFEdMX1VOUEFDS19ST1dfTEVOR1RIFUdMX1VOUEFDS19TS0lQX0lNQUdFUxVHTF9VTlBBQ0tfU0tJUF9QSVhFTFMTR0xfVU5QQUNLX1NLSVBfUk9XUxdHTF9WRVJURVhfQVJSQVlfQklORElORxlHTF9WRVJURVhfQklORElOR19ESVZJU09SGEdMX1ZFUlRFWF9CSU5ESU5HX09GRlNFVBhHTF9WRVJURVhfQklORElOR19TVFJJREULR0xfVklFV1BPUlQhR0xfTUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUE0dMX0dQVV9ESVNKT0lOVF9FWFSHSwSHTQaHTwiHUQoPZ2xHZXRJbnRlZ2VyaV92BnZhbHVlcwQBAgINZ2xHZXRJbnRlZ2VydgKHUwyHVQiHVwoNZ2xHZXRJbnRlZ2VydgVwYXJhbYEqEUdMX0FDVElWRV9URVhUVVJFG0dMX0FMSUFTRURfTElORV9XSURUSF9SQU5HRRtHTF9BTElBU0VEX1BPSU5UX1NJWkVfUkFOR0UNR0xfQUxQSEFfQklUUxdHTF9BUlJBWV9CVUZGRVJfQklORElORyBHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfQklORElORx1HTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfU0laRR5HTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfU1RBUlQIR0xfQkxFTkQOR0xfQkxFTkRfQ09MT1ISR0xfQkxFTkRfRFNUX0FMUEhBEEdMX0JMRU5EX0RTVF9SR0IXR0xfQkxFTkRfRVFVQVRJT05fQUxQSEEVR0xfQkxFTkRfRVFVQVRJT05fUkdCEkdMX0JMRU5EX1NSQ19BTFBIQRBHTF9CTEVORF9TUkNfUkdCDEdMX0JMVUVfQklUUxRHTF9DT0xPUl9DTEVBUl9WQUxVRRJHTF9DT0xPUl9XUklURU1BU0sdR0xfQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMQR0xfQ09OVEVYVF9GTEFHUxhHTF9DT05URVhUX1JPQlVTVF9BQ0NFU1MbR0xfQ09QWV9SRUFEX0JVRkZFUl9CSU5ESU5HHEdMX0NPUFlfV1JJVEVfQlVGRkVSX0JJTkRJTkcMR0xfQ1VMTF9GQUNFEUdMX0NVTExfRkFDRV9NT0RFEkdMX0NVUlJFTlRfUFJPR1JBTRpHTF9ERUJVR19HUk9VUF9TVEFDS19ERVBUSBhHTF9ERUJVR19MT0dHRURfTUVTU0FHRVMjR0xfREVCVUdfTkVYVF9MT0dHRURfTUVTU0FHRV9MRU5HVEgNR0xfREVQVEhfQklUUxRHTF9ERVBUSF9DTEVBUl9WQUxVRQ1HTF9ERVBUSF9GVU5DDkdMX0RFUFRIX1JBTkdFDUdMX0RFUFRIX1RFU1QSR0xfREVQVEhfV1JJVEVNQVNLI0dMX0RJU1BBVENIX0lORElSRUNUX0JVRkZFUl9CSU5ESU5HCUdMX0RJVEhFUg5HTF9EUkFXX0JVRkZFUg9HTF9EUkFXX0JVRkZFUjAPR0xfRFJBV19CVUZGRVIxD0dMX0RSQVdfQlVGRkVSMg9HTF9EUkFXX0JVRkZFUjMPR0xfRFJBV19CVUZGRVI0D0dMX0RSQVdfQlVGRkVSNQ9HTF9EUkFXX0JVRkZFUjYPR0xfRFJBV19CVUZGRVI3D0dMX0RSQVdfQlVGRkVSOA9HTF9EUkFXX0JVRkZFUjkQR0xfRFJBV19CVUZGRVIxMBBHTF9EUkFXX0JVRkZFUjExEEdMX0RSQVdfQlVGRkVSMTIQR0xfRFJBV19CVUZGRVIxMxBHTF9EUkFXX0JVRkZFUjE0EEdMX0RSQVdfQlVGRkVSMTUbR0xfRFJBV19GUkFNRUJVRkZFUl9CSU5ESU5HH0dMX0VMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkclR0xfRlJBR01FTlRfSU5URVJQT0xBVElPTl9PRkZTRVRfQklUUyJHTF9GUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UDUdMX0ZST05UX0ZBQ0UXR0xfR0VORVJBVEVfTUlQTUFQX0hJTlQNR0xfR1JFRU5fQklUUxVHTF9JTUFHRV9CSU5ESU5HX05BTUUWR0xfSU1BR0VfQklORElOR19MRVZFTBhHTF9JTUFHRV9CSU5ESU5HX0xBWUVSRUQWR0xfSU1BR0VfQklORElOR19MQVlFUhdHTF9JTUFHRV9CSU5ESU5HX0FDQ0VTUxdHTF9JTUFHRV9CSU5ESU5HX0ZPUk1BVCNHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX0ZPUk1BVCFHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX1RZUEUZR0xfTEFZRVJfUFJPVk9LSU5HX1ZFUlRFWA1HTF9MSU5FX1dJRFRIKkdMX1BSSU1JVElWRV9SRVNUQVJUX0ZPUl9QQVRDSEVTX1NVUFBPUlRFRBBHTF9NQUpPUl9WRVJTSU9OFkdMX01BWF8zRF9URVhUVVJFX1NJWkUbR0xfTUFYX0FSUkFZX1RFWFRVUkVfTEFZRVJTJUdMX01BWF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfQklORElOR1MhR0xfTUFYX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TSVpFJkdMX01BWF9DT01CSU5FRF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTGEdMX01BWF9DT0xPUl9BVFRBQ0hNRU5UUxxHTF9NQVhfQ09MT1JfVEVYVFVSRV9TQU1QTEVTHEdMX01BWF9ERVBUSF9URVhUVVJFX1NBTVBMRVMfR0xfTUFYX0NPTUJJTkVEX0FUT01JQ19DT1VOVEVSUxJHTF9NQVhfSU1BR0VfVU5JVFMqR0xfTUFYX0NPTUJJTkVEX0NPTVBVVEVfVU5JRk9STV9DT01QT05FTlRTK0dMX01BWF9DT01CSU5FRF9GUkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFMrR0xfTUFYX0NPTUJJTkVEX0dFT01FVFJZX1VOSUZPUk1fQ09NUE9ORU5UUyVHTF9NQVhfQ09NQklORURfU0hBREVSX1NUT1JBR0VfQkxPQ0tTL0dMX01BWF9DT01CSU5FRF9URVNTX0NPTlRST0xfVU5JRk9STV9DT01QT05FTlRTMkdMX01BWF9DT01CSU5FRF9URVNTX0VWQUxVQVRJT05fVU5JRk9STV9DT01QT05FTlRTI0dMX01BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTJ0dMX01BWF9DT01CSU5FRF9TSEFERVJfT1VUUFVUX1JFU09VUkNFUx5HTF9NQVhfQ09NQklORURfVU5JRk9STV9CTE9DS1MpR0xfTUFYX0NPTUJJTkVEX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFMlR0xfTUFYX0NPTVBVVEVfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx5HTF9NQVhfQ09NUFVURV9BVE9NSUNfQ09VTlRFUlMdR0xfTUFYX0NPTVBVVEVfSU1BR0VfVU5JRk9STVMeR0xfTUFYX0NPTUJJTkVEX0lNQUdFX1VOSUZPUk1TJEdMX01BWF9DT01QVVRFX1NIQURFUl9TVE9SQUdFX0JMT0NLUyJHTF9NQVhfQ09NUFVURV9URVhUVVJFX0lNQUdFX1VOSVRTIUdMX01BWF9DT01QVVRFX1NIQVJFRF9NRU1PUllfU0laRR1HTF9NQVhfQ09NUFVURV9VTklGT1JNX0JMT0NLUyFHTF9NQVhfQ09NUFVURV9VTklGT1JNX0NPTVBPTkVOVFMfR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9DT1VOVCVHTF9NQVhfQ09NUFVURV9XT1JLX0dST1VQX0lOVk9DQVRJT05THkdMX01BWF9DT01QVVRFX1dPUktfR1JPVVBfU0laRRxHTF9NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFHkdMX01BWF9ERUJVR19HUk9VUF9TVEFDS19ERVBUSBxHTF9NQVhfREVCVUdfTE9HR0VEX01FU1NBR0VTG0dMX01BWF9ERUJVR19NRVNTQUdFX0xFTkdUSBNHTF9NQVhfRFJBV19CVUZGRVJTFEdMX01BWF9FTEVNRU5UX0lOREVYF0dMX01BWF9FTEVNRU5UU19JTkRJQ0VTGEdMX01BWF9FTEVNRU5UU19WRVJUSUNFUyZHTF9NQVhfRlJBR01FTlRfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx9HTF9NQVhfRlJBR01FTlRfQVRPTUlDX0NPVU5URVJTHkdMX01BWF9GUkFHTUVOVF9JTUFHRV9VTklGT1JNUyBHTF9NQVhfRlJBR01FTlRfSU5QVVRfQ09NUE9ORU5UUyRHTF9NQVhfRlJBR01FTlRfSU5URVJQT0xBVElPTl9PRkZTRVQlR0xfTUFYX0ZSQUdNRU5UX1NIQURFUl9TVE9SQUdFX0JMT0NLUyRHTF9NSU5fUFJPR1JBTV9URVhUVVJFX0dBVEhFUl9PRkZTRVQkR0xfTUFYX1BST0dSQU1fVEVYVFVSRV9HQVRIRVJfT0ZGU0VUHkdMX01BWF9GUkFHTUVOVF9VTklGT1JNX0JMT0NLUyJHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTH0dMX01BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMZR0xfTUFYX0ZSQU1FQlVGRkVSX0hFSUdIVBlHTF9NQVhfRlJBTUVCVUZGRVJfTEFZRVJTGkdMX01BWF9GUkFNRUJVRkZFUl9TQU1QTEVTGEdMX01BWF9GUkFNRUJVRkZFUl9XSURUSCZHTF9NQVhfR0VPTUVUUllfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx9HTF9NQVhfR0VPTUVUUllfQVRPTUlDX0NPVU5URVJTHkdMX01BWF9HRU9NRVRSWV9JTUFHRV9VTklGT1JNUyBHTF9NQVhfR0VPTUVUUllfSU5QVVRfQ09NUE9ORU5UUyFHTF9NQVhfR0VPTUVUUllfT1VUUFVUX0NPTVBPTkVOVFMfR0xfTUFYX0dFT01FVFJZX09VVFBVVF9WRVJUSUNFUyJHTF9NQVhfR0VPTUVUUllfU0hBREVSX0lOVk9DQVRJT05TJUdMX01BWF9HRU9NRVRSWV9TSEFERVJfU1RPUkFHRV9CTE9DS1MjR0xfTUFYX0dFT01FVFJZX1RFWFRVUkVfSU1BR0VfVU5JVFMnR0xfTUFYX0dFT01FVFJZX1RPVEFMX09VVFBVVF9DT01QT05FTlRTHkdMX01BWF9HRU9NRVRSWV9VTklGT1JNX0JMT0NLUyJHTF9NQVhfR0VPTUVUUllfVU5JRk9STV9DT01QT05FTlRTFkdMX01BWF9JTlRFR0VSX1NBTVBMRVMTR0xfTUFYX0xBQkVMX0xFTkdUSBtHTF9NQVhfUFJPR1JBTV9URVhFTF9PRkZTRVQYR0xfTUFYX1JFTkRFUkJVRkZFUl9TSVpFGEdMX01BWF9TQU1QTEVfTUFTS19XT1JEUw5HTF9NQVhfU0FNUExFUxpHTF9NQVhfU0VSVkVSX1dBSVRfVElNRU9VVCBHTF9NQVhfU0hBREVSX1NUT1JBR0VfQkxPQ0tfU0laRSVHTF9NQVhfU0hBREVSX1NUT1JBR0VfQlVGRkVSX0JJTkRJTkdTKkdMX01BWF9URVNTX0NPTlRST0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSUyNHTF9NQVhfVEVTU19DT05UUk9MX0FUT01JQ19DT1VOVEVSUyJHTF9NQVhfVEVTU19DT05UUk9MX0lNQUdFX1VOSUZPUk1TJEdMX01BWF9URVNTX0NPTlRST0xfSU5QVVRfQ09NUE9ORU5UUyVHTF9NQVhfVEVTU19DT05UUk9MX09VVFBVVF9DT01QT05FTlRTKUdMX01BWF9URVNTX0NPTlRST0xfU0hBREVSX1NUT1JBR0VfQkxPQ0tTJ0dMX01BWF9URVNTX0NPTlRST0xfVEVYVFVSRV9JTUFHRV9VTklUUytHTF9NQVhfVEVTU19DT05UUk9MX1RPVEFMX09VVFBVVF9DT01QT05FTlRTIkdMX01BWF9URVNTX0NPTlRST0xfVU5JRk9STV9CTE9DS1MmR0xfTUFYX1RFU1NfQ09OVFJPTF9VTklGT1JNX0NPTVBPTkVOVFMtR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTJkdMX01BWF9URVNTX0VWQUxVQVRJT05fQVRPTUlDX0NPVU5URVJTJUdMX01BWF9URVNTX0VWQUxVQVRJT05fSU1BR0VfVU5JRk9STVMnR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9JTlBVVF9DT01QT05FTlRTKEdMX01BWF9URVNTX0VWQUxVQVRJT05fT1VUUFVUX0NPTVBPTkVOVFMsR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9TSEFERVJfU1RPUkFHRV9CTE9DS1MqR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9URVhUVVJFX0lNQUdFX1VOSVRTJUdMX01BWF9URVNTX0VWQUxVQVRJT05fVU5JRk9STV9CTE9DS1MpR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0NPTVBPTkVOVFMVR0xfTUFYX1RFU1NfR0VOX0xFVkVMFUdMX01BWF9QQVRDSF9WRVJUSUNFUxxHTF9NQVhfVEVTU19QQVRDSF9DT01QT05FTlRTGkdMX01BWF9URVhUVVJFX0JVRkZFUl9TSVpFGkdMX01BWF9URVhUVVJFX0lNQUdFX1VOSVRTF0dMX01BWF9URVhUVVJFX0xPRF9CSUFTE0dMX01BWF9URVhUVVJFX1NJWkUwR0xfTUFYX1RSQU5TRk9STV9GRUVEQkFDS19JTlRFUkxFQVZFRF9DT01QT05FTlRTKkdMX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQVRUUklCUy1HTF9NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFSQVRFX0NPTVBPTkVOVFMZR0xfTUFYX1VOSUZPUk1fQkxPQ0tfU0laRR5HTF9NQVhfVU5JRk9STV9CVUZGRVJfQklORElOR1MYR0xfTUFYX1VOSUZPUk1fTE9DQVRJT05TGUdMX01BWF9WQVJZSU5HX0NPTVBPTkVOVFMWR0xfTUFYX1ZBUllJTkdfVkVDVE9SUx1HTF9NQVhfVkVSVEVYX0FUT01JQ19DT1VOVEVSUyRHTF9NQVhfVkVSVEVYX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMdR0xfTUFYX1ZFUlRFWF9BVFRSSUJfQklORElOR1MbR0xfTUFYX1ZFUlRFWF9BVFRSSUJfU1RSSURFJEdMX01BWF9WRVJURVhfQVRUUklCX1JFTEFUSVZFX09GRlNFVBVHTF9NQVhfVkVSVEVYX0FUVFJJQlMcR0xfTUFYX1ZFUlRFWF9JTUFHRV9VTklGT1JNUx9HTF9NQVhfVkVSVEVYX09VVFBVVF9DT01QT05FTlRTI0dMX01BWF9WRVJURVhfU0hBREVSX1NUT1JBR0VfQkxPQ0tTIUdMX01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUxxHTF9NQVhfVkVSVEVYX1VOSUZPUk1fQkxPQ0tTIEdMX01BWF9WRVJURVhfVU5JRk9STV9DT01QT05FTlRTHUdMX01BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTFEdMX01BWF9WSUVXUE9SVF9ESU1TJEdMX01JTl9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVBtHTF9NSU5fUFJPR1JBTV9URVhFTF9PRkZTRVQbR0xfTUlOX1NBTVBMRV9TSEFESU5HX1ZBTFVFEEdMX01JTk9SX1ZFUlNJT04fR0xfTVVMVElTQU1QTEVfTElORV9XSURUSF9SQU5HRSVHTF9NVUxUSVNBTVBMRV9MSU5FX1dJRFRIX0dSQU5VTEFSSVRZIUdMX05VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUxFHTF9OVU1fRVhURU5TSU9OUx1HTF9OVU1fUFJPR1JBTV9CSU5BUllfRk9STUFUUxxHTF9OVU1fU0hBREVSX0JJTkFSWV9GT1JNQVRTEUdMX1BBQ0tfQUxJR05NRU5UFEdMX1BBQ0tfSU1BR0VfSEVJR0hUEkdMX1BBQ0tfUk9XX0xFTkdUSBNHTF9QQUNLX1NLSVBfSU1BR0VTE0dMX1BBQ0tfU0tJUF9QSVhFTFMRR0xfUEFDS19TS0lQX1JPV1MRR0xfUEFUQ0hfVkVSVElDRVMcR0xfUElYRUxfUEFDS19CVUZGRVJfQklORElORx5HTF9QSVhFTF9VTlBBQ0tfQlVGRkVSX0JJTkRJTkcYR0xfUE9MWUdPTl9PRkZTRVRfRkFDVE9SFkdMX1BPTFlHT05fT0ZGU0VUX0ZJTEwXR0xfUE9MWUdPTl9PRkZTRVRfVU5JVFMZR0xfUFJJTUlUSVZFX0JPVU5ESU5HX0JPWCBHTF9QUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWBlHTF9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTG0dMX1BST0dSQU1fUElQRUxJTkVfQklORElORxVHTF9SQVNURVJJWkVSX0RJU0NBUkQOR0xfUkVBRF9CVUZGRVIbR0xfUkVBRF9GUkFNRUJVRkZFUl9CSU5ESU5HC0dMX1JFRF9CSVRTF0dMX1JFTkRFUkJVRkZFUl9CSU5ESU5HHkdMX1JFU0VUX05PVElGSUNBVElPTl9TVFJBVEVHWRtHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0URR0xfU0FNUExFX0JVRkZFUlMSR0xfU0FNUExFX0NPVkVSQUdFGUdMX1NBTVBMRV9DT1ZFUkFHRV9JTlZFUlQYR0xfU0FNUExFX0NPVkVSQUdFX1ZBTFVFEUdMX1NBTVBMRV9TSEFESU5HEkdMX1NBTVBMRVJfQklORElORwpHTF9TQU1QTEVTDkdMX1NDSVNTT1JfQk9YD0dMX1NDSVNTT1JfVEVTVBhHTF9TSEFERVJfQklOQVJZX0ZPUk1BVFMSR0xfU0hBREVSX0NPTVBJTEVSIEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9CSU5ESU5HKUdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UHUdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9TSVpFHkdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9TVEFSVBRHTF9TVEVOQ0lMX0JBQ0tfRkFJTBRHTF9TVEVOQ0lMX0JBQ0tfRlVOQx9HTF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMH0dMX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1MTR0xfU1RFTkNJTF9CQUNLX1JFRhpHTF9TVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTSxlHTF9TVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLD0dMX1NURU5DSUxfQklUUxZHTF9TVEVOQ0lMX0NMRUFSX1ZBTFVFD0dMX1NURU5DSUxfRkFJTA9HTF9TVEVOQ0lMX0ZVTkMaR0xfU1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUwaR0xfU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1MOR0xfU1RFTkNJTF9SRUYPR0xfU1RFTkNJTF9URVNUFUdMX1NURU5DSUxfVkFMVUVfTUFTSxRHTF9TVEVOQ0lMX1dSSVRFTUFTSxBHTF9TVUJQSVhFTF9CSVRTFUdMX1RFWFRVUkVfQklORElOR18yRB9HTF9URVhUVVJFX0JJTkRJTkdfRVhURVJOQUxfT0VTG0dMX1RFWFRVUkVfQklORElOR18yRF9BUlJBWSFHTF9URVhUVVJFX0JJTkRJTkdfMkRfTVVMVElTQU1QTEUnR0xfVEVYVFVSRV9CSU5ESU5HXzJEX01VTFRJU0FNUExFX0FSUkFZFUdMX1RFWFRVUkVfQklORElOR18zRBlHTF9URVhUVVJFX0JJTkRJTkdfQlVGRkVSG0dMX1RFWFRVUkVfQklORElOR19DVUJFX01BUCFHTF9URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVBfQVJSQVkZR0xfVEVYVFVSRV9CVUZGRVJfQklORElORyJHTF9URVhUVVJFX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UHEdMX1RSQU5TRk9STV9GRUVEQkFDS19BQ1RJVkUdR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JJTkRJTkckR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9CSU5ESU5HIUdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU0laRSJHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NUQVJUHEdMX1RSQU5TRk9STV9GRUVEQkFDS19QQVVTRUQZR0xfVU5JRk9STV9CVUZGRVJfQklORElORyJHTF9VTklGT1JNX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UFkdMX1VOSUZPUk1fQlVGRkVSX1NJWkUXR0xfVU5JRk9STV9CVUZGRVJfU1RBUlQTR0xfVU5QQUNLX0FMSUdOTUVOVBZHTF9VTlBBQ0tfSU1BR0VfSEVJR0hUFEdMX1VOUEFDS19ST1dfTEVOR1RIFUdMX1VOUEFDS19TS0lQX0lNQUdFUxVHTF9VTlBBQ0tfU0tJUF9QSVhFTFMTR0xfVU5QQUNLX1NLSVBfUk9XUxdHTF9WRVJURVhfQVJSQVlfQklORElORxlHTF9WRVJURVhfQklORElOR19ESVZJU09SGEdMX1ZFUlRFWF9CSU5ESU5HX09GRlNFVBhHTF9WRVJURVhfQklORElOR19TVFJJREULR0xfVklFV1BPUlQhR0xfTUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUE0dMX0dQVV9ESVNKT0lOVF9FWFSHWQSHWwaHXQiHXwoNZ2xHZXRJbnRlZ2VydgZ2YWx1ZXMEAQICFWdsR2V0SW50ZXJuYWxmb3JtYXRpdgOHYQyHYwiHZQoVZ2xHZXRJbnRlcm5hbGZvcm1hdGl2BnRhcmdldAMPR0xfUkVOREVSQlVGRkVSGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWYdnDIdpCIdrChVnbEdldEludGVybmFsZm9ybWF0aXYOaW50ZXJuYWxmb3JtYXQ3E0dMX0RFUFRIMjRfU1RFTkNJTDgUR0xfREVQVEgzMkZfU1RFTkNJTDgUR0xfREVQVEhfQ09NUE9ORU5UMTYUR0xfREVQVEhfQ09NUE9ORU5UMjQVR0xfREVQVEhfQ09NUE9ORU5UMzJGEUdMX1IxMUZfRzExRl9CMTBGB0dMX1IxNkYHR0xfUjE2SQhHTF9SMTZVSQdHTF9SMzJGB0dMX1IzMkkIR0xfUjMyVUkFR0xfUjgGR0xfUjhJB0dMX1I4VUkLR0xfUjhfU05PUk0IR0xfUkcxNkYIR0xfUkcxNkkJR0xfUkcxNlVJCEdMX1JHMzJGCEdMX1JHMzJJCUdMX1JHMzJVSQZHTF9SRzgHR0xfUkc4SQhHTF9SRzhVSQxHTF9SRzhfU05PUk0LR0xfUkdCMTBfQTINR0xfUkdCMTBfQTJVSQlHTF9SR0IxNkYJR0xfUkdCMTZJCkdMX1JHQjE2VUkJR0xfUkdCMzJGCUdMX1JHQjMySQpHTF9SR0IzMlVJCUdMX1JHQjU2NQpHTF9SR0I1X0ExB0dMX1JHQjgIR0xfUkdCOEkJR0xfUkdCOFVJDUdMX1JHQjhfU05PUk0KR0xfUkdCOV9FNQpHTF9SR0JBMTZGCkdMX1JHQkExNkkLR0xfUkdCQTE2VUkKR0xfUkdCQTMyRgpHTF9SR0JBMzJJC0dMX1JHQkEzMlVJCEdMX1JHQkE0CEdMX1JHQkE4CUdMX1JHQkE4SQpHTF9SR0JBOFVJDkdMX1JHQkE4X1NOT1JNCEdMX1NSR0I4D0dMX1NSR0I4X0FMUEhBOBFHTF9TVEVOQ0lMX0lOREVYOIdtDIdvCIdxChVnbEdldEludGVybmFsZm9ybWF0aXYFcG5hbWUCFEdMX05VTV9TQU1QTEVfQ09VTlRTCkdMX1NBTVBMRVMCEmdsR2V0TXVsdGlzYW1wbGVmdgKHcwyHdQiHdwoSZ2xHZXRNdWx0aXNhbXBsZWZ2BXBuYW1lARJHTF9TQU1QTEVfUE9TSVRJT06HeQSHewaHfQiHfwoSZ2xHZXRNdWx0aXNhbXBsZWZ2A3ZhbAQBAAIQZ2xHZXRPYmplY3RMYWJlbAKHgQyHgwiHhQoQZ2xHZXRPYmplY3RMYWJlbAppZGVudGlmaWVyCwlHTF9CVUZGRVIOR0xfRlJBTUVCVUZGRVIKR0xfUFJPR1JBTRNHTF9QUk9HUkFNX1BJUEVMSU5FCEdMX1FVRVJZD0dMX1JFTkRFUkJVRkZFUgpHTF9TQU1QTEVSCUdMX1NIQURFUgpHTF9URVhUVVJFFUdMX1RSQU5TRk9STV9GRUVEQkFDSw9HTF9WRVJURVhfQVJSQVmHhwSHiQaHiwiHjQoQZ2xHZXRPYmplY3RMYWJlbAVsYWJlbAQBAgITZ2xHZXRPYmplY3RMYWJlbEVYVAKHjwyHkQiHkwoTZ2xHZXRPYmplY3RMYWJlbEVYVAR0eXBlCwpHTF9URVhUVVJFDkdMX0ZSQU1FQlVGRkVSD0dMX1JFTkRFUkJVRkZFUhRHTF9CVUZGRVJfT0JKRUNUX0VYVBRHTF9TSEFERVJfT0JKRUNUX0VYVBVHTF9QUk9HUkFNX09CSkVDVF9FWFQaR0xfVkVSVEVYX0FSUkFZX09CSkVDVF9FWFQTR0xfUVVFUllfT0JKRUNUX0VYVApHTF9TQU1QTEVSFUdMX1RSQU5TRk9STV9GRUVEQkFDSx5HTF9QUk9HUkFNX1BJUEVMSU5FX09CSkVDVF9FWFSHlQSHlwaHmQiHmwoTZ2xHZXRPYmplY3RMYWJlbEVYVAVsYWJlbAQBAgITZ2xHZXRPYmplY3RMYWJlbEtIUgKHnQyHnwiHoQoTZ2xHZXRPYmplY3RMYWJlbEtIUgppZGVudGlmaWVyCwlHTF9CVUZGRVIOR0xfRlJBTUVCVUZGRVIKR0xfUFJPR1JBTRNHTF9QUk9HUkFNX1BJUEVMSU5FCEdMX1FVRVJZD0dMX1JFTkRFUkJVRkZFUgpHTF9TQU1QTEVSCUdMX1NIQURFUgpHTF9URVhUVVJFFUdMX1RSQU5TRk9STV9GRUVEQkFDSw9HTF9WRVJURVhfQVJSQVmHowSHpQaHpwiHqQoTZ2xHZXRPYmplY3RMYWJlbEtIUgVsYWJlbAQBAgITZ2xHZXRPYmplY3RQdHJMYWJlbAGHqwSHrQaHrwiHsQoTZ2xHZXRPYmplY3RQdHJMYWJlbAVsYWJlbAQBAgIWZ2xHZXRPYmplY3RQdHJMYWJlbEtIUgGHswSHtQaHtwiHuQoWZ2xHZXRPYmplY3RQdHJMYWJlbEtIUgVsYWJlbAQBAgINZ2xHZXRQb2ludGVydgKHuwyHvQiHvwoNZ2xHZXRQb2ludGVydgVwbmFtZQIaR0xfREVCVUdfQ0FMTEJBQ0tfRlVOQ1RJT04cR0xfREVCVUdfQ0FMTEJBQ0tfVVNFUl9QQVJBTYfBBIfDBofFCIfHCg1nbEdldFBvaW50ZXJ2BnBhcmFtcwQBAgIQZ2xHZXRQb2ludGVydktIUgKHyQyHywiHzQoQZ2xHZXRQb2ludGVydktIUgVwbmFtZQIaR0xfREVCVUdfQ0FMTEJBQ0tfRlVOQ1RJT04cR0xfREVCVUdfQ0FMTEJBQ0tfVVNFUl9QQVJBTYfPBIfRBofTCIfVChBnbEdldFBvaW50ZXJ2S0hSBnBhcmFtcwQBAgISZ2xHZXRQcm9ncmFtQmluYXJ5AYfXBIfZBofbCIfdChJnbEdldFByb2dyYW1CaW5hcnkGYmluYXJ5BAECAhVnbEdldFByb2dyYW1CaW5hcnlPRVMBh98Eh+EGh+MIh+UKFWdsR2V0UHJvZ3JhbUJpbmFyeU9FUwZiaW5hcnkEAQICE2dsR2V0UHJvZ3JhbUluZm9Mb2cBh+cEh+kGh+sIh+0KE2dsR2V0UHJvZ3JhbUluZm9Mb2cEaW5mbwQBAgIXZ2xHZXRQcm9ncmFtSW50ZXJmYWNlaXYCh+8Mh/EIh/MKF2dsR2V0UHJvZ3JhbUludGVyZmFjZWl2EHByb2dyYW1JbnRlcmZhY2UJGEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUhJHTF9CVUZGRVJfVkFSSUFCTEUQR0xfUFJPR1JBTV9JTlBVVBFHTF9QUk9HUkFNX09VVFBVVBdHTF9TSEFERVJfU1RPUkFHRV9CTE9DSxxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSHUdMX1RSQU5TRk9STV9GRUVEQkFDS19WQVJZSU5HCkdMX1VOSUZPUk0QR0xfVU5JRk9STV9CTE9DS4f1DIf3CIf5ChdnbEdldFByb2dyYW1JbnRlcmZhY2VpdgVwbmFtZQMTR0xfQUNUSVZFX1JFU09VUkNFUxJHTF9NQVhfTkFNRV9MRU5HVEgbR0xfTUFYX05VTV9BQ1RJVkVfVkFSSUFCTEVTAhtnbEdldFByb2dyYW1QaXBlbGluZUluZm9Mb2cBh/sEh/0Gh/8IiAEKG2dsR2V0UHJvZ3JhbVBpcGVsaW5lSW5mb0xvZwdpbmZvTG9nBAECAhZnbEdldFByb2dyYW1QaXBlbGluZWl2AYgDDIgFCIgHChZnbEdldFByb2dyYW1QaXBlbGluZWl2BXBuYW1lCRFHTF9BQ1RJVkVfUFJPR1JBTRFHTF9DT01QVVRFX1NIQURFUhJHTF9GUkFHTUVOVF9TSEFERVISR0xfSU5GT19MT0dfTEVOR1RIEkdMX1ZBTElEQVRFX1NUQVRVUxBHTF9WRVJURVhfU0hBREVSEkdMX0dFT01FVFJZX1NIQURFUhZHTF9URVNTX0NPTlRST0xfU0hBREVSGUdMX1RFU1NfRVZBTFVBVElPTl9TSEFERVICGWdsR2V0UHJvZ3JhbVJlc291cmNlSW5kZXgBiAkMiAsIiA0KGWdsR2V0UHJvZ3JhbVJlc291cmNlSW5kZXgQcHJvZ3JhbUludGVyZmFjZQcSR0xfQlVGRkVSX1ZBUklBQkxFEEdMX1BST0dSQU1fSU5QVVQRR0xfUFJPR1JBTV9PVVRQVVQXR0xfU0hBREVSX1NUT1JBR0VfQkxPQ0sdR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1ZBUllJTkcKR0xfVU5JRk9STRBHTF9VTklGT1JNX0JMT0NLAhxnbEdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uAYgPDIgRCIgTChxnbEdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uEHByb2dyYW1JbnRlcmZhY2UEEEdMX1BST0dSQU1fSU5QVVQRR0xfUFJPR1JBTV9PVVRQVVQcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUgpHTF9VTklGT1JNAhhnbEdldFByb2dyYW1SZXNvdXJjZU5hbWUCiBUMiBcIiBkKGGdsR2V0UHJvZ3JhbVJlc291cmNlTmFtZRBwcm9ncmFtSW50ZXJmYWNlBxJHTF9CVUZGRVJfVkFSSUFCTEUQR0xfUFJPR1JBTV9JTlBVVBFHTF9QUk9HUkFNX09VVFBVVBdHTF9TSEFERVJfU1RPUkFHRV9CTE9DSx1HTF9UUkFOU0ZPUk1fRkVFREJBQ0tfVkFSWUlORwpHTF9VTklGT1JNEEdMX1VOSUZPUk1fQkxPQ0uIGwSIHQaIHwiIIQoYZ2xHZXRQcm9ncmFtUmVzb3VyY2VOYW1lBG5hbWUEAQICFmdsR2V0UHJvZ3JhbVJlc291cmNlaXYDiCMMiCUIiCcKFmdsR2V0UHJvZ3JhbVJlc291cmNlaXYQcHJvZ3JhbUludGVyZmFjZQkYR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSEkdMX0JVRkZFUl9WQVJJQUJMRRBHTF9QUk9HUkFNX0lOUFVUEUdMX1BST0dSQU1fT1VUUFVUF0dMX1NIQURFUl9TVE9SQUdFX0JMT0NLHEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIdR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1ZBUllJTkcKR0xfVU5JRk9STRBHTF9VTklGT1JNX0JMT0NLiCkEiCsGiC0IiC8KFmdsR2V0UHJvZ3JhbVJlc291cmNlaXYFcHJvcHMEAQCIMQSIMwaINQiINwoWZ2xHZXRQcm9ncmFtUmVzb3VyY2VpdgZwYXJhbXMEAQICDmdsR2V0UHJvZ3JhbWl2AYg5DIg7CIg9Cg5nbEdldFByb2dyYW1pdglwYXJhbWV0ZXIcFEdMX0FDVElWRV9BVFRSSUJVVEVTHkdMX0FDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSBJHTF9BQ1RJVkVfVU5JRk9STVMcR0xfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSBNHTF9BVFRBQ0hFRF9TSEFERVJTEEdMX0RFTEVURV9TVEFUVVMSR0xfSU5GT19MT0dfTEVOR1RIDkdMX0xJTktfU1RBVFVTEkdMX1ZBTElEQVRFX1NUQVRVUxhHTF9BQ1RJVkVfVU5JRk9STV9CTE9DS1MnR0xfQUNUSVZFX1VOSUZPUk1fQkxPQ0tfTUFYX05BTUVfTEVOR1RIIkdMX1BST0dSQU1fQklOQVJZX1JFVFJJRVZBQkxFX0hJTlQhR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9NT0RFHkdMX1RSQU5TRk9STV9GRUVEQkFDS19WQVJZSU5HUyhHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfVkFSWUlOR19NQVhfTEVOR1RIGEdMX1BST0dSQU1fQklOQVJZX0xFTkdUSCBHTF9BQ1RJVkVfQVRPTUlDX0NPVU5URVJfQlVGRkVSUxpHTF9DT01QVVRFX1dPUktfR1JPVVBfU0laRRRHTF9QUk9HUkFNX1NFUEFSQUJMRRZHTF9HRU9NRVRSWV9JTlBVVF9UWVBFF0dMX0dFT01FVFJZX09VVFBVVF9UWVBFGEdMX0dFT01FVFJZX1ZFUlRJQ0VTX09VVB5HTF9HRU9NRVRSWV9TSEFERVJfSU5WT0NBVElPTlMfR0xfVEVTU19DT05UUk9MX09VVFBVVF9WRVJUSUNFUxBHTF9URVNTX0dFTl9NT0RFFkdMX1RFU1NfR0VOX1BPSU5UX01PREUTR0xfVEVTU19HRU5fU1BBQ0lORxhHTF9URVNTX0dFTl9WRVJURVhfT1JERVICE2dsR2V0UXVlcnlPYmplY3R1aXYBiD8MiEEIiEMKE2dsR2V0UXVlcnlPYmplY3R1aXYJcGFyYW1ldGVyAg9HTF9RVUVSWV9SRVNVTFQZR0xfUVVFUllfUkVTVUxUX0FWQUlMQUJMRQIMZ2xHZXRRdWVyeWl2AohFDIhHCIhJCgxnbEdldFF1ZXJ5aXYGdGFyZ2V0BRVHTF9BTllfU0FNUExFU19QQVNTRUQiR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRShHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfUFJJTUlUSVZFU19XUklUVEVOF0dMX1BSSU1JVElWRVNfR0VORVJBVEVEEEdMX1RJTUVTVEFNUF9FWFSISwyITQiITwoMZ2xHZXRRdWVyeWl2CXBhcmFtZXRlcgIQR0xfQ1VSUkVOVF9RVUVSWRlHTF9RVUVSWV9DT1VOVEVSX0JJVFNfRVhUAhxnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2AohRDIhTCIhVChxnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2BnRhcmdldAEPR0xfUkVOREVSQlVGRkVSiFcMiFkIiFsKHGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYJcGFyYW1ldGVyChpHTF9SRU5ERVJCVUZGRVJfQUxQSEFfU0laRRlHTF9SRU5ERVJCVUZGRVJfQkxVRV9TSVpFGkdMX1JFTkRFUkJVRkZFUl9ERVBUSF9TSVpFGkdMX1JFTkRFUkJVRkZFUl9HUkVFTl9TSVpFFkdMX1JFTkRFUkJVRkZFUl9IRUlHSFQfR0xfUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVBhHTF9SRU5ERVJCVUZGRVJfUkVEX1NJWkUcR0xfUkVOREVSQlVGRkVSX1NURU5DSUxfU0laRRVHTF9SRU5ERVJCVUZGRVJfV0lEVEgXR0xfUkVOREVSQlVGRkVSX1NBTVBMRVMCGGdsR2V0U2FtcGxlclBhcmFtZXRlcklpdgGIXQyIXwiIYQoYZ2xHZXRTYW1wbGVyUGFyYW1ldGVySWl2BXBuYW1lCxdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRVHTF9URVhUVVJFX01JTl9GSUxURVIVR0xfVEVYVFVSRV9NQUdfRklMVEVSEkdMX1RFWFRVUkVfTUlOX0xPRBJHTF9URVhUVVJFX01BWF9MT0QRR0xfVEVYVFVSRV9XUkFQX1IRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1IdR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQCG2dsR2V0U2FtcGxlclBhcmFtZXRlcklpdkVYVAGIYwyIZQiIZwobZ2xHZXRTYW1wbGVyUGFyYW1ldGVySWl2RVhUBXBuYW1lCxdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRVHTF9URVhUVVJFX01JTl9GSUxURVIVR0xfVEVYVFVSRV9NQUdfRklMVEVSEkdMX1RFWFRVUkVfTUlOX0xPRBJHTF9URVhUVVJFX01BWF9MT0QRR0xfVEVYVFVSRV9XUkFQX1IRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1IdR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQCG2dsR2V0U2FtcGxlclBhcmFtZXRlcklpdk9FUwGIaQyIawiIbQobZ2xHZXRTYW1wbGVyUGFyYW1ldGVySWl2T0VTBXBuYW1lCxdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRVHTF9URVhUVVJFX01JTl9GSUxURVIVR0xfVEVYVFVSRV9NQUdfRklMVEVSEkdMX1RFWFRVUkVfTUlOX0xPRBJHTF9URVhUVVJFX01BWF9MT0QRR0xfVEVYVFVSRV9XUkFQX1IRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1IdR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQCGWdsR2V0U2FtcGxlclBhcmFtZXRlckl1aXYBiG8MiHEIiHMKGWdsR2V0U2FtcGxlclBhcmFtZXRlckl1aXYFcG5hbWULF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhVHTF9URVhUVVJFX01BR19GSUxURVISR0xfVEVYVFVSRV9NSU5fTE9EEkdMX1RFWFRVUkVfTUFYX0xPRBFHTF9URVhUVVJFX1dSQVBfUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUh1HTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVAIcZ2xHZXRTYW1wbGVyUGFyYW1ldGVySXVpdkVYVAGIdQyIdwiIeQocZ2xHZXRTYW1wbGVyUGFyYW1ldGVySXVpdkVYVAVwbmFtZQsXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUVR0xfVEVYVFVSRV9NSU5fRklMVEVSFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhJHTF9URVhUVVJFX01JTl9MT0QSR0xfVEVYVFVSRV9NQVhfTE9EEUdMX1RFWFRVUkVfV1JBUF9SEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SHUdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUAhxnbEdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2T0VTAYh7DIh9CIh/ChxnbEdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2T0VTBXBuYW1lCxdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRVHTF9URVhUVVJFX01JTl9GSUxURVIVR0xfVEVYVFVSRV9NQUdfRklMVEVSEkdMX1RFWFRVUkVfTUlOX0xPRBJHTF9URVhUVVJFX01BWF9MT0QRR0xfVEVYVFVSRV9XUkFQX1IRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1IdR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQCF2dsR2V0U2FtcGxlclBhcmFtZXRlcmZ2AYiBDIiDCIiFChdnbEdldFNhbXBsZXJQYXJhbWV0ZXJmdgVwbmFtZQsXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUVR0xfVEVYVFVSRV9NSU5fRklMVEVSFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhJHTF9URVhUVVJFX01JTl9MT0QSR0xfVEVYVFVSRV9NQVhfTE9EEUdMX1RFWFRVUkVfV1JBUF9SEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SHUdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUAhdnbEdldFNhbXBsZXJQYXJhbWV0ZXJpdgGIhwyIiQiIiwoXZ2xHZXRTYW1wbGVyUGFyYW1ldGVyaXYFcG5hbWULF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhVHTF9URVhUVVJFX01BR19GSUxURVISR0xfVEVYVFVSRV9NSU5fTE9EEkdMX1RFWFRVUkVfTUFYX0xPRBFHTF9URVhUVVJFX1dSQVBfUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUh1HTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVAISZ2xHZXRTaGFkZXJJbmZvTG9nAYiNBIiPBoiRCIiTChJnbEdldFNoYWRlckluZm9Mb2cEaW5mbwQBAgIaZ2xHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQDiJUMiJcIiJkKGmdsR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0C3NoYWRlcl90eXBlAhJHTF9GUkFHTUVOVF9TSEFERVIQR0xfVkVSVEVYX1NIQURFUoibDIidCIifChpnbEdldFNoYWRlclByZWNpc2lvbkZvcm1hdA5wcmVjaXNpb25fdHlwZQYNR0xfSElHSF9GTE9BVAtHTF9ISUdIX0lOVAxHTF9MT1dfRkxPQVQKR0xfTE9XX0lOVA9HTF9NRURJVU1fRkxPQVQNR0xfTUVESVVNX0lOVIihBIijBoilCIinChpnbEdldFNoYWRlclByZWNpc2lvbkZvcm1hdAVyYW5nZQQBAgIRZ2xHZXRTaGFkZXJTb3VyY2UBiKkEiKsGiK0IiK8KEWdsR2V0U2hhZGVyU291cmNlBnNvdXJjZQQBAgINZ2xHZXRTaGFkZXJpdgGIsQyIswiItQoNZ2xHZXRTaGFkZXJpdglwYXJhbWV0ZXIFEUdMX0NPTVBJTEVfU1RBVFVTEEdMX0RFTEVURV9TVEFUVVMSR0xfSU5GT19MT0dfTEVOR1RIF0dMX1NIQURFUl9TT1VSQ0VfTEVOR1RIDkdMX1NIQURFUl9UWVBFAgtnbEdldFN0cmluZwGItwyIuQiIuwoLZ2xHZXRTdHJpbmcFcGFyYW0FDUdMX0VYVEVOU0lPTlMLR0xfUkVOREVSRVIbR0xfU0hBRElOR19MQU5HVUFHRV9WRVJTSU9OCUdMX1ZFTkRPUgpHTF9WRVJTSU9OAgxnbEdldFN0cmluZ2kBiL0MiL8IiMEKDGdsR2V0U3RyaW5naQRuYW1lAQ1HTF9FWFRFTlNJT05TAgtnbEdldFN5bmNpdgGIwwyIxQiIxwoLZ2xHZXRTeW5jaXYFcG5hbWUEDkdMX09CSkVDVF9UWVBFEUdMX1NZTkNfQ09ORElUSU9ODUdMX1NZTkNfRkxBR1MOR0xfU1lOQ19TVEFUVVMCEGdsR2V0U3luY2l2QVBQTEUBiMkMiMsIiM0KEGdsR2V0U3luY2l2QVBQTEUFcG5hbWUEDkdMX09CSkVDVF9UWVBFEUdMX1NZTkNfQ09ORElUSU9ODUdMX1NZTkNfRkxBR1MOR0xfU1lOQ19TVEFUVVMCGGdsR2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdgKIzwyI0QiI0woYZ2xHZXRUZXhMZXZlbFBhcmFtZXRlcmZ2BnRhcmdldA0NR0xfVEVYVFVSRV8yRBNHTF9URVhUVVJFXzJEX0FSUkFZGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUNR0xfVEVYVFVSRV8zRB5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1geR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWh5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1geR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWh9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZEUdMX1RFWFRVUkVfQlVGRkVSGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVmI1QyI1wiI2QoYZ2xHZXRUZXhMZXZlbFBhcmFtZXRlcmZ2BXBuYW1lFhVHTF9URVhUVVJFX0FMUEhBX1NJWkUVR0xfVEVYVFVSRV9BTFBIQV9UWVBFFEdMX1RFWFRVUkVfQkxVRV9TSVpFFEdMX1RFWFRVUkVfQkxVRV9UWVBFFUdMX1RFWFRVUkVfQ09NUFJFU1NFRBBHTF9URVhUVVJFX0RFUFRIFUdMX1RFWFRVUkVfREVQVEhfU0laRRVHTF9URVhUVVJFX0RFUFRIX1RZUEUhR0xfVEVYVFVSRV9GSVhFRF9TQU1QTEVfTE9DQVRJT05TFUdMX1RFWFRVUkVfR1JFRU5fU0laRRVHTF9URVhUVVJFX0dSRUVOX1RZUEURR0xfVEVYVFVSRV9IRUlHSFQaR0xfVEVYVFVSRV9JTlRFUk5BTF9GT1JNQVQTR0xfVEVYVFVSRV9SRURfU0laRRNHTF9URVhUVVJFX1JFRF9UWVBFEkdMX1RFWFRVUkVfU0FNUExFUxZHTF9URVhUVVJFX1NIQVJFRF9TSVpFF0dMX1RFWFRVUkVfU1RFTkNJTF9TSVpFEEdMX1RFWFRVUkVfV0lEVEgkR0xfVEVYVFVSRV9CVUZGRVJfREFUQV9TVE9SRV9CSU5ESU5HGEdMX1RFWFRVUkVfQlVGRkVSX09GRlNFVBZHTF9URVhUVVJFX0JVRkZFUl9TSVpFAhhnbEdldFRleExldmVsUGFyYW1ldGVyaXYCiNsMiN0IiN8KGGdsR2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdgZ0YXJnZXQNDUdMX1RFWFRVUkVfMkQTR0xfVEVYVFVSRV8yRF9BUlJBWRlHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFDUdMX1RFWFRVUkVfM0QeR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWR5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1oeR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWR5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ofR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWRFHTF9URVhUVVJFX0JVRkZFUhlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZiOEMiOMIiOUKGGdsR2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdgVwbmFtZRYVR0xfVEVYVFVSRV9BTFBIQV9TSVpFFUdMX1RFWFRVUkVfQUxQSEFfVFlQRRRHTF9URVhUVVJFX0JMVUVfU0laRRRHTF9URVhUVVJFX0JMVUVfVFlQRRVHTF9URVhUVVJFX0NPTVBSRVNTRUQQR0xfVEVYVFVSRV9ERVBUSBVHTF9URVhUVVJFX0RFUFRIX1NJWkUVR0xfVEVYVFVSRV9ERVBUSF9UWVBFIUdMX1RFWFRVUkVfRklYRURfU0FNUExFX0xPQ0FUSU9OUxVHTF9URVhUVVJFX0dSRUVOX1NJWkUVR0xfVEVYVFVSRV9HUkVFTl9UWVBFEUdMX1RFWFRVUkVfSEVJR0hUGkdMX1RFWFRVUkVfSU5URVJOQUxfRk9STUFUE0dMX1RFWFRVUkVfUkVEX1NJWkUTR0xfVEVYVFVSRV9SRURfVFlQRRJHTF9URVhUVVJFX1NBTVBMRVMWR0xfVEVYVFVSRV9TSEFSRURfU0laRRdHTF9URVhUVVJFX1NURU5DSUxfU0laRRBHTF9URVhUVVJFX1dJRFRIJEdMX1RFWFRVUkVfQlVGRkVSX0RBVEFfU1RPUkVfQklORElORxhHTF9URVhUVVJFX0JVRkZFUl9PRkZTRVQWR0xfVEVYVFVSRV9CVUZGRVJfU0laRQIUZ2xHZXRUZXhQYXJhbWV0ZXJJaXYCiOcMiOkIiOsKFGdsR2V0VGV4UGFyYW1ldGVySWl2BnRhcmdldAkNR0xfVEVYVFVSRV8yRBNHTF9URVhUVVJFX0NVQkVfTUFQE0dMX1RFWFRVUkVfMkRfQVJSQVkNR0xfVEVYVFVSRV8zRBlHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFH0dMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVkZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWRdHTF9URVhUVVJFX0VYVEVSTkFMX09FUxFHTF9URVhUVVJFX0JVRkZFUojtDIjvCIjxChRnbEdldFRleFBhcmFtZXRlcklpdgVwbmFtZRUVR0xfVEVYVFVSRV9NQUdfRklMVEVSFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBVHTF9URVhUVVJFX0JBU0VfTEVWRUwXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUbR0xfVEVYVFVSRV9JTU1VVEFCTEVfRk9STUFUFEdMX1RFWFRVUkVfTUFYX0xFVkVMEkdMX1RFWFRVUkVfTUFYX0xPRBJHTF9URVhUVVJFX01JTl9MT0QUR0xfVEVYVFVSRV9TV0laWkxFX0EUR0xfVEVYVFVSRV9TV0laWkxFX0IUR0xfVEVYVFVSRV9TV0laWkxFX0cUR0xfVEVYVFVSRV9TV0laWkxFX1IRR0xfVEVYVFVSRV9XUkFQX1IdR0xfREVQVEhfU1RFTkNJTF9URVhUVVJFX01PREUiR0xfSU1BR0VfRk9STUFUX0NPTVBBVElCSUxJVFlfVFlQRRtHTF9URVhUVVJFX0lNTVVUQUJMRV9MRVZFTFMXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1IdR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQCF2dsR2V0VGV4UGFyYW1ldGVySWl2RVhUAojzDIj1CIj3ChdnbEdldFRleFBhcmFtZXRlcklpdkVYVAZ0YXJnZXQJDUdMX1RFWFRVUkVfMkQTR0xfVEVYVFVSRV9DVUJFX01BUBNHTF9URVhUVVJFXzJEX0FSUkFZDUdMX1RFWFRVUkVfM0QZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVkXR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMRR0xfVEVYVFVSRV9CVUZGRVKI+QyI+wiI/QoXZ2xHZXRUZXhQYXJhbWV0ZXJJaXZFWFQFcG5hbWUVFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhVHTF9URVhUVVJFX01JTl9GSUxURVIRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QVR0xfVEVYVFVSRV9CQVNFX0xFVkVMF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFG0dMX1RFWFRVUkVfSU1NVVRBQkxFX0ZPUk1BVBRHTF9URVhUVVJFX01BWF9MRVZFTBJHTF9URVhUVVJFX01BWF9MT0QSR0xfVEVYVFVSRV9NSU5fTE9EFEdMX1RFWFRVUkVfU1dJWlpMRV9BFEdMX1RFWFRVUkVfU1dJWlpMRV9CFEdMX1RFWFRVUkVfU1dJWlpMRV9HFEdMX1RFWFRVUkVfU1dJWlpMRV9SEUdMX1RFWFRVUkVfV1JBUF9SHUdMX0RFUFRIX1NURU5DSUxfVEVYVFVSRV9NT0RFIkdMX0lNQUdFX0ZPUk1BVF9DT01QQVRJQklMSVRZX1RZUEUbR0xfVEVYVFVSRV9JTU1VVEFCTEVfTEVWRUxTF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SHUdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUAhdnbEdldFRleFBhcmFtZXRlcklpdk9FUwKI/wyJAQiJAwoXZ2xHZXRUZXhQYXJhbWV0ZXJJaXZPRVMGdGFyZ2V0CQ1HTF9URVhUVVJFXzJEE0dMX1RFWFRVUkVfQ1VCRV9NQVATR0xfVEVYVFVSRV8yRF9BUlJBWQ1HTF9URVhUVVJFXzNEGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWRlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZF0dMX1RFWFRVUkVfRVhURVJOQUxfT0VTEUdMX1RFWFRVUkVfQlVGRkVSiQUMiQcIiQkKF2dsR2V0VGV4UGFyYW1ldGVySWl2T0VTBXBuYW1lFRVHTF9URVhUVVJFX01BR19GSUxURVIVR0xfVEVYVFVSRV9NSU5fRklMVEVSEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UFUdMX1RFWFRVUkVfQkFTRV9MRVZFTBdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRtHTF9URVhUVVJFX0lNTVVUQUJMRV9GT1JNQVQUR0xfVEVYVFVSRV9NQVhfTEVWRUwSR0xfVEVYVFVSRV9NQVhfTE9EEkdMX1RFWFRVUkVfTUlOX0xPRBRHTF9URVhUVVJFX1NXSVpaTEVfQRRHTF9URVhUVVJFX1NXSVpaTEVfQhRHTF9URVhUVVJFX1NXSVpaTEVfRxRHTF9URVhUVVJFX1NXSVpaTEVfUhFHTF9URVhUVVJFX1dSQVBfUh1HTF9ERVBUSF9TVEVOQ0lMX1RFWFRVUkVfTU9ERSJHTF9JTUFHRV9GT1JNQVRfQ09NUEFUSUJJTElUWV9UWVBFG0dMX1RFWFRVUkVfSU1NVVRBQkxFX0xFVkVMUxdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUh1HTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVAIVZ2xHZXRUZXhQYXJhbWV0ZXJJdWl2AokLDIkNCIkPChVnbEdldFRleFBhcmFtZXRlckl1aXYGdGFyZ2V0CQ1HTF9URVhUVVJFXzJEE0dMX1RFWFRVUkVfQ1VCRV9NQVATR0xfVEVYVFVSRV8yRF9BUlJBWQ1HTF9URVhUVVJFXzNEGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWRlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZF0dMX1RFWFRVUkVfRVhURVJOQUxfT0VTEUdMX1RFWFRVUkVfQlVGRkVSiREMiRMIiRUKFWdsR2V0VGV4UGFyYW1ldGVySXVpdgVwbmFtZRUVR0xfVEVYVFVSRV9NQUdfRklMVEVSFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBVHTF9URVhUVVJFX0JBU0VfTEVWRUwXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUbR0xfVEVYVFVSRV9JTU1VVEFCTEVfRk9STUFUFEdMX1RFWFRVUkVfTUFYX0xFVkVMEkdMX1RFWFRVUkVfTUFYX0xPRBJHTF9URVhUVVJFX01JTl9MT0QUR0xfVEVYVFVSRV9TV0laWkxFX0EUR0xfVEVYVFVSRV9TV0laWkxFX0IUR0xfVEVYVFVSRV9TV0laWkxFX0cUR0xfVEVYVFVSRV9TV0laWkxFX1IRR0xfVEVYVFVSRV9XUkFQX1IdR0xfREVQVEhfU1RFTkNJTF9URVhUVVJFX01PREUiR0xfSU1BR0VfRk9STUFUX0NPTVBBVElCSUxJVFlfVFlQRRtHTF9URVhUVVJFX0lNTVVUQUJMRV9MRVZFTFMXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1IdR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQCGGdsR2V0VGV4UGFyYW1ldGVySXVpdkVYVAKJFwyJGQiJGwoYZ2xHZXRUZXhQYXJhbWV0ZXJJdWl2RVhUBnRhcmdldAkNR0xfVEVYVFVSRV8yRBNHTF9URVhUVVJFX0NVQkVfTUFQE0dMX1RFWFRVUkVfMkRfQVJSQVkNR0xfVEVYVFVSRV8zRBlHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFH0dMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVkZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWRdHTF9URVhUVVJFX0VYVEVSTkFMX09FUxFHTF9URVhUVVJFX0JVRkZFUokdDIkfCIkhChhnbEdldFRleFBhcmFtZXRlckl1aXZFWFQFcG5hbWUVFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhVHTF9URVhUVVJFX01JTl9GSUxURVIRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QVR0xfVEVYVFVSRV9CQVNFX0xFVkVMF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFG0dMX1RFWFRVUkVfSU1NVVRBQkxFX0ZPUk1BVBRHTF9URVhUVVJFX01BWF9MRVZFTBJHTF9URVhUVVJFX01BWF9MT0QSR0xfVEVYVFVSRV9NSU5fTE9EFEdMX1RFWFRVUkVfU1dJWlpMRV9BFEdMX1RFWFRVUkVfU1dJWlpMRV9CFEdMX1RFWFRVUkVfU1dJWlpMRV9HFEdMX1RFWFRVUkVfU1dJWlpMRV9SEUdMX1RFWFRVUkVfV1JBUF9SHUdMX0RFUFRIX1NURU5DSUxfVEVYVFVSRV9NT0RFIkdMX0lNQUdFX0ZPUk1BVF9DT01QQVRJQklMSVRZX1RZUEUbR0xfVEVYVFVSRV9JTU1VVEFCTEVfTEVWRUxTF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SHUdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUAhhnbEdldFRleFBhcmFtZXRlckl1aXZPRVMCiSMMiSUIiScKGGdsR2V0VGV4UGFyYW1ldGVySXVpdk9FUwZ0YXJnZXQJDUdMX1RFWFRVUkVfMkQTR0xfVEVYVFVSRV9DVUJFX01BUBNHTF9URVhUVVJFXzJEX0FSUkFZDUdMX1RFWFRVUkVfM0QZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVkXR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMRR0xfVEVYVFVSRV9CVUZGRVKJKQyJKwiJLQoYZ2xHZXRUZXhQYXJhbWV0ZXJJdWl2T0VTBXBuYW1lFRVHTF9URVhUVVJFX01BR19GSUxURVIVR0xfVEVYVFVSRV9NSU5fRklMVEVSEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UFUdMX1RFWFRVUkVfQkFTRV9MRVZFTBdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRtHTF9URVhUVVJFX0lNTVVUQUJMRV9GT1JNQVQUR0xfVEVYVFVSRV9NQVhfTEVWRUwSR0xfVEVYVFVSRV9NQVhfTE9EEkdMX1RFWFRVUkVfTUlOX0xPRBRHTF9URVhUVVJFX1NXSVpaTEVfQRRHTF9URVhUVVJFX1NXSVpaTEVfQhRHTF9URVhUVVJFX1NXSVpaTEVfRxRHTF9URVhUVVJFX1NXSVpaTEVfUhFHTF9URVhUVVJFX1dSQVBfUh1HTF9ERVBUSF9TVEVOQ0lMX1RFWFRVUkVfTU9ERSJHTF9JTUFHRV9GT1JNQVRfQ09NUEFUSUJJTElUWV9UWVBFG0dMX1RFWFRVUkVfSU1NVVRBQkxFX0xFVkVMUxdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUh1HTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVAITZ2xHZXRUZXhQYXJhbWV0ZXJmdgKJLwyJMQiJMwoTZ2xHZXRUZXhQYXJhbWV0ZXJmdgZ0YXJnZXQJDUdMX1RFWFRVUkVfMkQTR0xfVEVYVFVSRV9DVUJFX01BUBNHTF9URVhUVVJFXzJEX0FSUkFZDUdMX1RFWFRVUkVfM0QZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVkXR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMRR0xfVEVYVFVSRV9CVUZGRVKJNQyJNwiJOQoTZ2xHZXRUZXhQYXJhbWV0ZXJmdglwYXJhbWV0ZXIVFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhVHTF9URVhUVVJFX01JTl9GSUxURVIRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QVR0xfVEVYVFVSRV9CQVNFX0xFVkVMF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFG0dMX1RFWFRVUkVfSU1NVVRBQkxFX0ZPUk1BVBRHTF9URVhUVVJFX01BWF9MRVZFTBJHTF9URVhUVVJFX01BWF9MT0QSR0xfVEVYVFVSRV9NSU5fTE9EFEdMX1RFWFRVUkVfU1dJWlpMRV9BFEdMX1RFWFRVUkVfU1dJWlpMRV9CFEdMX1RFWFRVUkVfU1dJWlpMRV9HFEdMX1RFWFRVUkVfU1dJWlpMRV9SEUdMX1RFWFRVUkVfV1JBUF9SHUdMX0RFUFRIX1NURU5DSUxfVEVYVFVSRV9NT0RFIkdMX0lNQUdFX0ZPUk1BVF9DT01QQVRJQklMSVRZX1RZUEUbR0xfVEVYVFVSRV9JTU1VVEFCTEVfTEVWRUxTF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SHUdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUAhNnbEdldFRleFBhcmFtZXRlcml2Aok7DIk9CIk/ChNnbEdldFRleFBhcmFtZXRlcml2BnRhcmdldAkNR0xfVEVYVFVSRV8yRBNHTF9URVhUVVJFX0NVQkVfTUFQE0dMX1RFWFRVUkVfMkRfQVJSQVkNR0xfVEVYVFVSRV8zRBlHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFH0dMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVkZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWRdHTF9URVhUVVJFX0VYVEVSTkFMX09FUxFHTF9URVhUVVJFX0JVRkZFUolBDIlDCIlFChNnbEdldFRleFBhcmFtZXRlcml2CXBhcmFtZXRlchUVR0xfVEVYVFVSRV9NQUdfRklMVEVSFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBVHTF9URVhUVVJFX0JBU0VfTEVWRUwXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUbR0xfVEVYVFVSRV9JTU1VVEFCTEVfRk9STUFUFEdMX1RFWFRVUkVfTUFYX0xFVkVMEkdMX1RFWFRVUkVfTUFYX0xPRBJHTF9URVhUVVJFX01JTl9MT0QUR0xfVEVYVFVSRV9TV0laWkxFX0EUR0xfVEVYVFVSRV9TV0laWkxFX0IUR0xfVEVYVFVSRV9TV0laWkxFX0cUR0xfVEVYVFVSRV9TV0laWkxFX1IRR0xfVEVYVFVSRV9XUkFQX1IdR0xfREVQVEhfU1RFTkNJTF9URVhUVVJFX01PREUiR0xfSU1BR0VfRk9STUFUX0NPTVBBVElCSUxJVFlfVFlQRRtHTF9URVhUVVJFX0lNTVVUQUJMRV9MRVZFTFMXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1IdR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQCHWdsR2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nAYlHBIlJBolLCIlNCh1nbEdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZwRuYW1lBAECAhNnbEdldFVuaWZvcm1JbmRpY2VzAYlPBIlRBolTCIlVChNnbEdldFVuaWZvcm1JbmRpY2VzDnVuaWZvcm1JbmRpY2VzBAECAg5nbEdldFVuaWZvcm1mdgGJVwSJWQaJWwiJXQoOZ2xHZXRVbmlmb3JtZnYGdmFsdWVzBAECAg5nbEdldFVuaWZvcm1pdgGJXwSJYQaJYwiJZQoOZ2xHZXRVbmlmb3JtaXYGdmFsdWVzBAECAg9nbEdldFVuaWZvcm11aXYBiWcEiWkGiWsIiW0KD2dsR2V0VW5pZm9ybXVpdgZ2YWx1ZXMEAQICFGdsR2V0VmVydGV4QXR0cmliSWl2AolvDIlxCIlzChRnbEdldFZlcnRleEF0dHJpYklpdgVwbmFtZQsYR0xfQ1VSUkVOVF9WRVJURVhfQVRUUklCHkdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRBtHTF9WRVJURVhfQVRUUklCX0FSUkFZX1NJWkUbR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFIUdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfTk9STUFMSVpFRB1HTF9WRVJURVhfQVRUUklCX0FSUkFZX1NUUklERSVHTF9WRVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5HHkdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfRElWSVNPUh5HTF9WRVJURVhfQVRUUklCX0FSUkFZX0lOVEVHRVIYR0xfVkVSVEVYX0FUVFJJQl9CSU5ESU5HIEdMX1ZFUlRFWF9BVFRSSUJfUkVMQVRJVkVfT0ZGU0VUiXUEiXcGiXkIiXsKFGdsR2V0VmVydGV4QXR0cmliSWl2BnBhcmFtcwQBAgIVZ2xHZXRWZXJ0ZXhBdHRyaWJJdWl2Aol9DIl/CImBChVnbEdldFZlcnRleEF0dHJpYkl1aXYFcG5hbWULGEdMX0NVUlJFTlRfVkVSVEVYX0FUVFJJQh5HTF9WRVJURVhfQVRUUklCX0FSUkFZX0VOQUJMRUQbR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9TSVpFG0dMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRSFHTF9WRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTElaRUQdR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREUlR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElORx5HTF9WRVJURVhfQVRUUklCX0FSUkFZX0RJVklTT1IeR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9JTlRFR0VSGEdMX1ZFUlRFWF9BVFRSSUJfQklORElORyBHTF9WRVJURVhfQVRUUklCX1JFTEFUSVZFX09GRlNFVImDBImFBomHCImJChVnbEdldFZlcnRleEF0dHJpYkl1aXYGcGFyYW1zBAECAhlnbEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2AYmLDImNCImPChlnbEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2BXBuYW1lAR5HTF9WRVJURVhfQVRUUklCX0FSUkFZX1BPSU5URVICE2dsR2V0VmVydGV4QXR0cmliZnYCiZEMiZMIiZUKE2dsR2V0VmVydGV4QXR0cmliZnYFcG5hbWULGEdMX0NVUlJFTlRfVkVSVEVYX0FUVFJJQh5HTF9WRVJURVhfQVRUUklCX0FSUkFZX0VOQUJMRUQbR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9TSVpFG0dMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRSFHTF9WRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTElaRUQdR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREUlR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElORx5HTF9WRVJURVhfQVRUUklCX0FSUkFZX0RJVklTT1IeR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9JTlRFR0VSGEdMX1ZFUlRFWF9BVFRSSUJfQklORElORyBHTF9WRVJURVhfQVRUUklCX1JFTEFUSVZFX09GRlNFVImXBImZBombCImdChNnbEdldFZlcnRleEF0dHJpYmZ2BnBhcmFtcwQBAgITZ2xHZXRWZXJ0ZXhBdHRyaWJpdgKJnwyJoQiJowoTZ2xHZXRWZXJ0ZXhBdHRyaWJpdgVwbmFtZQsYR0xfQ1VSUkVOVF9WRVJURVhfQVRUUklCHkdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRBtHTF9WRVJURVhfQVRUUklCX0FSUkFZX1NJWkUbR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFIUdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfTk9STUFMSVpFRB1HTF9WRVJURVhfQVRUUklCX0FSUkFZX1NUUklERSVHTF9WRVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5HHkdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfRElWSVNPUh5HTF9WRVJURVhfQVRUUklCX0FSUkFZX0lOVEVHRVIYR0xfVkVSVEVYX0FUVFJJQl9CSU5ESU5HIEdMX1ZFUlRFWF9BVFRSSUJfUkVMQVRJVkVfT0ZGU0VUiaUEiacGiakIiasKE2dsR2V0VmVydGV4QXR0cmliaXYGcGFyYW1zBAECAg9nbEdldG5Vbmlmb3JtZnYBia0Eia8GibEIibMKD2dsR2V0blVuaWZvcm1mdgZ2YWx1ZXMEAQICEmdsR2V0blVuaWZvcm1mdktIUgGJtQSJtwaJuQiJuwoSZ2xHZXRuVW5pZm9ybWZ2S0hSBnBhcmFtcwQBAgIPZ2xHZXRuVW5pZm9ybWl2AYm9BIm/BonBCInDCg9nbEdldG5Vbmlmb3JtaXYGdmFsdWVzBAECAhJnbEdldG5Vbmlmb3JtaXZLSFIBicUEiccGickIicsKEmdsR2V0blVuaWZvcm1pdktIUgZwYXJhbXMEAQICEGdsR2V0blVuaWZvcm11aXYBic0Eic8GidEIidMKEGdsR2V0blVuaWZvcm11aXYGdmFsdWVzBAECAhNnbEdldG5Vbmlmb3JtdWl2S0hSAYnVBInXBonZCInbChNnbEdldG5Vbmlmb3JtdWl2S0hSBnBhcmFtcwQBAgIGZ2xIaW50AondDInfCInhCgZnbEhpbnQGdGFyZ2V0AhdHTF9HRU5FUkFURV9NSVBNQVBfSElOVCJHTF9GUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UieMMieUIiecKBmdsSGludARtb2RlAwxHTF9ET05UX0NBUkUKR0xfRkFTVEVTVAlHTF9OSUNFU1QCFmdsSW5zZXJ0RXZlbnRNYXJrZXJFWFQBiekEiesGie0Iie8KFmdsSW5zZXJ0RXZlbnRNYXJrZXJFWFQGbWFya2VyBAEAAhdnbEludmFsaWRhdGVGcmFtZWJ1ZmZlcgKJ8QyJ8wiJ9QoXZ2xJbnZhbGlkYXRlRnJhbWVidWZmZXIGdGFyZ2V0Aw5HTF9GUkFNRUJVRkZFUhNHTF9EUkFXX0ZSQU1FQlVGRkVSE0dMX1JFQURfRlJBTUVCVUZGRVKJ9wyJ+QaJ+waJ/QiJ/woXZ2xJbnZhbGlkYXRlRnJhbWVidWZmZXILYXR0YWNobWVudHMEAhYIR0xfQ09MT1IIR0xfREVQVEgKR0xfU1RFTkNJTBRHTF9DT0xPUl9BVFRBQ0hNRU5UMBRHTF9DT0xPUl9BVFRBQ0hNRU5UMRVHTF9DT0xPUl9BVFRBQ0hNRU5UMTAVR0xfQ09MT1JfQVRUQUNITUVOVDExFUdMX0NPTE9SX0FUVEFDSE1FTlQxMhVHTF9DT0xPUl9BVFRBQ0hNRU5UMTMVR0xfQ09MT1JfQVRUQUNITUVOVDE0FUdMX0NPTE9SX0FUVEFDSE1FTlQxNRRHTF9DT0xPUl9BVFRBQ0hNRU5UMhRHTF9DT0xPUl9BVFRBQ0hNRU5UMxRHTF9DT0xPUl9BVFRBQ0hNRU5UNBRHTF9DT0xPUl9BVFRBQ0hNRU5UNRRHTF9DT0xPUl9BVFRBQ0hNRU5UNhRHTF9DT0xPUl9BVFRBQ0hNRU5UNxRHTF9DT0xPUl9BVFRBQ0hNRU5UOBRHTF9DT0xPUl9BVFRBQ0hNRU5UORNHTF9ERVBUSF9BVFRBQ0hNRU5UG0dMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVBVHTF9TVEVOQ0lMX0FUVEFDSE1FTlQCGmdsSW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyAooBDIoDCIoFChpnbEludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcgZ0YXJnZXQBDkdMX0ZSQU1FQlVGRkVSigcEigkGigsIig0KGmdsSW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyC2F0dGFjaG1lbnRzBAEAAgtnbElzRW5hYmxlZAGKDwyKEQiKEwoLZ2xJc0VuYWJsZWQKY2FwYWJpbGl0eRAIR0xfQkxFTkQMR0xfQ1VMTF9GQUNFDUdMX0RFUFRIX1RFU1QJR0xfRElUSEVSFkdMX1BPTFlHT05fT0ZGU0VUX0ZJTEwbR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFEkdMX1NBTVBMRV9DT1ZFUkFHRQ9HTF9TQ0lTU09SX1RFU1QPR0xfU1RFTkNJTF9URVNUIEdMX1BSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYFUdMX1JBU1RFUklaRVJfRElTQ0FSRA5HTF9TQU1QTEVfTUFTSw9HTF9ERUJVR19PVVRQVVQbR0xfREVCVUdfT1VUUFVUX1NZTkNIUk9OT1VTEkdMX0FMUEhBX1RFU1RfUUNPTRdHTF9GUkFNRUJVRkZFUl9TUkdCX0VYVAIMZ2xJc0VuYWJsZWRpAYoVDIoXCIoZCgxnbElzRW5hYmxlZGkKY2FwYWJpbGl0eRAIR0xfQkxFTkQMR0xfQ1VMTF9GQUNFDUdMX0RFUFRIX1RFU1QJR0xfRElUSEVSFkdMX1BPTFlHT05fT0ZGU0VUX0ZJTEwbR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFEkdMX1NBTVBMRV9DT1ZFUkFHRQ9HTF9TQ0lTU09SX1RFU1QPR0xfU1RFTkNJTF9URVNUIEdMX1BSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYFUdMX1JBU1RFUklaRVJfRElTQ0FSRA5HTF9TQU1QTEVfTUFTSw9HTF9ERUJVR19PVVRQVVQbR0xfREVCVUdfT1VUUFVUX1NZTkNIUk9OT1VTEkdMX0FMUEhBX1RFU1RfUUNPTRdHTF9GUkFNRUJVRkZFUl9TUkdCX0VYVAIPZ2xJc0VuYWJsZWRpRVhUAYobDIodCIofCg9nbElzRW5hYmxlZGlFWFQGdGFyZ2V0EAhHTF9CTEVORAxHTF9DVUxMX0ZBQ0UNR0xfREVQVEhfVEVTVAlHTF9ESVRIRVIWR0xfUE9MWUdPTl9PRkZTRVRfRklMTBtHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0USR0xfU0FNUExFX0NPVkVSQUdFD0dMX1NDSVNTT1JfVEVTVA9HTF9TVEVOQ0lMX1RFU1QgR0xfUFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgVR0xfUkFTVEVSSVpFUl9ESVNDQVJEDkdMX1NBTVBMRV9NQVNLD0dMX0RFQlVHX09VVFBVVBtHTF9ERUJVR19PVVRQVVRfU1lOQ0hST05PVVMSR0xfQUxQSEFfVEVTVF9RQ09NF0dMX0ZSQU1FQlVGRkVSX1NSR0JfRVhUAg5nbElzRW5hYmxlZGlOVgGKIQyKIwiKJQoOZ2xJc0VuYWJsZWRpTlYGdGFyZ2V0EAhHTF9CTEVORAxHTF9DVUxMX0ZBQ0UNR0xfREVQVEhfVEVTVAlHTF9ESVRIRVIWR0xfUE9MWUdPTl9PRkZTRVRfRklMTBtHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0USR0xfU0FNUExFX0NPVkVSQUdFD0dMX1NDSVNTT1JfVEVTVA9HTF9TVEVOQ0lMX1RFU1QgR0xfUFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgVR0xfUkFTVEVSSVpFUl9ESVNDQVJEDkdMX1NBTVBMRV9NQVNLD0dMX0RFQlVHX09VVFBVVBtHTF9ERUJVR19PVVRQVVRfU1lOQ0hST05PVVMSR0xfQUxQSEFfVEVTVF9RQ09NF0dMX0ZSQU1FQlVGRkVSX1NSR0JfRVhUAg9nbElzRW5hYmxlZGlPRVMBiicMiikIiisKD2dsSXNFbmFibGVkaU9FUwZ0YXJnZXQQCEdMX0JMRU5EDEdMX0NVTExfRkFDRQ1HTF9ERVBUSF9URVNUCUdMX0RJVEhFUhZHTF9QT0xZR09OX09GRlNFVF9GSUxMG0dMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRRJHTF9TQU1QTEVfQ09WRVJBR0UPR0xfU0NJU1NPUl9URVNUD0dMX1NURU5DSUxfVEVTVCBHTF9QUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWBVHTF9SQVNURVJJWkVSX0RJU0NBUkQOR0xfU0FNUExFX01BU0sPR0xfREVCVUdfT1VUUFVUG0dMX0RFQlVHX09VVFBVVF9TWU5DSFJPTk9VUxJHTF9BTFBIQV9URVNUX1FDT00XR0xfRlJBTUVCVUZGRVJfU1JHQl9FWFQCEGdsTGFiZWxPYmplY3RFWFQBii0Mii8IijEKEGdsTGFiZWxPYmplY3RFWFQEdHlwZQsKR0xfVEVYVFVSRQ5HTF9GUkFNRUJVRkZFUg9HTF9SRU5ERVJCVUZGRVIUR0xfQlVGRkVSX09CSkVDVF9FWFQUR0xfU0hBREVSX09CSkVDVF9FWFQVR0xfUFJPR1JBTV9PQkpFQ1RfRVhUGkdMX1ZFUlRFWF9BUlJBWV9PQkpFQ1RfRVhUE0dMX1FVRVJZX09CSkVDVF9FWFQKR0xfU0FNUExFUhVHTF9UUkFOU0ZPUk1fRkVFREJBQ0seR0xfUFJPR1JBTV9QSVBFTElORV9PQkpFQ1RfRVhUAgtnbE1hcEJ1ZmZlcgOKMwyKNQiKNwoLZ2xNYXBCdWZmZXIGdGFyZ2V0DQ9HTF9BUlJBWV9CVUZGRVIXR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVITR0xfQ09QWV9SRUFEX0JVRkZFUhRHTF9DT1BZX1dSSVRFX0JVRkZFUhRHTF9QSVhFTF9QQUNLX0JVRkZFUhZHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSHEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIRR0xfVU5JRk9STV9CVUZGRVIYR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSG0dMX0RJU1BBVENIX0lORElSRUNUX0JVRkZFUhdHTF9EUkFXX0lORElSRUNUX0JVRkZFUhhHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVIRR0xfVEVYVFVSRV9CVUZGRVKKOQyKOwiKPQoLZ2xNYXBCdWZmZXIGYWNjZXNzAwxHTF9SRUFEX09OTFkNR0xfV1JJVEVfT05MWQ1HTF9SRUFEX1dSSVRFij8EikEGikMIikUKC2dsTWFwQnVmZmVyBnJlc3VsdAQCAgACDmdsTWFwQnVmZmVyT0VTA4pHDIpJCIpLCg5nbE1hcEJ1ZmZlck9FUwZ0YXJnZXQND0dMX0FSUkFZX0JVRkZFUhdHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUhNHTF9DT1BZX1JFQURfQlVGRkVSFEdMX0NPUFlfV1JJVEVfQlVGRkVSFEdMX1BJWEVMX1BBQ0tfQlVGRkVSFkdMX1BJWEVMX1VOUEFDS19CVUZGRVIcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUhFHTF9VTklGT1JNX0JVRkZFUhhHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVIbR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSF0dMX0RSQVdfSU5ESVJFQ1RfQlVGRkVSGEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUhFHTF9URVhUVVJFX0JVRkZFUopNDIpPCIpRCg5nbE1hcEJ1ZmZlck9FUwZhY2Nlc3MDDEdMX1JFQURfT05MWQ1HTF9XUklURV9PTkxZDUdMX1JFQURfV1JJVEWKUwSKVQaKVwiKWQoOZ2xNYXBCdWZmZXJPRVMGcmVzdWx0BAICAAIQZ2xNYXBCdWZmZXJSYW5nZQOKWwyKXQiKXwoQZ2xNYXBCdWZmZXJSYW5nZQZ0YXJnZXQND0dMX0FSUkFZX0JVRkZFUhdHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUhNHTF9DT1BZX1JFQURfQlVGRkVSFEdMX0NPUFlfV1JJVEVfQlVGRkVSFEdMX1BJWEVMX1BBQ0tfQlVGRkVSFkdMX1BJWEVMX1VOUEFDS19CVUZGRVIcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUhFHTF9VTklGT1JNX0JVRkZFUhhHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVIbR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSF0dMX0RSQVdfSU5ESVJFQ1RfQlVGRkVSGEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUhFHTF9URVhUVVJFX0JVRkZFUophDIpjCIplChBnbE1hcEJ1ZmZlclJhbmdlBmFjY2VzcwEPR0xfTUFQX1JFQURfQklUimcEimkGimsIim0KEGdsTWFwQnVmZmVyUmFuZ2UGcmVzdWx0BAICAAITZ2xNYXBCdWZmZXJSYW5nZUVYVAOKbwyKcQiKcwoTZ2xNYXBCdWZmZXJSYW5nZUVYVAZ0YXJnZXQND0dMX0FSUkFZX0JVRkZFUhdHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUhNHTF9DT1BZX1JFQURfQlVGRkVSFEdMX0NPUFlfV1JJVEVfQlVGRkVSFEdMX1BJWEVMX1BBQ0tfQlVGRkVSFkdMX1BJWEVMX1VOUEFDS19CVUZGRVIcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUhFHTF9VTklGT1JNX0JVRkZFUhhHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVIbR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSF0dMX0RSQVdfSU5ESVJFQ1RfQlVGRkVSGEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUhFHTF9URVhUVVJFX0JVRkZFUop1DIp3CIp5ChNnbE1hcEJ1ZmZlclJhbmdlRVhUBmFjY2VzcwEPR0xfTUFQX1JFQURfQklUinsEin0Gin8IioEKE2dsTWFwQnVmZmVyUmFuZ2VFWFQGcmVzdWx0BAICAAIPZ2xNZW1vcnlCYXJyaWVyAYqDDIqFCIqHCg9nbE1lbW9yeUJhcnJpZXIIYmFycmllcnMOE0dMX0FMTF9CQVJSSUVSX0JJVFMdR0xfQVRPTUlDX0NPVU5URVJfQkFSUklFUl9CSVQcR0xfQlVGRkVSX1VQREFURV9CQVJSSUVSX0JJVBZHTF9DT01NQU5EX0JBUlJJRVJfQklUHEdMX0VMRU1FTlRfQVJSQVlfQkFSUklFUl9CSVQaR0xfRlJBTUVCVUZGRVJfQkFSUklFUl9CSVQbR0xfUElYRUxfQlVGRkVSX0JBUlJJRVJfQklUIkdMX1NIQURFUl9JTUFHRV9BQ0NFU1NfQkFSUklFUl9CSVQdR0xfU0hBREVSX1NUT1JBR0VfQkFSUklFUl9CSVQcR0xfVEVYVFVSRV9GRVRDSF9CQVJSSUVSX0JJVB1HTF9URVhUVVJFX1VQREFURV9CQVJSSUVSX0JJVCFHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQkFSUklFUl9CSVQWR0xfVU5JRk9STV9CQVJSSUVSX0JJVCJHTF9WRVJURVhfQVRUUklCX0FSUkFZX0JBUlJJRVJfQklUAhdnbE1lbW9yeUJhcnJpZXJCeVJlZ2lvbgGKiQyKiwiKjQoXZ2xNZW1vcnlCYXJyaWVyQnlSZWdpb24IYmFycmllcnMOE0dMX0FMTF9CQVJSSUVSX0JJVFMdR0xfQVRPTUlDX0NPVU5URVJfQkFSUklFUl9CSVQcR0xfQlVGRkVSX1VQREFURV9CQVJSSUVSX0JJVBZHTF9DT01NQU5EX0JBUlJJRVJfQklUHEdMX0VMRU1FTlRfQVJSQVlfQkFSUklFUl9CSVQaR0xfRlJBTUVCVUZGRVJfQkFSUklFUl9CSVQbR0xfUElYRUxfQlVGRkVSX0JBUlJJRVJfQklUIkdMX1NIQURFUl9JTUFHRV9BQ0NFU1NfQkFSUklFUl9CSVQdR0xfU0hBREVSX1NUT1JBR0VfQkFSUklFUl9CSVQcR0xfVEVYVFVSRV9GRVRDSF9CQVJSSUVSX0JJVB1HTF9URVhUVVJFX1VQREFURV9CQVJSSUVSX0JJVCFHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQkFSUklFUl9CSVQWR0xfVU5JRk9STV9CQVJSSUVSX0JJVCJHTF9WRVJURVhfQVRUUklCX0FSUkFZX0JBUlJJRVJfQklUAg1nbE9iamVjdExhYmVsAYqPDIqRCIqTCg1nbE9iamVjdExhYmVsCmlkZW50aWZpZXILCkdMX1RFWFRVUkUOR0xfRlJBTUVCVUZGRVIPR0xfUkVOREVSQlVGRkVSCUdMX0JVRkZFUglHTF9TSEFERVIKR0xfUFJPR1JBTQ9HTF9WRVJURVhfQVJSQVkIR0xfUVVFUlkKR0xfU0FNUExFUhVHTF9UUkFOU0ZPUk1fRkVFREJBQ0sTR0xfUFJPR1JBTV9QSVBFTElORQIQZ2xPYmplY3RMYWJlbEtIUgGKlQyKlwiKmQoQZ2xPYmplY3RMYWJlbEtIUgppZGVudGlmaWVyCwpHTF9URVhUVVJFDkdMX0ZSQU1FQlVGRkVSD0dMX1JFTkRFUkJVRkZFUglHTF9CVUZGRVIJR0xfU0hBREVSCkdMX1BST0dSQU0PR0xfVkVSVEVYX0FSUkFZCEdMX1FVRVJZCkdMX1NBTVBMRVIVR0xfVFJBTlNGT1JNX0ZFRURCQUNLE0dMX1BST0dSQU1fUElQRUxJTkUCEGdsT2JqZWN0UHRyTGFiZWwBipsEip0Gip8IiqEKEGdsT2JqZWN0UHRyTGFiZWwFbGFiZWwEAQACE2dsT2JqZWN0UHRyTGFiZWxLSFIBiqMEiqUGiqcIiqkKE2dsT2JqZWN0UHRyTGFiZWxLSFIFbGFiZWwEAQACEWdsUGF0Y2hQYXJhbWV0ZXJpAYqrDIqtCIqvChFnbFBhdGNoUGFyYW1ldGVyaQVwbmFtZQERR0xfUEFUQ0hfVkVSVElDRVMCFGdsUGF0Y2hQYXJhbWV0ZXJpRVhUAYqxDIqzCIq1ChRnbFBhdGNoUGFyYW1ldGVyaUVYVAVwbmFtZQERR0xfUEFUQ0hfVkVSVElDRVMCFGdsUGF0Y2hQYXJhbWV0ZXJpT0VTAYq3DIq5CIq7ChRnbFBhdGNoUGFyYW1ldGVyaU9FUwVwbmFtZQERR0xfUEFUQ0hfVkVSVElDRVMCDWdsUGl4ZWxTdG9yZWkBir0Mir8IisEKDWdsUGl4ZWxTdG9yZWkJcGFyYW1ldGVyDBFHTF9QQUNLX0FMSUdOTUVOVBRHTF9QQUNLX0lNQUdFX0hFSUdIVBJHTF9QQUNLX1JPV19MRU5HVEgTR0xfUEFDS19TS0lQX0lNQUdFUxNHTF9QQUNLX1NLSVBfUElYRUxTEUdMX1BBQ0tfU0tJUF9ST1dTE0dMX1VOUEFDS19BTElHTk1FTlQWR0xfVU5QQUNLX0lNQUdFX0hFSUdIVBRHTF9VTlBBQ0tfUk9XX0xFTkdUSBVHTF9VTlBBQ0tfU0tJUF9JTUFHRVMVR0xfVU5QQUNLX1NLSVBfUElYRUxTE0dMX1VOUEFDS19TS0lQX1JPV1MCD2dsUHJvZ3JhbUJpbmFyeQKKwwyKxQiKxwoPZ2xQcm9ncmFtQmluYXJ5DGJpbmFyeUZvcm1hdAESR0xfWjQwMF9CSU5BUllfQU1EiskEissGis0Iis8KD2dsUHJvZ3JhbUJpbmFyeQZiaW5hcnkEAQACEmdsUHJvZ3JhbUJpbmFyeU9FUwKK0QyK0wiK1QoSZ2xQcm9ncmFtQmluYXJ5T0VTDWJpbmFyeV9mb3JtYXQBEkdMX1o0MDBfQklOQVJZX0FNRIrXBIrZBorbCIrdChJnbFByb2dyYW1CaW5hcnlPRVMGYmluYXJ5BAEAAhNnbFByb2dyYW1QYXJhbWV0ZXJpAYrfDIrhCIrjChNnbFByb2dyYW1QYXJhbWV0ZXJpBXBuYW1lAiJHTF9QUk9HUkFNX0JJTkFSWV9SRVRSSUVWQUJMRV9ISU5UFEdMX1BST0dSQU1fU0VQQVJBQkxFAhZnbFByb2dyYW1QYXJhbWV0ZXJpRVhUAYrlDIrnCIrpChZnbFByb2dyYW1QYXJhbWV0ZXJpRVhUBXBuYW1lAiJHTF9QUk9HUkFNX0JJTkFSWV9SRVRSSUVWQUJMRV9ISU5UFEdMX1BST0dSQU1fU0VQQVJBQkxFAhJnbFByb2dyYW1Vbmlmb3JtMWYAAhVnbFByb2dyYW1Vbmlmb3JtMWZFWFQAAhNnbFByb2dyYW1Vbmlmb3JtMWZ2AYrrBIrtBorvCIrxChNnbFByb2dyYW1Vbmlmb3JtMWZ2BnZhbHVlcwQCAgACFmdsUHJvZ3JhbVVuaWZvcm0xZnZFWFQBivMEivUGivcIivkKFmdsUHJvZ3JhbVVuaWZvcm0xZnZFWFQFdmFsdWUEAgIAAhJnbFByb2dyYW1Vbmlmb3JtMWkAAhVnbFByb2dyYW1Vbmlmb3JtMWlFWFQAAhNnbFByb2dyYW1Vbmlmb3JtMWl2AYr7BIr9Bor/CIsBChNnbFByb2dyYW1Vbmlmb3JtMWl2BnZhbHVlcwQCAgACFmdsUHJvZ3JhbVVuaWZvcm0xaXZFWFQBiwMEiwUGiwcIiwkKFmdsUHJvZ3JhbVVuaWZvcm0xaXZFWFQFdmFsdWUEAgIAAhNnbFByb2dyYW1Vbmlmb3JtMXVpAAIWZ2xQcm9ncmFtVW5pZm9ybTF1aUVYVAACFGdsUHJvZ3JhbVVuaWZvcm0xdWl2AYsLBIsNBosPCIsRChRnbFByb2dyYW1Vbmlmb3JtMXVpdgZ2YWx1ZXMEAgIAAhdnbFByb2dyYW1Vbmlmb3JtMXVpdkVYVAGLEwSLFQaLFwiLGQoXZ2xQcm9ncmFtVW5pZm9ybTF1aXZFWFQFdmFsdWUEAgIAAhJnbFByb2dyYW1Vbmlmb3JtMmYAAhVnbFByb2dyYW1Vbmlmb3JtMmZFWFQAAhNnbFByb2dyYW1Vbmlmb3JtMmZ2AYsbBIsdBosfCIshChNnbFByb2dyYW1Vbmlmb3JtMmZ2BnZhbHVlcwQCAgACFmdsUHJvZ3JhbVVuaWZvcm0yZnZFWFQBiyMEiyUGiycIiykKFmdsUHJvZ3JhbVVuaWZvcm0yZnZFWFQFdmFsdWUEAgIAAhJnbFByb2dyYW1Vbmlmb3JtMmkAAhVnbFByb2dyYW1Vbmlmb3JtMmlFWFQAAhNnbFByb2dyYW1Vbmlmb3JtMml2AYsrBIstBosvCIsxChNnbFByb2dyYW1Vbmlmb3JtMml2BnZhbHVlcwQCAgACFmdsUHJvZ3JhbVVuaWZvcm0yaXZFWFQBizMEizUGizcIizkKFmdsUHJvZ3JhbVVuaWZvcm0yaXZFWFQFdmFsdWUEAgIAAhNnbFByb2dyYW1Vbmlmb3JtMnVpAAIWZ2xQcm9ncmFtVW5pZm9ybTJ1aUVYVAACFGdsUHJvZ3JhbVVuaWZvcm0ydWl2AYs7BIs9Bos/CItBChRnbFByb2dyYW1Vbmlmb3JtMnVpdgZ2YWx1ZXMEAgIAAhdnbFByb2dyYW1Vbmlmb3JtMnVpdkVYVAGLQwSLRQaLRwiLSQoXZ2xQcm9ncmFtVW5pZm9ybTJ1aXZFWFQFdmFsdWUEAgIAAhJnbFByb2dyYW1Vbmlmb3JtM2YAAhVnbFByb2dyYW1Vbmlmb3JtM2ZFWFQAAhNnbFByb2dyYW1Vbmlmb3JtM2Z2AYtLBItNBotPCItRChNnbFByb2dyYW1Vbmlmb3JtM2Z2BnZhbHVlcwQCAgACFmdsUHJvZ3JhbVVuaWZvcm0zZnZFWFQBi1MEi1UGi1cIi1kKFmdsUHJvZ3JhbVVuaWZvcm0zZnZFWFQFdmFsdWUEAgIAAhJnbFByb2dyYW1Vbmlmb3JtM2kAAhVnbFByb2dyYW1Vbmlmb3JtM2lFWFQAAhNnbFByb2dyYW1Vbmlmb3JtM2l2AYtbBItdBotfCIthChNnbFByb2dyYW1Vbmlmb3JtM2l2BnZhbHVlcwQCAgACFmdsUHJvZ3JhbVVuaWZvcm0zaXZFWFQBi2MEi2UGi2cIi2kKFmdsUHJvZ3JhbVVuaWZvcm0zaXZFWFQFdmFsdWUEAgIAAhNnbFByb2dyYW1Vbmlmb3JtM3VpAAIWZ2xQcm9ncmFtVW5pZm9ybTN1aUVYVAACFGdsUHJvZ3JhbVVuaWZvcm0zdWl2AYtrBIttBotvCItxChRnbFByb2dyYW1Vbmlmb3JtM3VpdgZ2YWx1ZXMEAgIAAhdnbFByb2dyYW1Vbmlmb3JtM3VpdkVYVAGLcwSLdQaLdwiLeQoXZ2xQcm9ncmFtVW5pZm9ybTN1aXZFWFQFdmFsdWUEAgIAAhJnbFByb2dyYW1Vbmlmb3JtNGYAAhVnbFByb2dyYW1Vbmlmb3JtNGZFWFQAAhNnbFByb2dyYW1Vbmlmb3JtNGZ2AYt7BIt9Bot/CIuBChNnbFByb2dyYW1Vbmlmb3JtNGZ2BnZhbHVlcwQCAgACFmdsUHJvZ3JhbVVuaWZvcm00ZnZFWFQBi4MEi4UGi4cIi4kKFmdsUHJvZ3JhbVVuaWZvcm00ZnZFWFQFdmFsdWUEAgIAAhJnbFByb2dyYW1Vbmlmb3JtNGkAAhVnbFByb2dyYW1Vbmlmb3JtNGlFWFQAAhNnbFByb2dyYW1Vbmlmb3JtNGl2AYuLBIuNBouPCIuRChNnbFByb2dyYW1Vbmlmb3JtNGl2BnZhbHVlcwQCAgACFmdsUHJvZ3JhbVVuaWZvcm00aXZFWFQBi5MEi5UGi5cIi5kKFmdsUHJvZ3JhbVVuaWZvcm00aXZFWFQFdmFsdWUEAgIAAhNnbFByb2dyYW1Vbmlmb3JtNHVpAAIWZ2xQcm9ncmFtVW5pZm9ybTR1aUVYVAACFGdsUHJvZ3JhbVVuaWZvcm00dWl2AYubBIudBoufCIuhChRnbFByb2dyYW1Vbmlmb3JtNHVpdgZ2YWx1ZXMEAgIAAhdnbFByb2dyYW1Vbmlmb3JtNHVpdkVYVAGLowSLpQaLpwiLqQoXZ2xQcm9ncmFtVW5pZm9ybTR1aXZFWFQFdmFsdWUEAgIAAhlnbFByb2dyYW1Vbmlmb3JtTWF0cml4MmZ2AYurBIutBouvCIuxChlnbFByb2dyYW1Vbmlmb3JtTWF0cml4MmZ2BnZhbHVlcwQCAgACHGdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgyZnZFWFQBi7MEi7UGi7cIi7kKHGdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgyZnZFWFQFdmFsdWUEAgIAAhtnbFByb2dyYW1Vbmlmb3JtTWF0cml4MngzZnYBi7sEi70Gi78Ii8EKG2dsUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNmdgZ2YWx1ZXMEAgIAAh5nbFByb2dyYW1Vbmlmb3JtTWF0cml4MngzZnZFWFQBi8MEi8UGi8cIi8kKHmdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNmdkVYVAV2YWx1ZQQCAgACG2dsUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDRmdgGLywSLzQaLzwiL0QobZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4NGZ2BnZhbHVlcwQCAgACHmdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDRmdkVYVAGL0wSL1QaL1wiL2QoeZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4NGZ2RVhUBXZhbHVlBAICAAIZZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDNmdgGL2wSL3QaL3wiL4QoZZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDNmdgZ2YWx1ZXMEAgIAAhxnbFByb2dyYW1Vbmlmb3JtTWF0cml4M2Z2RVhUAYvjBIvlBovnCIvpChxnbFByb2dyYW1Vbmlmb3JtTWF0cml4M2Z2RVhUBXZhbHVlBAICAAIbZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDN4MmZ2AYvrBIvtBovvCIvxChtnbFByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZnYGdmFsdWVzBAICAAIeZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDN4MmZ2RVhUAYvzBIv1Bov3CIv5Ch5nbFByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZnZFWFQFdmFsdWUEAgIAAhtnbFByb2dyYW1Vbmlmb3JtTWF0cml4M3g0ZnYBi/sEi/0Gi/8IjAEKG2dsUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRmdgZ2YWx1ZXMEAgIAAh5nbFByb2dyYW1Vbmlmb3JtTWF0cml4M3g0ZnZFWFQBjAMEjAUGjAcIjAkKHmdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRmdkVYVAV2YWx1ZQQCAgACGWdsUHJvZ3JhbVVuaWZvcm1NYXRyaXg0ZnYBjAsEjA0GjA8IjBEKGWdsUHJvZ3JhbVVuaWZvcm1NYXRyaXg0ZnYGdmFsdWVzBAICAAIcZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDRmdkVYVAGMEwSMFQaMFwiMGQocZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDRmdkVYVAV2YWx1ZQQCAgACG2dsUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDJmdgGMGwSMHQaMHwiMIQobZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDR4MmZ2BnZhbHVlcwQCAgACHmdsUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDJmdkVYVAGMIwSMJQaMJwiMKQoeZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDR4MmZ2RVhUBXZhbHVlBAICAAIbZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDR4M2Z2AYwrBIwtBowvCIwxChtnbFByb2dyYW1Vbmlmb3JtTWF0cml4NHgzZnYGdmFsdWVzBAICAAIeZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDR4M2Z2RVhUAYwzBIw1Bow3CIw5Ch5nbFByb2dyYW1Vbmlmb3JtTWF0cml4NHgzZnZFWFQFdmFsdWUEAgIAAhBnbFB1c2hEZWJ1Z0dyb3VwAow7DIw9CIw/ChBnbFB1c2hEZWJ1Z0dyb3VwBnNvdXJjZQIbR0xfREVCVUdfU09VUkNFX0FQUExJQ0FUSU9OG0dMX0RFQlVHX1NPVVJDRV9USElSRF9QQVJUWYxBBIxDBoxFCIxHChBnbFB1c2hEZWJ1Z0dyb3VwB21lc3NhZ2UEAQACE2dsUHVzaERlYnVnR3JvdXBLSFICjEkMjEsIjE0KE2dsUHVzaERlYnVnR3JvdXBLSFIGc291cmNlAhtHTF9ERUJVR19TT1VSQ0VfQVBQTElDQVRJT04bR0xfREVCVUdfU09VUkNFX1RISVJEX1BBUlRZjE8EjFEGjFMIjFUKE2dsUHVzaERlYnVnR3JvdXBLSFIHbWVzc2FnZQQBAAIUZ2xQdXNoR3JvdXBNYXJrZXJFWFQBjFcEjFkGjFsIjF0KFGdsUHVzaEdyb3VwTWFya2VyRVhUBm1hcmtlcgQBAAIMZ2xSZWFkQnVmZmVyAYxfDIxhCIxjCgxnbFJlYWRCdWZmZXIDc3JjEgdHTF9CQUNLFEdMX0NPTE9SX0FUVEFDSE1FTlQwFEdMX0NPTE9SX0FUVEFDSE1FTlQxFUdMX0NPTE9SX0FUVEFDSE1FTlQxMBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTEVR0xfQ09MT1JfQVRUQUNITUVOVDEyFUdMX0NPTE9SX0FUVEFDSE1FTlQxMxVHTF9DT0xPUl9BVFRBQ0hNRU5UMTQVR0xfQ09MT1JfQVRUQUNITUVOVDE1FEdMX0NPTE9SX0FUVEFDSE1FTlQyFEdMX0NPTE9SX0FUVEFDSE1FTlQzFEdMX0NPTE9SX0FUVEFDSE1FTlQ0FEdMX0NPTE9SX0FUVEFDSE1FTlQ1FEdMX0NPTE9SX0FUVEFDSE1FTlQ2FEdMX0NPTE9SX0FUVEFDSE1FTlQ3FEdMX0NPTE9SX0FUVEFDSE1FTlQ4FEdMX0NPTE9SX0FUVEFDSE1FTlQ5B0dMX05PTkUCDGdsUmVhZFBpeGVscwOMZQyMZwiMaQoMZ2xSZWFkUGl4ZWxzBmZvcm1hdA8IR0xfQUxQSEEGR0xfUkdCB0dMX1JHQkEGR0xfUkVEDkdMX1JFRF9JTlRFR0VSBUdMX1JHDUdMX1JHX0lOVEVHRVIOR0xfUkdCX0lOVEVHRVISR0xfTFVNSU5BTkNFX0FMUEhBDEdMX0xVTUlOQU5DRQ9HTF9SR0JBX0lOVEVHRVISR0xfREVQVEhfQ09NUE9ORU5UEEdMX0RFUFRIX1NURU5DSUwQR0xfU1RFTkNJTF9JTkRFWAtHTF9CR1JBX0VYVIxrDIxtCIxvCgxnbFJlYWRQaXhlbHMEdHlwZTgXR0xfVU5TSUdORURfU0hPUlRfNV82XzUZR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNBlHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xEEdMX1VOU0lHTkVEX0JZVEUIR0xfRkxPQVQGR0xfSU5UD0dMX1VOU0lHTkVEX0lOVB5HTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYfR0xfVU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFVhtHTF9VTlNJR05FRF9JTlRfNV85XzlfOV9SRVYHR0xfQllURRFHTF9VTlNJR05FRF9TSE9SVAhHTF9TSE9SVA1HTF9IQUxGX0ZMT0FUEUdMX0hBTEZfRkxPQVRfT0VTFEdMX1VOU0lHTkVEX0lOVF8yNF84IUdMX0ZMT0FUXzMyX1VOU0lHTkVEX0lOVF8yNF84X1JFVhVHTF9DT01QUkVTU0VEX1IxMV9FQUMcR0xfQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQxdHTF9DT01QUkVTU0VEX1JHQjhfRVRDMhhHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzIrR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMixHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMhZHTF9DT01QUkVTU0VEX1JHMTFfRUFDHUdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDHEdMX0NPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4OCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OBxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NRxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NhxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTAdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTIlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMhBHTF9FVEMxX1JHQjhfT0VTjHEEjHMGjHUIjHcKDGdsUmVhZFBpeGVscwRkYXRhBAECAg1nbFJlYWRuUGl4ZWxzA4x5DIx7CIx9Cg1nbFJlYWRuUGl4ZWxzBmZvcm1hdA8IR0xfQUxQSEEGR0xfUkdCB0dMX1JHQkEGR0xfUkVEDkdMX1JFRF9JTlRFR0VSBUdMX1JHDUdMX1JHX0lOVEVHRVIOR0xfUkdCX0lOVEVHRVISR0xfTFVNSU5BTkNFX0FMUEhBDEdMX0xVTUlOQU5DRQ9HTF9SR0JBX0lOVEVHRVISR0xfREVQVEhfQ09NUE9ORU5UEEdMX0RFUFRIX1NURU5DSUwQR0xfU1RFTkNJTF9JTkRFWAtHTF9CR1JBX0VYVIx/DIyBCIyDCg1nbFJlYWRuUGl4ZWxzBHR5cGU4F0dMX1VOU0lHTkVEX1NIT1JUXzVfNl81GUdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQZR0xfVU5TSUdORURfU0hPUlRfNV81XzVfMRBHTF9VTlNJR05FRF9CWVRFCEdMX0ZMT0FUBkdMX0lOVA9HTF9VTlNJR05FRF9JTlQeR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWH0dMX1VOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVYbR0xfVU5TSUdORURfSU5UXzVfOV85XzlfUkVWB0dMX0JZVEURR0xfVU5TSUdORURfU0hPUlQIR0xfU0hPUlQNR0xfSEFMRl9GTE9BVBFHTF9IQUxGX0ZMT0FUX09FUxRHTF9VTlNJR05FRF9JTlRfMjRfOCFHTF9GTE9BVF8zMl9VTlNJR05FRF9JTlRfMjRfOF9SRVYVR0xfQ09NUFJFU1NFRF9SMTFfRUFDHEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMXR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIYR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyK0dMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIsR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIWR0xfQ09NUFJFU1NFRF9SRzExX0VBQx1HTF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQxxHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDG0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzR4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDgjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDgcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NSRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDUcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NiRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDYcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OCRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDgdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTAlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTIQR0xfRVRDMV9SR0I4X09FU4yFBIyHBoyJCIyLCg1nbFJlYWRuUGl4ZWxzBGRhdGEEAQICEGdsUmVhZG5QaXhlbHNFWFQDjI0MjI8IjJEKEGdsUmVhZG5QaXhlbHNFWFQGZm9ybWF0DwhHTF9BTFBIQQZHTF9SR0IHR0xfUkdCQQZHTF9SRUQOR0xfUkVEX0lOVEVHRVIFR0xfUkcNR0xfUkdfSU5URUdFUg5HTF9SR0JfSU5URUdFUhJHTF9MVU1JTkFOQ0VfQUxQSEEMR0xfTFVNSU5BTkNFD0dMX1JHQkFfSU5URUdFUhJHTF9ERVBUSF9DT01QT05FTlQQR0xfREVQVEhfU1RFTkNJTBBHTF9TVEVOQ0lMX0lOREVYC0dMX0JHUkFfRVhUjJMMjJUIjJcKEGdsUmVhZG5QaXhlbHNFWFQEdHlwZTgXR0xfVU5TSUdORURfU0hPUlRfNV82XzUZR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNBlHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xEEdMX1VOU0lHTkVEX0JZVEUIR0xfRkxPQVQGR0xfSU5UD0dMX1VOU0lHTkVEX0lOVB5HTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYfR0xfVU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFVhtHTF9VTlNJR05FRF9JTlRfNV85XzlfOV9SRVYHR0xfQllURRFHTF9VTlNJR05FRF9TSE9SVAhHTF9TSE9SVA1HTF9IQUxGX0ZMT0FUEUdMX0hBTEZfRkxPQVRfT0VTFEdMX1VOU0lHTkVEX0lOVF8yNF84IUdMX0ZMT0FUXzMyX1VOU0lHTkVEX0lOVF8yNF84X1JFVhVHTF9DT01QUkVTU0VEX1IxMV9FQUMcR0xfQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQxdHTF9DT01QUkVTU0VEX1JHQjhfRVRDMhhHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzIrR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMixHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMhZHTF9DT01QUkVTU0VEX1JHMTFfRUFDHUdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDHEdMX0NPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4OCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OBxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NRxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NhxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTAdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTIlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMhBHTF9FVEMxX1JHQjhfT0VTjJkEjJsGjJ0IjJ8KEGdsUmVhZG5QaXhlbHNFWFQEZGF0YQQBAgIQZ2xSZWFkblBpeGVsc0tIUgOMoQyMowiMpQoQZ2xSZWFkblBpeGVsc0tIUgZmb3JtYXQPCEdMX0FMUEhBBkdMX1JHQgdHTF9SR0JBBkdMX1JFRA5HTF9SRURfSU5URUdFUgVHTF9SRw1HTF9SR19JTlRFR0VSDkdMX1JHQl9JTlRFR0VSEkdMX0xVTUlOQU5DRV9BTFBIQQxHTF9MVU1JTkFOQ0UPR0xfUkdCQV9JTlRFR0VSEkdMX0RFUFRIX0NPTVBPTkVOVBBHTF9ERVBUSF9TVEVOQ0lMEEdMX1NURU5DSUxfSU5ERVgLR0xfQkdSQV9FWFSMpwyMqQiMqwoQZ2xSZWFkblBpeGVsc0tIUgR0eXBlOBdHTF9VTlNJR05FRF9TSE9SVF81XzZfNRlHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80GUdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzEQR0xfVU5TSUdORURfQllURQhHTF9GTE9BVAZHTF9JTlQPR0xfVU5TSUdORURfSU5UHkdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVh9HTF9VTlNJR05FRF9JTlRfMTBGXzExRl8xMUZfUkVWG0dMX1VOU0lHTkVEX0lOVF81XzlfOV85X1JFVgdHTF9CWVRFEUdMX1VOU0lHTkVEX1NIT1JUCEdMX1NIT1JUDUdMX0hBTEZfRkxPQVQRR0xfSEFMRl9GTE9BVF9PRVMUR0xfVU5TSUdORURfSU5UXzI0XzghR0xfRkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWFUdMX0NPTVBSRVNTRURfUjExX0VBQxxHTF9DT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDF0dMX0NPTVBSRVNTRURfUkdCOF9FVEMyGEdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMitHTF9DT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyLEdMX0NPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyFkdMX0NPTVBSRVNTRURfUkcxMV9FQUMdR0xfQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUMcR0xfQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQyNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQxtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg4I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDUkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDYkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDgkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4HUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTAdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTAlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMiVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyEEdMX0VUQzFfUkdCOF9PRVOMrQSMrwaMsQiMswoQZ2xSZWFkblBpeGVsc0tIUgRkYXRhBAECAhVnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UCjLUMjLcIjLkKFWdsUmVuZGVyYnVmZmVyU3RvcmFnZQZ0YXJnZXQBD0dMX1JFTkRFUkJVRkZFUoy7DIy9CIy/ChVnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UOaW50ZXJuYWxmb3JtYXQlFEdMX0RFUFRIX0NPTVBPTkVOVDE2CUdMX1JHQjU2NQpHTF9SR0I1X0ExCEdMX1JHQkE0EUdMX1NURU5DSUxfSU5ERVg4E0dMX0RFUFRIMjRfU1RFTkNJTDgUR0xfREVQVEgzMkZfU1RFTkNJTDgUR0xfREVQVEhfQ09NUE9ORU5UMjQVR0xfREVQVEhfQ09NUE9ORU5UMzJGB0dMX1IxNkkIR0xfUjE2VUkHR0xfUjMySQhHTF9SMzJVSQVHTF9SOAZHTF9SOEkHR0xfUjhVSQhHTF9SRzE2SQlHTF9SRzE2VUkIR0xfUkczMkkJR0xfUkczMlVJBkdMX1JHOAdHTF9SRzhJCEdMX1JHOFVJC0dMX1JHQjEwX0EyDUdMX1JHQjEwX0EyVUkHR0xfUkdCOApHTF9SR0JBMTZJC0dMX1JHQkExNlVJCkdMX1JHQkEzMkkLR0xfUkdCQTMyVUkIR0xfUkdCQTgJR0xfUkdCQThJCkdMX1JHQkE4VUkPR0xfU1JHQjhfQUxQSEE4BkdMX1IxNgdHTF9SRzE2CUdMX1JHQkExNgIgZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUCjMEMjMMIjMUKIGdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlBnRhcmdldAEPR0xfUkVOREVSQlVGRkVSjMcMjMkIjMsKIGdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlDmludGVybmFsZm9ybWF0JRRHTF9ERVBUSF9DT01QT05FTlQxNglHTF9SR0I1NjUKR0xfUkdCNV9BMQhHTF9SR0JBNBFHTF9TVEVOQ0lMX0lOREVYOBNHTF9ERVBUSDI0X1NURU5DSUw4FEdMX0RFUFRIMzJGX1NURU5DSUw4FEdMX0RFUFRIX0NPTVBPTkVOVDI0FUdMX0RFUFRIX0NPTVBPTkVOVDMyRgdHTF9SMTZJCEdMX1IxNlVJB0dMX1IzMkkIR0xfUjMyVUkFR0xfUjgGR0xfUjhJB0dMX1I4VUkIR0xfUkcxNkkJR0xfUkcxNlVJCEdMX1JHMzJJCUdMX1JHMzJVSQZHTF9SRzgHR0xfUkc4SQhHTF9SRzhVSQtHTF9SR0IxMF9BMg1HTF9SR0IxMF9BMlVJB0dMX1JHQjgKR0xfUkdCQTE2SQtHTF9SR0JBMTZVSQpHTF9SR0JBMzJJC0dMX1JHQkEzMlVJCEdMX1JHQkE4CUdMX1JHQkE4SQpHTF9SR0JBOFVJD0dMX1NSR0I4X0FMUEhBOAZHTF9SMTYHR0xfUkcxNglHTF9SR0JBMTYCI2dsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlRVhUAozNDIzPCIzRCiNnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUVYVAZ0YXJnZXQBD0dMX1JFTkRFUkJVRkZFUozTDIzVCIzXCiNnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUVYVA5pbnRlcm5hbGZvcm1hdCUUR0xfREVQVEhfQ09NUE9ORU5UMTYJR0xfUkdCNTY1CkdMX1JHQjVfQTEIR0xfUkdCQTQRR0xfU1RFTkNJTF9JTkRFWDgTR0xfREVQVEgyNF9TVEVOQ0lMOBRHTF9ERVBUSDMyRl9TVEVOQ0lMOBRHTF9ERVBUSF9DT01QT05FTlQyNBVHTF9ERVBUSF9DT01QT05FTlQzMkYHR0xfUjE2SQhHTF9SMTZVSQdHTF9SMzJJCEdMX1IzMlVJBUdMX1I4BkdMX1I4SQdHTF9SOFVJCEdMX1JHMTZJCUdMX1JHMTZVSQhHTF9SRzMySQlHTF9SRzMyVUkGR0xfUkc4B0dMX1JHOEkIR0xfUkc4VUkLR0xfUkdCMTBfQTINR0xfUkdCMTBfQTJVSQdHTF9SR0I4CkdMX1JHQkExNkkLR0xfUkdCQTE2VUkKR0xfUkdCQTMySQtHTF9SR0JBMzJVSQhHTF9SR0JBOAlHTF9SR0JBOEkKR0xfUkdCQThVSQ9HTF9TUkdCOF9BTFBIQTgGR0xfUjE2B0dMX1JHMTYJR0xfUkdCQTE2AiJnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZU5WAozZDIzbCIzdCiJnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZU5WBnRhcmdldAEPR0xfUkVOREVSQlVGRkVSjN8MjOEIjOMKImdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlTlYOaW50ZXJuYWxmb3JtYXQlFEdMX0RFUFRIX0NPTVBPTkVOVDE2CUdMX1JHQjU2NQpHTF9SR0I1X0ExCEdMX1JHQkE0EUdMX1NURU5DSUxfSU5ERVg4E0dMX0RFUFRIMjRfU1RFTkNJTDgUR0xfREVQVEgzMkZfU1RFTkNJTDgUR0xfREVQVEhfQ09NUE9ORU5UMjQVR0xfREVQVEhfQ09NUE9ORU5UMzJGB0dMX1IxNkkIR0xfUjE2VUkHR0xfUjMySQhHTF9SMzJVSQVHTF9SOAZHTF9SOEkHR0xfUjhVSQhHTF9SRzE2SQlHTF9SRzE2VUkIR0xfUkczMkkJR0xfUkczMlVJBkdMX1JHOAdHTF9SRzhJCEdMX1JHOFVJC0dMX1JHQjEwX0EyDUdMX1JHQjEwX0EyVUkHR0xfUkdCOApHTF9SR0JBMTZJC0dMX1JHQkExNlVJCkdMX1JHQkEzMkkLR0xfUkdCQTMyVUkIR0xfUkdCQTgJR0xfUkdCQThJCkdMX1JHQkE4VUkPR0xfU1JHQjhfQUxQSEE4BkdMX1IxNgdHTF9SRzE2CUdMX1JHQkExNgIVZ2xTYW1wbGVyUGFyYW1ldGVySWl2AYzlDIznCIzpChVnbFNhbXBsZXJQYXJhbWV0ZXJJaXYFcG5hbWULF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhVHTF9URVhUVVJFX01BR19GSUxURVISR0xfVEVYVFVSRV9NSU5fTE9EEkdMX1RFWFRVUkVfTUFYX0xPRBFHTF9URVhUVVJFX1dSQVBfUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUh1HTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVAIYZ2xTYW1wbGVyUGFyYW1ldGVySWl2RVhUAYzrDIztCIzvChhnbFNhbXBsZXJQYXJhbWV0ZXJJaXZFWFQFcG5hbWULF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhVHTF9URVhUVVJFX01BR19GSUxURVISR0xfVEVYVFVSRV9NSU5fTE9EEkdMX1RFWFRVUkVfTUFYX0xPRBFHTF9URVhUVVJFX1dSQVBfUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUh1HTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVAIYZ2xTYW1wbGVyUGFyYW1ldGVySWl2T0VTAYzxDIzzCIz1ChhnbFNhbXBsZXJQYXJhbWV0ZXJJaXZPRVMFcG5hbWULF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhVHTF9URVhUVVJFX01BR19GSUxURVISR0xfVEVYVFVSRV9NSU5fTE9EEkdMX1RFWFRVUkVfTUFYX0xPRBFHTF9URVhUVVJFX1dSQVBfUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUh1HTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVAIWZ2xTYW1wbGVyUGFyYW1ldGVySXVpdgGM9wyM+QiM+woWZ2xTYW1wbGVyUGFyYW1ldGVySXVpdgVwbmFtZQsXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUVR0xfVEVYVFVSRV9NSU5fRklMVEVSFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhJHTF9URVhUVVJFX01JTl9MT0QSR0xfVEVYVFVSRV9NQVhfTE9EEUdMX1RFWFRVUkVfV1JBUF9SEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SHUdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUAhlnbFNhbXBsZXJQYXJhbWV0ZXJJdWl2RVhUAYz9DIz/CI0BChlnbFNhbXBsZXJQYXJhbWV0ZXJJdWl2RVhUBXBuYW1lCxdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRVHTF9URVhUVVJFX01JTl9GSUxURVIVR0xfVEVYVFVSRV9NQUdfRklMVEVSEkdMX1RFWFRVUkVfTUlOX0xPRBJHTF9URVhUVVJFX01BWF9MT0QRR0xfVEVYVFVSRV9XUkFQX1IRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1IdR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQCGWdsU2FtcGxlclBhcmFtZXRlckl1aXZPRVMBjQMMjQUIjQcKGWdsU2FtcGxlclBhcmFtZXRlckl1aXZPRVMFcG5hbWULF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhVHTF9URVhUVVJFX01BR19GSUxURVISR0xfVEVYVFVSRV9NSU5fTE9EEkdMX1RFWFRVUkVfTUFYX0xPRBFHTF9URVhUVVJFX1dSQVBfUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUh1HTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVAITZ2xTYW1wbGVyUGFyYW1ldGVyZgGNCQyNCwiNDQoTZ2xTYW1wbGVyUGFyYW1ldGVyZgVwbmFtZQsXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUVR0xfVEVYVFVSRV9NSU5fRklMVEVSFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhJHTF9URVhUVVJFX01JTl9MT0QSR0xfVEVYVFVSRV9NQVhfTE9EEUdMX1RFWFRVUkVfV1JBUF9SEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SHUdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUAhRnbFNhbXBsZXJQYXJhbWV0ZXJmdgGNDwyNEQiNEwoUZ2xTYW1wbGVyUGFyYW1ldGVyZnYFcG5hbWULF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhVHTF9URVhUVVJFX01BR19GSUxURVISR0xfVEVYVFVSRV9NSU5fTE9EEkdMX1RFWFRVUkVfTUFYX0xPRBFHTF9URVhUVVJFX1dSQVBfUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUh1HTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVAITZ2xTYW1wbGVyUGFyYW1ldGVyaQGNFQyNFwiNGQoTZ2xTYW1wbGVyUGFyYW1ldGVyaQVwbmFtZQsXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUVR0xfVEVYVFVSRV9NSU5fRklMVEVSFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhJHTF9URVhUVVJFX01JTl9MT0QSR0xfVEVYVFVSRV9NQVhfTE9EEUdMX1RFWFRVUkVfV1JBUF9SEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SHUdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUAhRnbFNhbXBsZXJQYXJhbWV0ZXJpdgGNGwyNHQiNHwoUZ2xTYW1wbGVyUGFyYW1ldGVyaXYFcG5hbWULF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhVHTF9URVhUVVJFX01BR19GSUxURVISR0xfVEVYVFVSRV9NSU5fTE9EEkdMX1RFWFRVUkVfTUFYX0xPRBFHTF9URVhUVVJFX1dSQVBfUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUh1HTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVAIOZ2xTaGFkZXJCaW5hcnkCjSEEjSMGjSUIjScKDmdsU2hhZGVyQmluYXJ5B3NoYWRlcnMEAQCNKQSNKwaNLQiNLwoOZ2xTaGFkZXJCaW5hcnkGYmluYXJ5BAEAAg1nbFN0ZW5jaWxGdW5jAY0xDI0zCI01Cg1nbFN0ZW5jaWxGdW5jBGZ1bmMICUdMX0FMV0FZUwhHTF9FUVVBTAlHTF9HRVFVQUwKR0xfR1JFQVRFUglHTF9MRVFVQUwHR0xfTEVTUwhHTF9ORVZFUgtHTF9OT1RFUVVBTAIVZ2xTdGVuY2lsRnVuY1NlcGFyYXRlAo03DI05CI07ChVnbFN0ZW5jaWxGdW5jU2VwYXJhdGUEZmFjZQMHR0xfQkFDSwhHTF9GUk9OVBFHTF9GUk9OVF9BTkRfQkFDS409DI0/CI1BChVnbFN0ZW5jaWxGdW5jU2VwYXJhdGUIZnVuY3Rpb24ICUdMX0FMV0FZUwhHTF9FUVVBTAlHTF9HRVFVQUwKR0xfR1JFQVRFUglHTF9MRVFVQUwHR0xfTEVTUwhHTF9ORVZFUgtHTF9OT1RFUVVBTAIVZ2xTdGVuY2lsTWFza1NlcGFyYXRlAY1DDI1FCI1HChVnbFN0ZW5jaWxNYXNrU2VwYXJhdGUEZmFjZQMHR0xfQkFDSwhHTF9GUk9OVBFHTF9GUk9OVF9BTkRfQkFDSwILZ2xTdGVuY2lsT3ADjUkMjUsIjU0KC2dsU3RlbmNpbE9wBGZhaWwIB0dMX0RFQ1IMR0xfREVDUl9XUkFQB0dMX0lOQ1IMR0xfSU5DUl9XUkFQCUdMX0lOVkVSVAdHTF9LRUVQCkdMX1JFUExBQ0UHR0xfWkVST41PDI1RCI1TCgtnbFN0ZW5jaWxPcAV6ZmFpbAgHR0xfREVDUgxHTF9ERUNSX1dSQVAHR0xfSU5DUgxHTF9JTkNSX1dSQVAJR0xfSU5WRVJUB0dMX0tFRVAKR0xfUkVQTEFDRQdHTF9aRVJPjVUMjVcIjVkKC2dsU3RlbmNpbE9wBXpwYXNzCAdHTF9ERUNSDEdMX0RFQ1JfV1JBUAdHTF9JTkNSDEdMX0lOQ1JfV1JBUAlHTF9JTlZFUlQHR0xfS0VFUApHTF9SRVBMQUNFB0dMX1pFUk8CE2dsU3RlbmNpbE9wU2VwYXJhdGUEjVsMjV0IjV8KE2dsU3RlbmNpbE9wU2VwYXJhdGUEZmFjZQMHR0xfQkFDSwhHTF9GUk9OVBFHTF9GUk9OVF9BTkRfQkFDS41hDI1jCI1lChNnbFN0ZW5jaWxPcFNlcGFyYXRlDHN0ZW5jaWxfZmFpbAgHR0xfREVDUgxHTF9ERUNSX1dSQVAHR0xfSU5DUgxHTF9JTkNSX1dSQVAJR0xfSU5WRVJUB0dMX0tFRVAKR0xfUkVQTEFDRQdHTF9aRVJPjWcMjWkIjWsKE2dsU3RlbmNpbE9wU2VwYXJhdGUXc3RlbmNpbF9wYXNzX2RlcHRoX2ZhaWwIB0dMX0RFQ1IMR0xfREVDUl9XUkFQB0dMX0lOQ1IMR0xfSU5DUl9XUkFQCUdMX0lOVkVSVAdHTF9LRUVQCkdMX1JFUExBQ0UHR0xfWkVST41tDI1vCI1xChNnbFN0ZW5jaWxPcFNlcGFyYXRlF3N0ZW5jaWxfcGFzc19kZXB0aF9wYXNzCAdHTF9ERUNSDEdMX0RFQ1JfV1JBUAdHTF9JTkNSDEdMX0lOQ1JfV1JBUAlHTF9JTlZFUlQHR0xfS0VFUApHTF9SRVBMQUNFB0dMX1pFUk8CC2dsVGV4QnVmZmVyAo1zDI11CI13CgtnbFRleEJ1ZmZlcgZ0YXJnZXQBEUdMX1RFWFRVUkVfQlVGRkVSjXkMjXsIjX0KC2dsVGV4QnVmZmVyDmludGVybmFsZm9ybWF0IQZHTF9SMTYHR0xfUjE2RgdHTF9SMTZJCEdMX1IxNlVJB0dMX1IzMkYHR0xfUjMySQhHTF9SMzJVSQVHTF9SOAZHTF9SOEkHR0xfUjhVSQdHTF9SRzE2CEdMX1JHMTZGCEdMX1JHMTZJCUdMX1JHMTZVSQhHTF9SRzMyRghHTF9SRzMySQlHTF9SRzMyVUkGR0xfUkc4B0dMX1JHOEkIR0xfUkc4VUkJR0xfUkdCMzJGCUdMX1JHQjMySQpHTF9SR0IzMlVJCUdMX1JHQkExNgpHTF9SR0JBMTZGCkdMX1JHQkExNkkLR0xfUkdCQTE2VUkKR0xfUkdCQTMyRgpHTF9SR0JBMzJJC0dMX1JHQkEzMlVJCEdMX1JHQkE4CUdMX1JHQkE4SQpHTF9SR0JBOFVJAg5nbFRleEJ1ZmZlckVYVAKNfwyNgQiNgwoOZ2xUZXhCdWZmZXJFWFQGdGFyZ2V0ARFHTF9URVhUVVJFX0JVRkZFUo2FDI2HCI2JCg5nbFRleEJ1ZmZlckVYVA5pbnRlcm5hbGZvcm1hdCEGR0xfUjE2B0dMX1IxNkYHR0xfUjE2SQhHTF9SMTZVSQdHTF9SMzJGB0dMX1IzMkkIR0xfUjMyVUkFR0xfUjgGR0xfUjhJB0dMX1I4VUkHR0xfUkcxNghHTF9SRzE2RghHTF9SRzE2SQlHTF9SRzE2VUkIR0xfUkczMkYIR0xfUkczMkkJR0xfUkczMlVJBkdMX1JHOAdHTF9SRzhJCEdMX1JHOFVJCUdMX1JHQjMyRglHTF9SR0IzMkkKR0xfUkdCMzJVSQlHTF9SR0JBMTYKR0xfUkdCQTE2RgpHTF9SR0JBMTZJC0dMX1JHQkExNlVJCkdMX1JHQkEzMkYKR0xfUkdCQTMySQtHTF9SR0JBMzJVSQhHTF9SR0JBOAlHTF9SR0JBOEkKR0xfUkdCQThVSQIOZ2xUZXhCdWZmZXJPRVMCjYsMjY0IjY8KDmdsVGV4QnVmZmVyT0VTBnRhcmdldAERR0xfVEVYVFVSRV9CVUZGRVKNkQyNkwiNlQoOZ2xUZXhCdWZmZXJPRVMOaW50ZXJuYWxmb3JtYXQhBkdMX1IxNgdHTF9SMTZGB0dMX1IxNkkIR0xfUjE2VUkHR0xfUjMyRgdHTF9SMzJJCEdMX1IzMlVJBUdMX1I4BkdMX1I4SQdHTF9SOFVJB0dMX1JHMTYIR0xfUkcxNkYIR0xfUkcxNkkJR0xfUkcxNlVJCEdMX1JHMzJGCEdMX1JHMzJJCUdMX1JHMzJVSQZHTF9SRzgHR0xfUkc4SQhHTF9SRzhVSQlHTF9SR0IzMkYJR0xfUkdCMzJJCkdMX1JHQjMyVUkJR0xfUkdCQTE2CkdMX1JHQkExNkYKR0xfUkdCQTE2SQtHTF9SR0JBMTZVSQpHTF9SR0JBMzJGCkdMX1JHQkEzMkkLR0xfUkdCQTMyVUkIR0xfUkdCQTgJR0xfUkdCQThJCkdMX1JHQkE4VUkCEGdsVGV4QnVmZmVyUmFuZ2UCjZcMjZkIjZsKEGdsVGV4QnVmZmVyUmFuZ2UGdGFyZ2V0ARFHTF9URVhUVVJFX0JVRkZFUo2dDI2fCI2hChBnbFRleEJ1ZmZlclJhbmdlDmludGVybmFsZm9ybWF0IQZHTF9SMTYHR0xfUjE2RgdHTF9SMTZJCEdMX1IxNlVJB0dMX1IzMkYHR0xfUjMySQhHTF9SMzJVSQVHTF9SOAZHTF9SOEkHR0xfUjhVSQdHTF9SRzE2CEdMX1JHMTZGCEdMX1JHMTZJCUdMX1JHMTZVSQhHTF9SRzMyRghHTF9SRzMySQlHTF9SRzMyVUkGR0xfUkc4B0dMX1JHOEkIR0xfUkc4VUkJR0xfUkdCMzJGCUdMX1JHQjMySQpHTF9SR0IzMlVJCUdMX1JHQkExNgpHTF9SR0JBMTZGCkdMX1JHQkExNkkLR0xfUkdCQTE2VUkKR0xfUkdCQTMyRgpHTF9SR0JBMzJJC0dMX1JHQkEzMlVJCEdMX1JHQkE4CUdMX1JHQkE4SQpHTF9SR0JBOFVJAhNnbFRleEJ1ZmZlclJhbmdlRVhUAo2jDI2lCI2nChNnbFRleEJ1ZmZlclJhbmdlRVhUBnRhcmdldAERR0xfVEVYVFVSRV9CVUZGRVKNqQyNqwiNrQoTZ2xUZXhCdWZmZXJSYW5nZUVYVA5pbnRlcm5hbGZvcm1hdCEGR0xfUjE2B0dMX1IxNkYHR0xfUjE2SQhHTF9SMTZVSQdHTF9SMzJGB0dMX1IzMkkIR0xfUjMyVUkFR0xfUjgGR0xfUjhJB0dMX1I4VUkHR0xfUkcxNghHTF9SRzE2RghHTF9SRzE2SQlHTF9SRzE2VUkIR0xfUkczMkYIR0xfUkczMkkJR0xfUkczMlVJBkdMX1JHOAdHTF9SRzhJCEdMX1JHOFVJCUdMX1JHQjMyRglHTF9SR0IzMkkKR0xfUkdCMzJVSQlHTF9SR0JBMTYKR0xfUkdCQTE2RgpHTF9SR0JBMTZJC0dMX1JHQkExNlVJCkdMX1JHQkEzMkYKR0xfUkdCQTMySQtHTF9SR0JBMzJVSQhHTF9SR0JBOAlHTF9SR0JBOEkKR0xfUkdCQThVSQITZ2xUZXhCdWZmZXJSYW5nZU9FUwKNrwyNsQiNswoTZ2xUZXhCdWZmZXJSYW5nZU9FUwZ0YXJnZXQBEUdMX1RFWFRVUkVfQlVGRkVSjbUMjbcIjbkKE2dsVGV4QnVmZmVyUmFuZ2VPRVMOaW50ZXJuYWxmb3JtYXQhBkdMX1IxNgdHTF9SMTZGB0dMX1IxNkkIR0xfUjE2VUkHR0xfUjMyRgdHTF9SMzJJCEdMX1IzMlVJBUdMX1I4BkdMX1I4SQdHTF9SOFVJB0dMX1JHMTYIR0xfUkcxNkYIR0xfUkcxNkkJR0xfUkcxNlVJCEdMX1JHMzJGCEdMX1JHMzJJCUdMX1JHMzJVSQZHTF9SRzgHR0xfUkc4SQhHTF9SRzhVSQlHTF9SR0IzMkYJR0xfUkdCMzJJCkdMX1JHQjMyVUkJR0xfUkdCQTE2CkdMX1JHQkExNkYKR0xfUkdCQTE2SQtHTF9SR0JBMTZVSQpHTF9SR0JBMzJGCkdMX1JHQkEzMkkLR0xfUkdCQTMyVUkIR0xfUkdCQTgJR0xfUkdCQThJCkdMX1JHQkE4VUkCDGdsVGV4SW1hZ2UyRAWNuwyNvQiNvwoMZ2xUZXhJbWFnZTJEBnRhcmdldAcNR0xfVEVYVFVSRV8yRB5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1geR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWh5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1geR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWo3BDI3DCI3FCgxnbFRleEltYWdlMkQOaW50ZXJuYWxmb3JtYXRBBkdMX1JHQgdHTF9SR0JBEkdMX0xVTUlOQU5DRV9BTFBIQQxHTF9MVU1JTkFOQ0UIR0xfQUxQSEEFR0xfUjgLR0xfUjhfU05PUk0HR0xfUjE2RgdHTF9SMzJGB0dMX1I4VUkGR0xfUjhJCEdMX1IxNlVJB0dMX1IxNkkIR0xfUjMyVUkHR0xfUjMySQZHTF9SRzgMR0xfUkc4X1NOT1JNCEdMX1JHMTZGCEdMX1JHMzJGCEdMX1JHOFVJB0dMX1JHOEkJR0xfUkcxNlVJCEdMX1JHMTZJCUdMX1JHMzJVSQhHTF9SRzMySQdHTF9SR0I4CEdMX1NSR0I4CUdMX1JHQjU2NQ1HTF9SR0I4X1NOT1JNEUdMX1IxMUZfRzExRl9CMTBGCkdMX1JHQjlfRTUJR0xfUkdCMTZGCUdMX1JHQjMyRglHTF9SR0I4VUkIR0xfUkdCOEkKR0xfUkdCMTZVSQlHTF9SR0IxNkkKR0xfUkdCMzJVSQlHTF9SR0IzMkkIR0xfUkdCQTgPR0xfU1JHQjhfQUxQSEE4DkdMX1JHQkE4X1NOT1JNCkdMX1JHQjVfQTEIR0xfUkdCQTQLR0xfUkdCMTBfQTIKR0xfUkdCQTE2RgpHTF9SR0JBMzJGCkdMX1JHQkE4VUkJR0xfUkdCQThJDUdMX1JHQjEwX0EyVUkLR0xfUkdCQTE2VUkKR0xfUkdCQTE2SQpHTF9SR0JBMzJJC0dMX1JHQkEzMlVJFEdMX0RFUFRIX0NPTVBPTkVOVDE2FEdMX0RFUFRIX0NPTVBPTkVOVDI0FUdMX0RFUFRIX0NPTVBPTkVOVDMyRhNHTF9ERVBUSDI0X1NURU5DSUw4FEdMX0RFUFRIMzJGX1NURU5DSUw4EUdMX1NURU5DSUxfSU5ERVg4EkdMX0RFUFRIX0NPTVBPTkVOVBBHTF9ERVBUSF9TVEVOQ0lMCkdMX1JFRF9FWFQJR0xfUkdfRVhUC0dMX0JHUkFfRVhUjccMjckIjcsKDGdsVGV4SW1hZ2UyRAZmb3JtYXQPCEdMX0FMUEhBDEdMX0xVTUlOQU5DRRJHTF9MVU1JTkFOQ0VfQUxQSEEGR0xfUkdCB0dMX1JHQkESR0xfREVQVEhfQ09NUE9ORU5UEEdMX0RFUFRIX1NURU5DSUwGR0xfUkVEDkdMX1JFRF9JTlRFR0VSBUdMX1JHD0dMX1JHQkFfSU5URUdFUg5HTF9SR0JfSU5URUdFUg1HTF9SR19JTlRFR0VSEEdMX1NURU5DSUxfSU5ERVgLR0xfQkdSQV9FWFSNzQyNzwiN0QoMZ2xUZXhJbWFnZTJEBHR5cGU4EEdMX1VOU0lHTkVEX0JZVEUZR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNBlHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xF0dMX1VOU0lHTkVEX1NIT1JUXzVfNl81EUdMX0hBTEZfRkxPQVRfT0VTB0dMX0JZVEUIR0xfRkxPQVQhR0xfRkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWDUdMX0hBTEZfRkxPQVQGR0xfSU5UCEdMX1NIT1JUD0dMX1VOU0lHTkVEX0lOVB9HTF9VTlNJR05FRF9JTlRfMTBGXzExRl8xMUZfUkVWFEdMX1VOU0lHTkVEX0lOVF8yNF84HkdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVhtHTF9VTlNJR05FRF9JTlRfNV85XzlfOV9SRVYRR0xfVU5TSUdORURfU0hPUlQVR0xfQ09NUFJFU1NFRF9SMTFfRUFDHEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMXR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIYR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyK0dMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIsR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIWR0xfQ09NUFJFU1NFRF9SRzExX0VBQx1HTF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQxxHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDG0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzR4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDgjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDgcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NSRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDUcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NiRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDYcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OCRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDgdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTAlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTIQR0xfRVRDMV9SR0I4X09FU43TBI3VBo3XCI3ZCgxnbFRleEltYWdlMkQEZGF0YQQBAAIMZ2xUZXhJbWFnZTNEBY3bDI3dCI3fCgxnbFRleEltYWdlM0QGdGFyZ2V0AxNHTF9URVhUVVJFXzJEX0FSUkFZDUdMX1RFWFRVUkVfM0QZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWY3hDI3jCI3lCgxnbFRleEltYWdlM0QOaW50ZXJuYWxmb3JtYXRBBkdMX1JHQgdHTF9SR0JBEkdMX0xVTUlOQU5DRV9BTFBIQQxHTF9MVU1JTkFOQ0UIR0xfQUxQSEEFR0xfUjgLR0xfUjhfU05PUk0HR0xfUjE2RgdHTF9SMzJGB0dMX1I4VUkGR0xfUjhJCEdMX1IxNlVJB0dMX1IxNkkIR0xfUjMyVUkHR0xfUjMySQZHTF9SRzgMR0xfUkc4X1NOT1JNCEdMX1JHMTZGCEdMX1JHMzJGCEdMX1JHOFVJB0dMX1JHOEkJR0xfUkcxNlVJCEdMX1JHMTZJCUdMX1JHMzJVSQhHTF9SRzMySQdHTF9SR0I4CEdMX1NSR0I4CUdMX1JHQjU2NQ1HTF9SR0I4X1NOT1JNEUdMX1IxMUZfRzExRl9CMTBGCkdMX1JHQjlfRTUJR0xfUkdCMTZGCUdMX1JHQjMyRglHTF9SR0I4VUkIR0xfUkdCOEkKR0xfUkdCMTZVSQlHTF9SR0IxNkkKR0xfUkdCMzJVSQlHTF9SR0IzMkkIR0xfUkdCQTgPR0xfU1JHQjhfQUxQSEE4DkdMX1JHQkE4X1NOT1JNCkdMX1JHQjVfQTEIR0xfUkdCQTQLR0xfUkdCMTBfQTIKR0xfUkdCQTE2RgpHTF9SR0JBMzJGCkdMX1JHQkE4VUkJR0xfUkdCQThJDUdMX1JHQjEwX0EyVUkLR0xfUkdCQTE2VUkKR0xfUkdCQTE2SQpHTF9SR0JBMzJJC0dMX1JHQkEzMlVJFEdMX0RFUFRIX0NPTVBPTkVOVDE2FEdMX0RFUFRIX0NPTVBPTkVOVDI0FUdMX0RFUFRIX0NPTVBPTkVOVDMyRhNHTF9ERVBUSDI0X1NURU5DSUw4FEdMX0RFUFRIMzJGX1NURU5DSUw4EUdMX1NURU5DSUxfSU5ERVg4EkdMX0RFUFRIX0NPTVBPTkVOVBBHTF9ERVBUSF9TVEVOQ0lMCkdMX1JFRF9FWFQJR0xfUkdfRVhUC0dMX0JHUkFfRVhUjecMjekIjesKDGdsVGV4SW1hZ2UzRAZmb3JtYXQPCEdMX0FMUEhBEkdMX0RFUFRIX0NPTVBPTkVOVBBHTF9ERVBUSF9TVEVOQ0lMDEdMX0xVTUlOQU5DRRJHTF9MVU1JTkFOQ0VfQUxQSEEGR0xfUkVEDkdMX1JFRF9JTlRFR0VSBUdMX1JHBkdMX1JHQgdHTF9SR0JBD0dMX1JHQkFfSU5URUdFUg5HTF9SR0JfSU5URUdFUg1HTF9SR19JTlRFR0VSEEdMX1NURU5DSUxfSU5ERVgLR0xfQkdSQV9FWFSN7QyN7wiN8QoMZ2xUZXhJbWFnZTNEBHR5cGU4EUdMX0hBTEZfRkxPQVRfT0VTB0dMX0JZVEUIR0xfRkxPQVQhR0xfRkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWDUdMX0hBTEZfRkxPQVQGR0xfSU5UCEdMX1NIT1JUEEdMX1VOU0lHTkVEX0JZVEUPR0xfVU5TSUdORURfSU5UH0dMX1VOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVYUR0xfVU5TSUdORURfSU5UXzI0XzgeR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWG0dMX1VOU0lHTkVEX0lOVF81XzlfOV85X1JFVhFHTF9VTlNJR05FRF9TSE9SVBlHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80GUdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzEXR0xfVU5TSUdORURfU0hPUlRfNV82XzUVR0xfQ09NUFJFU1NFRF9SMTFfRUFDHEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMXR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIYR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyK0dMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIsR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIWR0xfQ09NUFJFU1NFRF9SRzExX0VBQx1HTF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQxxHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDG0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzR4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDgjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDgcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NSRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDUcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NiRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDYcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OCRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDgdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTAlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTIQR0xfRVRDMV9SR0I4X09FU43zBI31Bo33CI35CgxnbFRleEltYWdlM0QEZGF0YQQBAAIPZ2xUZXhJbWFnZTNET0VTBY37DI39CI3/Cg9nbFRleEltYWdlM0RPRVMGdGFyZ2V0AxNHTF9URVhUVVJFXzJEX0FSUkFZDUdMX1RFWFRVUkVfM0QZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWY4BDI4DCI4FCg9nbFRleEltYWdlM0RPRVMOaW50ZXJuYWxmb3JtYXRBBkdMX1JHQgdHTF9SR0JBEkdMX0xVTUlOQU5DRV9BTFBIQQxHTF9MVU1JTkFOQ0UIR0xfQUxQSEEFR0xfUjgLR0xfUjhfU05PUk0HR0xfUjE2RgdHTF9SMzJGB0dMX1I4VUkGR0xfUjhJCEdMX1IxNlVJB0dMX1IxNkkIR0xfUjMyVUkHR0xfUjMySQZHTF9SRzgMR0xfUkc4X1NOT1JNCEdMX1JHMTZGCEdMX1JHMzJGCEdMX1JHOFVJB0dMX1JHOEkJR0xfUkcxNlVJCEdMX1JHMTZJCUdMX1JHMzJVSQhHTF9SRzMySQdHTF9SR0I4CEdMX1NSR0I4CUdMX1JHQjU2NQ1HTF9SR0I4X1NOT1JNEUdMX1IxMUZfRzExRl9CMTBGCkdMX1JHQjlfRTUJR0xfUkdCMTZGCUdMX1JHQjMyRglHTF9SR0I4VUkIR0xfUkdCOEkKR0xfUkdCMTZVSQlHTF9SR0IxNkkKR0xfUkdCMzJVSQlHTF9SR0IzMkkIR0xfUkdCQTgPR0xfU1JHQjhfQUxQSEE4DkdMX1JHQkE4X1NOT1JNCkdMX1JHQjVfQTEIR0xfUkdCQTQLR0xfUkdCMTBfQTIKR0xfUkdCQTE2RgpHTF9SR0JBMzJGCkdMX1JHQkE4VUkJR0xfUkdCQThJDUdMX1JHQjEwX0EyVUkLR0xfUkdCQTE2VUkKR0xfUkdCQTE2SQpHTF9SR0JBMzJJC0dMX1JHQkEzMlVJFEdMX0RFUFRIX0NPTVBPTkVOVDE2FEdMX0RFUFRIX0NPTVBPTkVOVDI0FUdMX0RFUFRIX0NPTVBPTkVOVDMyRhNHTF9ERVBUSDI0X1NURU5DSUw4FEdMX0RFUFRIMzJGX1NURU5DSUw4EUdMX1NURU5DSUxfSU5ERVg4EkdMX0RFUFRIX0NPTVBPTkVOVBBHTF9ERVBUSF9TVEVOQ0lMCkdMX1JFRF9FWFQJR0xfUkdfRVhUC0dMX0JHUkFfRVhUjgcMjgkIjgsKD2dsVGV4SW1hZ2UzRE9FUwZmb3JtYXQPCEdMX0FMUEhBEkdMX0RFUFRIX0NPTVBPTkVOVBBHTF9ERVBUSF9TVEVOQ0lMDEdMX0xVTUlOQU5DRRJHTF9MVU1JTkFOQ0VfQUxQSEEGR0xfUkVEDkdMX1JFRF9JTlRFR0VSBUdMX1JHBkdMX1JHQgdHTF9SR0JBD0dMX1JHQkFfSU5URUdFUg5HTF9SR0JfSU5URUdFUg1HTF9SR19JTlRFR0VSEEdMX1NURU5DSUxfSU5ERVgLR0xfQkdSQV9FWFSODQyODwiOEQoPZ2xUZXhJbWFnZTNET0VTBHR5cGU4EUdMX0hBTEZfRkxPQVRfT0VTB0dMX0JZVEUIR0xfRkxPQVQhR0xfRkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWDUdMX0hBTEZfRkxPQVQGR0xfSU5UCEdMX1NIT1JUEEdMX1VOU0lHTkVEX0JZVEUPR0xfVU5TSUdORURfSU5UH0dMX1VOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVYUR0xfVU5TSUdORURfSU5UXzI0XzgeR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWG0dMX1VOU0lHTkVEX0lOVF81XzlfOV85X1JFVhFHTF9VTlNJR05FRF9TSE9SVBlHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80GUdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzEXR0xfVU5TSUdORURfU0hPUlRfNV82XzUVR0xfQ09NUFJFU1NFRF9SMTFfRUFDHEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMXR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIYR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyK0dMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIsR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIWR0xfQ09NUFJFU1NFRF9SRzExX0VBQx1HTF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQxxHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDG0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzR4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDgjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDgcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NSRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDUcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NiRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDYcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OCRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDgdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTAlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTIQR0xfRVRDMV9SR0I4X09FU44TBI4VBo4XCI4ZCg9nbFRleEltYWdlM0RPRVMGcGl4ZWxzBAEAAhFnbFRleFBhcmFtZXRlcklpdgOOGwyOHQiOHwoRZ2xUZXhQYXJhbWV0ZXJJaXYGdGFyZ2V0CRFHTF9URVhUVVJFX0JVRkZFUg1HTF9URVhUVVJFXzJEF0dMX1RFWFRVUkVfRVhURVJOQUxfT0VTE0dMX1RFWFRVUkVfMkRfQVJSQVkZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZDUdMX1RFWFRVUkVfM0QTR0xfVEVYVFVSRV9DVUJFX01BUBlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZjiEMjiMIjiUKEWdsVGV4UGFyYW1ldGVySWl2BXBuYW1lExVHTF9URVhUVVJFX01BR19GSUxURVIVR0xfVEVYVFVSRV9NSU5fRklMVEVSEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UFUdMX1RFWFRVUkVfQkFTRV9MRVZFTBdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRRHTF9URVhUVVJFX01BWF9MRVZFTBJHTF9URVhUVVJFX01BWF9MT0QSR0xfVEVYVFVSRV9NSU5fTE9EFEdMX1RFWFRVUkVfU1dJWlpMRV9BFEdMX1RFWFRVUkVfU1dJWlpMRV9CFEdMX1RFWFRVUkVfU1dJWlpMRV9HFEdMX1RFWFRVUkVfU1dJWlpMRV9SEUdMX1RFWFRVUkVfV1JBUF9SHUdMX0RFUFRIX1NURU5DSUxfVEVYVFVSRV9NT0RFF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SHUdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUGkdMX1RFWFRVUkVfU1JHQl9ERUNPREVfRVhUjicMjikGjisGji0Iji8KEWdsVGV4UGFyYW1ldGVySWl2BnBhcmFtcwQCEApHTF9ORUFSRVNUCUdMX0xJTkVBUhlHTF9ORUFSRVNUX01JUE1BUF9ORUFSRVNUGEdMX0xJTkVBUl9NSVBNQVBfTkVBUkVTVBhHTF9ORUFSRVNUX01JUE1BUF9MSU5FQVIXR0xfTElORUFSX01JUE1BUF9MSU5FQVIQR0xfQ0xBTVBfVE9fRURHRQlHTF9SRVBFQVQSR0xfTUlSUk9SRURfUkVQRUFUEkdMX0NMQU1QX1RPX0JPUkRFUgZHTF9SRUQIR0xfR1JFRU4HR0xfQkxVRQhHTF9BTFBIQQdHTF9aRVJPBkdMX09ORQIUZ2xUZXhQYXJhbWV0ZXJJaXZFWFQDjjEMjjMIjjUKFGdsVGV4UGFyYW1ldGVySWl2RVhUBnRhcmdldAkRR0xfVEVYVFVSRV9CVUZGRVINR0xfVEVYVFVSRV8yRBdHTF9URVhUVVJFX0VYVEVSTkFMX09FUxNHTF9URVhUVVJFXzJEX0FSUkFZGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWQ1HTF9URVhUVVJFXzNEE0dMX1RFWFRVUkVfQ1VCRV9NQVAZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWY43DI45CI47ChRnbFRleFBhcmFtZXRlcklpdkVYVAVwbmFtZRMVR0xfVEVYVFVSRV9NQUdfRklMVEVSFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBVHTF9URVhUVVJFX0JBU0VfTEVWRUwXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUUR0xfVEVYVFVSRV9NQVhfTEVWRUwSR0xfVEVYVFVSRV9NQVhfTE9EEkdMX1RFWFRVUkVfTUlOX0xPRBRHTF9URVhUVVJFX1NXSVpaTEVfQRRHTF9URVhUVVJFX1NXSVpaTEVfQhRHTF9URVhUVVJFX1NXSVpaTEVfRxRHTF9URVhUVVJFX1NXSVpaTEVfUhFHTF9URVhUVVJFX1dSQVBfUh1HTF9ERVBUSF9TVEVOQ0lMX1RFWFRVUkVfTU9ERRdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUh1HTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVBpHTF9URVhUVVJFX1NSR0JfREVDT0RFX0VYVI49DI4/Bo5BBo5DCI5FChRnbFRleFBhcmFtZXRlcklpdkVYVAZwYXJhbXMEAhAKR0xfTkVBUkVTVAlHTF9MSU5FQVIZR0xfTkVBUkVTVF9NSVBNQVBfTkVBUkVTVBhHTF9MSU5FQVJfTUlQTUFQX05FQVJFU1QYR0xfTkVBUkVTVF9NSVBNQVBfTElORUFSF0dMX0xJTkVBUl9NSVBNQVBfTElORUFSEEdMX0NMQU1QX1RPX0VER0UJR0xfUkVQRUFUEkdMX01JUlJPUkVEX1JFUEVBVBJHTF9DTEFNUF9UT19CT1JERVIGR0xfUkVECEdMX0dSRUVOB0dMX0JMVUUIR0xfQUxQSEEHR0xfWkVSTwZHTF9PTkUCFGdsVGV4UGFyYW1ldGVySWl2T0VTA45HDI5JCI5LChRnbFRleFBhcmFtZXRlcklpdk9FUwZ0YXJnZXQJEUdMX1RFWFRVUkVfQlVGRkVSDUdMX1RFWFRVUkVfMkQXR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMTR0xfVEVYVFVSRV8yRF9BUlJBWRlHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFH0dMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVkNR0xfVEVYVFVSRV8zRBNHTF9URVhUVVJFX0NVQkVfTUFQGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVmOTQyOTwiOUQoUZ2xUZXhQYXJhbWV0ZXJJaXZPRVMFcG5hbWUTFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhVHTF9URVhUVVJFX01JTl9GSUxURVIRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QVR0xfVEVYVFVSRV9CQVNFX0xFVkVMF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFFEdMX1RFWFRVUkVfTUFYX0xFVkVMEkdMX1RFWFRVUkVfTUFYX0xPRBJHTF9URVhUVVJFX01JTl9MT0QUR0xfVEVYVFVSRV9TV0laWkxFX0EUR0xfVEVYVFVSRV9TV0laWkxFX0IUR0xfVEVYVFVSRV9TV0laWkxFX0cUR0xfVEVYVFVSRV9TV0laWkxFX1IRR0xfVEVYVFVSRV9XUkFQX1IdR0xfREVQVEhfU1RFTkNJTF9URVhUVVJFX01PREUXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1IdR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQaR0xfVEVYVFVSRV9TUkdCX0RFQ09ERV9FWFSOUwyOVQaOVwaOWQiOWwoUZ2xUZXhQYXJhbWV0ZXJJaXZPRVMGcGFyYW1zBAIQCkdMX05FQVJFU1QJR0xfTElORUFSGUdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1QYR0xfTElORUFSX01JUE1BUF9ORUFSRVNUGEdMX05FQVJFU1RfTUlQTUFQX0xJTkVBUhdHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUhBHTF9DTEFNUF9UT19FREdFCUdMX1JFUEVBVBJHTF9NSVJST1JFRF9SRVBFQVQSR0xfQ0xBTVBfVE9fQk9SREVSBkdMX1JFRAhHTF9HUkVFTgdHTF9CTFVFCEdMX0FMUEhBB0dMX1pFUk8GR0xfT05FAhJnbFRleFBhcmFtZXRlckl1aXYDjl0Mjl8IjmEKEmdsVGV4UGFyYW1ldGVySXVpdgZ0YXJnZXQJEUdMX1RFWFRVUkVfQlVGRkVSDUdMX1RFWFRVUkVfMkQXR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMTR0xfVEVYVFVSRV8yRF9BUlJBWRlHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFH0dMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVkNR0xfVEVYVFVSRV8zRBNHTF9URVhUVVJFX0NVQkVfTUFQGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVmOYwyOZQiOZwoSZ2xUZXhQYXJhbWV0ZXJJdWl2BXBuYW1lExVHTF9URVhUVVJFX01BR19GSUxURVIVR0xfVEVYVFVSRV9NSU5fRklMVEVSEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UFUdMX1RFWFRVUkVfQkFTRV9MRVZFTBdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRRHTF9URVhUVVJFX01BWF9MRVZFTBJHTF9URVhUVVJFX01BWF9MT0QSR0xfVEVYVFVSRV9NSU5fTE9EFEdMX1RFWFRVUkVfU1dJWlpMRV9BFEdMX1RFWFRVUkVfU1dJWlpMRV9CFEdMX1RFWFRVUkVfU1dJWlpMRV9HFEdMX1RFWFRVUkVfU1dJWlpMRV9SEUdMX1RFWFRVUkVfV1JBUF9SHUdMX0RFUFRIX1NURU5DSUxfVEVYVFVSRV9NT0RFF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SHUdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUGkdMX1RFWFRVUkVfU1JHQl9ERUNPREVfRVhUjmkMjmsGjm0Gjm8IjnEKEmdsVGV4UGFyYW1ldGVySXVpdgZwYXJhbXMEAhAKR0xfTkVBUkVTVAlHTF9MSU5FQVIZR0xfTkVBUkVTVF9NSVBNQVBfTkVBUkVTVBhHTF9MSU5FQVJfTUlQTUFQX05FQVJFU1QYR0xfTkVBUkVTVF9NSVBNQVBfTElORUFSF0dMX0xJTkVBUl9NSVBNQVBfTElORUFSEEdMX0NMQU1QX1RPX0VER0UJR0xfUkVQRUFUEkdMX01JUlJPUkVEX1JFUEVBVBJHTF9DTEFNUF9UT19CT1JERVIGR0xfUkVECEdMX0dSRUVOB0dMX0JMVUUIR0xfQUxQSEEHR0xfWkVSTwZHTF9PTkUCFWdsVGV4UGFyYW1ldGVySXVpdkVYVAOOcwyOdQiOdwoVZ2xUZXhQYXJhbWV0ZXJJdWl2RVhUBnRhcmdldAkRR0xfVEVYVFVSRV9CVUZGRVINR0xfVEVYVFVSRV8yRBdHTF9URVhUVVJFX0VYVEVSTkFMX09FUxNHTF9URVhUVVJFXzJEX0FSUkFZGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWQ1HTF9URVhUVVJFXzNEE0dMX1RFWFRVUkVfQ1VCRV9NQVAZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWY55DI57CI59ChVnbFRleFBhcmFtZXRlckl1aXZFWFQFcG5hbWUTFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhVHTF9URVhUVVJFX01JTl9GSUxURVIRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QVR0xfVEVYVFVSRV9CQVNFX0xFVkVMF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFFEdMX1RFWFRVUkVfTUFYX0xFVkVMEkdMX1RFWFRVUkVfTUFYX0xPRBJHTF9URVhUVVJFX01JTl9MT0QUR0xfVEVYVFVSRV9TV0laWkxFX0EUR0xfVEVYVFVSRV9TV0laWkxFX0IUR0xfVEVYVFVSRV9TV0laWkxFX0cUR0xfVEVYVFVSRV9TV0laWkxFX1IRR0xfVEVYVFVSRV9XUkFQX1IdR0xfREVQVEhfU1RFTkNJTF9URVhUVVJFX01PREUXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1IdR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQaR0xfVEVYVFVSRV9TUkdCX0RFQ09ERV9FWFSOfwyOgQaOgwaOhQiOhwoVZ2xUZXhQYXJhbWV0ZXJJdWl2RVhUBnBhcmFtcwQCEApHTF9ORUFSRVNUCUdMX0xJTkVBUhlHTF9ORUFSRVNUX01JUE1BUF9ORUFSRVNUGEdMX0xJTkVBUl9NSVBNQVBfTkVBUkVTVBhHTF9ORUFSRVNUX01JUE1BUF9MSU5FQVIXR0xfTElORUFSX01JUE1BUF9MSU5FQVIQR0xfQ0xBTVBfVE9fRURHRQlHTF9SRVBFQVQSR0xfTUlSUk9SRURfUkVQRUFUEkdMX0NMQU1QX1RPX0JPUkRFUgZHTF9SRUQIR0xfR1JFRU4HR0xfQkxVRQhHTF9BTFBIQQdHTF9aRVJPBkdMX09ORQIVZ2xUZXhQYXJhbWV0ZXJJdWl2T0VTA46JDI6LCI6NChVnbFRleFBhcmFtZXRlckl1aXZPRVMGdGFyZ2V0CRFHTF9URVhUVVJFX0JVRkZFUg1HTF9URVhUVVJFXzJEF0dMX1RFWFRVUkVfRVhURVJOQUxfT0VTE0dMX1RFWFRVUkVfMkRfQVJSQVkZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZDUdMX1RFWFRVUkVfM0QTR0xfVEVYVFVSRV9DVUJFX01BUBlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZjo8MjpEIjpMKFWdsVGV4UGFyYW1ldGVySXVpdk9FUwVwbmFtZRMVR0xfVEVYVFVSRV9NQUdfRklMVEVSFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBVHTF9URVhUVVJFX0JBU0VfTEVWRUwXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUUR0xfVEVYVFVSRV9NQVhfTEVWRUwSR0xfVEVYVFVSRV9NQVhfTE9EEkdMX1RFWFRVUkVfTUlOX0xPRBRHTF9URVhUVVJFX1NXSVpaTEVfQRRHTF9URVhUVVJFX1NXSVpaTEVfQhRHTF9URVhUVVJFX1NXSVpaTEVfRxRHTF9URVhUVVJFX1NXSVpaTEVfUhFHTF9URVhUVVJFX1dSQVBfUh1HTF9ERVBUSF9TVEVOQ0lMX1RFWFRVUkVfTU9ERRdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUh1HTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVBpHTF9URVhUVVJFX1NSR0JfREVDT0RFX0VYVI6VDI6XBo6ZBo6bCI6dChVnbFRleFBhcmFtZXRlckl1aXZPRVMGcGFyYW1zBAIQCkdMX05FQVJFU1QJR0xfTElORUFSGUdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1QYR0xfTElORUFSX01JUE1BUF9ORUFSRVNUGEdMX05FQVJFU1RfTUlQTUFQX0xJTkVBUhdHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUhBHTF9DTEFNUF9UT19FREdFCUdMX1JFUEVBVBJHTF9NSVJST1JFRF9SRVBFQVQSR0xfQ0xBTVBfVE9fQk9SREVSBkdMX1JFRAhHTF9HUkVFTgdHTF9CTFVFCEdMX0FMUEhBB0dMX1pFUk8GR0xfT05FAg9nbFRleFBhcmFtZXRlcmYDjp8MjqEIjqMKD2dsVGV4UGFyYW1ldGVyZgZ0YXJnZXQJEUdMX1RFWFRVUkVfQlVGRkVSDUdMX1RFWFRVUkVfMkQXR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMTR0xfVEVYVFVSRV8yRF9BUlJBWRlHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFH0dMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVkNR0xfVEVYVFVSRV8zRBNHTF9URVhUVVJFX0NVQkVfTUFQGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVmOpQyOpwiOqQoPZ2xUZXhQYXJhbWV0ZXJmCXBhcmFtZXRlchMXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1IVR0xfVEVYVFVSRV9NQUdfRklMVEVSFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBVHTF9URVhUVVJFX0JBU0VfTEVWRUwXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUUR0xfVEVYVFVSRV9NQVhfTEVWRUwSR0xfVEVYVFVSRV9NQVhfTE9EEkdMX1RFWFRVUkVfTUlOX0xPRBRHTF9URVhUVVJFX1NXSVpaTEVfQRRHTF9URVhUVVJFX1NXSVpaTEVfQhRHTF9URVhUVVJFX1NXSVpaTEVfRxRHTF9URVhUVVJFX1NXSVpaTEVfUhFHTF9URVhUVVJFX1dSQVBfUh1HTF9ERVBUSF9TVEVOQ0lMX1RFWFRVUkVfTU9ERR1HTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVBpHTF9URVhUVVJFX1NSR0JfREVDT0RFX0VYVI6rDI6tCI6vCg9nbFRleFBhcmFtZXRlcmYFdmFsdWUQCkdMX05FQVJFU1QJR0xfTElORUFSGUdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1QYR0xfTElORUFSX01JUE1BUF9ORUFSRVNUGEdMX05FQVJFU1RfTUlQTUFQX0xJTkVBUhdHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUhBHTF9DTEFNUF9UT19FREdFCUdMX1JFUEVBVBJHTF9NSVJST1JFRF9SRVBFQVQSR0xfQ0xBTVBfVE9fQk9SREVSBkdMX1JFRAhHTF9HUkVFTgdHTF9CTFVFCEdMX0FMUEhBB0dMX1pFUk8GR0xfT05FAhBnbFRleFBhcmFtZXRlcmZ2A46xDI6zCI61ChBnbFRleFBhcmFtZXRlcmZ2BnRhcmdldAkRR0xfVEVYVFVSRV9CVUZGRVINR0xfVEVYVFVSRV8yRBdHTF9URVhUVVJFX0VYVEVSTkFMX09FUxNHTF9URVhUVVJFXzJEX0FSUkFZGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWQ1HTF9URVhUVVJFXzNEE0dMX1RFWFRVUkVfQ1VCRV9NQVAZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWY63DI65CI67ChBnbFRleFBhcmFtZXRlcmZ2BXBuYW1lExVHTF9URVhUVVJFX01BR19GSUxURVIVR0xfVEVYVFVSRV9NSU5fRklMVEVSEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UFUdMX1RFWFRVUkVfQkFTRV9MRVZFTBdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRRHTF9URVhUVVJFX01BWF9MRVZFTBJHTF9URVhUVVJFX01BWF9MT0QSR0xfVEVYVFVSRV9NSU5fTE9EFEdMX1RFWFRVUkVfU1dJWlpMRV9BFEdMX1RFWFRVUkVfU1dJWlpMRV9CFEdMX1RFWFRVUkVfU1dJWlpMRV9HFEdMX1RFWFRVUkVfU1dJWlpMRV9SEUdMX1RFWFRVUkVfV1JBUF9SHUdMX0RFUFRIX1NURU5DSUxfVEVYVFVSRV9NT0RFF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SHUdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUGkdMX1RFWFRVUkVfU1JHQl9ERUNPREVfRVhUjr0Mjr8GjsEGjsMIjsUKEGdsVGV4UGFyYW1ldGVyZnYGcGFyYW1zBAIQCkdMX05FQVJFU1QJR0xfTElORUFSGUdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1QYR0xfTElORUFSX01JUE1BUF9ORUFSRVNUGEdMX05FQVJFU1RfTUlQTUFQX0xJTkVBUhdHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUhBHTF9DTEFNUF9UT19FREdFCUdMX1JFUEVBVBJHTF9NSVJST1JFRF9SRVBFQVQSR0xfQ0xBTVBfVE9fQk9SREVSBkdMX1JFRAhHTF9HUkVFTgdHTF9CTFVFCEdMX0FMUEhBB0dMX1pFUk8GR0xfT05FAg9nbFRleFBhcmFtZXRlcmkDjscMjskIjssKD2dsVGV4UGFyYW1ldGVyaQZ0YXJnZXQJEUdMX1RFWFRVUkVfQlVGRkVSDUdMX1RFWFRVUkVfMkQXR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMTR0xfVEVYVFVSRV8yRF9BUlJBWRlHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFH0dMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVkNR0xfVEVYVFVSRV8zRBNHTF9URVhUVVJFX0NVQkVfTUFQGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVmOzQyOzwiO0QoPZ2xUZXhQYXJhbWV0ZXJpCXBhcmFtZXRlchMXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1IVR0xfVEVYVFVSRV9NQUdfRklMVEVSFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBVHTF9URVhUVVJFX0JBU0VfTEVWRUwXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUUR0xfVEVYVFVSRV9NQVhfTEVWRUwSR0xfVEVYVFVSRV9NQVhfTE9EEkdMX1RFWFRVUkVfTUlOX0xPRBRHTF9URVhUVVJFX1NXSVpaTEVfQRRHTF9URVhUVVJFX1NXSVpaTEVfQhRHTF9URVhUVVJFX1NXSVpaTEVfRxRHTF9URVhUVVJFX1NXSVpaTEVfUhFHTF9URVhUVVJFX1dSQVBfUh1HTF9ERVBUSF9TVEVOQ0lMX1RFWFRVUkVfTU9ERR1HTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVBpHTF9URVhUVVJFX1NSR0JfREVDT0RFX0VYVI7TDI7VCI7XCg9nbFRleFBhcmFtZXRlcmkFdmFsdWUQCkdMX05FQVJFU1QJR0xfTElORUFSGUdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1QYR0xfTElORUFSX01JUE1BUF9ORUFSRVNUGEdMX05FQVJFU1RfTUlQTUFQX0xJTkVBUhdHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUhBHTF9DTEFNUF9UT19FREdFCUdMX1JFUEVBVBJHTF9NSVJST1JFRF9SRVBFQVQSR0xfQ0xBTVBfVE9fQk9SREVSBkdMX1JFRAhHTF9HUkVFTgdHTF9CTFVFCEdMX0FMUEhBB0dMX1pFUk8GR0xfT05FAhBnbFRleFBhcmFtZXRlcml2A47ZDI7bCI7dChBnbFRleFBhcmFtZXRlcml2BnRhcmdldAkRR0xfVEVYVFVSRV9CVUZGRVINR0xfVEVYVFVSRV8yRBdHTF9URVhUVVJFX0VYVEVSTkFMX09FUxNHTF9URVhUVVJFXzJEX0FSUkFZGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWQ1HTF9URVhUVVJFXzNEE0dMX1RFWFRVUkVfQ1VCRV9NQVAZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWY7fDI7hCI7jChBnbFRleFBhcmFtZXRlcml2BXBuYW1lExVHTF9URVhUVVJFX01BR19GSUxURVIVR0xfVEVYVFVSRV9NSU5fRklMVEVSEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UFUdMX1RFWFRVUkVfQkFTRV9MRVZFTBdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRRHTF9URVhUVVJFX01BWF9MRVZFTBJHTF9URVhUVVJFX01BWF9MT0QSR0xfVEVYVFVSRV9NSU5fTE9EFEdMX1RFWFRVUkVfU1dJWlpMRV9BFEdMX1RFWFRVUkVfU1dJWlpMRV9CFEdMX1RFWFRVUkVfU1dJWlpMRV9HFEdMX1RFWFRVUkVfU1dJWlpMRV9SEUdMX1RFWFRVUkVfV1JBUF9SHUdMX0RFUFRIX1NURU5DSUxfVEVYVFVSRV9NT0RFF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SHUdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUGkdMX1RFWFRVUkVfU1JHQl9ERUNPREVfRVhUjuUMjucGjukGjusIju0KEGdsVGV4UGFyYW1ldGVyaXYGcGFyYW1zBAIQCkdMX05FQVJFU1QJR0xfTElORUFSGUdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1QYR0xfTElORUFSX01JUE1BUF9ORUFSRVNUGEdMX05FQVJFU1RfTUlQTUFQX0xJTkVBUhdHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUhBHTF9DTEFNUF9UT19FREdFCUdMX1JFUEVBVBJHTF9NSVJST1JFRF9SRVBFQVQSR0xfQ0xBTVBfVE9fQk9SREVSBkdMX1JFRAhHTF9HUkVFTgdHTF9CTFVFCEdMX0FMUEhBB0dMX1pFUk8GR0xfT05FAg5nbFRleFN0b3JhZ2UyRAKO7wyO8QiO8woOZ2xUZXhTdG9yYWdlMkQGdGFyZ2V0Ag1HTF9URVhUVVJFXzJEE0dMX1RFWFRVUkVfQ1VCRV9NQVCO9QyO9wiO+QoOZ2xUZXhTdG9yYWdlMkQOaW50ZXJuYWxmb3JtYXRoFUdMX0NPTVBSRVNTRURfUjExX0VBQxZHTF9DT01QUkVTU0VEX1JHMTFfRUFDF0dMX0NPTVBSRVNTRURfUkdCOF9FVEMyK0dMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIcR0xfQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQxxHTF9DT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDHUdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDGEdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMixHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMhNHTF9ERVBUSDI0X1NURU5DSUw4FEdMX0RFUFRIMzJGX1NURU5DSUw4FEdMX0RFUFRIX0NPTVBPTkVOVDE2FEdMX0RFUFRIX0NPTVBPTkVOVDI0FUdMX0RFUFRIX0NPTVBPTkVOVDMyRhFHTF9SMTFGX0cxMUZfQjEwRgdHTF9SMTZGB0dMX1IxNkkIR0xfUjE2VUkHR0xfUjMyRgdHTF9SMzJJCEdMX1IzMlVJBUdMX1I4BkdMX1I4SQdHTF9SOFVJC0dMX1I4X1NOT1JNCEdMX1JHMTZGCEdMX1JHMTZJCUdMX1JHMTZVSQhHTF9SRzMyRghHTF9SRzMySQlHTF9SRzMyVUkGR0xfUkc4B0dMX1JHOEkIR0xfUkc4VUkMR0xfUkc4X1NOT1JNC0dMX1JHQjEwX0EyDUdMX1JHQjEwX0EyVUkJR0xfUkdCMTZGCUdMX1JHQjE2SQpHTF9SR0IxNlVJCUdMX1JHQjMyRglHTF9SR0IzMkkKR0xfUkdCMzJVSQlHTF9SR0I1NjUKR0xfUkdCNV9BMQdHTF9SR0I4CEdMX1JHQjhJCUdMX1JHQjhVSQ1HTF9SR0I4X1NOT1JNCkdMX1JHQjlfRTUKR0xfUkdCQTE2RgpHTF9SR0JBMTZJC0dMX1JHQkExNlVJCkdMX1JHQkEzMkYKR0xfUkdCQTMySQtHTF9SR0JBMzJVSQhHTF9SR0JBNAhHTF9SR0JBOAlHTF9SR0JBOEkKR0xfUkdCQThVSQ5HTF9SR0JBOF9TTk9STQhHTF9TUkdCOA9HTF9TUkdCOF9BTFBIQTgGR0xfUjE2DEdMX1IxNl9TTk9STQdHTF9SRzE2DUdMX1JHMTZfU05PUk0IR0xfUkdCMTYOR0xfUkdCMTZfU05PUk0JR0xfUkdCQTE2D0dMX1JHQkExNl9TTk9STR1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMBxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDYcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg4JUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTAkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NiRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDglR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4EUdMX1NURU5DSUxfSU5ERVg4DUdMX0FMUEhBOF9FWFQQR0xfRVRDMV9SR0I4X09FUwtHTF9CR1JBX0VYVAIRZ2xUZXhTdG9yYWdlMkRFWFQCjvsMjv0Ijv8KEWdsVGV4U3RvcmFnZTJERVhUBnRhcmdldAINR0xfVEVYVFVSRV8yRBNHTF9URVhUVVJFX0NVQkVfTUFQjwEMjwMIjwUKEWdsVGV4U3RvcmFnZTJERVhUDmludGVybmFsZm9ybWF0aBVHTF9DT01QUkVTU0VEX1IxMV9FQUMWR0xfQ09NUFJFU1NFRF9SRzExX0VBQxdHTF9DT01QUkVTU0VEX1JHQjhfRVRDMitHTF9DT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyHEdMX0NPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMcR0xfQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQx1HTF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQyNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQxhHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzIsR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzITR0xfREVQVEgyNF9TVEVOQ0lMOBRHTF9ERVBUSDMyRl9TVEVOQ0lMOBRHTF9ERVBUSF9DT01QT05FTlQxNhRHTF9ERVBUSF9DT01QT05FTlQyNBVHTF9ERVBUSF9DT01QT05FTlQzMkYRR0xfUjExRl9HMTFGX0IxMEYHR0xfUjE2RgdHTF9SMTZJCEdMX1IxNlVJB0dMX1IzMkYHR0xfUjMySQhHTF9SMzJVSQVHTF9SOAZHTF9SOEkHR0xfUjhVSQtHTF9SOF9TTk9STQhHTF9SRzE2RghHTF9SRzE2SQlHTF9SRzE2VUkIR0xfUkczMkYIR0xfUkczMkkJR0xfUkczMlVJBkdMX1JHOAdHTF9SRzhJCEdMX1JHOFVJDEdMX1JHOF9TTk9STQtHTF9SR0IxMF9BMg1HTF9SR0IxMF9BMlVJCUdMX1JHQjE2RglHTF9SR0IxNkkKR0xfUkdCMTZVSQlHTF9SR0IzMkYJR0xfUkdCMzJJCkdMX1JHQjMyVUkJR0xfUkdCNTY1CkdMX1JHQjVfQTEHR0xfUkdCOAhHTF9SR0I4SQlHTF9SR0I4VUkNR0xfUkdCOF9TTk9STQpHTF9SR0I5X0U1CkdMX1JHQkExNkYKR0xfUkdCQTE2SQtHTF9SR0JBMTZVSQpHTF9SR0JBMzJGCkdMX1JHQkEzMkkLR0xfUkdCQTMyVUkIR0xfUkdCQTQIR0xfUkdCQTgJR0xfUkdCQThJCkdMX1JHQkE4VUkOR0xfUkdCQThfU05PUk0IR0xfU1JHQjgPR0xfU1JHQjhfQUxQSEE4BkdMX1IxNgxHTF9SMTZfU05PUk0HR0xfUkcxNg1HTF9SRzE2X1NOT1JNCEdMX1JHQjE2DkdMX1JHQjE2X1NOT1JNCUdMX1JHQkExNg9HTF9SR0JBMTZfU05PUk0dR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTAcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NRxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDgdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTAdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTIbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4OCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwJEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NSRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDYkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4JUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTAlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OBFHTF9TVEVOQ0lMX0lOREVYOA1HTF9BTFBIQThfRVhUEEdMX0VUQzFfUkdCOF9PRVMLR0xfQkdSQV9FWFQCGWdsVGV4U3RvcmFnZTJETXVsdGlzYW1wbGUCjwcMjwkIjwsKGWdsVGV4U3RvcmFnZTJETXVsdGlzYW1wbGUGdGFyZ2V0ARlHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFjw0Mjw8IjxEKGWdsVGV4U3RvcmFnZTJETXVsdGlzYW1wbGUOaW50ZXJuYWxmb3JtYXQ3E0dMX0RFUFRIMjRfU1RFTkNJTDgUR0xfREVQVEgzMkZfU1RFTkNJTDgUR0xfREVQVEhfQ09NUE9ORU5UMTYUR0xfREVQVEhfQ09NUE9ORU5UMjQVR0xfREVQVEhfQ09NUE9ORU5UMzJGEUdMX1IxMUZfRzExRl9CMTBGB0dMX1IxNkYHR0xfUjE2SQhHTF9SMTZVSQdHTF9SMzJGB0dMX1IzMkkIR0xfUjMyVUkFR0xfUjgGR0xfUjhJB0dMX1I4VUkLR0xfUjhfU05PUk0IR0xfUkcxNkYIR0xfUkcxNkkJR0xfUkcxNlVJCEdMX1JHMzJGCEdMX1JHMzJJCUdMX1JHMzJVSQZHTF9SRzgHR0xfUkc4SQhHTF9SRzhVSQxHTF9SRzhfU05PUk0LR0xfUkdCMTBfQTINR0xfUkdCMTBfQTJVSQlHTF9SR0IxNkYJR0xfUkdCMTZJCkdMX1JHQjE2VUkJR0xfUkdCMzJGCUdMX1JHQjMySQpHTF9SR0IzMlVJCUdMX1JHQjU2NQpHTF9SR0I1X0ExB0dMX1JHQjgIR0xfUkdCOEkJR0xfUkdCOFVJDUdMX1JHQjhfU05PUk0KR0xfUkdCOV9FNQpHTF9SR0JBMTZGCkdMX1JHQkExNkkLR0xfUkdCQTE2VUkKR0xfUkdCQTMyRgpHTF9SR0JBMzJJC0dMX1JHQkEzMlVJCEdMX1JHQkE0CEdMX1JHQkE4CUdMX1JHQkE4SQpHTF9SR0JBOFVJDkdMX1JHQkE4X1NOT1JNCEdMX1NSR0I4D0dMX1NSR0I4X0FMUEhBOBFHTF9TVEVOQ0lMX0lOREVYOAIOZ2xUZXhTdG9yYWdlM0QCjxMMjxUIjxcKDmdsVGV4U3RvcmFnZTNEBnRhcmdldAMTR0xfVEVYVFVSRV8yRF9BUlJBWQ1HTF9URVhUVVJFXzNEGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVmPGQyPGwiPHQoOZ2xUZXhTdG9yYWdlM0QOaW50ZXJuYWxmb3JtYXRdFUdMX0NPTVBSRVNTRURfUjExX0VBQxZHTF9DT01QUkVTU0VEX1JHMTFfRUFDF0dMX0NPTVBSRVNTRURfUkdCOF9FVEMyK0dMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIcR0xfQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQxxHTF9DT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDHUdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDGEdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMixHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMhNHTF9ERVBUSDI0X1NURU5DSUw4FEdMX0RFUFRIMzJGX1NURU5DSUw4FEdMX0RFUFRIX0NPTVBPTkVOVDE2FEdMX0RFUFRIX0NPTVBPTkVOVDI0FUdMX0RFUFRIX0NPTVBPTkVOVDMyRhFHTF9SMTFGX0cxMUZfQjEwRgdHTF9SMTZGB0dMX1IxNkkIR0xfUjE2VUkHR0xfUjMyRgdHTF9SMzJJCEdMX1IzMlVJBUdMX1I4BkdMX1I4SQdHTF9SOFVJC0dMX1I4X1NOT1JNCEdMX1JHMTZGCEdMX1JHMTZJCUdMX1JHMTZVSQhHTF9SRzMyRghHTF9SRzMySQlHTF9SRzMyVUkGR0xfUkc4B0dMX1JHOEkIR0xfUkc4VUkMR0xfUkc4X1NOT1JNC0dMX1JHQjEwX0EyDUdMX1JHQjEwX0EyVUkJR0xfUkdCMTZGCUdMX1JHQjE2SQpHTF9SR0IxNlVJCUdMX1JHQjMyRglHTF9SR0IzMkkKR0xfUkdCMzJVSQlHTF9SR0I1NjUKR0xfUkdCNV9BMQdHTF9SR0I4CEdMX1JHQjhJCUdMX1JHQjhVSQ1HTF9SR0I4X1NOT1JNCkdMX1JHQjlfRTUKR0xfUkdCQTE2RgpHTF9SR0JBMTZJC0dMX1JHQkExNlVJCkdMX1JHQkEzMkYKR0xfUkdCQTMySQtHTF9SR0JBMzJVSQhHTF9SR0JBNAhHTF9SR0JBOAlHTF9SR0JBOEkKR0xfUkdCQThVSQ5HTF9SR0JBOF9TTk9STQhHTF9TUkdCOA9HTF9TUkdCOF9BTFBIQTgdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTAcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NRxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDgdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTAdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTIbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4OCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwJEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NSRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDYkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4JUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTAlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OBFHTF9TVEVOQ0lMX0lOREVYOAIRZ2xUZXhTdG9yYWdlM0RFWFQCjx8MjyEIjyMKEWdsVGV4U3RvcmFnZTNERVhUBnRhcmdldAMTR0xfVEVYVFVSRV8yRF9BUlJBWQ1HTF9URVhUVVJFXzNEGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVmPJQyPJwiPKQoRZ2xUZXhTdG9yYWdlM0RFWFQOaW50ZXJuYWxmb3JtYXRdFUdMX0NPTVBSRVNTRURfUjExX0VBQxZHTF9DT01QUkVTU0VEX1JHMTFfRUFDF0dMX0NPTVBSRVNTRURfUkdCOF9FVEMyK0dMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIcR0xfQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQxxHTF9DT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDHUdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDGEdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMixHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMhNHTF9ERVBUSDI0X1NURU5DSUw4FEdMX0RFUFRIMzJGX1NURU5DSUw4FEdMX0RFUFRIX0NPTVBPTkVOVDE2FEdMX0RFUFRIX0NPTVBPTkVOVDI0FUdMX0RFUFRIX0NPTVBPTkVOVDMyRhFHTF9SMTFGX0cxMUZfQjEwRgdHTF9SMTZGB0dMX1IxNkkIR0xfUjE2VUkHR0xfUjMyRgdHTF9SMzJJCEdMX1IzMlVJBUdMX1I4BkdMX1I4SQdHTF9SOFVJC0dMX1I4X1NOT1JNCEdMX1JHMTZGCEdMX1JHMTZJCUdMX1JHMTZVSQhHTF9SRzMyRghHTF9SRzMySQlHTF9SRzMyVUkGR0xfUkc4B0dMX1JHOEkIR0xfUkc4VUkMR0xfUkc4X1NOT1JNC0dMX1JHQjEwX0EyDUdMX1JHQjEwX0EyVUkJR0xfUkdCMTZGCUdMX1JHQjE2SQpHTF9SR0IxNlVJCUdMX1JHQjMyRglHTF9SR0IzMkkKR0xfUkdCMzJVSQlHTF9SR0I1NjUKR0xfUkdCNV9BMQdHTF9SR0I4CEdMX1JHQjhJCUdMX1JHQjhVSQ1HTF9SR0I4X1NOT1JNCkdMX1JHQjlfRTUKR0xfUkdCQTE2RgpHTF9SR0JBMTZJC0dMX1JHQkExNlVJCkdMX1JHQkEzMkYKR0xfUkdCQTMySQtHTF9SR0JBMzJVSQhHTF9SR0JBNAhHTF9SR0JBOAlHTF9SR0JBOEkKR0xfUkdCQThVSQ5HTF9SR0JBOF9TTk9STQhHTF9TUkdCOA9HTF9TUkdCOF9BTFBIQTgdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTAcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NRxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDgdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTAdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTIbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4OCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwJEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NSRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDYkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4JUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTAlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OBFHTF9TVEVOQ0lMX0lOREVYOAIZZ2xUZXhTdG9yYWdlM0RNdWx0aXNhbXBsZQKPKwyPLQiPLwoZZ2xUZXhTdG9yYWdlM0RNdWx0aXNhbXBsZQZ0YXJnZXQBH0dMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVmPMQyPMwiPNQoZZ2xUZXhTdG9yYWdlM0RNdWx0aXNhbXBsZQ5pbnRlcm5hbGZvcm1hdDcTR0xfREVQVEgyNF9TVEVOQ0lMOBRHTF9ERVBUSDMyRl9TVEVOQ0lMOBRHTF9ERVBUSF9DT01QT05FTlQxNhRHTF9ERVBUSF9DT01QT05FTlQyNBVHTF9ERVBUSF9DT01QT05FTlQzMkYRR0xfUjExRl9HMTFGX0IxMEYHR0xfUjE2RgdHTF9SMTZJCEdMX1IxNlVJB0dMX1IzMkYHR0xfUjMySQhHTF9SMzJVSQVHTF9SOAZHTF9SOEkHR0xfUjhVSQtHTF9SOF9TTk9STQhHTF9SRzE2RghHTF9SRzE2SQlHTF9SRzE2VUkIR0xfUkczMkYIR0xfUkczMkkJR0xfUkczMlVJBkdMX1JHOAdHTF9SRzhJCEdMX1JHOFVJDEdMX1JHOF9TTk9STQtHTF9SR0IxMF9BMg1HTF9SR0IxMF9BMlVJCUdMX1JHQjE2RglHTF9SR0IxNkkKR0xfUkdCMTZVSQlHTF9SR0IzMkYJR0xfUkdCMzJJCkdMX1JHQjMyVUkJR0xfUkdCNTY1CkdMX1JHQjVfQTEHR0xfUkdCOAhHTF9SR0I4SQlHTF9SR0I4VUkNR0xfUkdCOF9TTk9STQpHTF9SR0I5X0U1CkdMX1JHQkExNkYKR0xfUkdCQTE2SQtHTF9SR0JBMTZVSQpHTF9SR0JBMzJGCkdMX1JHQkEzMkkLR0xfUkdCQTMyVUkIR0xfUkdCQTQIR0xfUkdCQTgJR0xfUkdCQThJCkdMX1JHQkE4VUkOR0xfUkdCQThfU05PUk0IR0xfU1JHQjgPR0xfU1JHQjhfQUxQSEE4EUdMX1NURU5DSUxfSU5ERVg4AhxnbFRleFN0b3JhZ2UzRE11bHRpc2FtcGxlT0VTAo83DI85CI87ChxnbFRleFN0b3JhZ2UzRE11bHRpc2FtcGxlT0VTBnRhcmdldAEfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWY89DI8/CI9BChxnbFRleFN0b3JhZ2UzRE11bHRpc2FtcGxlT0VTDmludGVybmFsZm9ybWF0NxNHTF9ERVBUSDI0X1NURU5DSUw4FEdMX0RFUFRIMzJGX1NURU5DSUw4FEdMX0RFUFRIX0NPTVBPTkVOVDE2FEdMX0RFUFRIX0NPTVBPTkVOVDI0FUdMX0RFUFRIX0NPTVBPTkVOVDMyRhFHTF9SMTFGX0cxMUZfQjEwRgdHTF9SMTZGB0dMX1IxNkkIR0xfUjE2VUkHR0xfUjMyRgdHTF9SMzJJCEdMX1IzMlVJBUdMX1I4BkdMX1I4SQdHTF9SOFVJC0dMX1I4X1NOT1JNCEdMX1JHMTZGCEdMX1JHMTZJCUdMX1JHMTZVSQhHTF9SRzMyRghHTF9SRzMySQlHTF9SRzMyVUkGR0xfUkc4B0dMX1JHOEkIR0xfUkc4VUkMR0xfUkc4X1NOT1JNC0dMX1JHQjEwX0EyDUdMX1JHQjEwX0EyVUkJR0xfUkdCMTZGCUdMX1JHQjE2SQpHTF9SR0IxNlVJCUdMX1JHQjMyRglHTF9SR0IzMkkKR0xfUkdCMzJVSQlHTF9SR0I1NjUKR0xfUkdCNV9BMQdHTF9SR0I4CEdMX1JHQjhJCUdMX1JHQjhVSQ1HTF9SR0I4X1NOT1JNCkdMX1JHQjlfRTUKR0xfUkdCQTE2RgpHTF9SR0JBMTZJC0dMX1JHQkExNlVJCkdMX1JHQkEzMkYKR0xfUkdCQTMySQtHTF9SR0JBMzJVSQhHTF9SR0JBNAhHTF9SR0JBOAlHTF9SR0JBOEkKR0xfUkdCQThVSQ5HTF9SR0JBOF9TTk9STQhHTF9TUkdCOA9HTF9TUkdCOF9BTFBIQTgRR0xfU1RFTkNJTF9JTkRFWDgCD2dsVGV4U3ViSW1hZ2UyRAOPQwyPRQiPRwoPZ2xUZXhTdWJJbWFnZTJEBnRhcmdldAcNR0xfVEVYVFVSRV8yRB5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1geR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWh5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1geR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWo9JDI9LCI9NCg9nbFRleFN1YkltYWdlMkQGZm9ybWF0DwhHTF9BTFBIQQxHTF9MVU1JTkFOQ0USR0xfTFVNSU5BTkNFX0FMUEhBBkdMX1JHQgdHTF9SR0JBEkdMX0RFUFRIX0NPTVBPTkVOVBBHTF9ERVBUSF9TVEVOQ0lMBkdMX1JFRA5HTF9SRURfSU5URUdFUgVHTF9SRw9HTF9SR0JBX0lOVEVHRVIOR0xfUkdCX0lOVEVHRVINR0xfUkdfSU5URUdFUhBHTF9TVEVOQ0lMX0lOREVYC0dMX0JHUkFfRVhUj08Mj1EIj1MKD2dsVGV4U3ViSW1hZ2UyRAR0eXBlOBBHTF9VTlNJR05FRF9CWVRFGUdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQZR0xfVU5TSUdORURfU0hPUlRfNV81XzVfMRdHTF9VTlNJR05FRF9TSE9SVF81XzZfNRFHTF9IQUxGX0ZMT0FUX09FUwdHTF9CWVRFCEdMX0ZMT0FUIUdMX0ZMT0FUXzMyX1VOU0lHTkVEX0lOVF8yNF84X1JFVg1HTF9IQUxGX0ZMT0FUBkdMX0lOVAhHTF9TSE9SVA9HTF9VTlNJR05FRF9JTlQfR0xfVU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFVhRHTF9VTlNJR05FRF9JTlRfMjRfOB5HTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYbR0xfVU5TSUdORURfSU5UXzVfOV85XzlfUkVWEUdMX1VOU0lHTkVEX1NIT1JUFUdMX0NPTVBSRVNTRURfUjExX0VBQxxHTF9DT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDF0dMX0NPTVBSRVNTRURfUkdCOF9FVEMyGEdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMitHTF9DT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyLEdMX0NPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyFkdMX0NPTVBSRVNTRURfUkcxMV9FQUMdR0xfQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUMcR0xfQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQyNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQxtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg4I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDUkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDYkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDgkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4HUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTAdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTAlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMiVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyEEdMX0VUQzFfUkdCOF9PRVMCD2dsVGV4U3ViSW1hZ2UzRASPVQyPVwiPWQoPZ2xUZXhTdWJJbWFnZTNEBnRhcmdldAMTR0xfVEVYVFVSRV8yRF9BUlJBWQ1HTF9URVhUVVJFXzNEGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVmPWwyPXQiPXwoPZ2xUZXhTdWJJbWFnZTNEBmZvcm1hdA8IR0xfQUxQSEESR0xfREVQVEhfQ09NUE9ORU5UEEdMX0RFUFRIX1NURU5DSUwMR0xfTFVNSU5BTkNFEkdMX0xVTUlOQU5DRV9BTFBIQQZHTF9SRUQOR0xfUkVEX0lOVEVHRVIFR0xfUkcGR0xfUkdCB0dMX1JHQkEPR0xfUkdCQV9JTlRFR0VSDkdMX1JHQl9JTlRFR0VSDUdMX1JHX0lOVEVHRVIQR0xfU1RFTkNJTF9JTkRFWAtHTF9CR1JBX0VYVI9hDI9jCI9lCg9nbFRleFN1YkltYWdlM0QEdHlwZTgRR0xfSEFMRl9GTE9BVF9PRVMHR0xfQllURQhHTF9GTE9BVCFHTF9GTE9BVF8zMl9VTlNJR05FRF9JTlRfMjRfOF9SRVYNR0xfSEFMRl9GTE9BVAZHTF9JTlQIR0xfU0hPUlQQR0xfVU5TSUdORURfQllURQ9HTF9VTlNJR05FRF9JTlQfR0xfVU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFVhRHTF9VTlNJR05FRF9JTlRfMjRfOB5HTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYbR0xfVU5TSUdORURfSU5UXzVfOV85XzlfUkVWEUdMX1VOU0lHTkVEX1NIT1JUGUdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQZR0xfVU5TSUdORURfU0hPUlRfNV81XzVfMRdHTF9VTlNJR05FRF9TSE9SVF81XzZfNRVHTF9DT01QUkVTU0VEX1IxMV9FQUMcR0xfQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQxdHTF9DT01QUkVTU0VEX1JHQjhfRVRDMhhHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzIrR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMixHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMhZHTF9DT01QUkVTU0VEX1JHMTFfRUFDHUdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDHEdMX0NPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4OCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OBxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NRxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NhxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTAdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTIlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMhBHTF9FVEMxX1JHQjhfT0VTj2cEj2kGj2sIj20KD2dsVGV4U3ViSW1hZ2UzRARkYXRhBAEAAhJnbFRleFN1YkltYWdlM0RPRVMEj28Mj3EIj3MKEmdsVGV4U3ViSW1hZ2UzRE9FUwZ0YXJnZXQDE0dMX1RFWFRVUkVfMkRfQVJSQVkNR0xfVEVYVFVSRV8zRBlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZj3UMj3cIj3kKEmdsVGV4U3ViSW1hZ2UzRE9FUwZmb3JtYXQPCEdMX0FMUEhBEkdMX0RFUFRIX0NPTVBPTkVOVBBHTF9ERVBUSF9TVEVOQ0lMDEdMX0xVTUlOQU5DRRJHTF9MVU1JTkFOQ0VfQUxQSEEGR0xfUkVEDkdMX1JFRF9JTlRFR0VSBUdMX1JHBkdMX1JHQgdHTF9SR0JBD0dMX1JHQkFfSU5URUdFUg5HTF9SR0JfSU5URUdFUg1HTF9SR19JTlRFR0VSEEdMX1NURU5DSUxfSU5ERVgLR0xfQkdSQV9FWFSPewyPfQiPfwoSZ2xUZXhTdWJJbWFnZTNET0VTBHR5cGU4EUdMX0hBTEZfRkxPQVRfT0VTB0dMX0JZVEUIR0xfRkxPQVQhR0xfRkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWDUdMX0hBTEZfRkxPQVQGR0xfSU5UCEdMX1NIT1JUEEdMX1VOU0lHTkVEX0JZVEUPR0xfVU5TSUdORURfSU5UH0dMX1VOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVYUR0xfVU5TSUdORURfSU5UXzI0XzgeR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWG0dMX1VOU0lHTkVEX0lOVF81XzlfOV85X1JFVhFHTF9VTlNJR05FRF9TSE9SVBlHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80GUdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzEXR0xfVU5TSUdORURfU0hPUlRfNV82XzUVR0xfQ09NUFJFU1NFRF9SMTFfRUFDHEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMXR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIYR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyK0dMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIsR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIWR0xfQ09NUFJFU1NFRF9SRzExX0VBQx1HTF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQxxHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDG0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzR4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDgjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDgcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NSRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDUcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NiRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDYcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OCRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDgdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTAlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTIQR0xfRVRDMV9SR0I4X09FU4+BBI+DBo+FCI+HChJnbFRleFN1YkltYWdlM0RPRVMGcGl4ZWxzBAEAAhtnbFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MBj4kMj4sIj40KG2dsVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncwpidWZmZXJNb2RlAhZHTF9JTlRFUkxFQVZFRF9BVFRSSUJTE0dMX1NFUEFSQVRFX0FUVFJJQlMCC2dsVW5pZm9ybTFmAAIMZ2xVbmlmb3JtMWZ2AY+PBI+RBo+TCI+VCgxnbFVuaWZvcm0xZnYGdmFsdWVzBAICAAILZ2xVbmlmb3JtMWkAAgxnbFVuaWZvcm0xaXYBj5cEj5kGj5sIj50KDGdsVW5pZm9ybTFpdgZ2YWx1ZXMEAgIAAgxnbFVuaWZvcm0xdWkAAg1nbFVuaWZvcm0xdWl2AY+fBI+hBo+jCI+lCg1nbFVuaWZvcm0xdWl2BnZhbHVlcwQCAgACC2dsVW5pZm9ybTJmAAIMZ2xVbmlmb3JtMmZ2AY+nBI+pBo+rCI+tCgxnbFVuaWZvcm0yZnYGdmFsdWVzBAICAAILZ2xVbmlmb3JtMmkAAgxnbFVuaWZvcm0yaXYBj68Ej7EGj7MIj7UKDGdsVW5pZm9ybTJpdgZ2YWx1ZXMEAgIAAgxnbFVuaWZvcm0ydWkAAg1nbFVuaWZvcm0ydWl2AY+3BI+5Bo+7CI+9Cg1nbFVuaWZvcm0ydWl2BnZhbHVlcwQCAgACC2dsVW5pZm9ybTNmAAIMZ2xVbmlmb3JtM2Z2AY+/BI/BBo/DCI/FCgxnbFVuaWZvcm0zZnYGdmFsdWVzBAICAAILZ2xVbmlmb3JtM2kAAgxnbFVuaWZvcm0zaXYBj8cEj8kGj8sIj80KDGdsVW5pZm9ybTNpdgZ2YWx1ZXMEAgIAAgxnbFVuaWZvcm0zdWkAAg1nbFVuaWZvcm0zdWl2AY/PBI/RBo/TCI/VCg1nbFVuaWZvcm0zdWl2BnZhbHVlcwQCAgACC2dsVW5pZm9ybTRmAAIMZ2xVbmlmb3JtNGZ2AY/XBI/ZBo/bCI/dCgxnbFVuaWZvcm00ZnYGdmFsdWVzBAICAAILZ2xVbmlmb3JtNGkAAgxnbFVuaWZvcm00aXYBj98Ej+EGj+MIj+UKDGdsVW5pZm9ybTRpdgZ2YWx1ZXMEAgIAAgxnbFVuaWZvcm00dWkAAg1nbFVuaWZvcm00dWl2AY/nBI/pBo/rCI/tCg1nbFVuaWZvcm00dWl2BnZhbHVlcwQCAgACEmdsVW5pZm9ybU1hdHJpeDJmdgGP7wSP8QaP8wiP9QoSZ2xVbmlmb3JtTWF0cml4MmZ2BnZhbHVlcwQCAgACFGdsVW5pZm9ybU1hdHJpeDJ4M2Z2AY/3BI/5Bo/7CI/9ChRnbFVuaWZvcm1NYXRyaXgyeDNmdgZ2YWx1ZXMEAgIAAhZnbFVuaWZvcm1NYXRyaXgyeDNmdk5WAY//BJABBpADCJAFChZnbFVuaWZvcm1NYXRyaXgyeDNmdk5WBXZhbHVlBAICAAIUZ2xVbmlmb3JtTWF0cml4Mng0ZnYBkAcEkAkGkAsIkA0KFGdsVW5pZm9ybU1hdHJpeDJ4NGZ2BnZhbHVlcwQCAgACFmdsVW5pZm9ybU1hdHJpeDJ4NGZ2TlYBkA8EkBEGkBMIkBUKFmdsVW5pZm9ybU1hdHJpeDJ4NGZ2TlYFdmFsdWUEAgIAAhJnbFVuaWZvcm1NYXRyaXgzZnYBkBcEkBkGkBsIkB0KEmdsVW5pZm9ybU1hdHJpeDNmdgZ2YWx1ZXMEAgIAAhRnbFVuaWZvcm1NYXRyaXgzeDJmdgGQHwSQIQaQIwiQJQoUZ2xVbmlmb3JtTWF0cml4M3gyZnYGdmFsdWVzBAICAAIWZ2xVbmlmb3JtTWF0cml4M3gyZnZOVgGQJwSQKQaQKwiQLQoWZ2xVbmlmb3JtTWF0cml4M3gyZnZOVgV2YWx1ZQQCAgACFGdsVW5pZm9ybU1hdHJpeDN4NGZ2AZAvBJAxBpAzCJA1ChRnbFVuaWZvcm1NYXRyaXgzeDRmdgZ2YWx1ZXMEAgIAAhZnbFVuaWZvcm1NYXRyaXgzeDRmdk5WAZA3BJA5BpA7CJA9ChZnbFVuaWZvcm1NYXRyaXgzeDRmdk5WBXZhbHVlBAICAAISZ2xVbmlmb3JtTWF0cml4NGZ2AZA/BJBBBpBDCJBFChJnbFVuaWZvcm1NYXRyaXg0ZnYGdmFsdWVzBAICAAIUZ2xVbmlmb3JtTWF0cml4NHgyZnYBkEcEkEkGkEsIkE0KFGdsVW5pZm9ybU1hdHJpeDR4MmZ2BnZhbHVlcwQCAgACFmdsVW5pZm9ybU1hdHJpeDR4MmZ2TlYBkE8EkFEGkFMIkFUKFmdsVW5pZm9ybU1hdHJpeDR4MmZ2TlYFdmFsdWUEAgIAAhRnbFVuaWZvcm1NYXRyaXg0eDNmdgGQVwSQWQaQWwiQXQoUZ2xVbmlmb3JtTWF0cml4NHgzZnYGdmFsdWVzBAICAAIWZ2xVbmlmb3JtTWF0cml4NHgzZnZOVgGQXwSQYQaQYwiQZQoWZ2xVbmlmb3JtTWF0cml4NHgzZnZOVgV2YWx1ZQQCAgACDWdsVW5tYXBCdWZmZXIBkGcMkGkIkGsKDWdsVW5tYXBCdWZmZXIGdGFyZ2V0DQ9HTF9BUlJBWV9CVUZGRVIXR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVITR0xfQ09QWV9SRUFEX0JVRkZFUhRHTF9DT1BZX1dSSVRFX0JVRkZFUhRHTF9QSVhFTF9QQUNLX0JVRkZFUhZHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSHEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIRR0xfVU5JRk9STV9CVUZGRVIYR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSG0dMX0RJU1BBVENIX0lORElSRUNUX0JVRkZFUhdHTF9EUkFXX0lORElSRUNUX0JVRkZFUhhHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVIRR0xfVEVYVFVSRV9CVUZGRVICEGdsVW5tYXBCdWZmZXJPRVMBkG0MkG8IkHEKEGdsVW5tYXBCdWZmZXJPRVMGdGFyZ2V0DQ9HTF9BUlJBWV9CVUZGRVIXR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVITR0xfQ09QWV9SRUFEX0JVRkZFUhRHTF9DT1BZX1dSSVRFX0JVRkZFUhRHTF9QSVhFTF9QQUNLX0JVRkZFUhZHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSHEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIRR0xfVU5JRk9STV9CVUZGRVIYR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSG0dMX0RJU1BBVENIX0lORElSRUNUX0JVRkZFUhdHTF9EUkFXX0lORElSRUNUX0JVRkZFUhhHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVIRR0xfVEVYVFVSRV9CVUZGRVICEmdsVXNlUHJvZ3JhbVN0YWdlcwGQcwyQdQiQdwoSZ2xVc2VQcm9ncmFtU3RhZ2VzBnN0YWdlcwQSR0xfQUxMX1NIQURFUl9CSVRTFUdMX0NPTVBVVEVfU0hBREVSX0JJVBZHTF9GUkFHTUVOVF9TSEFERVJfQklUFEdMX1ZFUlRFWF9TSEFERVJfQklUAhRnbFZlcnRleEF0dHJpYkZvcm1hdAGQeQyQewiQfQoUZ2xWZXJ0ZXhBdHRyaWJGb3JtYXQEdHlwZQwHR0xfQllURQZHTF9JTlQIR0xfU0hPUlQQR0xfVU5TSUdORURfQllURQ9HTF9VTlNJR05FRF9JTlQRR0xfVU5TSUdORURfU0hPUlQIR0xfRklYRUQIR0xfRkxPQVQRR0xfSEFMRl9GTE9BVF9PRVMNR0xfSEFMRl9GTE9BVBVHTF9JTlRfMl8xMF8xMF8xMF9SRVYeR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWAhVnbFZlcnRleEF0dHJpYklGb3JtYXQBkH8MkIEIkIMKFWdsVmVydGV4QXR0cmliSUZvcm1hdAR0eXBlDAdHTF9CWVRFBkdMX0lOVAhHTF9TSE9SVBBHTF9VTlNJR05FRF9CWVRFD0dMX1VOU0lHTkVEX0lOVBFHTF9VTlNJR05FRF9TSE9SVAhHTF9GSVhFRAhHTF9GTE9BVBFHTF9IQUxGX0ZMT0FUX09FUw1HTF9IQUxGX0ZMT0FUFUdMX0lOVF8yXzEwXzEwXzEwX1JFVh5HTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYCFmdsVmVydGV4QXR0cmliSVBvaW50ZXIBkIUMkIcIkIkKFmdsVmVydGV4QXR0cmliSVBvaW50ZXIEdHlwZQwHR0xfQllURQZHTF9JTlQIR0xfU0hPUlQQR0xfVU5TSUdORURfQllURQ9HTF9VTlNJR05FRF9JTlQRR0xfVU5TSUdORURfU0hPUlQIR0xfRklYRUQIR0xfRkxPQVQRR0xfSEFMRl9GTE9BVF9PRVMNR0xfSEFMRl9GTE9BVBVHTF9JTlRfMl8xMF8xMF8xMF9SRVYeR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWAhVnbFZlcnRleEF0dHJpYlBvaW50ZXIBkIsMkI0IkI8KFWdsVmVydGV4QXR0cmliUG9pbnRlcgR0eXBlDAdHTF9CWVRFBkdMX0lOVAhHTF9TSE9SVBBHTF9VTlNJR05FRF9CWVRFD0dMX1VOU0lHTkVEX0lOVBFHTF9VTlNJR05FRF9TSE9SVAhHTF9GSVhFRAhHTF9GTE9BVBFHTF9IQUxGX0ZMT0FUX09FUw1HTF9IQUxGX0ZMT0FUFUdMX0lOVF8yXzEwXzEwXzEwX1JFVh5HTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVY=
\ No newline at end of file
diff --git a/gapid/gfxapi/gles/snippets.text b/gapid/gfxapi/gles/snippets.text
index 509b93e..6c0bc25 100644
--- a/gapid/gfxapi/gles/snippets.text
+++ b/gapid/gfxapi/gles/snippets.text
@@ -1,5 +1,27 @@
===================================== CGSGetSurfaceBounds
Parameter:bounds.Range(): [Observation(Write)]
+===================================== eglChooseConfig
+Parameter:attrib_list.Range().Elem(): [EGL_NONE]
+Parameter:configs.Range(): [Observation(Write)]
+===================================== eglCreateContext
+Parameter:attrib_list.Range().Elem(): [EGL_NONE]
+===================================== eglCreateImageKHR
+Parameter:target: [EGL_NATIVE_BUFFER_ANDROID]
+Parameter:attrib_list.Range().Elem(): [EGL_NONE]
+===================================== eglCreateNativeClientBufferANDROID
+Parameter:attrib_list.Range().Elem(): [EGL_NONE]
+===================================== eglCreatePbufferFromClientBuffer
+Parameter:attrib_list.Range().Elem(): [EGL_NONE]
+===================================== eglCreatePbufferSurface
+Parameter:attrib_list.Range().Elem(): [EGL_NONE]
+===================================== eglCreatePixmapSurface
+Parameter:attrib_list.Range().Elem(): [EGL_NONE]
+===================================== eglCreateSyncKHR
+Parameter:attrib_list.Range().Elem(): [EGL_NONE]
+===================================== eglCreateWindowSurface
+Parameter:attrib_list.Range().Elem(): [EGL_NONE]
+===================================== eglGetConfigs
+Parameter:configs.Range(): [Observation(Write)]
===================================== eglMakeCurrent
Global:EGLContexts.Elem().BoundFramebuffers.Key(): [GL_DRAW_FRAMEBUFFER GL_READ_FRAMEBUFFER]
Global:EGLContexts.Elem().Framebuffer.ColorWritemask.Elem().Elem(): [GL_TRUE]
@@ -522,6 +544,8 @@
Parameter:mode: [GL_LINES GL_LINE_LOOP GL_LINE_STRIP GL_POINTS GL_TRIANGLES GL_TRIANGLE_FAN GL_TRIANGLE_STRIP GL_LINES_ADJACENCY GL_LINE_STRIP_ADJACENCY GL_PATCHES GL_TRIANGLES_ADJACENCY GL_TRIANGLE_STRIP_ADJACENCY]
Parameter:type: [GL_UNSIGNED_BYTE GL_UNSIGNED_SHORT GL_UNSIGNED_INT]
Parameter:indices.Range(): [Observation(Read)]
+===================================== glEGLImageTargetTexture2DOES
+Parameter:target: [GL_TEXTURE_2D GL_TEXTURE_EXTERNAL_OES GL_TEXTURE_2D_ARRAY GL_TEXTURE_2D_MULTISAMPLE GL_TEXTURE_2D_MULTISAMPLE_ARRAY GL_TEXTURE_3D GL_TEXTURE_BUFFER GL_TEXTURE_CUBE_MAP GL_TEXTURE_CUBE_MAP_ARRAY]
===================================== glEnable
Global:Contexts.Elem().Debug.Output: [GL_TRUE]
Global:Contexts.Elem().Debug.OutputSynchronous: [GL_TRUE]
@@ -648,6 +672,12 @@
Parameter:framebuffer_target: [GL_FRAMEBUFFER GL_DRAW_FRAMEBUFFER GL_READ_FRAMEBUFFER]
Parameter:framebuffer_attachment: [GL_DEPTH_ATTACHMENT GL_STENCIL_ATTACHMENT GL_COLOR_ATTACHMENT0 GL_COLOR_ATTACHMENT1 GL_COLOR_ATTACHMENT10 GL_COLOR_ATTACHMENT11 GL_COLOR_ATTACHMENT12 GL_COLOR_ATTACHMENT13 GL_COLOR_ATTACHMENT14 GL_COLOR_ATTACHMENT15 GL_COLOR_ATTACHMENT2 GL_COLOR_ATTACHMENT3 GL_COLOR_ATTACHMENT4 GL_COLOR_ATTACHMENT5 GL_COLOR_ATTACHMENT6 GL_COLOR_ATTACHMENT7 GL_COLOR_ATTACHMENT8 GL_COLOR_ATTACHMENT9 GL_DEPTH_STENCIL_ATTACHMENT]
Parameter:texture_target: [GL_TEXTURE_2D GL_TEXTURE_CUBE_MAP_NEGATIVE_X GL_TEXTURE_CUBE_MAP_NEGATIVE_Y GL_TEXTURE_CUBE_MAP_NEGATIVE_Z GL_TEXTURE_CUBE_MAP_POSITIVE_X GL_TEXTURE_CUBE_MAP_POSITIVE_Y GL_TEXTURE_CUBE_MAP_POSITIVE_Z GL_TEXTURE_2D_MULTISAMPLE]
+===================================== glFramebufferTexture2DMultisampleEXT
+Global:Contexts.Elem().Instances.Framebuffers.Elem().Attachments.Elem().ObjectType: [GL_TEXTURE]
+Global:Contexts.Elem().Instances.Framebuffers.Elem().Attachments.Key(): [GL_DEPTH_ATTACHMENT GL_STENCIL_ATTACHMENT GL_COLOR_ATTACHMENT0 GL_COLOR_ATTACHMENT1 GL_COLOR_ATTACHMENT10 GL_COLOR_ATTACHMENT11 GL_COLOR_ATTACHMENT12 GL_COLOR_ATTACHMENT13 GL_COLOR_ATTACHMENT14 GL_COLOR_ATTACHMENT15 GL_COLOR_ATTACHMENT2 GL_COLOR_ATTACHMENT3 GL_COLOR_ATTACHMENT4 GL_COLOR_ATTACHMENT5 GL_COLOR_ATTACHMENT6 GL_COLOR_ATTACHMENT7 GL_COLOR_ATTACHMENT8 GL_COLOR_ATTACHMENT9 GL_DEPTH_STENCIL_ATTACHMENT]
+Parameter:target: [GL_FRAMEBUFFER GL_DRAW_FRAMEBUFFER GL_READ_FRAMEBUFFER]
+Parameter:attachment: [GL_DEPTH_ATTACHMENT GL_STENCIL_ATTACHMENT GL_COLOR_ATTACHMENT0 GL_COLOR_ATTACHMENT1 GL_COLOR_ATTACHMENT10 GL_COLOR_ATTACHMENT11 GL_COLOR_ATTACHMENT12 GL_COLOR_ATTACHMENT13 GL_COLOR_ATTACHMENT14 GL_COLOR_ATTACHMENT15 GL_COLOR_ATTACHMENT2 GL_COLOR_ATTACHMENT3 GL_COLOR_ATTACHMENT4 GL_COLOR_ATTACHMENT5 GL_COLOR_ATTACHMENT6 GL_COLOR_ATTACHMENT7 GL_COLOR_ATTACHMENT8 GL_COLOR_ATTACHMENT9 GL_DEPTH_STENCIL_ATTACHMENT]
+Parameter:textarget: [GL_TEXTURE_2D GL_TEXTURE_CUBE_MAP_NEGATIVE_X GL_TEXTURE_CUBE_MAP_NEGATIVE_Y GL_TEXTURE_CUBE_MAP_NEGATIVE_Z GL_TEXTURE_CUBE_MAP_POSITIVE_X GL_TEXTURE_CUBE_MAP_POSITIVE_Y GL_TEXTURE_CUBE_MAP_POSITIVE_Z GL_TEXTURE_2D_MULTISAMPLE]
===================================== glFramebufferTexture2DOES
Global:Contexts.Elem().Instances.Framebuffers.Elem().Attachments.Elem().ObjectType: [GL_TEXTURE]
Global:Contexts.Elem().Instances.Framebuffers.Elem().Attachments.Key(): [GL_DEPTH_ATTACHMENT GL_STENCIL_ATTACHMENT GL_COLOR_ATTACHMENT0 GL_COLOR_ATTACHMENT1 GL_COLOR_ATTACHMENT10 GL_COLOR_ATTACHMENT11 GL_COLOR_ATTACHMENT12 GL_COLOR_ATTACHMENT13 GL_COLOR_ATTACHMENT14 GL_COLOR_ATTACHMENT15 GL_COLOR_ATTACHMENT2 GL_COLOR_ATTACHMENT3 GL_COLOR_ATTACHMENT4 GL_COLOR_ATTACHMENT5 GL_COLOR_ATTACHMENT6 GL_COLOR_ATTACHMENT7 GL_COLOR_ATTACHMENT8 GL_COLOR_ATTACHMENT9 GL_DEPTH_STENCIL_ATTACHMENT]
@@ -820,29 +850,29 @@
===================================== glGetQueryObjectuiv
Parameter:parameter: [GL_QUERY_RESULT GL_QUERY_RESULT_AVAILABLE]
===================================== glGetQueryiv
-Global:Contexts.Elem().ActiveQueries.Key(): [GL_ANY_SAMPLES_PASSED GL_ANY_SAMPLES_PASSED_CONSERVATIVE GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN GL_PRIMITIVES_GENERATED]
-Parameter:target: [GL_ANY_SAMPLES_PASSED GL_ANY_SAMPLES_PASSED_CONSERVATIVE GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN GL_PRIMITIVES_GENERATED]
-Parameter:parameter: [GL_CURRENT_QUERY]
+Global:Contexts.Elem().ActiveQueries.Key(): [GL_ANY_SAMPLES_PASSED GL_ANY_SAMPLES_PASSED_CONSERVATIVE GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN GL_PRIMITIVES_GENERATED GL_TIMESTAMP_EXT]
+Parameter:target: [GL_ANY_SAMPLES_PASSED GL_ANY_SAMPLES_PASSED_CONSERVATIVE GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN GL_PRIMITIVES_GENERATED GL_TIMESTAMP_EXT]
+Parameter:parameter: [GL_CURRENT_QUERY GL_QUERY_COUNTER_BITS_EXT]
===================================== glGetRenderbufferParameteriv
Global:Contexts.Elem().BoundRenderbuffers.Key(): [GL_RENDERBUFFER]
Parameter:target: [GL_RENDERBUFFER]
Parameter:parameter: [GL_RENDERBUFFER_ALPHA_SIZE GL_RENDERBUFFER_BLUE_SIZE GL_RENDERBUFFER_DEPTH_SIZE GL_RENDERBUFFER_GREEN_SIZE GL_RENDERBUFFER_HEIGHT GL_RENDERBUFFER_INTERNAL_FORMAT GL_RENDERBUFFER_RED_SIZE GL_RENDERBUFFER_STENCIL_SIZE GL_RENDERBUFFER_WIDTH GL_RENDERBUFFER_SAMPLES]
===================================== glGetSamplerParameterIiv
-Parameter:pname: [GL_TEXTURE_COMPARE_FUNC GL_TEXTURE_COMPARE_MODE GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GL_TEXTURE_MIN_LOD GL_TEXTURE_MAX_LOD GL_TEXTURE_WRAP_R GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_BORDER_COLOR]
+Parameter:pname: [GL_TEXTURE_COMPARE_FUNC GL_TEXTURE_COMPARE_MODE GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GL_TEXTURE_MIN_LOD GL_TEXTURE_MAX_LOD GL_TEXTURE_WRAP_R GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_BORDER_COLOR GL_TEXTURE_MAX_ANISOTROPY_EXT]
===================================== glGetSamplerParameterIivEXT
-Parameter:pname: [GL_TEXTURE_COMPARE_FUNC GL_TEXTURE_COMPARE_MODE GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GL_TEXTURE_MIN_LOD GL_TEXTURE_MAX_LOD GL_TEXTURE_WRAP_R GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_BORDER_COLOR]
+Parameter:pname: [GL_TEXTURE_COMPARE_FUNC GL_TEXTURE_COMPARE_MODE GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GL_TEXTURE_MIN_LOD GL_TEXTURE_MAX_LOD GL_TEXTURE_WRAP_R GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_BORDER_COLOR GL_TEXTURE_MAX_ANISOTROPY_EXT]
===================================== glGetSamplerParameterIivOES
-Parameter:pname: [GL_TEXTURE_COMPARE_FUNC GL_TEXTURE_COMPARE_MODE GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GL_TEXTURE_MIN_LOD GL_TEXTURE_MAX_LOD GL_TEXTURE_WRAP_R GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_BORDER_COLOR]
+Parameter:pname: [GL_TEXTURE_COMPARE_FUNC GL_TEXTURE_COMPARE_MODE GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GL_TEXTURE_MIN_LOD GL_TEXTURE_MAX_LOD GL_TEXTURE_WRAP_R GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_BORDER_COLOR GL_TEXTURE_MAX_ANISOTROPY_EXT]
===================================== glGetSamplerParameterIuiv
-Parameter:pname: [GL_TEXTURE_COMPARE_FUNC GL_TEXTURE_COMPARE_MODE GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GL_TEXTURE_MIN_LOD GL_TEXTURE_MAX_LOD GL_TEXTURE_WRAP_R GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_BORDER_COLOR]
+Parameter:pname: [GL_TEXTURE_COMPARE_FUNC GL_TEXTURE_COMPARE_MODE GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GL_TEXTURE_MIN_LOD GL_TEXTURE_MAX_LOD GL_TEXTURE_WRAP_R GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_BORDER_COLOR GL_TEXTURE_MAX_ANISOTROPY_EXT]
===================================== glGetSamplerParameterIuivEXT
-Parameter:pname: [GL_TEXTURE_COMPARE_FUNC GL_TEXTURE_COMPARE_MODE GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GL_TEXTURE_MIN_LOD GL_TEXTURE_MAX_LOD GL_TEXTURE_WRAP_R GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_BORDER_COLOR]
+Parameter:pname: [GL_TEXTURE_COMPARE_FUNC GL_TEXTURE_COMPARE_MODE GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GL_TEXTURE_MIN_LOD GL_TEXTURE_MAX_LOD GL_TEXTURE_WRAP_R GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_BORDER_COLOR GL_TEXTURE_MAX_ANISOTROPY_EXT]
===================================== glGetSamplerParameterIuivOES
-Parameter:pname: [GL_TEXTURE_COMPARE_FUNC GL_TEXTURE_COMPARE_MODE GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GL_TEXTURE_MIN_LOD GL_TEXTURE_MAX_LOD GL_TEXTURE_WRAP_R GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_BORDER_COLOR]
+Parameter:pname: [GL_TEXTURE_COMPARE_FUNC GL_TEXTURE_COMPARE_MODE GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GL_TEXTURE_MIN_LOD GL_TEXTURE_MAX_LOD GL_TEXTURE_WRAP_R GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_BORDER_COLOR GL_TEXTURE_MAX_ANISOTROPY_EXT]
===================================== glGetSamplerParameterfv
-Parameter:pname: [GL_TEXTURE_COMPARE_FUNC GL_TEXTURE_COMPARE_MODE GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GL_TEXTURE_MIN_LOD GL_TEXTURE_MAX_LOD GL_TEXTURE_WRAP_R GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_BORDER_COLOR]
+Parameter:pname: [GL_TEXTURE_COMPARE_FUNC GL_TEXTURE_COMPARE_MODE GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GL_TEXTURE_MIN_LOD GL_TEXTURE_MAX_LOD GL_TEXTURE_WRAP_R GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_BORDER_COLOR GL_TEXTURE_MAX_ANISOTROPY_EXT]
===================================== glGetSamplerParameteriv
-Parameter:pname: [GL_TEXTURE_COMPARE_FUNC GL_TEXTURE_COMPARE_MODE GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GL_TEXTURE_MIN_LOD GL_TEXTURE_MAX_LOD GL_TEXTURE_WRAP_R GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_BORDER_COLOR]
+Parameter:pname: [GL_TEXTURE_COMPARE_FUNC GL_TEXTURE_COMPARE_MODE GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GL_TEXTURE_MIN_LOD GL_TEXTURE_MAX_LOD GL_TEXTURE_WRAP_R GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_BORDER_COLOR GL_TEXTURE_MAX_ANISOTROPY_EXT]
===================================== glGetShaderInfoLog
Parameter:info.Range(): [Observation(Write)]
===================================== glGetShaderPrecisionFormat
@@ -1287,34 +1317,40 @@
Parameter:target: [GL_RENDERBUFFER]
Parameter:internalformat: [GL_DEPTH_COMPONENT16 GL_RGB565 GL_RGB5_A1 GL_RGBA4 GL_STENCIL_INDEX8 GL_DEPTH24_STENCIL8 GL_DEPTH32F_STENCIL8 GL_DEPTH_COMPONENT24 GL_DEPTH_COMPONENT32F GL_R16I GL_R16UI GL_R32I GL_R32UI GL_R8 GL_R8I GL_R8UI GL_RG16I GL_RG16UI GL_RG32I GL_RG32UI GL_RG8 GL_RG8I GL_RG8UI GL_RGB10_A2 GL_RGB10_A2UI GL_RGB8 GL_RGBA16I GL_RGBA16UI GL_RGBA32I GL_RGBA32UI GL_RGBA8 GL_RGBA8I GL_RGBA8UI GL_SRGB8_ALPHA8 GL_R16 GL_RG16 GL_RGBA16]
===================================== glRenderbufferStorageMultisample
+Global:Contexts.Elem().BoundRenderbuffers.Key(): [GL_RENDERBUFFER]
+Global:Contexts.Elem().Instances.Renderbuffers.Elem().InternalFormat: [GL_DEPTH_COMPONENT16 GL_RGB565 GL_RGB5_A1 GL_RGBA4 GL_STENCIL_INDEX8 GL_DEPTH24_STENCIL8 GL_DEPTH32F_STENCIL8 GL_DEPTH_COMPONENT24 GL_DEPTH_COMPONENT32F GL_R16I GL_R16UI GL_R32I GL_R32UI GL_R8 GL_R8I GL_R8UI GL_RG16I GL_RG16UI GL_RG32I GL_RG32UI GL_RG8 GL_RG8I GL_RG8UI GL_RGB10_A2 GL_RGB10_A2UI GL_RGB8 GL_RGBA16I GL_RGBA16UI GL_RGBA32I GL_RGBA32UI GL_RGBA8 GL_RGBA8I GL_RGBA8UI GL_SRGB8_ALPHA8 GL_R16 GL_RG16 GL_RGBA16]
Parameter:target: [GL_RENDERBUFFER]
-Parameter:internalformat: [GL_DEPTH24_STENCIL8 GL_DEPTH32F_STENCIL8 GL_DEPTH_COMPONENT16 GL_DEPTH_COMPONENT24 GL_DEPTH_COMPONENT32F GL_R16I GL_R16UI GL_R32I GL_R32UI GL_R8 GL_R8I GL_R8UI GL_RG16I GL_RG16UI GL_RG32I GL_RG32UI GL_RG8 GL_RG8I GL_RG8UI GL_RGB10_A2 GL_RGB10_A2UI GL_RGB565 GL_RGB5_A1 GL_RGB8 GL_RGBA16I GL_RGBA16UI GL_RGBA32I GL_RGBA32UI GL_RGBA4 GL_RGBA8 GL_RGBA8I GL_RGBA8UI GL_SRGB8_ALPHA8 GL_STENCIL_INDEX8 GL_R16 GL_RG16 GL_RGBA16]
+Parameter:internalformat: [GL_DEPTH_COMPONENT16 GL_RGB565 GL_RGB5_A1 GL_RGBA4 GL_STENCIL_INDEX8 GL_DEPTH24_STENCIL8 GL_DEPTH32F_STENCIL8 GL_DEPTH_COMPONENT24 GL_DEPTH_COMPONENT32F GL_R16I GL_R16UI GL_R32I GL_R32UI GL_R8 GL_R8I GL_R8UI GL_RG16I GL_RG16UI GL_RG32I GL_RG32UI GL_RG8 GL_RG8I GL_RG8UI GL_RGB10_A2 GL_RGB10_A2UI GL_RGB8 GL_RGBA16I GL_RGBA16UI GL_RGBA32I GL_RGBA32UI GL_RGBA8 GL_RGBA8I GL_RGBA8UI GL_SRGB8_ALPHA8 GL_R16 GL_RG16 GL_RGBA16]
===================================== glRenderbufferStorageMultisampleEXT
+Global:Contexts.Elem().BoundRenderbuffers.Key(): [GL_RENDERBUFFER]
+Global:Contexts.Elem().Instances.Renderbuffers.Elem().InternalFormat: [GL_DEPTH_COMPONENT16 GL_RGB565 GL_RGB5_A1 GL_RGBA4 GL_STENCIL_INDEX8 GL_DEPTH24_STENCIL8 GL_DEPTH32F_STENCIL8 GL_DEPTH_COMPONENT24 GL_DEPTH_COMPONENT32F GL_R16I GL_R16UI GL_R32I GL_R32UI GL_R8 GL_R8I GL_R8UI GL_RG16I GL_RG16UI GL_RG32I GL_RG32UI GL_RG8 GL_RG8I GL_RG8UI GL_RGB10_A2 GL_RGB10_A2UI GL_RGB8 GL_RGBA16I GL_RGBA16UI GL_RGBA32I GL_RGBA32UI GL_RGBA8 GL_RGBA8I GL_RGBA8UI GL_SRGB8_ALPHA8 GL_R16 GL_RG16 GL_RGBA16]
Parameter:target: [GL_RENDERBUFFER]
-Parameter:internalformat: [GL_DEPTH24_STENCIL8 GL_DEPTH32F_STENCIL8 GL_DEPTH_COMPONENT16 GL_DEPTH_COMPONENT24 GL_DEPTH_COMPONENT32F GL_R16I GL_R16UI GL_R32I GL_R32UI GL_R8 GL_R8I GL_R8UI GL_RG16I GL_RG16UI GL_RG32I GL_RG32UI GL_RG8 GL_RG8I GL_RG8UI GL_RGB10_A2 GL_RGB10_A2UI GL_RGB565 GL_RGB5_A1 GL_RGB8 GL_RGBA16I GL_RGBA16UI GL_RGBA32I GL_RGBA32UI GL_RGBA4 GL_RGBA8 GL_RGBA8I GL_RGBA8UI GL_SRGB8_ALPHA8 GL_STENCIL_INDEX8 GL_R16 GL_RG16 GL_RGBA16]
+Parameter:internalformat: [GL_DEPTH_COMPONENT16 GL_RGB565 GL_RGB5_A1 GL_RGBA4 GL_STENCIL_INDEX8 GL_DEPTH24_STENCIL8 GL_DEPTH32F_STENCIL8 GL_DEPTH_COMPONENT24 GL_DEPTH_COMPONENT32F GL_R16I GL_R16UI GL_R32I GL_R32UI GL_R8 GL_R8I GL_R8UI GL_RG16I GL_RG16UI GL_RG32I GL_RG32UI GL_RG8 GL_RG8I GL_RG8UI GL_RGB10_A2 GL_RGB10_A2UI GL_RGB8 GL_RGBA16I GL_RGBA16UI GL_RGBA32I GL_RGBA32UI GL_RGBA8 GL_RGBA8I GL_RGBA8UI GL_SRGB8_ALPHA8 GL_R16 GL_RG16 GL_RGBA16]
===================================== glRenderbufferStorageMultisampleNV
+Global:Contexts.Elem().BoundRenderbuffers.Key(): [GL_RENDERBUFFER]
+Global:Contexts.Elem().Instances.Renderbuffers.Elem().InternalFormat: [GL_DEPTH_COMPONENT16 GL_RGB565 GL_RGB5_A1 GL_RGBA4 GL_STENCIL_INDEX8 GL_DEPTH24_STENCIL8 GL_DEPTH32F_STENCIL8 GL_DEPTH_COMPONENT24 GL_DEPTH_COMPONENT32F GL_R16I GL_R16UI GL_R32I GL_R32UI GL_R8 GL_R8I GL_R8UI GL_RG16I GL_RG16UI GL_RG32I GL_RG32UI GL_RG8 GL_RG8I GL_RG8UI GL_RGB10_A2 GL_RGB10_A2UI GL_RGB8 GL_RGBA16I GL_RGBA16UI GL_RGBA32I GL_RGBA32UI GL_RGBA8 GL_RGBA8I GL_RGBA8UI GL_SRGB8_ALPHA8 GL_R16 GL_RG16 GL_RGBA16]
Parameter:target: [GL_RENDERBUFFER]
-Parameter:internalformat: [GL_DEPTH24_STENCIL8 GL_DEPTH32F_STENCIL8 GL_DEPTH_COMPONENT16 GL_DEPTH_COMPONENT24 GL_DEPTH_COMPONENT32F GL_R16I GL_R16UI GL_R32I GL_R32UI GL_R8 GL_R8I GL_R8UI GL_RG16I GL_RG16UI GL_RG32I GL_RG32UI GL_RG8 GL_RG8I GL_RG8UI GL_RGB10_A2 GL_RGB10_A2UI GL_RGB565 GL_RGB5_A1 GL_RGB8 GL_RGBA16I GL_RGBA16UI GL_RGBA32I GL_RGBA32UI GL_RGBA4 GL_RGBA8 GL_RGBA8I GL_RGBA8UI GL_SRGB8_ALPHA8 GL_STENCIL_INDEX8 GL_R16 GL_RG16 GL_RGBA16]
+Parameter:internalformat: [GL_DEPTH_COMPONENT16 GL_RGB565 GL_RGB5_A1 GL_RGBA4 GL_STENCIL_INDEX8 GL_DEPTH24_STENCIL8 GL_DEPTH32F_STENCIL8 GL_DEPTH_COMPONENT24 GL_DEPTH_COMPONENT32F GL_R16I GL_R16UI GL_R32I GL_R32UI GL_R8 GL_R8I GL_R8UI GL_RG16I GL_RG16UI GL_RG32I GL_RG32UI GL_RG8 GL_RG8I GL_RG8UI GL_RGB10_A2 GL_RGB10_A2UI GL_RGB8 GL_RGBA16I GL_RGBA16UI GL_RGBA32I GL_RGBA32UI GL_RGBA8 GL_RGBA8I GL_RGBA8UI GL_SRGB8_ALPHA8 GL_R16 GL_RG16 GL_RGBA16]
===================================== glSamplerParameterIiv
-Parameter:pname: [GL_TEXTURE_COMPARE_FUNC GL_TEXTURE_COMPARE_MODE GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GL_TEXTURE_MIN_LOD GL_TEXTURE_MAX_LOD GL_TEXTURE_WRAP_R GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_BORDER_COLOR]
+Parameter:pname: [GL_TEXTURE_COMPARE_FUNC GL_TEXTURE_COMPARE_MODE GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GL_TEXTURE_MIN_LOD GL_TEXTURE_MAX_LOD GL_TEXTURE_WRAP_R GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_BORDER_COLOR GL_TEXTURE_MAX_ANISOTROPY_EXT]
===================================== glSamplerParameterIivEXT
-Parameter:pname: [GL_TEXTURE_COMPARE_FUNC GL_TEXTURE_COMPARE_MODE GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GL_TEXTURE_MIN_LOD GL_TEXTURE_MAX_LOD GL_TEXTURE_WRAP_R GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_BORDER_COLOR]
+Parameter:pname: [GL_TEXTURE_COMPARE_FUNC GL_TEXTURE_COMPARE_MODE GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GL_TEXTURE_MIN_LOD GL_TEXTURE_MAX_LOD GL_TEXTURE_WRAP_R GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_BORDER_COLOR GL_TEXTURE_MAX_ANISOTROPY_EXT]
===================================== glSamplerParameterIivOES
-Parameter:pname: [GL_TEXTURE_COMPARE_FUNC GL_TEXTURE_COMPARE_MODE GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GL_TEXTURE_MIN_LOD GL_TEXTURE_MAX_LOD GL_TEXTURE_WRAP_R GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_BORDER_COLOR]
+Parameter:pname: [GL_TEXTURE_COMPARE_FUNC GL_TEXTURE_COMPARE_MODE GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GL_TEXTURE_MIN_LOD GL_TEXTURE_MAX_LOD GL_TEXTURE_WRAP_R GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_BORDER_COLOR GL_TEXTURE_MAX_ANISOTROPY_EXT]
===================================== glSamplerParameterIuiv
-Parameter:pname: [GL_TEXTURE_COMPARE_FUNC GL_TEXTURE_COMPARE_MODE GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GL_TEXTURE_MIN_LOD GL_TEXTURE_MAX_LOD GL_TEXTURE_WRAP_R GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_BORDER_COLOR]
+Parameter:pname: [GL_TEXTURE_COMPARE_FUNC GL_TEXTURE_COMPARE_MODE GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GL_TEXTURE_MIN_LOD GL_TEXTURE_MAX_LOD GL_TEXTURE_WRAP_R GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_BORDER_COLOR GL_TEXTURE_MAX_ANISOTROPY_EXT]
===================================== glSamplerParameterIuivEXT
-Parameter:pname: [GL_TEXTURE_COMPARE_FUNC GL_TEXTURE_COMPARE_MODE GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GL_TEXTURE_MIN_LOD GL_TEXTURE_MAX_LOD GL_TEXTURE_WRAP_R GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_BORDER_COLOR]
+Parameter:pname: [GL_TEXTURE_COMPARE_FUNC GL_TEXTURE_COMPARE_MODE GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GL_TEXTURE_MIN_LOD GL_TEXTURE_MAX_LOD GL_TEXTURE_WRAP_R GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_BORDER_COLOR GL_TEXTURE_MAX_ANISOTROPY_EXT]
===================================== glSamplerParameterIuivOES
-Parameter:pname: [GL_TEXTURE_COMPARE_FUNC GL_TEXTURE_COMPARE_MODE GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GL_TEXTURE_MIN_LOD GL_TEXTURE_MAX_LOD GL_TEXTURE_WRAP_R GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_BORDER_COLOR]
+Parameter:pname: [GL_TEXTURE_COMPARE_FUNC GL_TEXTURE_COMPARE_MODE GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GL_TEXTURE_MIN_LOD GL_TEXTURE_MAX_LOD GL_TEXTURE_WRAP_R GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_BORDER_COLOR GL_TEXTURE_MAX_ANISOTROPY_EXT]
===================================== glSamplerParameterf
-Parameter:pname: [GL_TEXTURE_COMPARE_FUNC GL_TEXTURE_COMPARE_MODE GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GL_TEXTURE_MIN_LOD GL_TEXTURE_MAX_LOD GL_TEXTURE_WRAP_R GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_BORDER_COLOR]
+Parameter:pname: [GL_TEXTURE_COMPARE_FUNC GL_TEXTURE_COMPARE_MODE GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GL_TEXTURE_MIN_LOD GL_TEXTURE_MAX_LOD GL_TEXTURE_WRAP_R GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_BORDER_COLOR GL_TEXTURE_MAX_ANISOTROPY_EXT]
===================================== glSamplerParameterfv
-Parameter:pname: [GL_TEXTURE_COMPARE_FUNC GL_TEXTURE_COMPARE_MODE GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GL_TEXTURE_MIN_LOD GL_TEXTURE_MAX_LOD GL_TEXTURE_WRAP_R GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_BORDER_COLOR]
+Parameter:pname: [GL_TEXTURE_COMPARE_FUNC GL_TEXTURE_COMPARE_MODE GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GL_TEXTURE_MIN_LOD GL_TEXTURE_MAX_LOD GL_TEXTURE_WRAP_R GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_BORDER_COLOR GL_TEXTURE_MAX_ANISOTROPY_EXT]
===================================== glSamplerParameteri
-Parameter:pname: [GL_TEXTURE_COMPARE_FUNC GL_TEXTURE_COMPARE_MODE GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GL_TEXTURE_MIN_LOD GL_TEXTURE_MAX_LOD GL_TEXTURE_WRAP_R GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_BORDER_COLOR]
+Parameter:pname: [GL_TEXTURE_COMPARE_FUNC GL_TEXTURE_COMPARE_MODE GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GL_TEXTURE_MIN_LOD GL_TEXTURE_MAX_LOD GL_TEXTURE_WRAP_R GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_BORDER_COLOR GL_TEXTURE_MAX_ANISOTROPY_EXT]
===================================== glSamplerParameteriv
-Parameter:pname: [GL_TEXTURE_COMPARE_FUNC GL_TEXTURE_COMPARE_MODE GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GL_TEXTURE_MIN_LOD GL_TEXTURE_MAX_LOD GL_TEXTURE_WRAP_R GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_BORDER_COLOR]
+Parameter:pname: [GL_TEXTURE_COMPARE_FUNC GL_TEXTURE_COMPARE_MODE GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GL_TEXTURE_MIN_LOD GL_TEXTURE_MAX_LOD GL_TEXTURE_WRAP_R GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_BORDER_COLOR GL_TEXTURE_MAX_ANISOTROPY_EXT]
===================================== glShaderBinary
Parameter:shaders.Range(): [Observation(Read)]
Parameter:binary.Range(): [Observation(Read)]
diff --git a/gapid/gfxapi/gles/snippets_embed.go b/gapid/gfxapi/gles/snippets_embed.go
index 116a1ba..8752a7b 100644
--- a/gapid/gfxapi/gles/snippets_embed.go
+++ b/gapid/gfxapi/gles/snippets_embed.go
@@ -16,7 +16,7 @@
const snippets_base64_file = `snippets.base64`
const snippets_base64_utf8 = true
-const snippets_base64 = `AwhzbmlwcGV0cwxBdG9tU25pcHBldHMAArAGAxNDR1NHZXRTdXJmYWNlQm91bmRzAQMFCHNuaXBwZXRzDE9ic2VydmF0aW9ucwACAwZQBQcIc25pcHBldHMIcGFydFBhdGgAAgNQBwkIc25pcHBldHMJZmllbGRQYXRoAAIDsAkLCHNuaXBwZXRzDHJlbGF0aXZlUGF0aAABsBNDR1NHZXRTdXJmYWNlQm91bmRzBmJvdW5kcwQBAgIOZWdsTWFrZUN1cnJlbnQAAhtlZ2xTd2FwQnVmZmVyc1dpdGhEYW1hZ2VLSFIBCwQNBg8IEQobZWdsU3dhcEJ1ZmZlcnNXaXRoRGFtYWdlS0hSBXJlY3RzBAEAAg9nbEFjdGl2ZVRleHR1cmUBEw0Ic25pcHBldHMGTGFiZWxzAAIDBrAVCBcKD2dsQWN0aXZlVGV4dHVyZQR1bml0IAtHTF9URVhUVVJFMAtHTF9URVhUVVJFMQxHTF9URVhUVVJFMTAMR0xfVEVYVFVSRTExDEdMX1RFWFRVUkUxMgxHTF9URVhUVVJFMTMMR0xfVEVYVFVSRTE0DEdMX1RFWFRVUkUxNQxHTF9URVhUVVJFMTYMR0xfVEVYVFVSRTE3DEdMX1RFWFRVUkUxOAxHTF9URVhUVVJFMTkLR0xfVEVYVFVSRTIMR0xfVEVYVFVSRTIwDEdMX1RFWFRVUkUyMQxHTF9URVhUVVJFMjIMR0xfVEVYVFVSRTIzDEdMX1RFWFRVUkUyNAxHTF9URVhUVVJFMjUMR0xfVEVYVFVSRTI2DEdMX1RFWFRVUkUyNwxHTF9URVhUVVJFMjgMR0xfVEVYVFVSRTI5C0dMX1RFWFRVUkUzDEdMX1RFWFRVUkUzMAxHTF9URVhUVVJFMzELR0xfVEVYVFVSRTQLR0xfVEVYVFVSRTULR0xfVEVYVFVSRTYLR0xfVEVYVFVSRTcLR0xfVEVYVFVSRTgLR0xfVEVYVFVSRTkCDGdsQmVnaW5RdWVyeQEZDBsIHQoMZ2xCZWdpblF1ZXJ5BnRhcmdldAQVR0xfQU5ZX1NBTVBMRVNfUEFTU0VEIkdMX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkUoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1BSSU1JVElWRVNfV1JJVFRFThdHTF9QUklNSVRJVkVTX0dFTkVSQVRFRAIYZ2xCZWdpblRyYW5zZm9ybUZlZWRiYWNrAR8MIQgjChhnbEJlZ2luVHJhbnNmb3JtRmVlZGJhY2sNcHJpbWl0aXZlTW9kZQMIR0xfTElORVMJR0xfUE9JTlRTDEdMX1RSSUFOR0xFUwIMZ2xCaW5kQnVmZmVyASUMJwgpCgxnbEJpbmRCdWZmZXIGdGFyZ2V0DQ9HTF9BUlJBWV9CVUZGRVIXR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVITR0xfQ09QWV9SRUFEX0JVRkZFUhRHTF9DT1BZX1dSSVRFX0JVRkZFUhRHTF9QSVhFTF9QQUNLX0JVRkZFUhZHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSHEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIRR0xfVU5JRk9STV9CVUZGRVIYR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSG0dMX0RJU1BBVENIX0lORElSRUNUX0JVRkZFUhdHTF9EUkFXX0lORElSRUNUX0JVRkZFUhhHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVIRR0xfVEVYVFVSRV9CVUZGRVICEGdsQmluZEJ1ZmZlckJhc2UBKwwtCC8KEGdsQmluZEJ1ZmZlckJhc2UGdGFyZ2V0BBxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSEUdMX1VOSUZPUk1fQlVGRkVSGEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUhhHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVICEWdsQmluZEJ1ZmZlclJhbmdlATEMMwg1ChFnbEJpbmRCdWZmZXJSYW5nZQZ0YXJnZXQEHEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIRR0xfVU5JRk9STV9CVUZGRVIYR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSGEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUgIRZ2xCaW5kRnJhbWVidWZmZXIBNww5CDsKEWdsQmluZEZyYW1lYnVmZmVyBnRhcmdldAMTR0xfUkVBRF9GUkFNRUJVRkZFUhNHTF9EUkFXX0ZSQU1FQlVGRkVSDkdMX0ZSQU1FQlVGRkVSAhJnbEJpbmRJbWFnZVRleHR1cmUCPQw/CEEKEmdsQmluZEltYWdlVGV4dHVyZQZhY2Nlc3MDDEdMX1JFQURfT05MWQ1HTF9SRUFEX1dSSVRFDUdMX1dSSVRFX09OTFlDDEUIRwoSZ2xCaW5kSW1hZ2VUZXh0dXJlBmZvcm1hdA0HR0xfUjMyRgdHTF9SMzJJCEdMX1IzMlVJCkdMX1JHQkExNkYKR0xfUkdCQTE2SQtHTF9SR0JBMTZVSQpHTF9SR0JBMzJGCkdMX1JHQkEzMkkLR0xfUkdCQTMyVUkIR0xfUkdCQTgJR0xfUkdCQThJCkdMX1JHQkE4VUkOR0xfUkdCQThfU05PUk0CEmdsQmluZFJlbmRlcmJ1ZmZlcgFJDEsITQoSZ2xCaW5kUmVuZGVyYnVmZmVyBnRhcmdldAEPR0xfUkVOREVSQlVGRkVSAg1nbEJpbmRTYW1wbGVyAU8MUQhTCg1nbEJpbmRTYW1wbGVyBWluZGV4AQtHTF9URVhUVVJFMAINZ2xCaW5kVGV4dHVyZQFVDFcIWQoNZ2xCaW5kVGV4dHVyZQZ0YXJnZXQJF0dMX1RFWFRVUkVfRVhURVJOQUxfT0VTDUdMX1RFWFRVUkVfMkQTR0xfVEVYVFVSRV8yRF9BUlJBWRlHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFH0dMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVkNR0xfVEVYVFVSRV8zRBFHTF9URVhUVVJFX0JVRkZFUhNHTF9URVhUVVJFX0NVQkVfTUFQGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVkCF2dsQmluZFRyYW5zZm9ybUZlZWRiYWNrAVsMXQhfChdnbEJpbmRUcmFuc2Zvcm1GZWVkYmFjawZ0YXJnZXQBFUdMX1RSQU5TRk9STV9GRUVEQkFDSwIPZ2xCbGVuZEVxdWF0aW9uAWEMYwhlCg9nbEJsZW5kRXF1YXRpb24IZXF1YXRpb24FC0dMX0ZVTkNfQUREGEdMX0ZVTkNfUkVWRVJTRV9TVUJUUkFDVBBHTF9GVU5DX1NVQlRSQUNUBkdMX01BWAZHTF9NSU4CF2dsQmxlbmRFcXVhdGlvblNlcGFyYXRlAmcMaQhrChdnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZQNyZ2IFC0dMX0ZVTkNfQUREGEdMX0ZVTkNfUkVWRVJTRV9TVUJUUkFDVBBHTF9GVU5DX1NVQlRSQUNUBkdMX01BWAZHTF9NSU5tDG8IcQoXZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUFYWxwaGEFC0dMX0ZVTkNfQUREGEdMX0ZVTkNfUkVWRVJTRV9TVUJUUkFDVBBHTF9GVU5DX1NVQlRSQUNUBkdMX01BWAZHTF9NSU4CGGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlaQJzDHUIdwoYZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVpB21vZGVSR0IFC0dMX0ZVTkNfQUREGEdMX0ZVTkNfUkVWRVJTRV9TVUJUUkFDVBBHTF9GVU5DX1NVQlRSQUNUBkdMX01BWAZHTF9NSU55DHsIfQoYZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVpCW1vZGVBbHBoYQULR0xfRlVOQ19BREQYR0xfRlVOQ19SRVZFUlNFX1NVQlRSQUNUEEdMX0ZVTkNfU1VCVFJBQ1QGR0xfTUFYBkdMX01JTgIbZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVpRVhUAn8MgIEIgIMKG2dsQmxlbmRFcXVhdGlvblNlcGFyYXRlaUVYVAdtb2RlUkdCBQtHTF9GVU5DX0FERBhHTF9GVU5DX1JFVkVSU0VfU1VCVFJBQ1QQR0xfRlVOQ19TVUJUUkFDVAZHTF9NQVgGR0xfTUlOgIUMgIcIgIkKG2dsQmxlbmRFcXVhdGlvblNlcGFyYXRlaUVYVAltb2RlQWxwaGEFC0dMX0ZVTkNfQUREGEdMX0ZVTkNfUkVWRVJTRV9TVUJUUkFDVBBHTF9GVU5DX1NVQlRSQUNUBkdMX01BWAZHTF9NSU4CG2dsQmxlbmRFcXVhdGlvblNlcGFyYXRlaU9FUwKAiwyAjQiAjwobZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVpT0VTB21vZGVSR0IFC0dMX0ZVTkNfQUREGEdMX0ZVTkNfUkVWRVJTRV9TVUJUUkFDVBBHTF9GVU5DX1NVQlRSQUNUBkdMX01BWAZHTF9NSU6AkQyAkwiAlQobZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVpT0VTCW1vZGVBbHBoYQULR0xfRlVOQ19BREQYR0xfRlVOQ19SRVZFUlNFX1NVQlRSQUNUEEdMX0ZVTkNfU1VCVFJBQ1QGR0xfTUFYBkdMX01JTgIQZ2xCbGVuZEVxdWF0aW9uaQGAlwyAmQiAmwoQZ2xCbGVuZEVxdWF0aW9uaQRtb2RlBQtHTF9GVU5DX0FERBhHTF9GVU5DX1JFVkVSU0VfU1VCVFJBQ1QQR0xfRlVOQ19TVUJUUkFDVAZHTF9NQVgGR0xfTUlOAhNnbEJsZW5kRXF1YXRpb25pRVhUAYCdDICfCIChChNnbEJsZW5kRXF1YXRpb25pRVhUBG1vZGUFC0dMX0ZVTkNfQUREGEdMX0ZVTkNfUkVWRVJTRV9TVUJUUkFDVBBHTF9GVU5DX1NVQlRSQUNUBkdMX01BWAZHTF9NSU4CE2dsQmxlbmRFcXVhdGlvbmlPRVMBgKMMgKUIgKcKE2dsQmxlbmRFcXVhdGlvbmlPRVMEbW9kZQULR0xfRlVOQ19BREQYR0xfRlVOQ19SRVZFUlNFX1NVQlRSQUNUEEdMX0ZVTkNfU1VCVFJBQ1QGR0xfTUFYBkdMX01JTgILZ2xCbGVuZEZ1bmMCgKkMgKsIgK0KC2dsQmxlbmRGdW5jCnNyY19mYWN0b3IPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPgK8MgLEIgLMKC2dsQmxlbmRGdW5jCmRzdF9mYWN0b3IPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPAhNnbEJsZW5kRnVuY1NlcGFyYXRlBIC1DIC3CIC5ChNnbEJsZW5kRnVuY1NlcGFyYXRlDnNyY19mYWN0b3JfcmdiDxFHTF9DT05TVEFOVF9BTFBIQRFHTF9DT05TVEFOVF9DT0xPUgxHTF9EU1RfQUxQSEEMR0xfRFNUX0NPTE9SBkdMX09ORRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEbR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SFkdMX09ORV9NSU5VU19EU1RfQUxQSEEWR0xfT05FX01JTlVTX0RTVF9DT0xPUhZHTF9PTkVfTUlOVVNfU1JDX0FMUEhBFkdMX09ORV9NSU5VU19TUkNfQ09MT1IMR0xfU1JDX0FMUEhBFUdMX1NSQ19BTFBIQV9TQVRVUkFURQxHTF9TUkNfQ09MT1IHR0xfWkVST4C7DIC9CIC/ChNnbEJsZW5kRnVuY1NlcGFyYXRlDmRzdF9mYWN0b3JfcmdiDxFHTF9DT05TVEFOVF9BTFBIQRFHTF9DT05TVEFOVF9DT0xPUgxHTF9EU1RfQUxQSEEMR0xfRFNUX0NPTE9SBkdMX09ORRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEbR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SFkdMX09ORV9NSU5VU19EU1RfQUxQSEEWR0xfT05FX01JTlVTX0RTVF9DT0xPUhZHTF9PTkVfTUlOVVNfU1JDX0FMUEhBFkdMX09ORV9NSU5VU19TUkNfQ09MT1IMR0xfU1JDX0FMUEhBFUdMX1NSQ19BTFBIQV9TQVRVUkFURQxHTF9TUkNfQ09MT1IHR0xfWkVST4DBDIDDCIDFChNnbEJsZW5kRnVuY1NlcGFyYXRlEHNyY19mYWN0b3JfYWxwaGEPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPgMcMgMkIgMsKE2dsQmxlbmRGdW5jU2VwYXJhdGUQZHN0X2ZhY3Rvcl9hbHBoYQ8RR0xfQ09OU1RBTlRfQUxQSEERR0xfQ09OU1RBTlRfQ09MT1IMR0xfRFNUX0FMUEhBDEdMX0RTVF9DT0xPUgZHTF9PTkUbR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBG0dMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUhZHTF9PTkVfTUlOVVNfRFNUX0FMUEhBFkdMX09ORV9NSU5VU19EU1RfQ09MT1IWR0xfT05FX01JTlVTX1NSQ19BTFBIQRZHTF9PTkVfTUlOVVNfU1JDX0NPTE9SDEdMX1NSQ19BTFBIQRVHTF9TUkNfQUxQSEFfU0FUVVJBVEUMR0xfU1JDX0NPTE9SB0dMX1pFUk8CFGdsQmxlbmRGdW5jU2VwYXJhdGVpBIDNDIDPCIDRChRnbEJsZW5kRnVuY1NlcGFyYXRlaQZzcmNSR0IPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPgNMMgNUIgNcKFGdsQmxlbmRGdW5jU2VwYXJhdGVpBmRzdFJHQg8RR0xfQ09OU1RBTlRfQUxQSEERR0xfQ09OU1RBTlRfQ09MT1IMR0xfRFNUX0FMUEhBDEdMX0RTVF9DT0xPUgZHTF9PTkUbR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBG0dMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUhZHTF9PTkVfTUlOVVNfRFNUX0FMUEhBFkdMX09ORV9NSU5VU19EU1RfQ09MT1IWR0xfT05FX01JTlVTX1NSQ19BTFBIQRZHTF9PTkVfTUlOVVNfU1JDX0NPTE9SDEdMX1NSQ19BTFBIQRVHTF9TUkNfQUxQSEFfU0FUVVJBVEUMR0xfU1JDX0NPTE9SB0dMX1pFUk+A2QyA2wiA3QoUZ2xCbGVuZEZ1bmNTZXBhcmF0ZWkIc3JjQWxwaGEPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPgN8MgOEIgOMKFGdsQmxlbmRGdW5jU2VwYXJhdGVpCGRzdEFscGhhDxFHTF9DT05TVEFOVF9BTFBIQRFHTF9DT05TVEFOVF9DT0xPUgxHTF9EU1RfQUxQSEEMR0xfRFNUX0NPTE9SBkdMX09ORRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEbR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SFkdMX09ORV9NSU5VU19EU1RfQUxQSEEWR0xfT05FX01JTlVTX0RTVF9DT0xPUhZHTF9PTkVfTUlOVVNfU1JDX0FMUEhBFkdMX09ORV9NSU5VU19TUkNfQ09MT1IMR0xfU1JDX0FMUEhBFUdMX1NSQ19BTFBIQV9TQVRVUkFURQxHTF9TUkNfQ09MT1IHR0xfWkVSTwIXZ2xCbGVuZEZ1bmNTZXBhcmF0ZWlFWFQEgOUMgOcIgOkKF2dsQmxlbmRGdW5jU2VwYXJhdGVpRVhUBnNyY1JHQg8RR0xfQ09OU1RBTlRfQUxQSEERR0xfQ09OU1RBTlRfQ09MT1IMR0xfRFNUX0FMUEhBDEdMX0RTVF9DT0xPUgZHTF9PTkUbR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBG0dMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUhZHTF9PTkVfTUlOVVNfRFNUX0FMUEhBFkdMX09ORV9NSU5VU19EU1RfQ09MT1IWR0xfT05FX01JTlVTX1NSQ19BTFBIQRZHTF9PTkVfTUlOVVNfU1JDX0NPTE9SDEdMX1NSQ19BTFBIQRVHTF9TUkNfQUxQSEFfU0FUVVJBVEUMR0xfU1JDX0NPTE9SB0dMX1pFUk+A6wyA7QiA7woXZ2xCbGVuZEZ1bmNTZXBhcmF0ZWlFWFQGZHN0UkdCDxFHTF9DT05TVEFOVF9BTFBIQRFHTF9DT05TVEFOVF9DT0xPUgxHTF9EU1RfQUxQSEEMR0xfRFNUX0NPTE9SBkdMX09ORRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEbR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SFkdMX09ORV9NSU5VU19EU1RfQUxQSEEWR0xfT05FX01JTlVTX0RTVF9DT0xPUhZHTF9PTkVfTUlOVVNfU1JDX0FMUEhBFkdMX09ORV9NSU5VU19TUkNfQ09MT1IMR0xfU1JDX0FMUEhBFUdMX1NSQ19BTFBIQV9TQVRVUkFURQxHTF9TUkNfQ09MT1IHR0xfWkVST4DxDIDzCID1ChdnbEJsZW5kRnVuY1NlcGFyYXRlaUVYVAhzcmNBbHBoYQ8RR0xfQ09OU1RBTlRfQUxQSEERR0xfQ09OU1RBTlRfQ09MT1IMR0xfRFNUX0FMUEhBDEdMX0RTVF9DT0xPUgZHTF9PTkUbR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBG0dMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUhZHTF9PTkVfTUlOVVNfRFNUX0FMUEhBFkdMX09ORV9NSU5VU19EU1RfQ09MT1IWR0xfT05FX01JTlVTX1NSQ19BTFBIQRZHTF9PTkVfTUlOVVNfU1JDX0NPTE9SDEdMX1NSQ19BTFBIQRVHTF9TUkNfQUxQSEFfU0FUVVJBVEUMR0xfU1JDX0NPTE9SB0dMX1pFUk+A9wyA+QiA+woXZ2xCbGVuZEZ1bmNTZXBhcmF0ZWlFWFQIZHN0QWxwaGEPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPAhdnbEJsZW5kRnVuY1NlcGFyYXRlaU9FUwSA/QyA/wiBAQoXZ2xCbGVuZEZ1bmNTZXBhcmF0ZWlPRVMGc3JjUkdCDxFHTF9DT05TVEFOVF9BTFBIQRFHTF9DT05TVEFOVF9DT0xPUgxHTF9EU1RfQUxQSEEMR0xfRFNUX0NPTE9SBkdMX09ORRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEbR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SFkdMX09ORV9NSU5VU19EU1RfQUxQSEEWR0xfT05FX01JTlVTX0RTVF9DT0xPUhZHTF9PTkVfTUlOVVNfU1JDX0FMUEhBFkdMX09ORV9NSU5VU19TUkNfQ09MT1IMR0xfU1JDX0FMUEhBFUdMX1NSQ19BTFBIQV9TQVRVUkFURQxHTF9TUkNfQ09MT1IHR0xfWkVST4EDDIEFCIEHChdnbEJsZW5kRnVuY1NlcGFyYXRlaU9FUwZkc3RSR0IPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPgQkMgQsIgQ0KF2dsQmxlbmRGdW5jU2VwYXJhdGVpT0VTCHNyY0FscGhhDxFHTF9DT05TVEFOVF9BTFBIQRFHTF9DT05TVEFOVF9DT0xPUgxHTF9EU1RfQUxQSEEMR0xfRFNUX0NPTE9SBkdMX09ORRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEbR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SFkdMX09ORV9NSU5VU19EU1RfQUxQSEEWR0xfT05FX01JTlVTX0RTVF9DT0xPUhZHTF9PTkVfTUlOVVNfU1JDX0FMUEhBFkdMX09ORV9NSU5VU19TUkNfQ09MT1IMR0xfU1JDX0FMUEhBFUdMX1NSQ19BTFBIQV9TQVRVUkFURQxHTF9TUkNfQ09MT1IHR0xfWkVST4EPDIERCIETChdnbEJsZW5kRnVuY1NlcGFyYXRlaU9FUwhkc3RBbHBoYQ8RR0xfQ09OU1RBTlRfQUxQSEERR0xfQ09OU1RBTlRfQ09MT1IMR0xfRFNUX0FMUEhBDEdMX0RTVF9DT0xPUgZHTF9PTkUbR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBG0dMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUhZHTF9PTkVfTUlOVVNfRFNUX0FMUEhBFkdMX09ORV9NSU5VU19EU1RfQ09MT1IWR0xfT05FX01JTlVTX1NSQ19BTFBIQRZHTF9PTkVfTUlOVVNfU1JDX0NPTE9SDEdMX1NSQ19BTFBIQRVHTF9TUkNfQUxQSEFfU0FUVVJBVEUMR0xfU1JDX0NPTE9SB0dMX1pFUk8CDGdsQmxlbmRGdW5jaQKBFQyBFwiBGQoMZ2xCbGVuZEZ1bmNpA3NyYw8RR0xfQ09OU1RBTlRfQUxQSEERR0xfQ09OU1RBTlRfQ09MT1IMR0xfRFNUX0FMUEhBDEdMX0RTVF9DT0xPUgZHTF9PTkUbR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBG0dMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUhZHTF9PTkVfTUlOVVNfRFNUX0FMUEhBFkdMX09ORV9NSU5VU19EU1RfQ09MT1IWR0xfT05FX01JTlVTX1NSQ19BTFBIQRZHTF9PTkVfTUlOVVNfU1JDX0NPTE9SDEdMX1NSQ19BTFBIQRVHTF9TUkNfQUxQSEFfU0FUVVJBVEUMR0xfU1JDX0NPTE9SB0dMX1pFUk+BGwyBHQiBHwoMZ2xCbGVuZEZ1bmNpA2RzdA8RR0xfQ09OU1RBTlRfQUxQSEERR0xfQ09OU1RBTlRfQ09MT1IMR0xfRFNUX0FMUEhBDEdMX0RTVF9DT0xPUgZHTF9PTkUbR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBG0dMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUhZHTF9PTkVfTUlOVVNfRFNUX0FMUEhBFkdMX09ORV9NSU5VU19EU1RfQ09MT1IWR0xfT05FX01JTlVTX1NSQ19BTFBIQRZHTF9PTkVfTUlOVVNfU1JDX0NPTE9SDEdMX1NSQ19BTFBIQRVHTF9TUkNfQUxQSEFfU0FUVVJBVEUMR0xfU1JDX0NPTE9SB0dMX1pFUk8CD2dsQmxlbmRGdW5jaUVYVAKBIQyBIwiBJQoPZ2xCbGVuZEZ1bmNpRVhUA3NyYw8RR0xfQ09OU1RBTlRfQUxQSEERR0xfQ09OU1RBTlRfQ09MT1IMR0xfRFNUX0FMUEhBDEdMX0RTVF9DT0xPUgZHTF9PTkUbR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBG0dMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUhZHTF9PTkVfTUlOVVNfRFNUX0FMUEhBFkdMX09ORV9NSU5VU19EU1RfQ09MT1IWR0xfT05FX01JTlVTX1NSQ19BTFBIQRZHTF9PTkVfTUlOVVNfU1JDX0NPTE9SDEdMX1NSQ19BTFBIQRVHTF9TUkNfQUxQSEFfU0FUVVJBVEUMR0xfU1JDX0NPTE9SB0dMX1pFUk+BJwyBKQiBKwoPZ2xCbGVuZEZ1bmNpRVhUA2RzdA8RR0xfQ09OU1RBTlRfQUxQSEERR0xfQ09OU1RBTlRfQ09MT1IMR0xfRFNUX0FMUEhBDEdMX0RTVF9DT0xPUgZHTF9PTkUbR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBG0dMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUhZHTF9PTkVfTUlOVVNfRFNUX0FMUEhBFkdMX09ORV9NSU5VU19EU1RfQ09MT1IWR0xfT05FX01JTlVTX1NSQ19BTFBIQRZHTF9PTkVfTUlOVVNfU1JDX0NPTE9SDEdMX1NSQ19BTFBIQRVHTF9TUkNfQUxQSEFfU0FUVVJBVEUMR0xfU1JDX0NPTE9SB0dMX1pFUk8CD2dsQmxlbmRGdW5jaU9FUwKBLQyBLwiBMQoPZ2xCbGVuZEZ1bmNpT0VTA3NyYw8RR0xfQ09OU1RBTlRfQUxQSEERR0xfQ09OU1RBTlRfQ09MT1IMR0xfRFNUX0FMUEhBDEdMX0RTVF9DT0xPUgZHTF9PTkUbR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBG0dMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUhZHTF9PTkVfTUlOVVNfRFNUX0FMUEhBFkdMX09ORV9NSU5VU19EU1RfQ09MT1IWR0xfT05FX01JTlVTX1NSQ19BTFBIQRZHTF9PTkVfTUlOVVNfU1JDX0NPTE9SDEdMX1NSQ19BTFBIQRVHTF9TUkNfQUxQSEFfU0FUVVJBVEUMR0xfU1JDX0NPTE9SB0dMX1pFUk+BMwyBNQiBNwoPZ2xCbGVuZEZ1bmNpT0VTA2RzdA8RR0xfQ09OU1RBTlRfQUxQSEERR0xfQ09OU1RBTlRfQ09MT1IMR0xfRFNUX0FMUEhBDEdMX0RTVF9DT0xPUgZHTF9PTkUbR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBG0dMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUhZHTF9PTkVfTUlOVVNfRFNUX0FMUEhBFkdMX09ORV9NSU5VU19EU1RfQ09MT1IWR0xfT05FX01JTlVTX1NSQ19BTFBIQRZHTF9PTkVfTUlOVVNfU1JDX0NPTE9SDEdMX1NSQ19BTFBIQRVHTF9TUkNfQUxQSEFfU0FUVVJBVEUMR0xfU1JDX0NPTE9SB0dMX1pFUk8CEWdsQmxpdEZyYW1lYnVmZmVyAoE5DIE7CIE9ChFnbEJsaXRGcmFtZWJ1ZmZlcgRtYXNrAxNHTF9DT0xPUl9CVUZGRVJfQklUE0dMX0RFUFRIX0JVRkZFUl9CSVQVR0xfU1RFTkNJTF9CVUZGRVJfQklUgT8MgUEIgUMKEWdsQmxpdEZyYW1lYnVmZmVyBmZpbHRlcgIJR0xfTElORUFSCkdMX05FQVJFU1QCE2dsQmxpdEZyYW1lYnVmZmVyTlYCgUUMgUcIgUkKE2dsQmxpdEZyYW1lYnVmZmVyTlYEbWFzawMTR0xfQ09MT1JfQlVGRkVSX0JJVBNHTF9ERVBUSF9CVUZGRVJfQklUFUdMX1NURU5DSUxfQlVGRkVSX0JJVIFLDIFNCIFPChNnbEJsaXRGcmFtZWJ1ZmZlck5WBmZpbHRlcgIJR0xfTElORUFSCkdMX05FQVJFU1QCDGdsQnVmZmVyRGF0YQKBUQyBUwiBVQoMZ2xCdWZmZXJEYXRhBnRhcmdldA0PR0xfQVJSQVlfQlVGRkVSF0dMX0VMRU1FTlRfQVJSQVlfQlVGRkVSE0dMX0NPUFlfUkVBRF9CVUZGRVIUR0xfQ09QWV9XUklURV9CVUZGRVIUR0xfUElYRUxfUEFDS19CVUZGRVIWR0xfUElYRUxfVU5QQUNLX0JVRkZFUhxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSEUdMX1VOSUZPUk1fQlVGRkVSGEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUhtHTF9ESVNQQVRDSF9JTkRJUkVDVF9CVUZGRVIXR0xfRFJBV19JTkRJUkVDVF9CVUZGRVIYR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSEUdMX1RFWFRVUkVfQlVGRkVSgVcMgVkIgVsKDGdsQnVmZmVyRGF0YQV1c2FnZQkPR0xfRFlOQU1JQ19EUkFXDkdMX1NUQVRJQ19EUkFXDkdMX1NUUkVBTV9EUkFXD0dMX0RZTkFNSUNfQ09QWQ9HTF9EWU5BTUlDX1JFQUQOR0xfU1RBVElDX0NPUFkOR0xfU1RBVElDX1JFQUQOR0xfU1RSRUFNX0NPUFkOR0xfU1RSRUFNX1JFQUQCD2dsQnVmZmVyU3ViRGF0YQKBXQyBXwiBYQoPZ2xCdWZmZXJTdWJEYXRhBnRhcmdldA0PR0xfQVJSQVlfQlVGRkVSF0dMX0VMRU1FTlRfQVJSQVlfQlVGRkVSE0dMX0NPUFlfUkVBRF9CVUZGRVIUR0xfQ09QWV9XUklURV9CVUZGRVIUR0xfUElYRUxfUEFDS19CVUZGRVIWR0xfUElYRUxfVU5QQUNLX0JVRkZFUhxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSEUdMX1VOSUZPUk1fQlVGRkVSGEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUhtHTF9ESVNQQVRDSF9JTkRJUkVDVF9CVUZGRVIXR0xfRFJBV19JTkRJUkVDVF9CVUZGRVIYR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSEUdMX1RFWFRVUkVfQlVGRkVSgWMEgWUGgWcIgWkKD2dsQnVmZmVyU3ViRGF0YQRkYXRhBAICAAIYZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzAYFrDIFtCIFvChhnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMGdGFyZ2V0Aw5HTF9GUkFNRUJVRkZFUhNHTF9EUkFXX0ZSQU1FQlVGRkVSE0dMX1JFQURfRlJBTUVCVUZGRVICB2dsQ2xlYXIBgXEMgXMIgXUKB2dsQ2xlYXIEbWFzawMTR0xfQ09MT1JfQlVGRkVSX0JJVBNHTF9ERVBUSF9CVUZGRVJfQklUFUdMX1NURU5DSUxfQlVGRkVSX0JJVAIPZ2xDbGVhckJ1ZmZlcmZpAYF3DIF5CIF7Cg9nbENsZWFyQnVmZmVyZmkGYnVmZmVyARBHTF9ERVBUSF9TVEVOQ0lMAg9nbENsZWFyQnVmZmVyZnYCgX0MgX8IgYEKD2dsQ2xlYXJCdWZmZXJmdgZidWZmZXICCEdMX0NPTE9SCEdMX0RFUFRIgYMEgYUGgYcIgYkKD2dsQ2xlYXJCdWZmZXJmdgV2YWx1ZQQBAAIPZ2xDbGVhckJ1ZmZlcml2AoGLDIGNCIGPCg9nbENsZWFyQnVmZmVyaXYGYnVmZmVyAghHTF9DT0xPUgpHTF9TVEVOQ0lMgZEEgZMGgZUIgZcKD2dsQ2xlYXJCdWZmZXJpdgV2YWx1ZQQBAAIQZ2xDbGVhckJ1ZmZlcnVpdgKBmQyBmwiBnQoQZ2xDbGVhckJ1ZmZlcnVpdgZidWZmZXIBCEdMX0NPTE9SgZ8EgaEGgaMIgaUKEGdsQ2xlYXJCdWZmZXJ1aXYFdmFsdWUEAQACEGdsQ2xpZW50V2FpdFN5bmMBgacMgakIgasKEGdsQ2xpZW50V2FpdFN5bmMJc3luY0ZsYWdzARpHTF9TWU5DX0ZMVVNIX0NPTU1BTkRTX0JJVAIVZ2xDbGllbnRXYWl0U3luY0FQUExFAYGtDIGvCIGxChVnbENsaWVudFdhaXRTeW5jQVBQTEUEZmxhZwEaR0xfU1lOQ19GTFVTSF9DT01NQU5EU19CSVQCFmdsQ29tcHJlc3NlZFRleEltYWdlMkQDgbMMgbUIgbcKFmdsQ29tcHJlc3NlZFRleEltYWdlMkQGdGFyZ2V0Bw1HTF9URVhUVVJFXzJEHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWB5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1keR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWB5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1keR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9agbkMgbsIgb0KFmdsQ29tcHJlc3NlZFRleEltYWdlMkQGZm9ybWF0LhVHTF9DT01QUkVTU0VEX1IxMV9FQUMWR0xfQ09NUFJFU1NFRF9SRzExX0VBQxdHTF9DT01QUkVTU0VEX1JHQjhfRVRDMitHTF9DT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyHEdMX0NPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMcR0xfQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQx1HTF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQyNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQxhHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzIsR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIOR0xfQVRDX1JHQl9BTUQeR0xfQVRDX1JHQkFfRVhQTElDSVRfQUxQSEFfQU1EIkdMX0FUQ19SR0JBX0lOVEVSUE9MQVRFRF9BTFBIQV9BTUQQR0xfRVRDMV9SR0I4X09FUx1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMBxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDYcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg4JUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTAkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NiRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDglR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4H0dMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFSBvwSBwQaBwwiBxQoWZ2xDb21wcmVzc2VkVGV4SW1hZ2UyRARkYXRhBAEAAhZnbENvbXByZXNzZWRUZXhJbWFnZTNEA4HHDIHJCIHLChZnbENvbXByZXNzZWRUZXhJbWFnZTNEBnRhcmdldAMTR0xfVEVYVFVSRV8yRF9BUlJBWQ1HTF9URVhUVVJFXzNEGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVmBzQyBzwiB0QoWZ2xDb21wcmVzc2VkVGV4SW1hZ2UzRA5pbnRlcm5hbGZvcm1hdCoVR0xfQ09NUFJFU1NFRF9SMTFfRUFDFkdMX0NPTVBSRVNTRURfUkcxMV9FQUMXR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIrR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMhxHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDHEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMdR0xfQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUMjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMYR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyLEdMX0NPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwHEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDUcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NhxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4HUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyG0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzR4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDglR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMCRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDUkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTIjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDgfR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVIHTBIHVBoHXCIHZChZnbENvbXByZXNzZWRUZXhJbWFnZTNEBGRhdGEEAQACGWdsQ29tcHJlc3NlZFRleEltYWdlM0RPRVMDgdsMgd0Igd8KGWdsQ29tcHJlc3NlZFRleEltYWdlM0RPRVMGdGFyZ2V0AxNHTF9URVhUVVJFXzJEX0FSUkFZDUdMX1RFWFRVUkVfM0QZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWYHhDIHjCIHlChlnbENvbXByZXNzZWRUZXhJbWFnZTNET0VTDmludGVybmFsZm9ybWF0KhVHTF9DT01QUkVTU0VEX1IxMV9FQUMWR0xfQ09NUFJFU1NFRF9SRzExX0VBQxdHTF9DT01QUkVTU0VEX1JHQjhfRVRDMitHTF9DT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyHEdMX0NPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMcR0xfQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQx1HTF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQyNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQxhHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzIsR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTAcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NRxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDgdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTAdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTIbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4OCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwJEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NSRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDYkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4JUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTAlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OB9HTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUgecEgekGgesIge0KGWdsQ29tcHJlc3NlZFRleEltYWdlM0RPRVMEZGF0YQQBAAIZZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRAOB7wyB8QiB8woZZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRAZ0YXJnZXQHDUdMX1RFWFRVUkVfMkQeR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWR5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1oeR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWR5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1qB9QyB9wiB+QoZZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRAZmb3JtYXQrFUdMX0NPTVBSRVNTRURfUjExX0VBQxZHTF9DT01QUkVTU0VEX1JHMTFfRUFDF0dMX0NPTVBSRVNTRURfUkdCOF9FVEMyK0dMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIcR0xfQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQxxHTF9DT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDHUdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDGEdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMixHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMh1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMBxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDYcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg4JUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTAkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NiRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDglR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4EEdMX0VUQzFfUkdCOF9PRVMfR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVIH7BIH9BoH/CIIBChlnbENvbXByZXNzZWRUZXhTdWJJbWFnZTJEBGRhdGEEAQACGWdsQ29tcHJlc3NlZFRleFN1YkltYWdlM0QDggMMggUIggcKGWdsQ29tcHJlc3NlZFRleFN1YkltYWdlM0QGdGFyZ2V0AxNHTF9URVhUVVJFXzJEX0FSUkFZDUdMX1RFWFRVUkVfM0QZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWYIJDIILCIINChlnbENvbXByZXNzZWRUZXhTdWJJbWFnZTNEBmZvcm1hdCoVR0xfQ09NUFJFU1NFRF9SMTFfRUFDFkdMX0NPTVBSRVNTRURfUkcxMV9FQUMXR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIrR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMhxHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDHEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMdR0xfQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUMjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMYR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyLEdMX0NPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwHEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDUcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NhxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4HUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyG0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzR4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDglR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMCRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDUkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTIjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDgfR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVIIPBIIRBoITCIIVChlnbENvbXByZXNzZWRUZXhTdWJJbWFnZTNEBGRhdGEEAQACHGdsQ29tcHJlc3NlZFRleFN1YkltYWdlM0RPRVMDghcMghkIghsKHGdsQ29tcHJlc3NlZFRleFN1YkltYWdlM0RPRVMGdGFyZ2V0AxNHTF9URVhUVVJFXzJEX0FSUkFZDUdMX1RFWFRVUkVfM0QZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWYIdDIIfCIIhChxnbENvbXByZXNzZWRUZXhTdWJJbWFnZTNET0VTBmZvcm1hdCoVR0xfQ09NUFJFU1NFRF9SMTFfRUFDFkdMX0NPTVBSRVNTRURfUkcxMV9FQUMXR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIrR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMhxHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDHEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMdR0xfQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUMjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMYR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyLEdMX0NPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwHEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDUcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NhxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4HUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyG0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzR4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDglR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMCRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDUkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTIjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDgfR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVIIjBIIlBoInCIIpChxnbENvbXByZXNzZWRUZXhTdWJJbWFnZTNET0VTBGRhdGEEAQACE2dsQ29weUJ1ZmZlclN1YkRhdGECgisMgi0Igi8KE2dsQ29weUJ1ZmZlclN1YkRhdGEKcmVhZFRhcmdldA0PR0xfQVJSQVlfQlVGRkVSF0dMX0VMRU1FTlRfQVJSQVlfQlVGRkVSE0dMX0NPUFlfUkVBRF9CVUZGRVIUR0xfQ09QWV9XUklURV9CVUZGRVIUR0xfUElYRUxfUEFDS19CVUZGRVIWR0xfUElYRUxfVU5QQUNLX0JVRkZFUhxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSEUdMX1VOSUZPUk1fQlVGRkVSGEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUhtHTF9ESVNQQVRDSF9JTkRJUkVDVF9CVUZGRVIXR0xfRFJBV19JTkRJUkVDVF9CVUZGRVIYR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSEUdMX1RFWFRVUkVfQlVGRkVSgjEMgjMIgjUKE2dsQ29weUJ1ZmZlclN1YkRhdGELd3JpdGVUYXJnZXQND0dMX0FSUkFZX0JVRkZFUhdHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUhNHTF9DT1BZX1JFQURfQlVGRkVSFEdMX0NPUFlfV1JJVEVfQlVGRkVSFEdMX1BJWEVMX1BBQ0tfQlVGRkVSFkdMX1BJWEVMX1VOUEFDS19CVUZGRVIcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUhFHTF9VTklGT1JNX0JVRkZFUhhHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVIbR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSF0dMX0RSQVdfSU5ESVJFQ1RfQlVGRkVSGEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUhFHTF9URVhUVVJFX0JVRkZFUgIVZ2xDb3B5QnVmZmVyU3ViRGF0YU5WAoI3DII5CII7ChVnbENvcHlCdWZmZXJTdWJEYXRhTlYKcmVhZFRhcmdldA0PR0xfQVJSQVlfQlVGRkVSF0dMX0VMRU1FTlRfQVJSQVlfQlVGRkVSE0dMX0NPUFlfUkVBRF9CVUZGRVIUR0xfQ09QWV9XUklURV9CVUZGRVIUR0xfUElYRUxfUEFDS19CVUZGRVIWR0xfUElYRUxfVU5QQUNLX0JVRkZFUhxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSEUdMX1VOSUZPUk1fQlVGRkVSGEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUhtHTF9ESVNQQVRDSF9JTkRJUkVDVF9CVUZGRVIXR0xfRFJBV19JTkRJUkVDVF9CVUZGRVIYR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSEUdMX1RFWFRVUkVfQlVGRkVSgj0Mgj8IgkEKFWdsQ29weUJ1ZmZlclN1YkRhdGFOVgt3cml0ZVRhcmdldA0PR0xfQVJSQVlfQlVGRkVSF0dMX0VMRU1FTlRfQVJSQVlfQlVGRkVSE0dMX0NPUFlfUkVBRF9CVUZGRVIUR0xfQ09QWV9XUklURV9CVUZGRVIUR0xfUElYRUxfUEFDS19CVUZGRVIWR0xfUElYRUxfVU5QQUNLX0JVRkZFUhxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSEUdMX1VOSUZPUk1fQlVGRkVSGEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUhtHTF9ESVNQQVRDSF9JTkRJUkVDVF9CVUZGRVIXR0xfRFJBV19JTkRJUkVDVF9CVUZGRVIYR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSEUdMX1RFWFRVUkVfQlVGRkVSAhJnbENvcHlJbWFnZVN1YkRhdGECgkMMgkUIgkcKEmdsQ29weUltYWdlU3ViRGF0YQlzcmNUYXJnZXQID0dMX1JFTkRFUkJVRkZFUg1HTF9URVhUVVJFXzJEE0dMX1RFWFRVUkVfMkRfQVJSQVkZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZDUdMX1RFWFRVUkVfM0QTR0xfVEVYVFVSRV9DVUJFX01BUBlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZgkkMgksIgk0KEmdsQ29weUltYWdlU3ViRGF0YQlkc3RUYXJnZXQID0dMX1JFTkRFUkJVRkZFUg1HTF9URVhUVVJFXzJEE0dMX1RFWFRVUkVfMkRfQVJSQVkZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZDUdMX1RFWFRVUkVfM0QTR0xfVEVYVFVSRV9DVUJFX01BUBlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZAhVnbENvcHlJbWFnZVN1YkRhdGFFWFQCgk8MglEIglMKFWdsQ29weUltYWdlU3ViRGF0YUVYVAlzcmNUYXJnZXQID0dMX1JFTkRFUkJVRkZFUg1HTF9URVhUVVJFXzJEE0dMX1RFWFRVUkVfMkRfQVJSQVkZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZDUdMX1RFWFRVUkVfM0QTR0xfVEVYVFVSRV9DVUJFX01BUBlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZglUMglcIglkKFWdsQ29weUltYWdlU3ViRGF0YUVYVAlkc3RUYXJnZXQID0dMX1JFTkRFUkJVRkZFUg1HTF9URVhUVVJFXzJEE0dMX1RFWFRVUkVfMkRfQVJSQVkZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZDUdMX1RFWFRVUkVfM0QTR0xfVEVYVFVSRV9DVUJFX01BUBlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZAhVnbENvcHlJbWFnZVN1YkRhdGFPRVMCglsMgl0Igl8KFWdsQ29weUltYWdlU3ViRGF0YU9FUwlzcmNUYXJnZXQID0dMX1JFTkRFUkJVRkZFUg1HTF9URVhUVVJFXzJEE0dMX1RFWFRVUkVfMkRfQVJSQVkZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZDUdMX1RFWFRVUkVfM0QTR0xfVEVYVFVSRV9DVUJFX01BUBlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZgmEMgmMIgmUKFWdsQ29weUltYWdlU3ViRGF0YU9FUwlkc3RUYXJnZXQID0dMX1JFTkRFUkJVRkZFUg1HTF9URVhUVVJFXzJEE0dMX1RFWFRVUkVfMkRfQVJSQVkZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZDUdMX1RFWFRVUkVfM0QTR0xfVEVYVFVSRV9DVUJFX01BUBlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZAhBnbENvcHlUZXhJbWFnZTJEAoJnDIJpCIJrChBnbENvcHlUZXhJbWFnZTJEBnRhcmdldAcNR0xfVEVYVFVSRV8yRB5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1geR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWh5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1geR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWoJtDIJvCIJxChBnbENvcHlUZXhJbWFnZTJEDmludGVybmFsZm9ybWF0IghHTF9BTFBIQQxHTF9MVU1JTkFOQ0USR0xfTFVNSU5BTkNFX0FMUEhBBkdMX1JHQgdHTF9SR0JBB0dMX1IxNkkIR0xfUjE2VUkHR0xfUjMySQhHTF9SMzJVSQVHTF9SOAZHTF9SOEkHR0xfUjhVSQhHTF9SRzE2SQlHTF9SRzE2VUkIR0xfUkczMkkJR0xfUkczMlVJBkdMX1JHOAdHTF9SRzhJCEdMX1JHOFVJC0dMX1JHQjEwX0EyDUdMX1JHQjEwX0EyVUkJR0xfUkdCNTY1CkdMX1JHQjVfQTEHR0xfUkdCOApHTF9SR0JBMTZJC0dMX1JHQkExNlVJCkdMX1JHQkEzMkkLR0xfUkdCQTMyVUkIR0xfUkdCQTQIR0xfUkdCQTgJR0xfUkdCQThJCkdMX1JHQkE4VUkIR0xfU1JHQjgPR0xfU1JHQjhfQUxQSEE4AhNnbENvcHlUZXhTdWJJbWFnZTJEAYJzDIJ1CIJ3ChNnbENvcHlUZXhTdWJJbWFnZTJEBnRhcmdldA8NR0xfVEVYVFVSRV8yRB5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1geR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWh5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1geR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWhdHTF9URVhUVVJFX0VYVEVSTkFMX09FUxNHTF9URVhUVVJFXzJEX0FSUkFZGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWQ1HTF9URVhUVVJFXzNEEUdMX1RFWFRVUkVfQlVGRkVSE0dMX1RFWFRVUkVfQ1VCRV9NQVAZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWQITZ2xDb3B5VGV4U3ViSW1hZ2UzRAGCeQyCewiCfQoTZ2xDb3B5VGV4U3ViSW1hZ2UzRAZ0YXJnZXQPE0dMX1RFWFRVUkVfMkRfQVJSQVkNR0xfVEVYVFVSRV8zRBlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZDUdMX1RFWFRVUkVfMkQeR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWR5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1oeR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWR5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1oXR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZEUdMX1RFWFRVUkVfQlVGRkVSE0dMX1RFWFRVUkVfQ1VCRV9NQVACFmdsQ29weVRleFN1YkltYWdlM0RPRVMBgn8MgoEIgoMKFmdsQ29weVRleFN1YkltYWdlM0RPRVMGdGFyZ2V0DxNHTF9URVhUVVJFXzJEX0FSUkFZDUdMX1RFWFRVUkVfM0QZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWQ1HTF9URVhUVVJFXzJEHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWB5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1keR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWB5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1keR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aF0dMX1RFWFRVUkVfRVhURVJOQUxfT0VTGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWRFHTF9URVhUVVJFX0JVRkZFUhNHTF9URVhUVVJFX0NVQkVfTUFQAg5nbENyZWF0ZVNoYWRlcgGChQyChwiCiQoOZ2xDcmVhdGVTaGFkZXIEdHlwZQYSR0xfRlJBR01FTlRfU0hBREVSEEdMX1ZFUlRFWF9TSEFERVIRR0xfQ09NUFVURV9TSEFERVISR0xfR0VPTUVUUllfU0hBREVSFkdMX1RFU1NfQ09OVFJPTF9TSEFERVIZR0xfVEVTU19FVkFMVUFUSU9OX1NIQURFUgIWZ2xDcmVhdGVTaGFkZXJQcm9ncmFtdgGCiwyCjQiCjwoWZ2xDcmVhdGVTaGFkZXJQcm9ncmFtdgR0eXBlBhFHTF9DT01QVVRFX1NIQURFUhJHTF9GUkFHTUVOVF9TSEFERVIQR0xfVkVSVEVYX1NIQURFUhJHTF9HRU9NRVRSWV9TSEFERVIWR0xfVEVTU19DT05UUk9MX1NIQURFUhlHTF9URVNTX0VWQUxVQVRJT05fU0hBREVSAgpnbEN1bGxGYWNlAYKRDIKTCIKVCgpnbEN1bGxGYWNlBG1vZGUDB0dMX0JBQ0sIR0xfRlJPTlQRR0xfRlJPTlRfQU5EX0JBQ0sCFWdsRGVidWdNZXNzYWdlQ29udHJvbASClwyCmQiCmwoVZ2xEZWJ1Z01lc3NhZ2VDb250cm9sBnNvdXJjZQcTR0xfREVCVUdfU09VUkNFX0FQSRtHTF9ERUJVR19TT1VSQ0VfQVBQTElDQVRJT04VR0xfREVCVUdfU09VUkNFX09USEVSH0dMX0RFQlVHX1NPVVJDRV9TSEFERVJfQ09NUElMRVIbR0xfREVCVUdfU09VUkNFX1RISVJEX1BBUlRZHUdMX0RFQlVHX1NPVVJDRV9XSU5ET1dfU1lTVEVNDEdMX0RPTlRfQ0FSRYKdDIKfCIKhChVnbERlYnVnTWVzc2FnZUNvbnRyb2wEdHlwZQohR0xfREVCVUdfVFlQRV9ERVBSRUNBVEVEX0JFSEFWSU9SE0dMX0RFQlVHX1RZUEVfRVJST1IUR0xfREVCVUdfVFlQRV9NQVJLRVITR0xfREVCVUdfVFlQRV9PVEhFUhlHTF9ERUJVR19UWVBFX1BFUkZPUk1BTkNFF0dMX0RFQlVHX1RZUEVfUE9QX0dST1VQGUdMX0RFQlVHX1RZUEVfUE9SVEFCSUxJVFkYR0xfREVCVUdfVFlQRV9QVVNIX0dST1VQIEdMX0RFQlVHX1RZUEVfVU5ERUZJTkVEX0JFSEFWSU9SDEdMX0RPTlRfQ0FSRYKjDIKlCIKnChVnbERlYnVnTWVzc2FnZUNvbnRyb2wIc2V2ZXJpdHkFFkdMX0RFQlVHX1NFVkVSSVRZX0hJR0gVR0xfREVCVUdfU0VWRVJJVFlfTE9XGEdMX0RFQlVHX1NFVkVSSVRZX01FRElVTR5HTF9ERUJVR19TRVZFUklUWV9OT1RJRklDQVRJT04MR0xfRE9OVF9DQVJFgqkEgqsGgq0Igq8KFWdsRGVidWdNZXNzYWdlQ29udHJvbANpZHMEAQACGGdsRGVidWdNZXNzYWdlQ29udHJvbEtIUgSCsQyCswiCtQoYZ2xEZWJ1Z01lc3NhZ2VDb250cm9sS0hSBnNvdXJjZQcTR0xfREVCVUdfU09VUkNFX0FQSRtHTF9ERUJVR19TT1VSQ0VfQVBQTElDQVRJT04VR0xfREVCVUdfU09VUkNFX09USEVSH0dMX0RFQlVHX1NPVVJDRV9TSEFERVJfQ09NUElMRVIbR0xfREVCVUdfU09VUkNFX1RISVJEX1BBUlRZHUdMX0RFQlVHX1NPVVJDRV9XSU5ET1dfU1lTVEVNDEdMX0RPTlRfQ0FSRYK3DIK5CIK7ChhnbERlYnVnTWVzc2FnZUNvbnRyb2xLSFIEdHlwZQohR0xfREVCVUdfVFlQRV9ERVBSRUNBVEVEX0JFSEFWSU9SE0dMX0RFQlVHX1RZUEVfRVJST1IUR0xfREVCVUdfVFlQRV9NQVJLRVITR0xfREVCVUdfVFlQRV9PVEhFUhlHTF9ERUJVR19UWVBFX1BFUkZPUk1BTkNFF0dMX0RFQlVHX1RZUEVfUE9QX0dST1VQGUdMX0RFQlVHX1RZUEVfUE9SVEFCSUxJVFkYR0xfREVCVUdfVFlQRV9QVVNIX0dST1VQIEdMX0RFQlVHX1RZUEVfVU5ERUZJTkVEX0JFSEFWSU9SDEdMX0RPTlRfQ0FSRYK9DIK/CILBChhnbERlYnVnTWVzc2FnZUNvbnRyb2xLSFIIc2V2ZXJpdHkFFkdMX0RFQlVHX1NFVkVSSVRZX0hJR0gVR0xfREVCVUdfU0VWRVJJVFlfTE9XGEdMX0RFQlVHX1NFVkVSSVRZX01FRElVTR5HTF9ERUJVR19TRVZFUklUWV9OT1RJRklDQVRJT04MR0xfRE9OVF9DQVJFgsMEgsUGgscIgskKGGdsRGVidWdNZXNzYWdlQ29udHJvbEtIUgNpZHMEAQACFGdsRGVidWdNZXNzYWdlSW5zZXJ0BILLDILNCILPChRnbERlYnVnTWVzc2FnZUluc2VydAZzb3VyY2UCG0dMX0RFQlVHX1NPVVJDRV9BUFBMSUNBVElPThtHTF9ERUJVR19TT1VSQ0VfVEhJUkRfUEFSVFmC0QyC0wiC1QoUZ2xEZWJ1Z01lc3NhZ2VJbnNlcnQEdHlwZQkhR0xfREVCVUdfVFlQRV9ERVBSRUNBVEVEX0JFSEFWSU9SE0dMX0RFQlVHX1RZUEVfRVJST1IUR0xfREVCVUdfVFlQRV9NQVJLRVITR0xfREVCVUdfVFlQRV9PVEhFUhlHTF9ERUJVR19UWVBFX1BFUkZPUk1BTkNFF0dMX0RFQlVHX1RZUEVfUE9QX0dST1VQGUdMX0RFQlVHX1RZUEVfUE9SVEFCSUxJVFkYR0xfREVCVUdfVFlQRV9QVVNIX0dST1VQIEdMX0RFQlVHX1RZUEVfVU5ERUZJTkVEX0JFSEFWSU9SgtcMgtkIgtsKFGdsRGVidWdNZXNzYWdlSW5zZXJ0CHNldmVyaXR5BBZHTF9ERUJVR19TRVZFUklUWV9ISUdIFUdMX0RFQlVHX1NFVkVSSVRZX0xPVxhHTF9ERUJVR19TRVZFUklUWV9NRURJVU0eR0xfREVCVUdfU0VWRVJJVFlfTk9USUZJQ0FUSU9Ogt0Egt8GguEIguMKFGdsRGVidWdNZXNzYWdlSW5zZXJ0B21lc3NhZ2UEAQACF2dsRGVidWdNZXNzYWdlSW5zZXJ0S0hSBILlDILnCILpChdnbERlYnVnTWVzc2FnZUluc2VydEtIUgZzb3VyY2UCG0dMX0RFQlVHX1NPVVJDRV9BUFBMSUNBVElPThtHTF9ERUJVR19TT1VSQ0VfVEhJUkRfUEFSVFmC6wyC7QiC7woXZ2xEZWJ1Z01lc3NhZ2VJbnNlcnRLSFIEdHlwZQkhR0xfREVCVUdfVFlQRV9ERVBSRUNBVEVEX0JFSEFWSU9SE0dMX0RFQlVHX1RZUEVfRVJST1IUR0xfREVCVUdfVFlQRV9NQVJLRVITR0xfREVCVUdfVFlQRV9PVEhFUhlHTF9ERUJVR19UWVBFX1BFUkZPUk1BTkNFF0dMX0RFQlVHX1RZUEVfUE9QX0dST1VQGUdMX0RFQlVHX1RZUEVfUE9SVEFCSUxJVFkYR0xfREVCVUdfVFlQRV9QVVNIX0dST1VQIEdMX0RFQlVHX1RZUEVfVU5ERUZJTkVEX0JFSEFWSU9SgvEMgvMIgvUKF2dsRGVidWdNZXNzYWdlSW5zZXJ0S0hSCHNldmVyaXR5BBZHTF9ERUJVR19TRVZFUklUWV9ISUdIFUdMX0RFQlVHX1NFVkVSSVRZX0xPVxhHTF9ERUJVR19TRVZFUklUWV9NRURJVU0eR0xfREVCVUdfU0VWRVJJVFlfTk9USUZJQ0FUSU9OgvcEgvkGgvsIgv0KF2dsRGVidWdNZXNzYWdlSW5zZXJ0S0hSB21lc3NhZ2UEAQACFGdsRGVsZXRlRnJhbWVidWZmZXJzAAIYZ2xEZWxldGVQcm9ncmFtUGlwZWxpbmVzAYL/BIMBBoMDCIMFChhnbERlbGV0ZVByb2dyYW1QaXBlbGluZXMJcGlwZWxpbmVzBAEAAgtnbERlcHRoRnVuYwGDBwyDCQiDCwoLZ2xEZXB0aEZ1bmMIZnVuY3Rpb24ICUdMX0FMV0FZUwhHTF9FUVVBTAlHTF9HRVFVQUwKR0xfR1JFQVRFUglHTF9MRVFVQUwHR0xfTEVTUwhHTF9ORVZFUgtHTF9OT1RFUVVBTAIJZ2xEaXNhYmxlAYMNDIMPCIMRCglnbERpc2FibGUKY2FwYWJpbGl0eRAIR0xfQkxFTkQMR0xfQ1VMTF9GQUNFDUdMX0RFUFRIX1RFU1QJR0xfRElUSEVSFkdMX1BPTFlHT05fT0ZGU0VUX0ZJTEwbR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFEkdMX1NBTVBMRV9DT1ZFUkFHRQ9HTF9TQ0lTU09SX1RFU1QPR0xfU1RFTkNJTF9URVNUIEdMX1BSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYFUdMX1JBU1RFUklaRVJfRElTQ0FSRA5HTF9TQU1QTEVfTUFTSw9HTF9ERUJVR19PVVRQVVQbR0xfREVCVUdfT1VUUFVUX1NZTkNIUk9OT1VTEkdMX0FMUEhBX1RFU1RfUUNPTRdHTF9GUkFNRUJVRkZFUl9TUkdCX0VYVAIaZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkAAgpnbERpc2FibGVpAYMTDIMVCIMXCgpnbERpc2FibGVpCmNhcGFiaWxpdHkQCEdMX0JMRU5EDEdMX0NVTExfRkFDRQ1HTF9ERVBUSF9URVNUCUdMX0RJVEhFUhZHTF9QT0xZR09OX09GRlNFVF9GSUxMG0dMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRRJHTF9TQU1QTEVfQ09WRVJBR0UPR0xfU0NJU1NPUl9URVNUD0dMX1NURU5DSUxfVEVTVCBHTF9QUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWBVHTF9SQVNURVJJWkVSX0RJU0NBUkQOR0xfU0FNUExFX01BU0sPR0xfREVCVUdfT1VUUFVUG0dMX0RFQlVHX09VVFBVVF9TWU5DSFJPTk9VUxJHTF9BTFBIQV9URVNUX1FDT00XR0xfRlJBTUVCVUZGRVJfU1JHQl9FWFQCDWdsRGlzYWJsZWlFWFQBgxkMgxsIgx0KDWdsRGlzYWJsZWlFWFQGdGFyZ2V0EAhHTF9CTEVORAxHTF9DVUxMX0ZBQ0UNR0xfREVQVEhfVEVTVAlHTF9ESVRIRVIWR0xfUE9MWUdPTl9PRkZTRVRfRklMTBtHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0USR0xfU0FNUExFX0NPVkVSQUdFD0dMX1NDSVNTT1JfVEVTVA9HTF9TVEVOQ0lMX1RFU1QgR0xfUFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgVR0xfUkFTVEVSSVpFUl9ESVNDQVJEDkdMX1NBTVBMRV9NQVNLD0dMX0RFQlVHX09VVFBVVBtHTF9ERUJVR19PVVRQVVRfU1lOQ0hST05PVVMSR0xfQUxQSEFfVEVTVF9RQ09NF0dMX0ZSQU1FQlVGRkVSX1NSR0JfRVhUAgxnbERpc2FibGVpTlYBgx8MgyEIgyMKDGdsRGlzYWJsZWlOVgZ0YXJnZXQQCEdMX0JMRU5EDEdMX0NVTExfRkFDRQ1HTF9ERVBUSF9URVNUCUdMX0RJVEhFUhZHTF9QT0xZR09OX09GRlNFVF9GSUxMG0dMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRRJHTF9TQU1QTEVfQ09WRVJBR0UPR0xfU0NJU1NPUl9URVNUD0dMX1NURU5DSUxfVEVTVCBHTF9QUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWBVHTF9SQVNURVJJWkVSX0RJU0NBUkQOR0xfU0FNUExFX01BU0sPR0xfREVCVUdfT1VUUFVUG0dMX0RFQlVHX09VVFBVVF9TWU5DSFJPTk9VUxJHTF9BTFBIQV9URVNUX1FDT00XR0xfRlJBTUVCVUZGRVJfU1JHQl9FWFQCDWdsRGlzYWJsZWlPRVMBgyUMgycIgykKDWdsRGlzYWJsZWlPRVMGdGFyZ2V0EAhHTF9CTEVORAxHTF9DVUxMX0ZBQ0UNR0xfREVQVEhfVEVTVAlHTF9ESVRIRVIWR0xfUE9MWUdPTl9PRkZTRVRfRklMTBtHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0USR0xfU0FNUExFX0NPVkVSQUdFD0dMX1NDSVNTT1JfVEVTVA9HTF9TVEVOQ0lMX1RFU1QgR0xfUFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgVR0xfUkFTVEVSSVpFUl9ESVNDQVJEDkdMX1NBTVBMRV9NQVNLD0dMX0RFQlVHX09VVFBVVBtHTF9ERUJVR19PVVRQVVRfU1lOQ0hST05PVVMSR0xfQUxQSEFfVEVTVF9RQ09NF0dMX0ZSQU1FQlVGRkVSX1NSR0JfRVhUAhdnbERpc2NhcmRGcmFtZWJ1ZmZlckVYVAKDKwyDLQiDLwoXZ2xEaXNjYXJkRnJhbWVidWZmZXJFWFQGdGFyZ2V0Aw5HTF9GUkFNRUJVRkZFUhNHTF9EUkFXX0ZSQU1FQlVGRkVSE0dMX1JFQURfRlJBTUVCVUZGRVKDMQyDMwaDNQaDNwiDOQoXZ2xEaXNjYXJkRnJhbWVidWZmZXJFWFQLYXR0YWNobWVudHMEAhYIR0xfQ09MT1IIR0xfREVQVEgKR0xfU1RFTkNJTBRHTF9DT0xPUl9BVFRBQ0hNRU5UMBRHTF9DT0xPUl9BVFRBQ0hNRU5UMRVHTF9DT0xPUl9BVFRBQ0hNRU5UMTAVR0xfQ09MT1JfQVRUQUNITUVOVDExFUdMX0NPTE9SX0FUVEFDSE1FTlQxMhVHTF9DT0xPUl9BVFRBQ0hNRU5UMTMVR0xfQ09MT1JfQVRUQUNITUVOVDE0FUdMX0NPTE9SX0FUVEFDSE1FTlQxNRRHTF9DT0xPUl9BVFRBQ0hNRU5UMhRHTF9DT0xPUl9BVFRBQ0hNRU5UMxRHTF9DT0xPUl9BVFRBQ0hNRU5UNBRHTF9DT0xPUl9BVFRBQ0hNRU5UNRRHTF9DT0xPUl9BVFRBQ0hNRU5UNhRHTF9DT0xPUl9BVFRBQ0hNRU5UNxRHTF9DT0xPUl9BVFRBQ0hNRU5UOBRHTF9DT0xPUl9BVFRBQ0hNRU5UORNHTF9ERVBUSF9BVFRBQ0hNRU5UG0dMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVBVHTF9TVEVOQ0lMX0FUVEFDSE1FTlQCDGdsRHJhd0FycmF5cwGDOwyDPQiDPwoMZ2xEcmF3QXJyYXlzCWRyYXdfbW9kZQwIR0xfTElORVMMR0xfTElORV9MT09QDUdMX0xJTkVfU1RSSVAJR0xfUE9JTlRTDEdMX1RSSUFOR0xFUw9HTF9UUklBTkdMRV9GQU4RR0xfVFJJQU5HTEVfU1RSSVASR0xfTElORVNfQURKQUNFTkNZF0dMX0xJTkVfU1RSSVBfQURKQUNFTkNZCkdMX1BBVENIRVMWR0xfVFJJQU5HTEVTX0FESkFDRU5DWRtHTF9UUklBTkdMRV9TVFJJUF9BREpBQ0VOQ1kCFGdsRHJhd0FycmF5c0luZGlyZWN0AYNBDINDCINFChRnbERyYXdBcnJheXNJbmRpcmVjdAlkcmF3X21vZGUMCEdMX0xJTkVTDEdMX0xJTkVfTE9PUA1HTF9MSU5FX1NUUklQCUdMX1BPSU5UUwxHTF9UUklBTkdMRVMPR0xfVFJJQU5HTEVfRkFOEUdMX1RSSUFOR0xFX1NUUklQEkdMX0xJTkVTX0FESkFDRU5DWRdHTF9MSU5FX1NUUklQX0FESkFDRU5DWQpHTF9QQVRDSEVTFkdMX1RSSUFOR0xFU19BREpBQ0VOQ1kbR0xfVFJJQU5HTEVfU1RSSVBfQURKQUNFTkNZAhVnbERyYXdBcnJheXNJbnN0YW5jZWQBg0cMg0kIg0sKFWdsRHJhd0FycmF5c0luc3RhbmNlZAlkcmF3X21vZGUMCEdMX0xJTkVTDEdMX0xJTkVfTE9PUA1HTF9MSU5FX1NUUklQCUdMX1BPSU5UUwxHTF9UUklBTkdMRVMPR0xfVFJJQU5HTEVfRkFOEUdMX1RSSUFOR0xFX1NUUklQEkdMX0xJTkVTX0FESkFDRU5DWRdHTF9MSU5FX1NUUklQX0FESkFDRU5DWQpHTF9QQVRDSEVTFkdMX1RSSUFOR0xFU19BREpBQ0VOQ1kbR0xfVFJJQU5HTEVfU1RSSVBfQURKQUNFTkNZAhpnbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRQGDTQyDTwiDUQoaZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUEbW9kZQwIR0xfTElORVMMR0xfTElORV9MT09QDUdMX0xJTkVfU1RSSVAJR0xfUE9JTlRTDEdMX1RSSUFOR0xFUw9HTF9UUklBTkdMRV9GQU4RR0xfVFJJQU5HTEVfU1RSSVASR0xfTElORVNfQURKQUNFTkNZF0dMX0xJTkVfU1RSSVBfQURKQUNFTkNZCkdMX1BBVENIRVMWR0xfVFJJQU5HTEVTX0FESkFDRU5DWRtHTF9UUklBTkdMRV9TVFJJUF9BREpBQ0VOQ1kCGGdsRHJhd0FycmF5c0luc3RhbmNlZEVYVAGDUwyDVQiDVwoYZ2xEcmF3QXJyYXlzSW5zdGFuY2VkRVhUBG1vZGUMCEdMX0xJTkVTDEdMX0xJTkVfTE9PUA1HTF9MSU5FX1NUUklQCUdMX1BPSU5UUwxHTF9UUklBTkdMRVMPR0xfVFJJQU5HTEVfRkFOEUdMX1RSSUFOR0xFX1NUUklQEkdMX0xJTkVTX0FESkFDRU5DWRdHTF9MSU5FX1NUUklQX0FESkFDRU5DWQpHTF9QQVRDSEVTFkdMX1RSSUFOR0xFU19BREpBQ0VOQ1kbR0xfVFJJQU5HTEVfU1RSSVBfQURKQUNFTkNZAhdnbERyYXdBcnJheXNJbnN0YW5jZWROVgGDWQyDWwiDXQoXZ2xEcmF3QXJyYXlzSW5zdGFuY2VkTlYEbW9kZQwIR0xfTElORVMMR0xfTElORV9MT09QDUdMX0xJTkVfU1RSSVAJR0xfUE9JTlRTDEdMX1RSSUFOR0xFUw9HTF9UUklBTkdMRV9GQU4RR0xfVFJJQU5HTEVfU1RSSVASR0xfTElORVNfQURKQUNFTkNZF0dMX0xJTkVfU1RSSVBfQURKQUNFTkNZCkdMX1BBVENIRVMWR0xfVFJJQU5HTEVTX0FESkFDRU5DWRtHTF9UUklBTkdMRV9TVFJJUF9BREpBQ0VOQ1kCDWdsRHJhd0J1ZmZlcnMBg18Mg2EGg2MGg2UIg2cKDWdsRHJhd0J1ZmZlcnMEYnVmcwQCAQdHTF9OT05FAhBnbERyYXdCdWZmZXJzRVhUAYNpDINrBoNtBoNvCINxChBnbERyYXdCdWZmZXJzRVhUBGJ1ZnMEAgEHR0xfTk9ORQIPZ2xEcmF3QnVmZmVyc05WAYNzDIN1BoN3BoN5CIN7Cg9nbERyYXdCdWZmZXJzTlYEYnVmcwQCAQdHTF9OT05FAg5nbERyYXdFbGVtZW50cwODfQyDfwiDgQoOZ2xEcmF3RWxlbWVudHMJZHJhd19tb2RlDAhHTF9MSU5FUwxHTF9MSU5FX0xPT1ANR0xfTElORV9TVFJJUAlHTF9QT0lOVFMMR0xfVFJJQU5HTEVTD0dMX1RSSUFOR0xFX0ZBThFHTF9UUklBTkdMRV9TVFJJUBJHTF9MSU5FU19BREpBQ0VOQ1kXR0xfTElORV9TVFJJUF9BREpBQ0VOQ1kKR0xfUEFUQ0hFUxZHTF9UUklBTkdMRVNfQURKQUNFTkNZG0dMX1RSSUFOR0xFX1NUUklQX0FESkFDRU5DWYODDIOFCIOHCg5nbERyYXdFbGVtZW50cwxpbmRpY2VzX3R5cGUDEEdMX1VOU0lHTkVEX0JZVEURR0xfVU5TSUdORURfU0hPUlQPR0xfVU5TSUdORURfSU5Ug4kEg4sGg40Ig48KDmdsRHJhd0VsZW1lbnRzB2luZGljZXMEAQACGGdsRHJhd0VsZW1lbnRzQmFzZVZlcnRleAODkQyDkwiDlQoYZ2xEcmF3RWxlbWVudHNCYXNlVmVydGV4CWRyYXdfbW9kZQwIR0xfTElORVMMR0xfTElORV9MT09QDUdMX0xJTkVfU1RSSVAJR0xfUE9JTlRTDEdMX1RSSUFOR0xFUw9HTF9UUklBTkdMRV9GQU4RR0xfVFJJQU5HTEVfU1RSSVASR0xfTElORVNfQURKQUNFTkNZF0dMX0xJTkVfU1RSSVBfQURKQUNFTkNZCkdMX1BBVENIRVMWR0xfVFJJQU5HTEVTX0FESkFDRU5DWRtHTF9UUklBTkdMRV9TVFJJUF9BREpBQ0VOQ1mDlwyDmQiDmwoYZ2xEcmF3RWxlbWVudHNCYXNlVmVydGV4DGluZGljZXNfdHlwZQMQR0xfVU5TSUdORURfQllURRFHTF9VTlNJR05FRF9TSE9SVA9HTF9VTlNJR05FRF9JTlSDnQSDnwaDoQiDowoYZ2xEcmF3RWxlbWVudHNCYXNlVmVydGV4B2luZGljZXMEAQACG2dsRHJhd0VsZW1lbnRzQmFzZVZlcnRleEVYVAODpQyDpwiDqQobZ2xEcmF3RWxlbWVudHNCYXNlVmVydGV4RVhUBG1vZGUMCEdMX0xJTkVTDEdMX0xJTkVfTE9PUA1HTF9MSU5FX1NUUklQCUdMX1BPSU5UUwxHTF9UUklBTkdMRVMPR0xfVFJJQU5HTEVfRkFOEUdMX1RSSUFOR0xFX1NUUklQEkdMX0xJTkVTX0FESkFDRU5DWRdHTF9MSU5FX1NUUklQX0FESkFDRU5DWQpHTF9QQVRDSEVTFkdMX1RSSUFOR0xFU19BREpBQ0VOQ1kbR0xfVFJJQU5HTEVfU1RSSVBfQURKQUNFTkNZg6sMg60Ig68KG2dsRHJhd0VsZW1lbnRzQmFzZVZlcnRleEVYVAR0eXBlAxBHTF9VTlNJR05FRF9CWVRFEUdMX1VOU0lHTkVEX1NIT1JUD0dMX1VOU0lHTkVEX0lOVIOxBIOzBoO1CIO3ChtnbERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhFWFQHaW5kaWNlcwQBAAIbZ2xEcmF3RWxlbWVudHNCYXNlVmVydGV4T0VTA4O5DIO7CIO9ChtnbERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhPRVMEbW9kZQwIR0xfTElORVMMR0xfTElORV9MT09QDUdMX0xJTkVfU1RSSVAJR0xfUE9JTlRTDEdMX1RSSUFOR0xFUw9HTF9UUklBTkdMRV9GQU4RR0xfVFJJQU5HTEVfU1RSSVASR0xfTElORVNfQURKQUNFTkNZF0dMX0xJTkVfU1RSSVBfQURKQUNFTkNZCkdMX1BBVENIRVMWR0xfVFJJQU5HTEVTX0FESkFDRU5DWRtHTF9UUklBTkdMRV9TVFJJUF9BREpBQ0VOQ1mDvwyDwQiDwwobZ2xEcmF3RWxlbWVudHNCYXNlVmVydGV4T0VTBHR5cGUDEEdMX1VOU0lHTkVEX0JZVEURR0xfVU5TSUdORURfU0hPUlQPR0xfVU5TSUdORURfSU5Ug8UEg8cGg8kIg8sKG2dsRHJhd0VsZW1lbnRzQmFzZVZlcnRleE9FUwdpbmRpY2VzBAEAAhZnbERyYXdFbGVtZW50c0luZGlyZWN0AoPNDIPPCIPRChZnbERyYXdFbGVtZW50c0luZGlyZWN0CWRyYXdfbW9kZQwIR0xfTElORVMMR0xfTElORV9MT09QDUdMX0xJTkVfU1RSSVAJR0xfUE9JTlRTDEdMX1RSSUFOR0xFUw9HTF9UUklBTkdMRV9GQU4RR0xfVFJJQU5HTEVfU1RSSVASR0xfTElORVNfQURKQUNFTkNZF0dMX0xJTkVfU1RSSVBfQURKQUNFTkNZCkdMX1BBVENIRVMWR0xfVFJJQU5HTEVTX0FESkFDRU5DWRtHTF9UUklBTkdMRV9TVFJJUF9BREpBQ0VOQ1mD0wyD1QiD1woWZ2xEcmF3RWxlbWVudHNJbmRpcmVjdAxpbmRpY2VzX3R5cGUDEEdMX1VOU0lHTkVEX0JZVEURR0xfVU5TSUdORURfU0hPUlQPR0xfVU5TSUdORURfSU5UAhdnbERyYXdFbGVtZW50c0luc3RhbmNlZAOD2QyD2wiD3QoXZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWQJZHJhd19tb2RlDAhHTF9MSU5FUwxHTF9MSU5FX0xPT1ANR0xfTElORV9TVFJJUAlHTF9QT0lOVFMMR0xfVFJJQU5HTEVTD0dMX1RSSUFOR0xFX0ZBThFHTF9UUklBTkdMRV9TVFJJUBJHTF9MSU5FU19BREpBQ0VOQ1kXR0xfTElORV9TVFJJUF9BREpBQ0VOQ1kKR0xfUEFUQ0hFUxZHTF9UUklBTkdMRVNfQURKQUNFTkNZG0dMX1RSSUFOR0xFX1NUUklQX0FESkFDRU5DWYPfDIPhCIPjChdnbERyYXdFbGVtZW50c0luc3RhbmNlZAxpbmRpY2VzX3R5cGUDEEdMX1VOU0lHTkVEX0JZVEURR0xfVU5TSUdORURfU0hPUlQPR0xfVU5TSUdORURfSU5Ug+UEg+cGg+kIg+sKF2dsRHJhd0VsZW1lbnRzSW5zdGFuY2VkB2luZGljZXMEAQACHGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUDg+0Mg+8Ig/EKHGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUEbW9kZQwIR0xfTElORVMMR0xfTElORV9MT09QDUdMX0xJTkVfU1RSSVAJR0xfUE9JTlRTDEdMX1RSSUFOR0xFUw9HTF9UUklBTkdMRV9GQU4RR0xfVFJJQU5HTEVfU1RSSVASR0xfTElORVNfQURKQUNFTkNZF0dMX0xJTkVfU1RSSVBfQURKQUNFTkNZCkdMX1BBVENIRVMWR0xfVFJJQU5HTEVTX0FESkFDRU5DWRtHTF9UUklBTkdMRV9TVFJJUF9BREpBQ0VOQ1mD8wyD9QiD9wocZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRQR0eXBlAxBHTF9VTlNJR05FRF9CWVRFEUdMX1VOU0lHTkVEX1NIT1JUD0dMX1VOU0lHTkVEX0lOVIP5BIP7BoP9CIP/ChxnbERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFB2luZGljZXMEAQACIWdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleAOEAQyEAwiEBQohZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4CWRyYXdfbW9kZQwIR0xfTElORVMMR0xfTElORV9MT09QDUdMX0xJTkVfU1RSSVAJR0xfUE9JTlRTDEdMX1RSSUFOR0xFUw9HTF9UUklBTkdMRV9GQU4RR0xfVFJJQU5HTEVfU1RSSVASR0xfTElORVNfQURKQUNFTkNZF0dMX0xJTkVfU1RSSVBfQURKQUNFTkNZCkdMX1BBVENIRVMWR0xfVFJJQU5HTEVTX0FESkFDRU5DWRtHTF9UUklBTkdMRV9TVFJJUF9BREpBQ0VOQ1mEBwyECQiECwohZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4DGluZGljZXNfdHlwZQMQR0xfVU5TSUdORURfQllURRFHTF9VTlNJR05FRF9TSE9SVA9HTF9VTlNJR05FRF9JTlSEDQSEDwaEEQiEEwohZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4B2luZGljZXMEAQACJGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleEVYVAOEFQyEFwiEGQokZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4RVhUBG1vZGUMCEdMX0xJTkVTDEdMX0xJTkVfTE9PUA1HTF9MSU5FX1NUUklQCUdMX1BPSU5UUwxHTF9UUklBTkdMRVMPR0xfVFJJQU5HTEVfRkFOEUdMX1RSSUFOR0xFX1NUUklQEkdMX0xJTkVTX0FESkFDRU5DWRdHTF9MSU5FX1NUUklQX0FESkFDRU5DWQpHTF9QQVRDSEVTFkdMX1RSSUFOR0xFU19BREpBQ0VOQ1kbR0xfVFJJQU5HTEVfU1RSSVBfQURKQUNFTkNZhBsMhB0IhB8KJGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleEVYVAR0eXBlAxBHTF9VTlNJR05FRF9CWVRFEUdMX1VOU0lHTkVEX1NIT1JUD0dMX1VOU0lHTkVEX0lOVIQhBIQjBoQlCIQnCiRnbERyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhFWFQHaW5kaWNlcwQBAAIkZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4T0VTA4QpDIQrCIQtCiRnbERyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhPRVMEbW9kZQwIR0xfTElORVMMR0xfTElORV9MT09QDUdMX0xJTkVfU1RSSVAJR0xfUE9JTlRTDEdMX1RSSUFOR0xFUw9HTF9UUklBTkdMRV9GQU4RR0xfVFJJQU5HTEVfU1RSSVASR0xfTElORVNfQURKQUNFTkNZF0dMX0xJTkVfU1RSSVBfQURKQUNFTkNZCkdMX1BBVENIRVMWR0xfVFJJQU5HTEVTX0FESkFDRU5DWRtHTF9UUklBTkdMRV9TVFJJUF9BREpBQ0VOQ1mELwyEMQiEMwokZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4T0VTBHR5cGUDEEdMX1VOU0lHTkVEX0JZVEURR0xfVU5TSUdORURfU0hPUlQPR0xfVU5TSUdORURfSU5UhDUEhDcGhDkIhDsKJGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleE9FUwdpbmRpY2VzBAEAAhpnbERyYXdFbGVtZW50c0luc3RhbmNlZEVYVAOEPQyEPwiEQQoaZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRFWFQEbW9kZQwIR0xfTElORVMMR0xfTElORV9MT09QDUdMX0xJTkVfU1RSSVAJR0xfUE9JTlRTDEdMX1RSSUFOR0xFUw9HTF9UUklBTkdMRV9GQU4RR0xfVFJJQU5HTEVfU1RSSVASR0xfTElORVNfQURKQUNFTkNZF0dMX0xJTkVfU1RSSVBfQURKQUNFTkNZCkdMX1BBVENIRVMWR0xfVFJJQU5HTEVTX0FESkFDRU5DWRtHTF9UUklBTkdMRV9TVFJJUF9BREpBQ0VOQ1mEQwyERQiERwoaZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRFWFQEdHlwZQMQR0xfVU5TSUdORURfQllURRFHTF9VTlNJR05FRF9TSE9SVA9HTF9VTlNJR05FRF9JTlSESQSESwaETQiETwoaZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRFWFQHaW5kaWNlcwQBAAIZZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWROVgOEUQyEUwiEVQoZZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWROVgRtb2RlDAhHTF9MSU5FUwxHTF9MSU5FX0xPT1ANR0xfTElORV9TVFJJUAlHTF9QT0lOVFMMR0xfVFJJQU5HTEVTD0dMX1RSSUFOR0xFX0ZBThFHTF9UUklBTkdMRV9TVFJJUBJHTF9MSU5FU19BREpBQ0VOQ1kXR0xfTElORV9TVFJJUF9BREpBQ0VOQ1kKR0xfUEFUQ0hFUxZHTF9UUklBTkdMRVNfQURKQUNFTkNZG0dMX1RSSUFOR0xFX1NUUklQX0FESkFDRU5DWYRXDIRZCIRbChlnbERyYXdFbGVtZW50c0luc3RhbmNlZE5WBHR5cGUDEEdMX1VOU0lHTkVEX0JZVEURR0xfVU5TSUdORURfU0hPUlQPR0xfVU5TSUdORURfSU5UhF0EhF8GhGEIhGMKGWdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkTlYHaW5kaWNlcwQBAAITZ2xEcmF3UmFuZ2VFbGVtZW50cwOEZQyEZwiEaQoTZ2xEcmF3UmFuZ2VFbGVtZW50cwlkcmF3X21vZGUMCEdMX0xJTkVTDEdMX0xJTkVfTE9PUA1HTF9MSU5FX1NUUklQCUdMX1BPSU5UUwxHTF9UUklBTkdMRVMPR0xfVFJJQU5HTEVfRkFOEUdMX1RSSUFOR0xFX1NUUklQEkdMX0xJTkVTX0FESkFDRU5DWRdHTF9MSU5FX1NUUklQX0FESkFDRU5DWQpHTF9QQVRDSEVTFkdMX1RSSUFOR0xFU19BREpBQ0VOQ1kbR0xfVFJJQU5HTEVfU1RSSVBfQURKQUNFTkNZhGsMhG0IhG8KE2dsRHJhd1JhbmdlRWxlbWVudHMMaW5kaWNlc190eXBlAxBHTF9VTlNJR05FRF9CWVRFEUdMX1VOU0lHTkVEX1NIT1JUD0dMX1VOU0lHTkVEX0lOVIRxBIRzBoR1CIR3ChNnbERyYXdSYW5nZUVsZW1lbnRzB2luZGljZXMEAQACHWdsRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4A4R5DIR7CIR9Ch1nbERyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleAlkcmF3X21vZGUMCEdMX0xJTkVTDEdMX0xJTkVfTE9PUA1HTF9MSU5FX1NUUklQCUdMX1BPSU5UUwxHTF9UUklBTkdMRVMPR0xfVFJJQU5HTEVfRkFOEUdMX1RSSUFOR0xFX1NUUklQEkdMX0xJTkVTX0FESkFDRU5DWRdHTF9MSU5FX1NUUklQX0FESkFDRU5DWQpHTF9QQVRDSEVTFkdMX1RSSUFOR0xFU19BREpBQ0VOQ1kbR0xfVFJJQU5HTEVfU1RSSVBfQURKQUNFTkNZhH8MhIEIhIMKHWdsRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4DGluZGljZXNfdHlwZQMQR0xfVU5TSUdORURfQllURRFHTF9VTlNJR05FRF9TSE9SVA9HTF9VTlNJR05FRF9JTlSEhQSEhwaEiQiEiwodZ2xEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXgHaW5kaWNlcwQBAAIgZ2xEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXhFWFQDhI0MhI8IhJEKIGdsRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4RVhUBG1vZGUMCEdMX0xJTkVTDEdMX0xJTkVfTE9PUA1HTF9MSU5FX1NUUklQCUdMX1BPSU5UUwxHTF9UUklBTkdMRVMPR0xfVFJJQU5HTEVfRkFOEUdMX1RSSUFOR0xFX1NUUklQEkdMX0xJTkVTX0FESkFDRU5DWRdHTF9MSU5FX1NUUklQX0FESkFDRU5DWQpHTF9QQVRDSEVTFkdMX1RSSUFOR0xFU19BREpBQ0VOQ1kbR0xfVFJJQU5HTEVfU1RSSVBfQURKQUNFTkNZhJMMhJUIhJcKIGdsRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4RVhUBHR5cGUDEEdMX1VOU0lHTkVEX0JZVEURR0xfVU5TSUdORURfU0hPUlQPR0xfVU5TSUdORURfSU5UhJkEhJsGhJ0IhJ8KIGdsRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4RVhUB2luZGljZXMEAQACIGdsRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4T0VTA4ShDISjCISlCiBnbERyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleE9FUwRtb2RlDAhHTF9MSU5FUwxHTF9MSU5FX0xPT1ANR0xfTElORV9TVFJJUAlHTF9QT0lOVFMMR0xfVFJJQU5HTEVTD0dMX1RSSUFOR0xFX0ZBThFHTF9UUklBTkdMRV9TVFJJUBJHTF9MSU5FU19BREpBQ0VOQ1kXR0xfTElORV9TVFJJUF9BREpBQ0VOQ1kKR0xfUEFUQ0hFUxZHTF9UUklBTkdMRVNfQURKQUNFTkNZG0dMX1RSSUFOR0xFX1NUUklQX0FESkFDRU5DWYSnDISpCISrCiBnbERyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleE9FUwR0eXBlAxBHTF9VTlNJR05FRF9CWVRFEUdMX1VOU0lHTkVEX1NIT1JUD0dMX1VOU0lHTkVEX0lOVIStBISvBoSxCISzCiBnbERyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleE9FUwdpbmRpY2VzBAEAAghnbEVuYWJsZQGEtQyEtwiEuQoIZ2xFbmFibGUKY2FwYWJpbGl0eRAIR0xfQkxFTkQMR0xfQ1VMTF9GQUNFDUdMX0RFUFRIX1RFU1QJR0xfRElUSEVSFkdMX1BPTFlHT05fT0ZGU0VUX0ZJTEwbR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFEkdMX1NBTVBMRV9DT1ZFUkFHRQ9HTF9TQ0lTU09SX1RFU1QPR0xfU1RFTkNJTF9URVNUIEdMX1BSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYFUdMX1JBU1RFUklaRVJfRElTQ0FSRA5HTF9TQU1QTEVfTUFTSw9HTF9ERUJVR19PVVRQVVQbR0xfREVCVUdfT1VUUFVUX1NZTkNIUk9OT1VTEkdMX0FMUEhBX1RFU1RfUUNPTRdHTF9GUkFNRUJVRkZFUl9TUkdCX0VYVAIZZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheQACCWdsRW5hYmxlaQGEuwyEvQiEvwoJZ2xFbmFibGVpCmNhcGFiaWxpdHkQCEdMX0JMRU5EDEdMX0NVTExfRkFDRQ1HTF9ERVBUSF9URVNUCUdMX0RJVEhFUhZHTF9QT0xZR09OX09GRlNFVF9GSUxMG0dMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRRJHTF9TQU1QTEVfQ09WRVJBR0UPR0xfU0NJU1NPUl9URVNUD0dMX1NURU5DSUxfVEVTVCBHTF9QUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWBVHTF9SQVNURVJJWkVSX0RJU0NBUkQOR0xfU0FNUExFX01BU0sPR0xfREVCVUdfT1VUUFVUG0dMX0RFQlVHX09VVFBVVF9TWU5DSFJPTk9VUxJHTF9BTFBIQV9URVNUX1FDT00XR0xfRlJBTUVCVUZGRVJfU1JHQl9FWFQCDGdsRW5hYmxlaUVYVAGEwQyEwwiExQoMZ2xFbmFibGVpRVhUBnRhcmdldBAIR0xfQkxFTkQMR0xfQ1VMTF9GQUNFDUdMX0RFUFRIX1RFU1QJR0xfRElUSEVSFkdMX1BPTFlHT05fT0ZGU0VUX0ZJTEwbR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFEkdMX1NBTVBMRV9DT1ZFUkFHRQ9HTF9TQ0lTU09SX1RFU1QPR0xfU1RFTkNJTF9URVNUIEdMX1BSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYFUdMX1JBU1RFUklaRVJfRElTQ0FSRA5HTF9TQU1QTEVfTUFTSw9HTF9ERUJVR19PVVRQVVQbR0xfREVCVUdfT1VUUFVUX1NZTkNIUk9OT1VTEkdMX0FMUEhBX1RFU1RfUUNPTRdHTF9GUkFNRUJVRkZFUl9TUkdCX0VYVAILZ2xFbmFibGVpTlYBhMcMhMkIhMsKC2dsRW5hYmxlaU5WBnRhcmdldBAIR0xfQkxFTkQMR0xfQ1VMTF9GQUNFDUdMX0RFUFRIX1RFU1QJR0xfRElUSEVSFkdMX1BPTFlHT05fT0ZGU0VUX0ZJTEwbR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFEkdMX1NBTVBMRV9DT1ZFUkFHRQ9HTF9TQ0lTU09SX1RFU1QPR0xfU1RFTkNJTF9URVNUIEdMX1BSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYFUdMX1JBU1RFUklaRVJfRElTQ0FSRA5HTF9TQU1QTEVfTUFTSw9HTF9ERUJVR19PVVRQVVQbR0xfREVCVUdfT1VUUFVUX1NZTkNIUk9OT1VTEkdMX0FMUEhBX1RFU1RfUUNPTRdHTF9GUkFNRUJVRkZFUl9TUkdCX0VYVAIMZ2xFbmFibGVpT0VTAYTNDITPCITRCgxnbEVuYWJsZWlPRVMGdGFyZ2V0EAhHTF9CTEVORAxHTF9DVUxMX0ZBQ0UNR0xfREVQVEhfVEVTVAlHTF9ESVRIRVIWR0xfUE9MWUdPTl9PRkZTRVRfRklMTBtHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0USR0xfU0FNUExFX0NPVkVSQUdFD0dMX1NDSVNTT1JfVEVTVA9HTF9TVEVOQ0lMX1RFU1QgR0xfUFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgVR0xfUkFTVEVSSVpFUl9ESVNDQVJEDkdMX1NBTVBMRV9NQVNLD0dMX0RFQlVHX09VVFBVVBtHTF9ERUJVR19PVVRQVVRfU1lOQ0hST05PVVMSR0xfQUxQSEFfVEVTVF9RQ09NF0dMX0ZSQU1FQlVGRkVSX1NSR0JfRVhUAgpnbEVuZFF1ZXJ5AYTTDITVCITXCgpnbEVuZFF1ZXJ5BnRhcmdldAQVR0xfQU5ZX1NBTVBMRVNfUEFTU0VEIkdMX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkUoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1BSSU1JVElWRVNfV1JJVFRFThdHTF9QUklNSVRJVkVTX0dFTkVSQVRFRAILZ2xGZW5jZVN5bmMBhNkMhNsIhN0KC2dsRmVuY2VTeW5jCWNvbmRpdGlvbgEdR0xfU1lOQ19HUFVfQ09NTUFORFNfQ09NUExFVEUCEGdsRmVuY2VTeW5jQVBQTEUBhN8MhOEIhOMKEGdsRmVuY2VTeW5jQVBQTEUJY29uZGl0aW9uAR1HTF9TWU5DX0dQVV9DT01NQU5EU19DT01QTEVURQIYZ2xGbHVzaE1hcHBlZEJ1ZmZlclJhbmdlAYTlDITnCITpChhnbEZsdXNoTWFwcGVkQnVmZmVyUmFuZ2UGdGFyZ2V0DQ9HTF9BUlJBWV9CVUZGRVIXR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVITR0xfQ09QWV9SRUFEX0JVRkZFUhRHTF9DT1BZX1dSSVRFX0JVRkZFUhRHTF9QSVhFTF9QQUNLX0JVRkZFUhZHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSHEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIRR0xfVU5JRk9STV9CVUZGRVIYR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSG0dMX0RJU1BBVENIX0lORElSRUNUX0JVRkZFUhdHTF9EUkFXX0lORElSRUNUX0JVRkZFUhhHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVIRR0xfVEVYVFVSRV9CVUZGRVICG2dsRmx1c2hNYXBwZWRCdWZmZXJSYW5nZUVYVAGE6wyE7QiE7wobZ2xGbHVzaE1hcHBlZEJ1ZmZlclJhbmdlRVhUBnRhcmdldA0PR0xfQVJSQVlfQlVGRkVSF0dMX0VMRU1FTlRfQVJSQVlfQlVGRkVSE0dMX0NPUFlfUkVBRF9CVUZGRVIUR0xfQ09QWV9XUklURV9CVUZGRVIUR0xfUElYRUxfUEFDS19CVUZGRVIWR0xfUElYRUxfVU5QQUNLX0JVRkZFUhxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSEUdMX1VOSUZPUk1fQlVGRkVSGEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUhtHTF9ESVNQQVRDSF9JTkRJUkVDVF9CVUZGRVIXR0xfRFJBV19JTkRJUkVDVF9CVUZGRVIYR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSEUdMX1RFWFRVUkVfQlVGRkVSAhdnbEZyYW1lYnVmZmVyUGFyYW1ldGVyaQKE8QyE8wiE9QoXZ2xGcmFtZWJ1ZmZlclBhcmFtZXRlcmkGdGFyZ2V0Aw5HTF9GUkFNRUJVRkZFUhNHTF9EUkFXX0ZSQU1FQlVGRkVSE0dMX1JFQURfRlJBTUVCVUZGRVKE9wyE+QiE+woXZ2xGcmFtZWJ1ZmZlclBhcmFtZXRlcmkFcG5hbWUFLUdMX0ZSQU1FQlVGRkVSX0RFRkFVTFRfRklYRURfU0FNUExFX0xPQ0FUSU9OUx1HTF9GUkFNRUJVRkZFUl9ERUZBVUxUX0hFSUdIVB5HTF9GUkFNRUJVRkZFUl9ERUZBVUxUX1NBTVBMRVMcR0xfRlJBTUVCVUZGRVJfREVGQVVMVF9XSURUSB1HTF9GUkFNRUJVRkZFUl9ERUZBVUxUX0xBWUVSUwIZZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcgOE/QyE/wiFAQoZZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlchJmcmFtZWJ1ZmZlcl90YXJnZXQDDkdMX0ZSQU1FQlVGRkVSE0dMX0RSQVdfRlJBTUVCVUZGRVITR0xfUkVBRF9GUkFNRUJVRkZFUoUDDIUFCIUHChlnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyFmZyYW1lYnVmZmVyX2F0dGFjaG1lbnQTE0dMX0RFUFRIX0FUVEFDSE1FTlQVR0xfU1RFTkNJTF9BVFRBQ0hNRU5UFEdMX0NPTE9SX0FUVEFDSE1FTlQwFEdMX0NPTE9SX0FUVEFDSE1FTlQxFUdMX0NPTE9SX0FUVEFDSE1FTlQxMBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTEVR0xfQ09MT1JfQVRUQUNITUVOVDEyFUdMX0NPTE9SX0FUVEFDSE1FTlQxMxVHTF9DT0xPUl9BVFRBQ0hNRU5UMTQVR0xfQ09MT1JfQVRUQUNITUVOVDE1FEdMX0NPTE9SX0FUVEFDSE1FTlQyFEdMX0NPTE9SX0FUVEFDSE1FTlQzFEdMX0NPTE9SX0FUVEFDSE1FTlQ0FEdMX0NPTE9SX0FUVEFDSE1FTlQ1FEdMX0NPTE9SX0FUVEFDSE1FTlQ2FEdMX0NPTE9SX0FUVEFDSE1FTlQ3FEdMX0NPTE9SX0FUVEFDSE1FTlQ4FEdMX0NPTE9SX0FUVEFDSE1FTlQ5G0dMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVIUJDIULCIUNChlnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyE3JlbmRlcmJ1ZmZlcl90YXJnZXQBD0dMX1JFTkRFUkJVRkZFUgIUZ2xGcmFtZWJ1ZmZlclRleHR1cmUChQ8MhREIhRMKFGdsRnJhbWVidWZmZXJUZXh0dXJlBnRhcmdldAMOR0xfRlJBTUVCVUZGRVITR0xfRFJBV19GUkFNRUJVRkZFUhNHTF9SRUFEX0ZSQU1FQlVGRkVShRUMhRcIhRkKFGdsRnJhbWVidWZmZXJUZXh0dXJlCmF0dGFjaG1lbnQTE0dMX0RFUFRIX0FUVEFDSE1FTlQVR0xfU1RFTkNJTF9BVFRBQ0hNRU5UFEdMX0NPTE9SX0FUVEFDSE1FTlQwFEdMX0NPTE9SX0FUVEFDSE1FTlQxFUdMX0NPTE9SX0FUVEFDSE1FTlQxMBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTEVR0xfQ09MT1JfQVRUQUNITUVOVDEyFUdMX0NPTE9SX0FUVEFDSE1FTlQxMxVHTF9DT0xPUl9BVFRBQ0hNRU5UMTQVR0xfQ09MT1JfQVRUQUNITUVOVDE1FEdMX0NPTE9SX0FUVEFDSE1FTlQyFEdMX0NPTE9SX0FUVEFDSE1FTlQzFEdMX0NPTE9SX0FUVEFDSE1FTlQ0FEdMX0NPTE9SX0FUVEFDSE1FTlQ1FEdMX0NPTE9SX0FUVEFDSE1FTlQ2FEdMX0NPTE9SX0FUVEFDSE1FTlQ3FEdMX0NPTE9SX0FUVEFDSE1FTlQ4FEdMX0NPTE9SX0FUVEFDSE1FTlQ5G0dMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVAIWZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRAOFGwyFHQiFHwoWZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRBJmcmFtZWJ1ZmZlcl90YXJnZXQDDkdMX0ZSQU1FQlVGRkVSE0dMX0RSQVdfRlJBTUVCVUZGRVITR0xfUkVBRF9GUkFNRUJVRkZFUoUhDIUjCIUlChZnbEZyYW1lYnVmZmVyVGV4dHVyZTJEFmZyYW1lYnVmZmVyX2F0dGFjaG1lbnQTE0dMX0RFUFRIX0FUVEFDSE1FTlQVR0xfU1RFTkNJTF9BVFRBQ0hNRU5UFEdMX0NPTE9SX0FUVEFDSE1FTlQwFEdMX0NPTE9SX0FUVEFDSE1FTlQxFUdMX0NPTE9SX0FUVEFDSE1FTlQxMBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTEVR0xfQ09MT1JfQVRUQUNITUVOVDEyFUdMX0NPTE9SX0FUVEFDSE1FTlQxMxVHTF9DT0xPUl9BVFRBQ0hNRU5UMTQVR0xfQ09MT1JfQVRUQUNITUVOVDE1FEdMX0NPTE9SX0FUVEFDSE1FTlQyFEdMX0NPTE9SX0FUVEFDSE1FTlQzFEdMX0NPTE9SX0FUVEFDSE1FTlQ0FEdMX0NPTE9SX0FUVEFDSE1FTlQ1FEdMX0NPTE9SX0FUVEFDSE1FTlQ2FEdMX0NPTE9SX0FUVEFDSE1FTlQ3FEdMX0NPTE9SX0FUVEFDSE1FTlQ4FEdMX0NPTE9SX0FUVEFDSE1FTlQ5G0dMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVIUnDIUpCIUrChZnbEZyYW1lYnVmZmVyVGV4dHVyZTJEDnRleHR1cmVfdGFyZ2V0CA1HTF9URVhUVVJFXzJEHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWB5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1keR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWB5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1keR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUCGWdsRnJhbWVidWZmZXJUZXh0dXJlMkRPRVMDhS0MhS8IhTEKGWdsRnJhbWVidWZmZXJUZXh0dXJlMkRPRVMGdGFyZ2V0Aw5HTF9GUkFNRUJVRkZFUhNHTF9EUkFXX0ZSQU1FQlVGRkVSE0dMX1JFQURfRlJBTUVCVUZGRVKFMwyFNQiFNwoZZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRE9FUwphdHRhY2htZW50ExNHTF9ERVBUSF9BVFRBQ0hNRU5UFUdMX1NURU5DSUxfQVRUQUNITUVOVBRHTF9DT0xPUl9BVFRBQ0hNRU5UMBRHTF9DT0xPUl9BVFRBQ0hNRU5UMRVHTF9DT0xPUl9BVFRBQ0hNRU5UMTAVR0xfQ09MT1JfQVRUQUNITUVOVDExFUdMX0NPTE9SX0FUVEFDSE1FTlQxMhVHTF9DT0xPUl9BVFRBQ0hNRU5UMTMVR0xfQ09MT1JfQVRUQUNITUVOVDE0FUdMX0NPTE9SX0FUVEFDSE1FTlQxNRRHTF9DT0xPUl9BVFRBQ0hNRU5UMhRHTF9DT0xPUl9BVFRBQ0hNRU5UMxRHTF9DT0xPUl9BVFRBQ0hNRU5UNBRHTF9DT0xPUl9BVFRBQ0hNRU5UNRRHTF9DT0xPUl9BVFRBQ0hNRU5UNhRHTF9DT0xPUl9BVFRBQ0hNRU5UNxRHTF9DT0xPUl9BVFRBQ0hNRU5UOBRHTF9DT0xPUl9BVFRBQ0hNRU5UORtHTF9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlSFOQyFOwiFPQoZZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRE9FUwl0ZXh0YXJnZXQIDUdMX1RFWFRVUkVfMkQeR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWR5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1oeR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWR5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1oZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRQIXZ2xGcmFtZWJ1ZmZlclRleHR1cmVFWFQChT8MhUEIhUMKF2dsRnJhbWVidWZmZXJUZXh0dXJlRVhUBnRhcmdldAMOR0xfRlJBTUVCVUZGRVITR0xfRFJBV19GUkFNRUJVRkZFUhNHTF9SRUFEX0ZSQU1FQlVGRkVShUUMhUcIhUkKF2dsRnJhbWVidWZmZXJUZXh0dXJlRVhUCmF0dGFjaG1lbnQTE0dMX0RFUFRIX0FUVEFDSE1FTlQVR0xfU1RFTkNJTF9BVFRBQ0hNRU5UFEdMX0NPTE9SX0FUVEFDSE1FTlQwFEdMX0NPTE9SX0FUVEFDSE1FTlQxFUdMX0NPTE9SX0FUVEFDSE1FTlQxMBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTEVR0xfQ09MT1JfQVRUQUNITUVOVDEyFUdMX0NPTE9SX0FUVEFDSE1FTlQxMxVHTF9DT0xPUl9BVFRBQ0hNRU5UMTQVR0xfQ09MT1JfQVRUQUNITUVOVDE1FEdMX0NPTE9SX0FUVEFDSE1FTlQyFEdMX0NPTE9SX0FUVEFDSE1FTlQzFEdMX0NPTE9SX0FUVEFDSE1FTlQ0FEdMX0NPTE9SX0FUVEFDSE1FTlQ1FEdMX0NPTE9SX0FUVEFDSE1FTlQ2FEdMX0NPTE9SX0FUVEFDSE1FTlQ3FEdMX0NPTE9SX0FUVEFDSE1FTlQ4FEdMX0NPTE9SX0FUVEFDSE1FTlQ5G0dMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVAIZZ2xGcmFtZWJ1ZmZlclRleHR1cmVMYXllcgKFSwyFTQiFTwoZZ2xGcmFtZWJ1ZmZlclRleHR1cmVMYXllcgZ0YXJnZXQDDkdMX0ZSQU1FQlVGRkVSE0dMX0RSQVdfRlJBTUVCVUZGRVITR0xfUkVBRF9GUkFNRUJVRkZFUoVRDIVTCIVVChlnbEZyYW1lYnVmZmVyVGV4dHVyZUxheWVyCmF0dGFjaG1lbnQTE0dMX0RFUFRIX0FUVEFDSE1FTlQVR0xfU1RFTkNJTF9BVFRBQ0hNRU5UFEdMX0NPTE9SX0FUVEFDSE1FTlQwFEdMX0NPTE9SX0FUVEFDSE1FTlQxFUdMX0NPTE9SX0FUVEFDSE1FTlQxMBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTEVR0xfQ09MT1JfQVRUQUNITUVOVDEyFUdMX0NPTE9SX0FUVEFDSE1FTlQxMxVHTF9DT0xPUl9BVFRBQ0hNRU5UMTQVR0xfQ09MT1JfQVRUQUNITUVOVDE1FEdMX0NPTE9SX0FUVEFDSE1FTlQyFEdMX0NPTE9SX0FUVEFDSE1FTlQzFEdMX0NPTE9SX0FUVEFDSE1FTlQ0FEdMX0NPTE9SX0FUVEFDSE1FTlQ1FEdMX0NPTE9SX0FUVEFDSE1FTlQ2FEdMX0NPTE9SX0FUVEFDSE1FTlQ3FEdMX0NPTE9SX0FUVEFDSE1FTlQ4FEdMX0NPTE9SX0FUVEFDSE1FTlQ5G0dMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVAIXZ2xGcmFtZWJ1ZmZlclRleHR1cmVPRVMChVcMhVkIhVsKF2dsRnJhbWVidWZmZXJUZXh0dXJlT0VTBnRhcmdldAMOR0xfRlJBTUVCVUZGRVITR0xfRFJBV19GUkFNRUJVRkZFUhNHTF9SRUFEX0ZSQU1FQlVGRkVShV0MhV8IhWEKF2dsRnJhbWVidWZmZXJUZXh0dXJlT0VTCmF0dGFjaG1lbnQTE0dMX0RFUFRIX0FUVEFDSE1FTlQVR0xfU1RFTkNJTF9BVFRBQ0hNRU5UFEdMX0NPTE9SX0FUVEFDSE1FTlQwFEdMX0NPTE9SX0FUVEFDSE1FTlQxFUdMX0NPTE9SX0FUVEFDSE1FTlQxMBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTEVR0xfQ09MT1JfQVRUQUNITUVOVDEyFUdMX0NPTE9SX0FUVEFDSE1FTlQxMxVHTF9DT0xPUl9BVFRBQ0hNRU5UMTQVR0xfQ09MT1JfQVRUQUNITUVOVDE1FEdMX0NPTE9SX0FUVEFDSE1FTlQyFEdMX0NPTE9SX0FUVEFDSE1FTlQzFEdMX0NPTE9SX0FUVEFDSE1FTlQ0FEdMX0NPTE9SX0FUVEFDSE1FTlQ1FEdMX0NPTE9SX0FUVEFDSE1FTlQ2FEdMX0NPTE9SX0FUVEFDSE1FTlQ3FEdMX0NPTE9SX0FUVEFDSE1FTlQ4FEdMX0NPTE9SX0FUVEFDSE1FTlQ5G0dMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVAILZ2xGcm9udEZhY2UBhWMMhWUIhWcKC2dsRnJvbnRGYWNlC29yaWVudGF0aW9uAgZHTF9DQ1cFR0xfQ1cCFWdsR2VuUHJvZ3JhbVBpcGVsaW5lcwGFaQSFawaFbQiFbwoVZ2xHZW5Qcm9ncmFtUGlwZWxpbmVzCXBpcGVsaW5lcwQBAgIQZ2xHZW5lcmF0ZU1pcG1hcAGFcQyFcwiFdQoQZ2xHZW5lcmF0ZU1pcG1hcAZ0YXJnZXQFDUdMX1RFWFRVUkVfMkQTR0xfVEVYVFVSRV9DVUJFX01BUBNHTF9URVhUVVJFXzJEX0FSUkFZDUdMX1RFWFRVUkVfM0QZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWQIRZ2xHZXRBY3RpdmVBdHRyaWIBhXcEhXkGhXsIhX0KEWdsR2V0QWN0aXZlQXR0cmliBG5hbWUEAQICEmdsR2V0QWN0aXZlVW5pZm9ybQGFfwSFgQaFgwiFhQoSZ2xHZXRBY3RpdmVVbmlmb3JtBG5hbWUEAQICG2dsR2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZQGFhwSFiQaFiwiFjQobZ2xHZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lBG5hbWUEAQICGWdsR2V0QWN0aXZlVW5pZm9ybUJsb2NraXYBhY8MhZEIhZMKGWdsR2V0QWN0aXZlVW5pZm9ybUJsb2NraXYOcGFyYW1ldGVyX25hbWUHIEdMX1VOSUZPUk1fQkxPQ0tfQUNUSVZFX1VOSUZPUk1TJ0dMX1VOSUZPUk1fQkxPQ0tfQUNUSVZFX1VOSUZPUk1fSU5ESUNFUxhHTF9VTklGT1JNX0JMT0NLX0JJTkRJTkcaR0xfVU5JRk9STV9CTE9DS19EQVRBX1NJWkUcR0xfVU5JRk9STV9CTE9DS19OQU1FX0xFTkdUSC5HTF9VTklGT1JNX0JMT0NLX1JFRkVSRU5DRURfQllfRlJBR01FTlRfU0hBREVSLEdMX1VOSUZPUk1fQkxPQ0tfUkVGRVJFTkNFRF9CWV9WRVJURVhfU0hBREVSAhVnbEdldEFjdGl2ZVVuaWZvcm1zaXYDhZUEhZcGhZkIhZsKFWdsR2V0QWN0aXZlVW5pZm9ybXNpdg91bmlmb3JtX2luZGljZXMEAQCFnQyFnwiFoQoVZ2xHZXRBY3RpdmVVbmlmb3Jtc2l2DnBhcmFtZXRlcl9uYW1lCBdHTF9VTklGT1JNX0FSUkFZX1NUUklERRZHTF9VTklGT1JNX0JMT0NLX0lOREVYF0dMX1VOSUZPUk1fSVNfUk9XX01BSk9SGEdMX1VOSUZPUk1fTUFUUklYX1NUUklERRZHTF9VTklGT1JNX05BTUVfTEVOR1RIEUdMX1VOSUZPUk1fT0ZGU0VUD0dMX1VOSUZPUk1fU0laRQ9HTF9VTklGT1JNX1RZUEWFowSFpQaFpwiFqQoVZ2xHZXRBY3RpdmVVbmlmb3Jtc2l2CnBhcmFtZXRlcnMEAQICD2dsR2V0Qm9vbGVhbmlfdgKFqwyFrQiFrwoPZ2xHZXRCb29sZWFuaV92BXBhcmFtgSoRR0xfQUNUSVZFX1RFWFRVUkUbR0xfQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFG0dMX0FMSUFTRURfUE9JTlRfU0laRV9SQU5HRQ1HTF9BTFBIQV9CSVRTF0dMX0FSUkFZX0JVRkZFUl9CSU5ESU5HIEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9CSU5ESU5HHUdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TSVpFHkdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TVEFSVAhHTF9CTEVORA5HTF9CTEVORF9DT0xPUhJHTF9CTEVORF9EU1RfQUxQSEEQR0xfQkxFTkRfRFNUX1JHQhdHTF9CTEVORF9FUVVBVElPTl9BTFBIQRVHTF9CTEVORF9FUVVBVElPTl9SR0ISR0xfQkxFTkRfU1JDX0FMUEhBEEdMX0JMRU5EX1NSQ19SR0IMR0xfQkxVRV9CSVRTFEdMX0NPTE9SX0NMRUFSX1ZBTFVFEkdMX0NPTE9SX1dSSVRFTUFTSx1HTF9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUxBHTF9DT05URVhUX0ZMQUdTGEdMX0NPTlRFWFRfUk9CVVNUX0FDQ0VTUxtHTF9DT1BZX1JFQURfQlVGRkVSX0JJTkRJTkccR0xfQ09QWV9XUklURV9CVUZGRVJfQklORElORwxHTF9DVUxMX0ZBQ0URR0xfQ1VMTF9GQUNFX01PREUSR0xfQ1VSUkVOVF9QUk9HUkFNGkdMX0RFQlVHX0dST1VQX1NUQUNLX0RFUFRIGEdMX0RFQlVHX0xPR0dFRF9NRVNTQUdFUyNHTF9ERUJVR19ORVhUX0xPR0dFRF9NRVNTQUdFX0xFTkdUSA1HTF9ERVBUSF9CSVRTFEdMX0RFUFRIX0NMRUFSX1ZBTFVFDUdMX0RFUFRIX0ZVTkMOR0xfREVQVEhfUkFOR0UNR0xfREVQVEhfVEVTVBJHTF9ERVBUSF9XUklURU1BU0sjR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSX0JJTkRJTkcJR0xfRElUSEVSDkdMX0RSQVdfQlVGRkVSD0dMX0RSQVdfQlVGRkVSMA9HTF9EUkFXX0JVRkZFUjEPR0xfRFJBV19CVUZGRVIyD0dMX0RSQVdfQlVGRkVSMw9HTF9EUkFXX0JVRkZFUjQPR0xfRFJBV19CVUZGRVI1D0dMX0RSQVdfQlVGRkVSNg9HTF9EUkFXX0JVRkZFUjcPR0xfRFJBV19CVUZGRVI4D0dMX0RSQVdfQlVGRkVSORBHTF9EUkFXX0JVRkZFUjEwEEdMX0RSQVdfQlVGRkVSMTEQR0xfRFJBV19CVUZGRVIxMhBHTF9EUkFXX0JVRkZFUjEzEEdMX0RSQVdfQlVGRkVSMTQQR0xfRFJBV19CVUZGRVIxNRtHTF9EUkFXX0ZSQU1FQlVGRkVSX0JJTkRJTkcfR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORyVHTF9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVF9CSVRTIkdMX0ZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlQNR0xfRlJPTlRfRkFDRRdHTF9HRU5FUkFURV9NSVBNQVBfSElOVA1HTF9HUkVFTl9CSVRTFUdMX0lNQUdFX0JJTkRJTkdfTkFNRRZHTF9JTUFHRV9CSU5ESU5HX0xFVkVMGEdMX0lNQUdFX0JJTkRJTkdfTEFZRVJFRBZHTF9JTUFHRV9CSU5ESU5HX0xBWUVSF0dMX0lNQUdFX0JJTkRJTkdfQUNDRVNTF0dMX0lNQUdFX0JJTkRJTkdfRk9STUFUI0dMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfRk9STUFUIUdMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfVFlQRRlHTF9MQVlFUl9QUk9WT0tJTkdfVkVSVEVYDUdMX0xJTkVfV0lEVEgqR0xfUFJJTUlUSVZFX1JFU1RBUlRfRk9SX1BBVENIRVNfU1VQUE9SVEVEEEdMX01BSk9SX1ZFUlNJT04WR0xfTUFYXzNEX1RFWFRVUkVfU0laRRtHTF9NQVhfQVJSQVlfVEVYVFVSRV9MQVlFUlMlR0xfTUFYX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9CSU5ESU5HUyFHTF9NQVhfQVRPTUlDX0NPVU5URVJfQlVGRkVSX1NJWkUmR0xfTUFYX0NPTUJJTkVEX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMYR0xfTUFYX0NPTE9SX0FUVEFDSE1FTlRTHEdMX01BWF9DT0xPUl9URVhUVVJFX1NBTVBMRVMcR0xfTUFYX0RFUFRIX1RFWFRVUkVfU0FNUExFUx9HTF9NQVhfQ09NQklORURfQVRPTUlDX0NPVU5URVJTEkdMX01BWF9JTUFHRV9VTklUUypHTF9NQVhfQ09NQklORURfQ09NUFVURV9VTklGT1JNX0NPTVBPTkVOVFMrR0xfTUFYX0NPTUJJTkVEX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UUytHTF9NQVhfQ09NQklORURfR0VPTUVUUllfVU5JRk9STV9DT01QT05FTlRTJUdMX01BWF9DT01CSU5FRF9TSEFERVJfU1RPUkFHRV9CTE9DS1MvR0xfTUFYX0NPTUJJTkVEX1RFU1NfQ09OVFJPTF9VTklGT1JNX0NPTVBPTkVOVFMyR0xfTUFYX0NPTUJJTkVEX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0NPTVBPTkVOVFMjR0xfTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMnR0xfTUFYX0NPTUJJTkVEX1NIQURFUl9PVVRQVVRfUkVTT1VSQ0VTHkdMX01BWF9DT01CSU5FRF9VTklGT1JNX0JMT0NLUylHTF9NQVhfQ09NQklORURfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUyVHTF9NQVhfQ09NUFVURV9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTHkdMX01BWF9DT01QVVRFX0FUT01JQ19DT1VOVEVSUx1HTF9NQVhfQ09NUFVURV9JTUFHRV9VTklGT1JNUx5HTF9NQVhfQ09NQklORURfSU1BR0VfVU5JRk9STVMkR0xfTUFYX0NPTVBVVEVfU0hBREVSX1NUT1JBR0VfQkxPQ0tTIkdMX01BWF9DT01QVVRFX1RFWFRVUkVfSU1BR0VfVU5JVFMhR0xfTUFYX0NPTVBVVEVfU0hBUkVEX01FTU9SWV9TSVpFHUdMX01BWF9DT01QVVRFX1VOSUZPUk1fQkxPQ0tTIUdMX01BWF9DT01QVVRFX1VOSUZPUk1fQ09NUE9ORU5UUx9HTF9NQVhfQ09NUFVURV9XT1JLX0dST1VQX0NPVU5UJUdMX01BWF9DT01QVVRFX1dPUktfR1JPVVBfSU5WT0NBVElPTlMeR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9TSVpFHEdMX01BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUeR0xfTUFYX0RFQlVHX0dST1VQX1NUQUNLX0RFUFRIHEdMX01BWF9ERUJVR19MT0dHRURfTUVTU0FHRVMbR0xfTUFYX0RFQlVHX01FU1NBR0VfTEVOR1RIE0dMX01BWF9EUkFXX0JVRkZFUlMUR0xfTUFYX0VMRU1FTlRfSU5ERVgXR0xfTUFYX0VMRU1FTlRTX0lORElDRVMYR0xfTUFYX0VMRU1FTlRTX1ZFUlRJQ0VTJkdMX01BWF9GUkFHTUVOVF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTH0dMX01BWF9GUkFHTUVOVF9BVE9NSUNfQ09VTlRFUlMeR0xfTUFYX0ZSQUdNRU5UX0lNQUdFX1VOSUZPUk1TIEdMX01BWF9GUkFHTUVOVF9JTlBVVF9DT01QT05FTlRTJEdMX01BWF9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVCVHTF9NQVhfRlJBR01FTlRfU0hBREVSX1NUT1JBR0VfQkxPQ0tTJEdMX01JTl9QUk9HUkFNX1RFWFRVUkVfR0FUSEVSX09GRlNFVCRHTF9NQVhfUFJPR1JBTV9URVhUVVJFX0dBVEhFUl9PRkZTRVQeR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQkxPQ0tTIkdMX01BWF9GUkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFMfR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUxlHTF9NQVhfRlJBTUVCVUZGRVJfSEVJR0hUGUdMX01BWF9GUkFNRUJVRkZFUl9MQVlFUlMaR0xfTUFYX0ZSQU1FQlVGRkVSX1NBTVBMRVMYR0xfTUFYX0ZSQU1FQlVGRkVSX1dJRFRIJkdMX01BWF9HRU9NRVRSWV9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTH0dMX01BWF9HRU9NRVRSWV9BVE9NSUNfQ09VTlRFUlMeR0xfTUFYX0dFT01FVFJZX0lNQUdFX1VOSUZPUk1TIEdMX01BWF9HRU9NRVRSWV9JTlBVVF9DT01QT05FTlRTIUdMX01BWF9HRU9NRVRSWV9PVVRQVVRfQ09NUE9ORU5UUx9HTF9NQVhfR0VPTUVUUllfT1VUUFVUX1ZFUlRJQ0VTIkdMX01BWF9HRU9NRVRSWV9TSEFERVJfSU5WT0NBVElPTlMlR0xfTUFYX0dFT01FVFJZX1NIQURFUl9TVE9SQUdFX0JMT0NLUyNHTF9NQVhfR0VPTUVUUllfVEVYVFVSRV9JTUFHRV9VTklUUydHTF9NQVhfR0VPTUVUUllfVE9UQUxfT1VUUFVUX0NPTVBPTkVOVFMeR0xfTUFYX0dFT01FVFJZX1VOSUZPUk1fQkxPQ0tTIkdMX01BWF9HRU9NRVRSWV9VTklGT1JNX0NPTVBPTkVOVFMWR0xfTUFYX0lOVEVHRVJfU0FNUExFUxNHTF9NQVhfTEFCRUxfTEVOR1RIG0dMX01BWF9QUk9HUkFNX1RFWEVMX09GRlNFVBhHTF9NQVhfUkVOREVSQlVGRkVSX1NJWkUYR0xfTUFYX1NBTVBMRV9NQVNLX1dPUkRTDkdMX01BWF9TQU1QTEVTGkdMX01BWF9TRVJWRVJfV0FJVF9USU1FT1VUIEdMX01BWF9TSEFERVJfU1RPUkFHRV9CTE9DS19TSVpFJUdMX01BWF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfQklORElOR1MqR0xfTUFYX1RFU1NfQ09OVFJPTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTI0dMX01BWF9URVNTX0NPTlRST0xfQVRPTUlDX0NPVU5URVJTIkdMX01BWF9URVNTX0NPTlRST0xfSU1BR0VfVU5JRk9STVMkR0xfTUFYX1RFU1NfQ09OVFJPTF9JTlBVVF9DT01QT05FTlRTJUdMX01BWF9URVNTX0NPTlRST0xfT1VUUFVUX0NPTVBPTkVOVFMpR0xfTUFYX1RFU1NfQ09OVFJPTF9TSEFERVJfU1RPUkFHRV9CTE9DS1MnR0xfTUFYX1RFU1NfQ09OVFJPTF9URVhUVVJFX0lNQUdFX1VOSVRTK0dMX01BWF9URVNTX0NPTlRST0xfVE9UQUxfT1VUUFVUX0NPTVBPTkVOVFMiR0xfTUFYX1RFU1NfQ09OVFJPTF9VTklGT1JNX0JMT0NLUyZHTF9NQVhfVEVTU19DT05UUk9MX1VOSUZPUk1fQ09NUE9ORU5UUy1HTF9NQVhfVEVTU19FVkFMVUFUSU9OX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMmR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9BVE9NSUNfQ09VTlRFUlMlR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9JTUFHRV9VTklGT1JNUydHTF9NQVhfVEVTU19FVkFMVUFUSU9OX0lOUFVUX0NPTVBPTkVOVFMoR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9PVVRQVVRfQ09NUE9ORU5UUyxHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1NIQURFUl9TVE9SQUdFX0JMT0NLUypHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1RFWFRVUkVfSU1BR0VfVU5JVFMlR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0JMT0NLUylHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1VOSUZPUk1fQ09NUE9ORU5UUxVHTF9NQVhfVEVTU19HRU5fTEVWRUwVR0xfTUFYX1BBVENIX1ZFUlRJQ0VTHEdMX01BWF9URVNTX1BBVENIX0NPTVBPTkVOVFMaR0xfTUFYX1RFWFRVUkVfQlVGRkVSX1NJWkUaR0xfTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMXR0xfTUFYX1RFWFRVUkVfTE9EX0JJQVMTR0xfTUFYX1RFWFRVUkVfU0laRTBHTF9NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX0lOVEVSTEVBVkVEX0NPTVBPTkVOVFMqR0xfTUFYX1RSQU5TRk9STV9GRUVEQkFDS19TRVBBUkFURV9BVFRSSUJTLUdMX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQ09NUE9ORU5UUxlHTF9NQVhfVU5JRk9STV9CTE9DS19TSVpFHkdMX01BWF9VTklGT1JNX0JVRkZFUl9CSU5ESU5HUxhHTF9NQVhfVU5JRk9STV9MT0NBVElPTlMZR0xfTUFYX1ZBUllJTkdfQ09NUE9ORU5UUxZHTF9NQVhfVkFSWUlOR19WRUNUT1JTHUdMX01BWF9WRVJURVhfQVRPTUlDX0NPVU5URVJTJEdMX01BWF9WRVJURVhfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx1HTF9NQVhfVkVSVEVYX0FUVFJJQl9CSU5ESU5HUxtHTF9NQVhfVkVSVEVYX0FUVFJJQl9TVFJJREUkR0xfTUFYX1ZFUlRFWF9BVFRSSUJfUkVMQVRJVkVfT0ZGU0VUFUdMX01BWF9WRVJURVhfQVRUUklCUxxHTF9NQVhfVkVSVEVYX0lNQUdFX1VOSUZPUk1TH0dMX01BWF9WRVJURVhfT1VUUFVUX0NPTVBPTkVOVFMjR0xfTUFYX1ZFUlRFWF9TSEFERVJfU1RPUkFHRV9CTE9DS1MhR0xfTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTHEdMX01BWF9WRVJURVhfVU5JRk9STV9CTE9DS1MgR0xfTUFYX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFMdR0xfTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMUR0xfTUFYX1ZJRVdQT1JUX0RJTVMkR0xfTUlOX0ZSQUdNRU5UX0lOVEVSUE9MQVRJT05fT0ZGU0VUG0dMX01JTl9QUk9HUkFNX1RFWEVMX09GRlNFVBtHTF9NSU5fU0FNUExFX1NIQURJTkdfVkFMVUUQR0xfTUlOT1JfVkVSU0lPTh9HTF9NVUxUSVNBTVBMRV9MSU5FX1dJRFRIX1JBTkdFJUdMX01VTFRJU0FNUExFX0xJTkVfV0lEVEhfR1JBTlVMQVJJVFkhR0xfTlVNX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTEUdMX05VTV9FWFRFTlNJT05THUdMX05VTV9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTHEdMX05VTV9TSEFERVJfQklOQVJZX0ZPUk1BVFMRR0xfUEFDS19BTElHTk1FTlQUR0xfUEFDS19JTUFHRV9IRUlHSFQSR0xfUEFDS19ST1dfTEVOR1RIE0dMX1BBQ0tfU0tJUF9JTUFHRVMTR0xfUEFDS19TS0lQX1BJWEVMUxFHTF9QQUNLX1NLSVBfUk9XUxFHTF9QQVRDSF9WRVJUSUNFUxxHTF9QSVhFTF9QQUNLX0JVRkZFUl9CSU5ESU5HHkdMX1BJWEVMX1VOUEFDS19CVUZGRVJfQklORElORxhHTF9QT0xZR09OX09GRlNFVF9GQUNUT1IWR0xfUE9MWUdPTl9PRkZTRVRfRklMTBdHTF9QT0xZR09OX09GRlNFVF9VTklUUxlHTF9QUklNSVRJVkVfQk9VTkRJTkdfQk9YIEdMX1BSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYGUdMX1BST0dSQU1fQklOQVJZX0ZPUk1BVFMbR0xfUFJPR1JBTV9QSVBFTElORV9CSU5ESU5HFUdMX1JBU1RFUklaRVJfRElTQ0FSRA5HTF9SRUFEX0JVRkZFUhtHTF9SRUFEX0ZSQU1FQlVGRkVSX0JJTkRJTkcLR0xfUkVEX0JJVFMXR0xfUkVOREVSQlVGRkVSX0JJTkRJTkceR0xfUkVTRVRfTk9USUZJQ0FUSU9OX1NUUkFURUdZG0dMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRRFHTF9TQU1QTEVfQlVGRkVSUxJHTF9TQU1QTEVfQ09WRVJBR0UZR0xfU0FNUExFX0NPVkVSQUdFX0lOVkVSVBhHTF9TQU1QTEVfQ09WRVJBR0VfVkFMVUURR0xfU0FNUExFX1NIQURJTkcSR0xfU0FNUExFUl9CSU5ESU5HCkdMX1NBTVBMRVMOR0xfU0NJU1NPUl9CT1gPR0xfU0NJU1NPUl9URVNUGEdMX1NIQURFUl9CSU5BUllfRk9STUFUUxJHTF9TSEFERVJfQ09NUElMRVIgR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX0JJTkRJTkcpR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX09GRlNFVF9BTElHTk1FTlQdR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX1NJWkUeR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX1NUQVJUFEdMX1NURU5DSUxfQkFDS19GQUlMFEdMX1NURU5DSUxfQkFDS19GVU5DH0dMX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZBSUwfR0xfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTUxNHTF9TVEVOQ0lMX0JBQ0tfUkVGGkdMX1NURU5DSUxfQkFDS19WQUxVRV9NQVNLGUdMX1NURU5DSUxfQkFDS19XUklURU1BU0sPR0xfU1RFTkNJTF9CSVRTFkdMX1NURU5DSUxfQ0xFQVJfVkFMVUUPR0xfU1RFTkNJTF9GQUlMD0dMX1NURU5DSUxfRlVOQxpHTF9TVEVOQ0lMX1BBU1NfREVQVEhfRkFJTBpHTF9TVEVOQ0lMX1BBU1NfREVQVEhfUEFTUw5HTF9TVEVOQ0lMX1JFRg9HTF9TVEVOQ0lMX1RFU1QVR0xfU1RFTkNJTF9WQUxVRV9NQVNLFEdMX1NURU5DSUxfV1JJVEVNQVNLEEdMX1NVQlBJWEVMX0JJVFMVR0xfVEVYVFVSRV9CSU5ESU5HXzJEH0dMX1RFWFRVUkVfQklORElOR19FWFRFUk5BTF9PRVMbR0xfVEVYVFVSRV9CSU5ESU5HXzJEX0FSUkFZIUdMX1RFWFRVUkVfQklORElOR18yRF9NVUxUSVNBTVBMRSdHTF9URVhUVVJFX0JJTkRJTkdfMkRfTVVMVElTQU1QTEVfQVJSQVkVR0xfVEVYVFVSRV9CSU5ESU5HXzNEGUdMX1RFWFRVUkVfQklORElOR19CVUZGRVIbR0xfVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQIUdMX1RFWFRVUkVfQklORElOR19DVUJFX01BUF9BUlJBWRlHTF9URVhUVVJFX0JVRkZFUl9CSU5ESU5HIkdMX1RFWFRVUkVfQlVGRkVSX09GRlNFVF9BTElHTk1FTlQcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0FDVElWRR1HTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQklORElORyRHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkchR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TSVpFIkdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU1RBUlQcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1BBVVNFRBlHTF9VTklGT1JNX0JVRkZFUl9CSU5ESU5HIkdMX1VOSUZPUk1fQlVGRkVSX09GRlNFVF9BTElHTk1FTlQWR0xfVU5JRk9STV9CVUZGRVJfU0laRRdHTF9VTklGT1JNX0JVRkZFUl9TVEFSVBNHTF9VTlBBQ0tfQUxJR05NRU5UFkdMX1VOUEFDS19JTUFHRV9IRUlHSFQUR0xfVU5QQUNLX1JPV19MRU5HVEgVR0xfVU5QQUNLX1NLSVBfSU1BR0VTFUdMX1VOUEFDS19TS0lQX1BJWEVMUxNHTF9VTlBBQ0tfU0tJUF9ST1dTF0dMX1ZFUlRFWF9BUlJBWV9CSU5ESU5HGUdMX1ZFUlRFWF9CSU5ESU5HX0RJVklTT1IYR0xfVkVSVEVYX0JJTkRJTkdfT0ZGU0VUGEdMX1ZFUlRFWF9CSU5ESU5HX1NUUklERQtHTF9WSUVXUE9SVCFHTF9NQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQTR0xfR1BVX0RJU0pPSU5UX0VYVIWxBIWzBoW1CIW3Cg9nbEdldEJvb2xlYW5pX3YGdmFsdWVzBAECAg1nbEdldEJvb2xlYW52AoW5DIW7CIW9Cg1nbEdldEJvb2xlYW52BXBhcmFtgSoRR0xfQUNUSVZFX1RFWFRVUkUbR0xfQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFG0dMX0FMSUFTRURfUE9JTlRfU0laRV9SQU5HRQ1HTF9BTFBIQV9CSVRTF0dMX0FSUkFZX0JVRkZFUl9CSU5ESU5HIEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9CSU5ESU5HHUdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TSVpFHkdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TVEFSVAhHTF9CTEVORA5HTF9CTEVORF9DT0xPUhJHTF9CTEVORF9EU1RfQUxQSEEQR0xfQkxFTkRfRFNUX1JHQhdHTF9CTEVORF9FUVVBVElPTl9BTFBIQRVHTF9CTEVORF9FUVVBVElPTl9SR0ISR0xfQkxFTkRfU1JDX0FMUEhBEEdMX0JMRU5EX1NSQ19SR0IMR0xfQkxVRV9CSVRTFEdMX0NPTE9SX0NMRUFSX1ZBTFVFEkdMX0NPTE9SX1dSSVRFTUFTSx1HTF9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUxBHTF9DT05URVhUX0ZMQUdTGEdMX0NPTlRFWFRfUk9CVVNUX0FDQ0VTUxtHTF9DT1BZX1JFQURfQlVGRkVSX0JJTkRJTkccR0xfQ09QWV9XUklURV9CVUZGRVJfQklORElORwxHTF9DVUxMX0ZBQ0URR0xfQ1VMTF9GQUNFX01PREUSR0xfQ1VSUkVOVF9QUk9HUkFNGkdMX0RFQlVHX0dST1VQX1NUQUNLX0RFUFRIGEdMX0RFQlVHX0xPR0dFRF9NRVNTQUdFUyNHTF9ERUJVR19ORVhUX0xPR0dFRF9NRVNTQUdFX0xFTkdUSA1HTF9ERVBUSF9CSVRTFEdMX0RFUFRIX0NMRUFSX1ZBTFVFDUdMX0RFUFRIX0ZVTkMOR0xfREVQVEhfUkFOR0UNR0xfREVQVEhfVEVTVBJHTF9ERVBUSF9XUklURU1BU0sjR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSX0JJTkRJTkcJR0xfRElUSEVSDkdMX0RSQVdfQlVGRkVSD0dMX0RSQVdfQlVGRkVSMA9HTF9EUkFXX0JVRkZFUjEPR0xfRFJBV19CVUZGRVIyD0dMX0RSQVdfQlVGRkVSMw9HTF9EUkFXX0JVRkZFUjQPR0xfRFJBV19CVUZGRVI1D0dMX0RSQVdfQlVGRkVSNg9HTF9EUkFXX0JVRkZFUjcPR0xfRFJBV19CVUZGRVI4D0dMX0RSQVdfQlVGRkVSORBHTF9EUkFXX0JVRkZFUjEwEEdMX0RSQVdfQlVGRkVSMTEQR0xfRFJBV19CVUZGRVIxMhBHTF9EUkFXX0JVRkZFUjEzEEdMX0RSQVdfQlVGRkVSMTQQR0xfRFJBV19CVUZGRVIxNRtHTF9EUkFXX0ZSQU1FQlVGRkVSX0JJTkRJTkcfR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORyVHTF9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVF9CSVRTIkdMX0ZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlQNR0xfRlJPTlRfRkFDRRdHTF9HRU5FUkFURV9NSVBNQVBfSElOVA1HTF9HUkVFTl9CSVRTFUdMX0lNQUdFX0JJTkRJTkdfTkFNRRZHTF9JTUFHRV9CSU5ESU5HX0xFVkVMGEdMX0lNQUdFX0JJTkRJTkdfTEFZRVJFRBZHTF9JTUFHRV9CSU5ESU5HX0xBWUVSF0dMX0lNQUdFX0JJTkRJTkdfQUNDRVNTF0dMX0lNQUdFX0JJTkRJTkdfRk9STUFUI0dMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfRk9STUFUIUdMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfVFlQRRlHTF9MQVlFUl9QUk9WT0tJTkdfVkVSVEVYDUdMX0xJTkVfV0lEVEgqR0xfUFJJTUlUSVZFX1JFU1RBUlRfRk9SX1BBVENIRVNfU1VQUE9SVEVEEEdMX01BSk9SX1ZFUlNJT04WR0xfTUFYXzNEX1RFWFRVUkVfU0laRRtHTF9NQVhfQVJSQVlfVEVYVFVSRV9MQVlFUlMlR0xfTUFYX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9CSU5ESU5HUyFHTF9NQVhfQVRPTUlDX0NPVU5URVJfQlVGRkVSX1NJWkUmR0xfTUFYX0NPTUJJTkVEX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMYR0xfTUFYX0NPTE9SX0FUVEFDSE1FTlRTHEdMX01BWF9DT0xPUl9URVhUVVJFX1NBTVBMRVMcR0xfTUFYX0RFUFRIX1RFWFRVUkVfU0FNUExFUx9HTF9NQVhfQ09NQklORURfQVRPTUlDX0NPVU5URVJTEkdMX01BWF9JTUFHRV9VTklUUypHTF9NQVhfQ09NQklORURfQ09NUFVURV9VTklGT1JNX0NPTVBPTkVOVFMrR0xfTUFYX0NPTUJJTkVEX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UUytHTF9NQVhfQ09NQklORURfR0VPTUVUUllfVU5JRk9STV9DT01QT05FTlRTJUdMX01BWF9DT01CSU5FRF9TSEFERVJfU1RPUkFHRV9CTE9DS1MvR0xfTUFYX0NPTUJJTkVEX1RFU1NfQ09OVFJPTF9VTklGT1JNX0NPTVBPTkVOVFMyR0xfTUFYX0NPTUJJTkVEX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0NPTVBPTkVOVFMjR0xfTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMnR0xfTUFYX0NPTUJJTkVEX1NIQURFUl9PVVRQVVRfUkVTT1VSQ0VTHkdMX01BWF9DT01CSU5FRF9VTklGT1JNX0JMT0NLUylHTF9NQVhfQ09NQklORURfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUyVHTF9NQVhfQ09NUFVURV9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTHkdMX01BWF9DT01QVVRFX0FUT01JQ19DT1VOVEVSUx1HTF9NQVhfQ09NUFVURV9JTUFHRV9VTklGT1JNUx5HTF9NQVhfQ09NQklORURfSU1BR0VfVU5JRk9STVMkR0xfTUFYX0NPTVBVVEVfU0hBREVSX1NUT1JBR0VfQkxPQ0tTIkdMX01BWF9DT01QVVRFX1RFWFRVUkVfSU1BR0VfVU5JVFMhR0xfTUFYX0NPTVBVVEVfU0hBUkVEX01FTU9SWV9TSVpFHUdMX01BWF9DT01QVVRFX1VOSUZPUk1fQkxPQ0tTIUdMX01BWF9DT01QVVRFX1VOSUZPUk1fQ09NUE9ORU5UUx9HTF9NQVhfQ09NUFVURV9XT1JLX0dST1VQX0NPVU5UJUdMX01BWF9DT01QVVRFX1dPUktfR1JPVVBfSU5WT0NBVElPTlMeR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9TSVpFHEdMX01BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUeR0xfTUFYX0RFQlVHX0dST1VQX1NUQUNLX0RFUFRIHEdMX01BWF9ERUJVR19MT0dHRURfTUVTU0FHRVMbR0xfTUFYX0RFQlVHX01FU1NBR0VfTEVOR1RIE0dMX01BWF9EUkFXX0JVRkZFUlMUR0xfTUFYX0VMRU1FTlRfSU5ERVgXR0xfTUFYX0VMRU1FTlRTX0lORElDRVMYR0xfTUFYX0VMRU1FTlRTX1ZFUlRJQ0VTJkdMX01BWF9GUkFHTUVOVF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTH0dMX01BWF9GUkFHTUVOVF9BVE9NSUNfQ09VTlRFUlMeR0xfTUFYX0ZSQUdNRU5UX0lNQUdFX1VOSUZPUk1TIEdMX01BWF9GUkFHTUVOVF9JTlBVVF9DT01QT05FTlRTJEdMX01BWF9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVCVHTF9NQVhfRlJBR01FTlRfU0hBREVSX1NUT1JBR0VfQkxPQ0tTJEdMX01JTl9QUk9HUkFNX1RFWFRVUkVfR0FUSEVSX09GRlNFVCRHTF9NQVhfUFJPR1JBTV9URVhUVVJFX0dBVEhFUl9PRkZTRVQeR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQkxPQ0tTIkdMX01BWF9GUkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFMfR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUxlHTF9NQVhfRlJBTUVCVUZGRVJfSEVJR0hUGUdMX01BWF9GUkFNRUJVRkZFUl9MQVlFUlMaR0xfTUFYX0ZSQU1FQlVGRkVSX1NBTVBMRVMYR0xfTUFYX0ZSQU1FQlVGRkVSX1dJRFRIJkdMX01BWF9HRU9NRVRSWV9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTH0dMX01BWF9HRU9NRVRSWV9BVE9NSUNfQ09VTlRFUlMeR0xfTUFYX0dFT01FVFJZX0lNQUdFX1VOSUZPUk1TIEdMX01BWF9HRU9NRVRSWV9JTlBVVF9DT01QT05FTlRTIUdMX01BWF9HRU9NRVRSWV9PVVRQVVRfQ09NUE9ORU5UUx9HTF9NQVhfR0VPTUVUUllfT1VUUFVUX1ZFUlRJQ0VTIkdMX01BWF9HRU9NRVRSWV9TSEFERVJfSU5WT0NBVElPTlMlR0xfTUFYX0dFT01FVFJZX1NIQURFUl9TVE9SQUdFX0JMT0NLUyNHTF9NQVhfR0VPTUVUUllfVEVYVFVSRV9JTUFHRV9VTklUUydHTF9NQVhfR0VPTUVUUllfVE9UQUxfT1VUUFVUX0NPTVBPTkVOVFMeR0xfTUFYX0dFT01FVFJZX1VOSUZPUk1fQkxPQ0tTIkdMX01BWF9HRU9NRVRSWV9VTklGT1JNX0NPTVBPTkVOVFMWR0xfTUFYX0lOVEVHRVJfU0FNUExFUxNHTF9NQVhfTEFCRUxfTEVOR1RIG0dMX01BWF9QUk9HUkFNX1RFWEVMX09GRlNFVBhHTF9NQVhfUkVOREVSQlVGRkVSX1NJWkUYR0xfTUFYX1NBTVBMRV9NQVNLX1dPUkRTDkdMX01BWF9TQU1QTEVTGkdMX01BWF9TRVJWRVJfV0FJVF9USU1FT1VUIEdMX01BWF9TSEFERVJfU1RPUkFHRV9CTE9DS19TSVpFJUdMX01BWF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfQklORElOR1MqR0xfTUFYX1RFU1NfQ09OVFJPTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTI0dMX01BWF9URVNTX0NPTlRST0xfQVRPTUlDX0NPVU5URVJTIkdMX01BWF9URVNTX0NPTlRST0xfSU1BR0VfVU5JRk9STVMkR0xfTUFYX1RFU1NfQ09OVFJPTF9JTlBVVF9DT01QT05FTlRTJUdMX01BWF9URVNTX0NPTlRST0xfT1VUUFVUX0NPTVBPTkVOVFMpR0xfTUFYX1RFU1NfQ09OVFJPTF9TSEFERVJfU1RPUkFHRV9CTE9DS1MnR0xfTUFYX1RFU1NfQ09OVFJPTF9URVhUVVJFX0lNQUdFX1VOSVRTK0dMX01BWF9URVNTX0NPTlRST0xfVE9UQUxfT1VUUFVUX0NPTVBPTkVOVFMiR0xfTUFYX1RFU1NfQ09OVFJPTF9VTklGT1JNX0JMT0NLUyZHTF9NQVhfVEVTU19DT05UUk9MX1VOSUZPUk1fQ09NUE9ORU5UUy1HTF9NQVhfVEVTU19FVkFMVUFUSU9OX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMmR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9BVE9NSUNfQ09VTlRFUlMlR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9JTUFHRV9VTklGT1JNUydHTF9NQVhfVEVTU19FVkFMVUFUSU9OX0lOUFVUX0NPTVBPTkVOVFMoR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9PVVRQVVRfQ09NUE9ORU5UUyxHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1NIQURFUl9TVE9SQUdFX0JMT0NLUypHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1RFWFRVUkVfSU1BR0VfVU5JVFMlR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0JMT0NLUylHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1VOSUZPUk1fQ09NUE9ORU5UUxVHTF9NQVhfVEVTU19HRU5fTEVWRUwVR0xfTUFYX1BBVENIX1ZFUlRJQ0VTHEdMX01BWF9URVNTX1BBVENIX0NPTVBPTkVOVFMaR0xfTUFYX1RFWFRVUkVfQlVGRkVSX1NJWkUaR0xfTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMXR0xfTUFYX1RFWFRVUkVfTE9EX0JJQVMTR0xfTUFYX1RFWFRVUkVfU0laRTBHTF9NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX0lOVEVSTEVBVkVEX0NPTVBPTkVOVFMqR0xfTUFYX1RSQU5TRk9STV9GRUVEQkFDS19TRVBBUkFURV9BVFRSSUJTLUdMX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQ09NUE9ORU5UUxlHTF9NQVhfVU5JRk9STV9CTE9DS19TSVpFHkdMX01BWF9VTklGT1JNX0JVRkZFUl9CSU5ESU5HUxhHTF9NQVhfVU5JRk9STV9MT0NBVElPTlMZR0xfTUFYX1ZBUllJTkdfQ09NUE9ORU5UUxZHTF9NQVhfVkFSWUlOR19WRUNUT1JTHUdMX01BWF9WRVJURVhfQVRPTUlDX0NPVU5URVJTJEdMX01BWF9WRVJURVhfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx1HTF9NQVhfVkVSVEVYX0FUVFJJQl9CSU5ESU5HUxtHTF9NQVhfVkVSVEVYX0FUVFJJQl9TVFJJREUkR0xfTUFYX1ZFUlRFWF9BVFRSSUJfUkVMQVRJVkVfT0ZGU0VUFUdMX01BWF9WRVJURVhfQVRUUklCUxxHTF9NQVhfVkVSVEVYX0lNQUdFX1VOSUZPUk1TH0dMX01BWF9WRVJURVhfT1VUUFVUX0NPTVBPTkVOVFMjR0xfTUFYX1ZFUlRFWF9TSEFERVJfU1RPUkFHRV9CTE9DS1MhR0xfTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTHEdMX01BWF9WRVJURVhfVU5JRk9STV9CTE9DS1MgR0xfTUFYX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFMdR0xfTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMUR0xfTUFYX1ZJRVdQT1JUX0RJTVMkR0xfTUlOX0ZSQUdNRU5UX0lOVEVSUE9MQVRJT05fT0ZGU0VUG0dMX01JTl9QUk9HUkFNX1RFWEVMX09GRlNFVBtHTF9NSU5fU0FNUExFX1NIQURJTkdfVkFMVUUQR0xfTUlOT1JfVkVSU0lPTh9HTF9NVUxUSVNBTVBMRV9MSU5FX1dJRFRIX1JBTkdFJUdMX01VTFRJU0FNUExFX0xJTkVfV0lEVEhfR1JBTlVMQVJJVFkhR0xfTlVNX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTEUdMX05VTV9FWFRFTlNJT05THUdMX05VTV9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTHEdMX05VTV9TSEFERVJfQklOQVJZX0ZPUk1BVFMRR0xfUEFDS19BTElHTk1FTlQUR0xfUEFDS19JTUFHRV9IRUlHSFQSR0xfUEFDS19ST1dfTEVOR1RIE0dMX1BBQ0tfU0tJUF9JTUFHRVMTR0xfUEFDS19TS0lQX1BJWEVMUxFHTF9QQUNLX1NLSVBfUk9XUxFHTF9QQVRDSF9WRVJUSUNFUxxHTF9QSVhFTF9QQUNLX0JVRkZFUl9CSU5ESU5HHkdMX1BJWEVMX1VOUEFDS19CVUZGRVJfQklORElORxhHTF9QT0xZR09OX09GRlNFVF9GQUNUT1IWR0xfUE9MWUdPTl9PRkZTRVRfRklMTBdHTF9QT0xZR09OX09GRlNFVF9VTklUUxlHTF9QUklNSVRJVkVfQk9VTkRJTkdfQk9YIEdMX1BSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYGUdMX1BST0dSQU1fQklOQVJZX0ZPUk1BVFMbR0xfUFJPR1JBTV9QSVBFTElORV9CSU5ESU5HFUdMX1JBU1RFUklaRVJfRElTQ0FSRA5HTF9SRUFEX0JVRkZFUhtHTF9SRUFEX0ZSQU1FQlVGRkVSX0JJTkRJTkcLR0xfUkVEX0JJVFMXR0xfUkVOREVSQlVGRkVSX0JJTkRJTkceR0xfUkVTRVRfTk9USUZJQ0FUSU9OX1NUUkFURUdZG0dMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRRFHTF9TQU1QTEVfQlVGRkVSUxJHTF9TQU1QTEVfQ09WRVJBR0UZR0xfU0FNUExFX0NPVkVSQUdFX0lOVkVSVBhHTF9TQU1QTEVfQ09WRVJBR0VfVkFMVUURR0xfU0FNUExFX1NIQURJTkcSR0xfU0FNUExFUl9CSU5ESU5HCkdMX1NBTVBMRVMOR0xfU0NJU1NPUl9CT1gPR0xfU0NJU1NPUl9URVNUGEdMX1NIQURFUl9CSU5BUllfRk9STUFUUxJHTF9TSEFERVJfQ09NUElMRVIgR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX0JJTkRJTkcpR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX09GRlNFVF9BTElHTk1FTlQdR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX1NJWkUeR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX1NUQVJUFEdMX1NURU5DSUxfQkFDS19GQUlMFEdMX1NURU5DSUxfQkFDS19GVU5DH0dMX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZBSUwfR0xfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTUxNHTF9TVEVOQ0lMX0JBQ0tfUkVGGkdMX1NURU5DSUxfQkFDS19WQUxVRV9NQVNLGUdMX1NURU5DSUxfQkFDS19XUklURU1BU0sPR0xfU1RFTkNJTF9CSVRTFkdMX1NURU5DSUxfQ0xFQVJfVkFMVUUPR0xfU1RFTkNJTF9GQUlMD0dMX1NURU5DSUxfRlVOQxpHTF9TVEVOQ0lMX1BBU1NfREVQVEhfRkFJTBpHTF9TVEVOQ0lMX1BBU1NfREVQVEhfUEFTUw5HTF9TVEVOQ0lMX1JFRg9HTF9TVEVOQ0lMX1RFU1QVR0xfU1RFTkNJTF9WQUxVRV9NQVNLFEdMX1NURU5DSUxfV1JJVEVNQVNLEEdMX1NVQlBJWEVMX0JJVFMVR0xfVEVYVFVSRV9CSU5ESU5HXzJEH0dMX1RFWFRVUkVfQklORElOR19FWFRFUk5BTF9PRVMbR0xfVEVYVFVSRV9CSU5ESU5HXzJEX0FSUkFZIUdMX1RFWFRVUkVfQklORElOR18yRF9NVUxUSVNBTVBMRSdHTF9URVhUVVJFX0JJTkRJTkdfMkRfTVVMVElTQU1QTEVfQVJSQVkVR0xfVEVYVFVSRV9CSU5ESU5HXzNEGUdMX1RFWFRVUkVfQklORElOR19CVUZGRVIbR0xfVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQIUdMX1RFWFRVUkVfQklORElOR19DVUJFX01BUF9BUlJBWRlHTF9URVhUVVJFX0JVRkZFUl9CSU5ESU5HIkdMX1RFWFRVUkVfQlVGRkVSX09GRlNFVF9BTElHTk1FTlQcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0FDVElWRR1HTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQklORElORyRHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkchR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TSVpFIkdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU1RBUlQcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1BBVVNFRBlHTF9VTklGT1JNX0JVRkZFUl9CSU5ESU5HIkdMX1VOSUZPUk1fQlVGRkVSX09GRlNFVF9BTElHTk1FTlQWR0xfVU5JRk9STV9CVUZGRVJfU0laRRdHTF9VTklGT1JNX0JVRkZFUl9TVEFSVBNHTF9VTlBBQ0tfQUxJR05NRU5UFkdMX1VOUEFDS19JTUFHRV9IRUlHSFQUR0xfVU5QQUNLX1JPV19MRU5HVEgVR0xfVU5QQUNLX1NLSVBfSU1BR0VTFUdMX1VOUEFDS19TS0lQX1BJWEVMUxNHTF9VTlBBQ0tfU0tJUF9ST1dTF0dMX1ZFUlRFWF9BUlJBWV9CSU5ESU5HGUdMX1ZFUlRFWF9CSU5ESU5HX0RJVklTT1IYR0xfVkVSVEVYX0JJTkRJTkdfT0ZGU0VUGEdMX1ZFUlRFWF9CSU5ESU5HX1NUUklERQtHTF9WSUVXUE9SVCFHTF9NQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQTR0xfR1BVX0RJU0pPSU5UX0VYVIW/BIXBBoXDCIXFCg1nbEdldEJvb2xlYW52BnZhbHVlcwQBAgIYZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpNjR2AoXHDIXJCIXLChhnbEdldEJ1ZmZlclBhcmFtZXRlcmk2NHYGdGFyZ2V0DQ9HTF9BUlJBWV9CVUZGRVIXR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVITR0xfQ09QWV9SRUFEX0JVRkZFUhRHTF9DT1BZX1dSSVRFX0JVRkZFUhRHTF9QSVhFTF9QQUNLX0JVRkZFUhZHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSHEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIRR0xfVU5JRk9STV9CVUZGRVIYR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSG0dMX0RJU1BBVENIX0lORElSRUNUX0JVRkZFUhdHTF9EUkFXX0lORElSRUNUX0JVRkZFUhhHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVIRR0xfVEVYVFVSRV9CVUZGRVKFzQyFzwiF0QoYZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpNjR2CXBhcmFtZXRlcgYOR0xfQlVGRkVSX1NJWkUPR0xfQlVGRkVSX1VTQUdFFkdMX0JVRkZFUl9BQ0NFU1NfRkxBR1MQR0xfQlVGRkVSX01BUFBFRBRHTF9CVUZGRVJfTUFQX0xFTkdUSBRHTF9CVUZGRVJfTUFQX09GRlNFVAIWZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdgKF0wyF1QiF1woWZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdgZ0YXJnZXQND0dMX0FSUkFZX0JVRkZFUhdHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUhNHTF9DT1BZX1JFQURfQlVGRkVSFEdMX0NPUFlfV1JJVEVfQlVGRkVSFEdMX1BJWEVMX1BBQ0tfQlVGRkVSFkdMX1BJWEVMX1VOUEFDS19CVUZGRVIcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUhFHTF9VTklGT1JNX0JVRkZFUhhHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVIbR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSF0dMX0RSQVdfSU5ESVJFQ1RfQlVGRkVSGEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUhFHTF9URVhUVVJFX0JVRkZFUoXZDIXbCIXdChZnbEdldEJ1ZmZlclBhcmFtZXRlcml2CXBhcmFtZXRlcgYOR0xfQlVGRkVSX1NJWkUPR0xfQlVGRkVSX1VTQUdFFkdMX0JVRkZFUl9BQ0NFU1NfRkxBR1MQR0xfQlVGRkVSX01BUFBFRBRHTF9CVUZGRVJfTUFQX0xFTkdUSBRHTF9CVUZGRVJfTUFQX09GRlNFVAITZ2xHZXRCdWZmZXJQb2ludGVydgOF3wyF4QiF4woTZ2xHZXRCdWZmZXJQb2ludGVydgZ0YXJnZXQND0dMX0FSUkFZX0JVRkZFUhNHTF9DT1BZX1JFQURfQlVGRkVSFEdMX0NPUFlfV1JJVEVfQlVGRkVSF0dMX0VMRU1FTlRfQVJSQVlfQlVGRkVSFEdMX1BJWEVMX1BBQ0tfQlVGRkVSFkdMX1BJWEVMX1VOUEFDS19CVUZGRVIcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUhFHTF9VTklGT1JNX0JVRkZFUhhHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVIbR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSF0dMX0RSQVdfSU5ESVJFQ1RfQlVGRkVSGEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUhFHTF9URVhUVVJFX0JVRkZFUoXlDIXnCIXpChNnbEdldEJ1ZmZlclBvaW50ZXJ2BXBuYW1lARVHTF9CVUZGRVJfTUFQX1BPSU5URVKF6wSF7QaF7wiF8QoTZ2xHZXRCdWZmZXJQb2ludGVydgZwYXJhbXMEAQICFmdsR2V0QnVmZmVyUG9pbnRlcnZPRVMDhfMMhfUIhfcKFmdsR2V0QnVmZmVyUG9pbnRlcnZPRVMGdGFyZ2V0DQ9HTF9BUlJBWV9CVUZGRVITR0xfQ09QWV9SRUFEX0JVRkZFUhRHTF9DT1BZX1dSSVRFX0JVRkZFUhdHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUhRHTF9QSVhFTF9QQUNLX0JVRkZFUhZHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSHEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIRR0xfVU5JRk9STV9CVUZGRVIYR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSG0dMX0RJU1BBVENIX0lORElSRUNUX0JVRkZFUhdHTF9EUkFXX0lORElSRUNUX0JVRkZFUhhHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVIRR0xfVEVYVFVSRV9CVUZGRVKF+QyF+wiF/QoWZ2xHZXRCdWZmZXJQb2ludGVydk9FUwVwbmFtZQEVR0xfQlVGRkVSX01BUF9QT0lOVEVShf8EhgEGhgMIhgUKFmdsR2V0QnVmZmVyUG9pbnRlcnZPRVMGcGFyYW1zBAECAhRnbEdldERlYnVnTWVzc2FnZUxvZwaGBwSGCQaGCwiGDQoUZ2xHZXREZWJ1Z01lc3NhZ2VMb2cHc291cmNlcwQBAoYPBIYRBoYTCIYVChRnbEdldERlYnVnTWVzc2FnZUxvZwV0eXBlcwQBAoYXBIYZBoYbCIYdChRnbEdldERlYnVnTWVzc2FnZUxvZwNpZHMEAQKGHwSGIQaGIwiGJQoUZ2xHZXREZWJ1Z01lc3NhZ2VMb2cKc2V2ZXJpdGllcwQBAoYnBIYpBoYrCIYtChRnbEdldERlYnVnTWVzc2FnZUxvZwdsZW5ndGhzBAEChi8EhjEGhjMIhjUKFGdsR2V0RGVidWdNZXNzYWdlTG9nCm1lc3NhZ2VMb2cEAQICF2dsR2V0RGVidWdNZXNzYWdlTG9nS0hSBoY3BIY5BoY7CIY9ChdnbEdldERlYnVnTWVzc2FnZUxvZ0tIUgdzb3VyY2VzBAEChj8EhkEGhkMIhkUKF2dsR2V0RGVidWdNZXNzYWdlTG9nS0hSBXR5cGVzBAEChkcEhkkGhksIhk0KF2dsR2V0RGVidWdNZXNzYWdlTG9nS0hSA2lkcwQBAoZPBIZRBoZTCIZVChdnbEdldERlYnVnTWVzc2FnZUxvZ0tIUgpzZXZlcml0aWVzBAEChlcEhlkGhlsIhl0KF2dsR2V0RGVidWdNZXNzYWdlTG9nS0hSB2xlbmd0aHMEAQKGXwSGYQaGYwiGZQoXZ2xHZXREZWJ1Z01lc3NhZ2VMb2dLSFIKbWVzc2FnZUxvZwQBAgILZ2xHZXRGbG9hdHYChmcMhmkIhmsKC2dsR2V0RmxvYXR2BXBhcmFtgSoRR0xfQUNUSVZFX1RFWFRVUkUbR0xfQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFG0dMX0FMSUFTRURfUE9JTlRfU0laRV9SQU5HRQ1HTF9BTFBIQV9CSVRTF0dMX0FSUkFZX0JVRkZFUl9CSU5ESU5HIEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9CSU5ESU5HHUdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TSVpFHkdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TVEFSVAhHTF9CTEVORA5HTF9CTEVORF9DT0xPUhJHTF9CTEVORF9EU1RfQUxQSEEQR0xfQkxFTkRfRFNUX1JHQhdHTF9CTEVORF9FUVVBVElPTl9BTFBIQRVHTF9CTEVORF9FUVVBVElPTl9SR0ISR0xfQkxFTkRfU1JDX0FMUEhBEEdMX0JMRU5EX1NSQ19SR0IMR0xfQkxVRV9CSVRTFEdMX0NPTE9SX0NMRUFSX1ZBTFVFEkdMX0NPTE9SX1dSSVRFTUFTSx1HTF9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUxBHTF9DT05URVhUX0ZMQUdTGEdMX0NPTlRFWFRfUk9CVVNUX0FDQ0VTUxtHTF9DT1BZX1JFQURfQlVGRkVSX0JJTkRJTkccR0xfQ09QWV9XUklURV9CVUZGRVJfQklORElORwxHTF9DVUxMX0ZBQ0URR0xfQ1VMTF9GQUNFX01PREUSR0xfQ1VSUkVOVF9QUk9HUkFNGkdMX0RFQlVHX0dST1VQX1NUQUNLX0RFUFRIGEdMX0RFQlVHX0xPR0dFRF9NRVNTQUdFUyNHTF9ERUJVR19ORVhUX0xPR0dFRF9NRVNTQUdFX0xFTkdUSA1HTF9ERVBUSF9CSVRTFEdMX0RFUFRIX0NMRUFSX1ZBTFVFDUdMX0RFUFRIX0ZVTkMOR0xfREVQVEhfUkFOR0UNR0xfREVQVEhfVEVTVBJHTF9ERVBUSF9XUklURU1BU0sjR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSX0JJTkRJTkcJR0xfRElUSEVSDkdMX0RSQVdfQlVGRkVSD0dMX0RSQVdfQlVGRkVSMA9HTF9EUkFXX0JVRkZFUjEPR0xfRFJBV19CVUZGRVIyD0dMX0RSQVdfQlVGRkVSMw9HTF9EUkFXX0JVRkZFUjQPR0xfRFJBV19CVUZGRVI1D0dMX0RSQVdfQlVGRkVSNg9HTF9EUkFXX0JVRkZFUjcPR0xfRFJBV19CVUZGRVI4D0dMX0RSQVdfQlVGRkVSORBHTF9EUkFXX0JVRkZFUjEwEEdMX0RSQVdfQlVGRkVSMTEQR0xfRFJBV19CVUZGRVIxMhBHTF9EUkFXX0JVRkZFUjEzEEdMX0RSQVdfQlVGRkVSMTQQR0xfRFJBV19CVUZGRVIxNRtHTF9EUkFXX0ZSQU1FQlVGRkVSX0JJTkRJTkcfR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORyVHTF9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVF9CSVRTIkdMX0ZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlQNR0xfRlJPTlRfRkFDRRdHTF9HRU5FUkFURV9NSVBNQVBfSElOVA1HTF9HUkVFTl9CSVRTFUdMX0lNQUdFX0JJTkRJTkdfTkFNRRZHTF9JTUFHRV9CSU5ESU5HX0xFVkVMGEdMX0lNQUdFX0JJTkRJTkdfTEFZRVJFRBZHTF9JTUFHRV9CSU5ESU5HX0xBWUVSF0dMX0lNQUdFX0JJTkRJTkdfQUNDRVNTF0dMX0lNQUdFX0JJTkRJTkdfRk9STUFUI0dMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfRk9STUFUIUdMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfVFlQRRlHTF9MQVlFUl9QUk9WT0tJTkdfVkVSVEVYDUdMX0xJTkVfV0lEVEgqR0xfUFJJTUlUSVZFX1JFU1RBUlRfRk9SX1BBVENIRVNfU1VQUE9SVEVEEEdMX01BSk9SX1ZFUlNJT04WR0xfTUFYXzNEX1RFWFRVUkVfU0laRRtHTF9NQVhfQVJSQVlfVEVYVFVSRV9MQVlFUlMlR0xfTUFYX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9CSU5ESU5HUyFHTF9NQVhfQVRPTUlDX0NPVU5URVJfQlVGRkVSX1NJWkUmR0xfTUFYX0NPTUJJTkVEX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMYR0xfTUFYX0NPTE9SX0FUVEFDSE1FTlRTHEdMX01BWF9DT0xPUl9URVhUVVJFX1NBTVBMRVMcR0xfTUFYX0RFUFRIX1RFWFRVUkVfU0FNUExFUx9HTF9NQVhfQ09NQklORURfQVRPTUlDX0NPVU5URVJTEkdMX01BWF9JTUFHRV9VTklUUypHTF9NQVhfQ09NQklORURfQ09NUFVURV9VTklGT1JNX0NPTVBPTkVOVFMrR0xfTUFYX0NPTUJJTkVEX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UUytHTF9NQVhfQ09NQklORURfR0VPTUVUUllfVU5JRk9STV9DT01QT05FTlRTJUdMX01BWF9DT01CSU5FRF9TSEFERVJfU1RPUkFHRV9CTE9DS1MvR0xfTUFYX0NPTUJJTkVEX1RFU1NfQ09OVFJPTF9VTklGT1JNX0NPTVBPTkVOVFMyR0xfTUFYX0NPTUJJTkVEX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0NPTVBPTkVOVFMjR0xfTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMnR0xfTUFYX0NPTUJJTkVEX1NIQURFUl9PVVRQVVRfUkVTT1VSQ0VTHkdMX01BWF9DT01CSU5FRF9VTklGT1JNX0JMT0NLUylHTF9NQVhfQ09NQklORURfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUyVHTF9NQVhfQ09NUFVURV9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTHkdMX01BWF9DT01QVVRFX0FUT01JQ19DT1VOVEVSUx1HTF9NQVhfQ09NUFVURV9JTUFHRV9VTklGT1JNUx5HTF9NQVhfQ09NQklORURfSU1BR0VfVU5JRk9STVMkR0xfTUFYX0NPTVBVVEVfU0hBREVSX1NUT1JBR0VfQkxPQ0tTIkdMX01BWF9DT01QVVRFX1RFWFRVUkVfSU1BR0VfVU5JVFMhR0xfTUFYX0NPTVBVVEVfU0hBUkVEX01FTU9SWV9TSVpFHUdMX01BWF9DT01QVVRFX1VOSUZPUk1fQkxPQ0tTIUdMX01BWF9DT01QVVRFX1VOSUZPUk1fQ09NUE9ORU5UUx9HTF9NQVhfQ09NUFVURV9XT1JLX0dST1VQX0NPVU5UJUdMX01BWF9DT01QVVRFX1dPUktfR1JPVVBfSU5WT0NBVElPTlMeR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9TSVpFHEdMX01BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUeR0xfTUFYX0RFQlVHX0dST1VQX1NUQUNLX0RFUFRIHEdMX01BWF9ERUJVR19MT0dHRURfTUVTU0FHRVMbR0xfTUFYX0RFQlVHX01FU1NBR0VfTEVOR1RIE0dMX01BWF9EUkFXX0JVRkZFUlMUR0xfTUFYX0VMRU1FTlRfSU5ERVgXR0xfTUFYX0VMRU1FTlRTX0lORElDRVMYR0xfTUFYX0VMRU1FTlRTX1ZFUlRJQ0VTJkdMX01BWF9GUkFHTUVOVF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTH0dMX01BWF9GUkFHTUVOVF9BVE9NSUNfQ09VTlRFUlMeR0xfTUFYX0ZSQUdNRU5UX0lNQUdFX1VOSUZPUk1TIEdMX01BWF9GUkFHTUVOVF9JTlBVVF9DT01QT05FTlRTJEdMX01BWF9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVCVHTF9NQVhfRlJBR01FTlRfU0hBREVSX1NUT1JBR0VfQkxPQ0tTJEdMX01JTl9QUk9HUkFNX1RFWFRVUkVfR0FUSEVSX09GRlNFVCRHTF9NQVhfUFJPR1JBTV9URVhUVVJFX0dBVEhFUl9PRkZTRVQeR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQkxPQ0tTIkdMX01BWF9GUkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFMfR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUxlHTF9NQVhfRlJBTUVCVUZGRVJfSEVJR0hUGUdMX01BWF9GUkFNRUJVRkZFUl9MQVlFUlMaR0xfTUFYX0ZSQU1FQlVGRkVSX1NBTVBMRVMYR0xfTUFYX0ZSQU1FQlVGRkVSX1dJRFRIJkdMX01BWF9HRU9NRVRSWV9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTH0dMX01BWF9HRU9NRVRSWV9BVE9NSUNfQ09VTlRFUlMeR0xfTUFYX0dFT01FVFJZX0lNQUdFX1VOSUZPUk1TIEdMX01BWF9HRU9NRVRSWV9JTlBVVF9DT01QT05FTlRTIUdMX01BWF9HRU9NRVRSWV9PVVRQVVRfQ09NUE9ORU5UUx9HTF9NQVhfR0VPTUVUUllfT1VUUFVUX1ZFUlRJQ0VTIkdMX01BWF9HRU9NRVRSWV9TSEFERVJfSU5WT0NBVElPTlMlR0xfTUFYX0dFT01FVFJZX1NIQURFUl9TVE9SQUdFX0JMT0NLUyNHTF9NQVhfR0VPTUVUUllfVEVYVFVSRV9JTUFHRV9VTklUUydHTF9NQVhfR0VPTUVUUllfVE9UQUxfT1VUUFVUX0NPTVBPTkVOVFMeR0xfTUFYX0dFT01FVFJZX1VOSUZPUk1fQkxPQ0tTIkdMX01BWF9HRU9NRVRSWV9VTklGT1JNX0NPTVBPTkVOVFMWR0xfTUFYX0lOVEVHRVJfU0FNUExFUxNHTF9NQVhfTEFCRUxfTEVOR1RIG0dMX01BWF9QUk9HUkFNX1RFWEVMX09GRlNFVBhHTF9NQVhfUkVOREVSQlVGRkVSX1NJWkUYR0xfTUFYX1NBTVBMRV9NQVNLX1dPUkRTDkdMX01BWF9TQU1QTEVTGkdMX01BWF9TRVJWRVJfV0FJVF9USU1FT1VUIEdMX01BWF9TSEFERVJfU1RPUkFHRV9CTE9DS19TSVpFJUdMX01BWF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfQklORElOR1MqR0xfTUFYX1RFU1NfQ09OVFJPTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTI0dMX01BWF9URVNTX0NPTlRST0xfQVRPTUlDX0NPVU5URVJTIkdMX01BWF9URVNTX0NPTlRST0xfSU1BR0VfVU5JRk9STVMkR0xfTUFYX1RFU1NfQ09OVFJPTF9JTlBVVF9DT01QT05FTlRTJUdMX01BWF9URVNTX0NPTlRST0xfT1VUUFVUX0NPTVBPTkVOVFMpR0xfTUFYX1RFU1NfQ09OVFJPTF9TSEFERVJfU1RPUkFHRV9CTE9DS1MnR0xfTUFYX1RFU1NfQ09OVFJPTF9URVhUVVJFX0lNQUdFX1VOSVRTK0dMX01BWF9URVNTX0NPTlRST0xfVE9UQUxfT1VUUFVUX0NPTVBPTkVOVFMiR0xfTUFYX1RFU1NfQ09OVFJPTF9VTklGT1JNX0JMT0NLUyZHTF9NQVhfVEVTU19DT05UUk9MX1VOSUZPUk1fQ09NUE9ORU5UUy1HTF9NQVhfVEVTU19FVkFMVUFUSU9OX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMmR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9BVE9NSUNfQ09VTlRFUlMlR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9JTUFHRV9VTklGT1JNUydHTF9NQVhfVEVTU19FVkFMVUFUSU9OX0lOUFVUX0NPTVBPTkVOVFMoR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9PVVRQVVRfQ09NUE9ORU5UUyxHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1NIQURFUl9TVE9SQUdFX0JMT0NLUypHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1RFWFRVUkVfSU1BR0VfVU5JVFMlR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0JMT0NLUylHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1VOSUZPUk1fQ09NUE9ORU5UUxVHTF9NQVhfVEVTU19HRU5fTEVWRUwVR0xfTUFYX1BBVENIX1ZFUlRJQ0VTHEdMX01BWF9URVNTX1BBVENIX0NPTVBPTkVOVFMaR0xfTUFYX1RFWFRVUkVfQlVGRkVSX1NJWkUaR0xfTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMXR0xfTUFYX1RFWFRVUkVfTE9EX0JJQVMTR0xfTUFYX1RFWFRVUkVfU0laRTBHTF9NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX0lOVEVSTEVBVkVEX0NPTVBPTkVOVFMqR0xfTUFYX1RSQU5TRk9STV9GRUVEQkFDS19TRVBBUkFURV9BVFRSSUJTLUdMX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQ09NUE9ORU5UUxlHTF9NQVhfVU5JRk9STV9CTE9DS19TSVpFHkdMX01BWF9VTklGT1JNX0JVRkZFUl9CSU5ESU5HUxhHTF9NQVhfVU5JRk9STV9MT0NBVElPTlMZR0xfTUFYX1ZBUllJTkdfQ09NUE9ORU5UUxZHTF9NQVhfVkFSWUlOR19WRUNUT1JTHUdMX01BWF9WRVJURVhfQVRPTUlDX0NPVU5URVJTJEdMX01BWF9WRVJURVhfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx1HTF9NQVhfVkVSVEVYX0FUVFJJQl9CSU5ESU5HUxtHTF9NQVhfVkVSVEVYX0FUVFJJQl9TVFJJREUkR0xfTUFYX1ZFUlRFWF9BVFRSSUJfUkVMQVRJVkVfT0ZGU0VUFUdMX01BWF9WRVJURVhfQVRUUklCUxxHTF9NQVhfVkVSVEVYX0lNQUdFX1VOSUZPUk1TH0dMX01BWF9WRVJURVhfT1VUUFVUX0NPTVBPTkVOVFMjR0xfTUFYX1ZFUlRFWF9TSEFERVJfU1RPUkFHRV9CTE9DS1MhR0xfTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTHEdMX01BWF9WRVJURVhfVU5JRk9STV9CTE9DS1MgR0xfTUFYX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFMdR0xfTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMUR0xfTUFYX1ZJRVdQT1JUX0RJTVMkR0xfTUlOX0ZSQUdNRU5UX0lOVEVSUE9MQVRJT05fT0ZGU0VUG0dMX01JTl9QUk9HUkFNX1RFWEVMX09GRlNFVBtHTF9NSU5fU0FNUExFX1NIQURJTkdfVkFMVUUQR0xfTUlOT1JfVkVSU0lPTh9HTF9NVUxUSVNBTVBMRV9MSU5FX1dJRFRIX1JBTkdFJUdMX01VTFRJU0FNUExFX0xJTkVfV0lEVEhfR1JBTlVMQVJJVFkhR0xfTlVNX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTEUdMX05VTV9FWFRFTlNJT05THUdMX05VTV9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTHEdMX05VTV9TSEFERVJfQklOQVJZX0ZPUk1BVFMRR0xfUEFDS19BTElHTk1FTlQUR0xfUEFDS19JTUFHRV9IRUlHSFQSR0xfUEFDS19ST1dfTEVOR1RIE0dMX1BBQ0tfU0tJUF9JTUFHRVMTR0xfUEFDS19TS0lQX1BJWEVMUxFHTF9QQUNLX1NLSVBfUk9XUxFHTF9QQVRDSF9WRVJUSUNFUxxHTF9QSVhFTF9QQUNLX0JVRkZFUl9CSU5ESU5HHkdMX1BJWEVMX1VOUEFDS19CVUZGRVJfQklORElORxhHTF9QT0xZR09OX09GRlNFVF9GQUNUT1IWR0xfUE9MWUdPTl9PRkZTRVRfRklMTBdHTF9QT0xZR09OX09GRlNFVF9VTklUUxlHTF9QUklNSVRJVkVfQk9VTkRJTkdfQk9YIEdMX1BSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYGUdMX1BST0dSQU1fQklOQVJZX0ZPUk1BVFMbR0xfUFJPR1JBTV9QSVBFTElORV9CSU5ESU5HFUdMX1JBU1RFUklaRVJfRElTQ0FSRA5HTF9SRUFEX0JVRkZFUhtHTF9SRUFEX0ZSQU1FQlVGRkVSX0JJTkRJTkcLR0xfUkVEX0JJVFMXR0xfUkVOREVSQlVGRkVSX0JJTkRJTkceR0xfUkVTRVRfTk9USUZJQ0FUSU9OX1NUUkFURUdZG0dMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRRFHTF9TQU1QTEVfQlVGRkVSUxJHTF9TQU1QTEVfQ09WRVJBR0UZR0xfU0FNUExFX0NPVkVSQUdFX0lOVkVSVBhHTF9TQU1QTEVfQ09WRVJBR0VfVkFMVUURR0xfU0FNUExFX1NIQURJTkcSR0xfU0FNUExFUl9CSU5ESU5HCkdMX1NBTVBMRVMOR0xfU0NJU1NPUl9CT1gPR0xfU0NJU1NPUl9URVNUGEdMX1NIQURFUl9CSU5BUllfRk9STUFUUxJHTF9TSEFERVJfQ09NUElMRVIgR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX0JJTkRJTkcpR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX09GRlNFVF9BTElHTk1FTlQdR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX1NJWkUeR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX1NUQVJUFEdMX1NURU5DSUxfQkFDS19GQUlMFEdMX1NURU5DSUxfQkFDS19GVU5DH0dMX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZBSUwfR0xfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTUxNHTF9TVEVOQ0lMX0JBQ0tfUkVGGkdMX1NURU5DSUxfQkFDS19WQUxVRV9NQVNLGUdMX1NURU5DSUxfQkFDS19XUklURU1BU0sPR0xfU1RFTkNJTF9CSVRTFkdMX1NURU5DSUxfQ0xFQVJfVkFMVUUPR0xfU1RFTkNJTF9GQUlMD0dMX1NURU5DSUxfRlVOQxpHTF9TVEVOQ0lMX1BBU1NfREVQVEhfRkFJTBpHTF9TVEVOQ0lMX1BBU1NfREVQVEhfUEFTUw5HTF9TVEVOQ0lMX1JFRg9HTF9TVEVOQ0lMX1RFU1QVR0xfU1RFTkNJTF9WQUxVRV9NQVNLFEdMX1NURU5DSUxfV1JJVEVNQVNLEEdMX1NVQlBJWEVMX0JJVFMVR0xfVEVYVFVSRV9CSU5ESU5HXzJEH0dMX1RFWFRVUkVfQklORElOR19FWFRFUk5BTF9PRVMbR0xfVEVYVFVSRV9CSU5ESU5HXzJEX0FSUkFZIUdMX1RFWFRVUkVfQklORElOR18yRF9NVUxUSVNBTVBMRSdHTF9URVhUVVJFX0JJTkRJTkdfMkRfTVVMVElTQU1QTEVfQVJSQVkVR0xfVEVYVFVSRV9CSU5ESU5HXzNEGUdMX1RFWFRVUkVfQklORElOR19CVUZGRVIbR0xfVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQIUdMX1RFWFRVUkVfQklORElOR19DVUJFX01BUF9BUlJBWRlHTF9URVhUVVJFX0JVRkZFUl9CSU5ESU5HIkdMX1RFWFRVUkVfQlVGRkVSX09GRlNFVF9BTElHTk1FTlQcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0FDVElWRR1HTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQklORElORyRHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkchR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TSVpFIkdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU1RBUlQcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1BBVVNFRBlHTF9VTklGT1JNX0JVRkZFUl9CSU5ESU5HIkdMX1VOSUZPUk1fQlVGRkVSX09GRlNFVF9BTElHTk1FTlQWR0xfVU5JRk9STV9CVUZGRVJfU0laRRdHTF9VTklGT1JNX0JVRkZFUl9TVEFSVBNHTF9VTlBBQ0tfQUxJR05NRU5UFkdMX1VOUEFDS19JTUFHRV9IRUlHSFQUR0xfVU5QQUNLX1JPV19MRU5HVEgVR0xfVU5QQUNLX1NLSVBfSU1BR0VTFUdMX1VOUEFDS19TS0lQX1BJWEVMUxNHTF9VTlBBQ0tfU0tJUF9ST1dTF0dMX1ZFUlRFWF9BUlJBWV9CSU5ESU5HGUdMX1ZFUlRFWF9CSU5ESU5HX0RJVklTT1IYR0xfVkVSVEVYX0JJTkRJTkdfT0ZGU0VUGEdMX1ZFUlRFWF9CSU5ESU5HX1NUUklERQtHTF9WSUVXUE9SVCFHTF9NQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQTR0xfR1BVX0RJU0pPSU5UX0VYVIZtBIZvBoZxCIZzCgtnbEdldEZsb2F0dgZ2YWx1ZXMEAQICJWdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYDhnUMhncIhnkKJWdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYSZnJhbWVidWZmZXJfdGFyZ2V0Aw5HTF9GUkFNRUJVRkZFUhNHTF9EUkFXX0ZSQU1FQlVGRkVSE0dMX1JFQURfRlJBTUVCVUZGRVKGewyGfQiGfwolZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdgphdHRhY2htZW50FhRHTF9DT0xPUl9BVFRBQ0hNRU5UMBNHTF9ERVBUSF9BVFRBQ0hNRU5UFUdMX1NURU5DSUxfQVRUQUNITUVOVAdHTF9CQUNLFEdMX0NPTE9SX0FUVEFDSE1FTlQxFUdMX0NPTE9SX0FUVEFDSE1FTlQxMBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTEVR0xfQ09MT1JfQVRUQUNITUVOVDEyFUdMX0NPTE9SX0FUVEFDSE1FTlQxMxVHTF9DT0xPUl9BVFRBQ0hNRU5UMTQVR0xfQ09MT1JfQVRUQUNITUVOVDE1FEdMX0NPTE9SX0FUVEFDSE1FTlQyFEdMX0NPTE9SX0FUVEFDSE1FTlQzFEdMX0NPTE9SX0FUVEFDSE1FTlQ0FEdMX0NPTE9SX0FUVEFDSE1FTlQ1FEdMX0NPTE9SX0FUVEFDSE1FTlQ2FEdMX0NPTE9SX0FUVEFDSE1FTlQ3FEdMX0NPTE9SX0FUVEFDSE1FTlQ4FEdMX0NPTE9SX0FUVEFDSE1FTlQ5CEdMX0RFUFRIG0dMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVApHTF9TVEVOQ0lMhoEMhoMIhoUKJWdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYJcGFyYW1ldGVyDiVHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FJUdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUvR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0UnR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMJEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQUxQSEFfU0laRSNHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0JMVUVfU0laRShHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5HKEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09NUE9ORU5UX1RZUEUkR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9ERVBUSF9TSVpFJEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfR1JFRU5fU0laRSJHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1JFRF9TSVpFJkdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfU1RFTkNJTF9TSVpFJ0dMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MQVlFUiFHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0xBWUVSRUQCG2dsR2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdgKGhwyGiQiGiwobZ2xHZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2BnRhcmdldAMOR0xfRlJBTUVCVUZGRVITR0xfRFJBV19GUkFNRUJVRkZFUhNHTF9SRUFEX0ZSQU1FQlVGRkVSho0Mho8IhpEKG2dsR2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdgVwbmFtZQUtR0xfRlJBTUVCVUZGRVJfREVGQVVMVF9GSVhFRF9TQU1QTEVfTE9DQVRJT05THUdMX0ZSQU1FQlVGRkVSX0RFRkFVTFRfSEVJR0hUHkdMX0ZSQU1FQlVGRkVSX0RFRkFVTFRfU0FNUExFUxxHTF9GUkFNRUJVRkZFUl9ERUZBVUxUX1dJRFRIHUdMX0ZSQU1FQlVGRkVSX0RFRkFVTFRfTEFZRVJTAhFnbEdldEludGVnZXI2NGlfdgKGkwyGlQiGlwoRZ2xHZXRJbnRlZ2VyNjRpX3YFcGFyYW2BKhFHTF9BQ1RJVkVfVEVYVFVSRRtHTF9BTElBU0VEX0xJTkVfV0lEVEhfUkFOR0UbR0xfQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFDUdMX0FMUEhBX0JJVFMXR0xfQVJSQVlfQlVGRkVSX0JJTkRJTkcgR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSX0JJTkRJTkcdR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSX1NJWkUeR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSX1NUQVJUCEdMX0JMRU5EDkdMX0JMRU5EX0NPTE9SEkdMX0JMRU5EX0RTVF9BTFBIQRBHTF9CTEVORF9EU1RfUkdCF0dMX0JMRU5EX0VRVUFUSU9OX0FMUEhBFUdMX0JMRU5EX0VRVUFUSU9OX1JHQhJHTF9CTEVORF9TUkNfQUxQSEEQR0xfQkxFTkRfU1JDX1JHQgxHTF9CTFVFX0JJVFMUR0xfQ09MT1JfQ0xFQVJfVkFMVUUSR0xfQ09MT1JfV1JJVEVNQVNLHUdMX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTEEdMX0NPTlRFWFRfRkxBR1MYR0xfQ09OVEVYVF9ST0JVU1RfQUNDRVNTG0dMX0NPUFlfUkVBRF9CVUZGRVJfQklORElORxxHTF9DT1BZX1dSSVRFX0JVRkZFUl9CSU5ESU5HDEdMX0NVTExfRkFDRRFHTF9DVUxMX0ZBQ0VfTU9ERRJHTF9DVVJSRU5UX1BST0dSQU0aR0xfREVCVUdfR1JPVVBfU1RBQ0tfREVQVEgYR0xfREVCVUdfTE9HR0VEX01FU1NBR0VTI0dMX0RFQlVHX05FWFRfTE9HR0VEX01FU1NBR0VfTEVOR1RIDUdMX0RFUFRIX0JJVFMUR0xfREVQVEhfQ0xFQVJfVkFMVUUNR0xfREVQVEhfRlVOQw5HTF9ERVBUSF9SQU5HRQ1HTF9ERVBUSF9URVNUEkdMX0RFUFRIX1dSSVRFTUFTSyNHTF9ESVNQQVRDSF9JTkRJUkVDVF9CVUZGRVJfQklORElORwlHTF9ESVRIRVIOR0xfRFJBV19CVUZGRVIPR0xfRFJBV19CVUZGRVIwD0dMX0RSQVdfQlVGRkVSMQ9HTF9EUkFXX0JVRkZFUjIPR0xfRFJBV19CVUZGRVIzD0dMX0RSQVdfQlVGRkVSNA9HTF9EUkFXX0JVRkZFUjUPR0xfRFJBV19CVUZGRVI2D0dMX0RSQVdfQlVGRkVSNw9HTF9EUkFXX0JVRkZFUjgPR0xfRFJBV19CVUZGRVI5EEdMX0RSQVdfQlVGRkVSMTAQR0xfRFJBV19CVUZGRVIxMRBHTF9EUkFXX0JVRkZFUjEyEEdMX0RSQVdfQlVGRkVSMTMQR0xfRFJBV19CVUZGRVIxNBBHTF9EUkFXX0JVRkZFUjE1G0dMX0RSQVdfRlJBTUVCVUZGRVJfQklORElORx9HTF9FTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HJUdMX0ZSQUdNRU5UX0lOVEVSUE9MQVRJT05fT0ZGU0VUX0JJVFMiR0xfRlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVA1HTF9GUk9OVF9GQUNFF0dMX0dFTkVSQVRFX01JUE1BUF9ISU5UDUdMX0dSRUVOX0JJVFMVR0xfSU1BR0VfQklORElOR19OQU1FFkdMX0lNQUdFX0JJTkRJTkdfTEVWRUwYR0xfSU1BR0VfQklORElOR19MQVlFUkVEFkdMX0lNQUdFX0JJTkRJTkdfTEFZRVIXR0xfSU1BR0VfQklORElOR19BQ0NFU1MXR0xfSU1BR0VfQklORElOR19GT1JNQVQjR0xfSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9GT1JNQVQhR0xfSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9UWVBFGUdMX0xBWUVSX1BST1ZPS0lOR19WRVJURVgNR0xfTElORV9XSURUSCpHTF9QUklNSVRJVkVfUkVTVEFSVF9GT1JfUEFUQ0hFU19TVVBQT1JURUQQR0xfTUFKT1JfVkVSU0lPThZHTF9NQVhfM0RfVEVYVFVSRV9TSVpFG0dMX01BWF9BUlJBWV9URVhUVVJFX0xBWUVSUyVHTF9NQVhfQVRPTUlDX0NPVU5URVJfQlVGRkVSX0JJTkRJTkdTIUdMX01BWF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfU0laRSZHTF9NQVhfQ09NQklORURfQVRPTUlDX0NPVU5URVJfQlVGRkVSUxhHTF9NQVhfQ09MT1JfQVRUQUNITUVOVFMcR0xfTUFYX0NPTE9SX1RFWFRVUkVfU0FNUExFUxxHTF9NQVhfREVQVEhfVEVYVFVSRV9TQU1QTEVTH0dMX01BWF9DT01CSU5FRF9BVE9NSUNfQ09VTlRFUlMSR0xfTUFYX0lNQUdFX1VOSVRTKkdMX01BWF9DT01CSU5FRF9DT01QVVRFX1VOSUZPUk1fQ09NUE9ORU5UUytHTF9NQVhfQ09NQklORURfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTK0dMX01BWF9DT01CSU5FRF9HRU9NRVRSWV9VTklGT1JNX0NPTVBPTkVOVFMlR0xfTUFYX0NPTUJJTkVEX1NIQURFUl9TVE9SQUdFX0JMT0NLUy9HTF9NQVhfQ09NQklORURfVEVTU19DT05UUk9MX1VOSUZPUk1fQ09NUE9ORU5UUzJHTF9NQVhfQ09NQklORURfVEVTU19FVkFMVUFUSU9OX1VOSUZPUk1fQ09NUE9ORU5UUyNHTF9NQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUydHTF9NQVhfQ09NQklORURfU0hBREVSX09VVFBVVF9SRVNPVVJDRVMeR0xfTUFYX0NPTUJJTkVEX1VOSUZPUk1fQkxPQ0tTKUdMX01BWF9DT01CSU5FRF9WRVJURVhfVU5JRk9STV9DT01QT05FTlRTJUdMX01BWF9DT01QVVRFX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMeR0xfTUFYX0NPTVBVVEVfQVRPTUlDX0NPVU5URVJTHUdMX01BWF9DT01QVVRFX0lNQUdFX1VOSUZPUk1THkdMX01BWF9DT01CSU5FRF9JTUFHRV9VTklGT1JNUyRHTF9NQVhfQ09NUFVURV9TSEFERVJfU1RPUkFHRV9CTE9DS1MiR0xfTUFYX0NPTVBVVEVfVEVYVFVSRV9JTUFHRV9VTklUUyFHTF9NQVhfQ09NUFVURV9TSEFSRURfTUVNT1JZX1NJWkUdR0xfTUFYX0NPTVBVVEVfVU5JRk9STV9CTE9DS1MhR0xfTUFYX0NPTVBVVEVfVU5JRk9STV9DT01QT05FTlRTH0dMX01BWF9DT01QVVRFX1dPUktfR1JPVVBfQ09VTlQlR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9JTlZPQ0FUSU9OUx5HTF9NQVhfQ09NUFVURV9XT1JLX0dST1VQX1NJWkUcR0xfTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRR5HTF9NQVhfREVCVUdfR1JPVVBfU1RBQ0tfREVQVEgcR0xfTUFYX0RFQlVHX0xPR0dFRF9NRVNTQUdFUxtHTF9NQVhfREVCVUdfTUVTU0FHRV9MRU5HVEgTR0xfTUFYX0RSQVdfQlVGRkVSUxRHTF9NQVhfRUxFTUVOVF9JTkRFWBdHTF9NQVhfRUxFTUVOVFNfSU5ESUNFUxhHTF9NQVhfRUxFTUVOVFNfVkVSVElDRVMmR0xfTUFYX0ZSQUdNRU5UX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMfR0xfTUFYX0ZSQUdNRU5UX0FUT01JQ19DT1VOVEVSUx5HTF9NQVhfRlJBR01FTlRfSU1BR0VfVU5JRk9STVMgR0xfTUFYX0ZSQUdNRU5UX0lOUFVUX0NPTVBPTkVOVFMkR0xfTUFYX0ZSQUdNRU5UX0lOVEVSUE9MQVRJT05fT0ZGU0VUJUdMX01BWF9GUkFHTUVOVF9TSEFERVJfU1RPUkFHRV9CTE9DS1MkR0xfTUlOX1BST0dSQU1fVEVYVFVSRV9HQVRIRVJfT0ZGU0VUJEdMX01BWF9QUk9HUkFNX1RFWFRVUkVfR0FUSEVSX09GRlNFVB5HTF9NQVhfRlJBR01FTlRfVU5JRk9STV9CTE9DS1MiR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UUx9HTF9NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTGUdMX01BWF9GUkFNRUJVRkZFUl9IRUlHSFQZR0xfTUFYX0ZSQU1FQlVGRkVSX0xBWUVSUxpHTF9NQVhfRlJBTUVCVUZGRVJfU0FNUExFUxhHTF9NQVhfRlJBTUVCVUZGRVJfV0lEVEgmR0xfTUFYX0dFT01FVFJZX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMfR0xfTUFYX0dFT01FVFJZX0FUT01JQ19DT1VOVEVSUx5HTF9NQVhfR0VPTUVUUllfSU1BR0VfVU5JRk9STVMgR0xfTUFYX0dFT01FVFJZX0lOUFVUX0NPTVBPTkVOVFMhR0xfTUFYX0dFT01FVFJZX09VVFBVVF9DT01QT05FTlRTH0dMX01BWF9HRU9NRVRSWV9PVVRQVVRfVkVSVElDRVMiR0xfTUFYX0dFT01FVFJZX1NIQURFUl9JTlZPQ0FUSU9OUyVHTF9NQVhfR0VPTUVUUllfU0hBREVSX1NUT1JBR0VfQkxPQ0tTI0dMX01BWF9HRU9NRVRSWV9URVhUVVJFX0lNQUdFX1VOSVRTJ0dMX01BWF9HRU9NRVRSWV9UT1RBTF9PVVRQVVRfQ09NUE9ORU5UUx5HTF9NQVhfR0VPTUVUUllfVU5JRk9STV9CTE9DS1MiR0xfTUFYX0dFT01FVFJZX1VOSUZPUk1fQ09NUE9ORU5UUxZHTF9NQVhfSU5URUdFUl9TQU1QTEVTE0dMX01BWF9MQUJFTF9MRU5HVEgbR0xfTUFYX1BST0dSQU1fVEVYRUxfT0ZGU0VUGEdMX01BWF9SRU5ERVJCVUZGRVJfU0laRRhHTF9NQVhfU0FNUExFX01BU0tfV09SRFMOR0xfTUFYX1NBTVBMRVMaR0xfTUFYX1NFUlZFUl9XQUlUX1RJTUVPVVQgR0xfTUFYX1NIQURFUl9TVE9SQUdFX0JMT0NLX1NJWkUlR0xfTUFYX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9CSU5ESU5HUypHTF9NQVhfVEVTU19DT05UUk9MX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMjR0xfTUFYX1RFU1NfQ09OVFJPTF9BVE9NSUNfQ09VTlRFUlMiR0xfTUFYX1RFU1NfQ09OVFJPTF9JTUFHRV9VTklGT1JNUyRHTF9NQVhfVEVTU19DT05UUk9MX0lOUFVUX0NPTVBPTkVOVFMlR0xfTUFYX1RFU1NfQ09OVFJPTF9PVVRQVVRfQ09NUE9ORU5UUylHTF9NQVhfVEVTU19DT05UUk9MX1NIQURFUl9TVE9SQUdFX0JMT0NLUydHTF9NQVhfVEVTU19DT05UUk9MX1RFWFRVUkVfSU1BR0VfVU5JVFMrR0xfTUFYX1RFU1NfQ09OVFJPTF9UT1RBTF9PVVRQVVRfQ09NUE9ORU5UUyJHTF9NQVhfVEVTU19DT05UUk9MX1VOSUZPUk1fQkxPQ0tTJkdMX01BWF9URVNTX0NPTlRST0xfVU5JRk9STV9DT01QT05FTlRTLUdMX01BWF9URVNTX0VWQUxVQVRJT05fQVRPTUlDX0NPVU5URVJfQlVGRkVSUyZHTF9NQVhfVEVTU19FVkFMVUFUSU9OX0FUT01JQ19DT1VOVEVSUyVHTF9NQVhfVEVTU19FVkFMVUFUSU9OX0lNQUdFX1VOSUZPUk1TJ0dMX01BWF9URVNTX0VWQUxVQVRJT05fSU5QVVRfQ09NUE9ORU5UUyhHTF9NQVhfVEVTU19FVkFMVUFUSU9OX09VVFBVVF9DT01QT05FTlRTLEdMX01BWF9URVNTX0VWQUxVQVRJT05fU0hBREVSX1NUT1JBR0VfQkxPQ0tTKkdMX01BWF9URVNTX0VWQUxVQVRJT05fVEVYVFVSRV9JTUFHRV9VTklUUyVHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1VOSUZPUk1fQkxPQ0tTKUdMX01BWF9URVNTX0VWQUxVQVRJT05fVU5JRk9STV9DT01QT05FTlRTFUdMX01BWF9URVNTX0dFTl9MRVZFTBVHTF9NQVhfUEFUQ0hfVkVSVElDRVMcR0xfTUFYX1RFU1NfUEFUQ0hfQ09NUE9ORU5UUxpHTF9NQVhfVEVYVFVSRV9CVUZGRVJfU0laRRpHTF9NQVhfVEVYVFVSRV9JTUFHRV9VTklUUxdHTF9NQVhfVEVYVFVSRV9MT0RfQklBUxNHTF9NQVhfVEVYVFVSRV9TSVpFMEdMX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfSU5URVJMRUFWRURfQ09NUE9ORU5UUypHTF9NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFSQVRFX0FUVFJJQlMtR0xfTUFYX1RSQU5TRk9STV9GRUVEQkFDS19TRVBBUkFURV9DT01QT05FTlRTGUdMX01BWF9VTklGT1JNX0JMT0NLX1NJWkUeR0xfTUFYX1VOSUZPUk1fQlVGRkVSX0JJTkRJTkdTGEdMX01BWF9VTklGT1JNX0xPQ0FUSU9OUxlHTF9NQVhfVkFSWUlOR19DT01QT05FTlRTFkdMX01BWF9WQVJZSU5HX1ZFQ1RPUlMdR0xfTUFYX1ZFUlRFWF9BVE9NSUNfQ09VTlRFUlMkR0xfTUFYX1ZFUlRFWF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTHUdMX01BWF9WRVJURVhfQVRUUklCX0JJTkRJTkdTG0dMX01BWF9WRVJURVhfQVRUUklCX1NUUklERSRHTF9NQVhfVkVSVEVYX0FUVFJJQl9SRUxBVElWRV9PRkZTRVQVR0xfTUFYX1ZFUlRFWF9BVFRSSUJTHEdMX01BWF9WRVJURVhfSU1BR0VfVU5JRk9STVMfR0xfTUFYX1ZFUlRFWF9PVVRQVVRfQ09NUE9ORU5UUyNHTF9NQVhfVkVSVEVYX1NIQURFUl9TVE9SQUdFX0JMT0NLUyFHTF9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFMcR0xfTUFYX1ZFUlRFWF9VTklGT1JNX0JMT0NLUyBHTF9NQVhfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUx1HTF9NQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUxRHTF9NQVhfVklFV1BPUlRfRElNUyRHTF9NSU5fRlJBR01FTlRfSU5URVJQT0xBVElPTl9PRkZTRVQbR0xfTUlOX1BST0dSQU1fVEVYRUxfT0ZGU0VUG0dMX01JTl9TQU1QTEVfU0hBRElOR19WQUxVRRBHTF9NSU5PUl9WRVJTSU9OH0dMX01VTFRJU0FNUExFX0xJTkVfV0lEVEhfUkFOR0UlR0xfTVVMVElTQU1QTEVfTElORV9XSURUSF9HUkFOVUxBUklUWSFHTF9OVU1fQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMRR0xfTlVNX0VYVEVOU0lPTlMdR0xfTlVNX1BST0dSQU1fQklOQVJZX0ZPUk1BVFMcR0xfTlVNX1NIQURFUl9CSU5BUllfRk9STUFUUxFHTF9QQUNLX0FMSUdOTUVOVBRHTF9QQUNLX0lNQUdFX0hFSUdIVBJHTF9QQUNLX1JPV19MRU5HVEgTR0xfUEFDS19TS0lQX0lNQUdFUxNHTF9QQUNLX1NLSVBfUElYRUxTEUdMX1BBQ0tfU0tJUF9ST1dTEUdMX1BBVENIX1ZFUlRJQ0VTHEdMX1BJWEVMX1BBQ0tfQlVGRkVSX0JJTkRJTkceR0xfUElYRUxfVU5QQUNLX0JVRkZFUl9CSU5ESU5HGEdMX1BPTFlHT05fT0ZGU0VUX0ZBQ1RPUhZHTF9QT0xZR09OX09GRlNFVF9GSUxMF0dMX1BPTFlHT05fT0ZGU0VUX1VOSVRTGUdMX1BSSU1JVElWRV9CT1VORElOR19CT1ggR0xfUFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgZR0xfUFJPR1JBTV9CSU5BUllfRk9STUFUUxtHTF9QUk9HUkFNX1BJUEVMSU5FX0JJTkRJTkcVR0xfUkFTVEVSSVpFUl9ESVNDQVJEDkdMX1JFQURfQlVGRkVSG0dMX1JFQURfRlJBTUVCVUZGRVJfQklORElORwtHTF9SRURfQklUUxdHTF9SRU5ERVJCVUZGRVJfQklORElORx5HTF9SRVNFVF9OT1RJRklDQVRJT05fU1RSQVRFR1kbR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFEUdMX1NBTVBMRV9CVUZGRVJTEkdMX1NBTVBMRV9DT1ZFUkFHRRlHTF9TQU1QTEVfQ09WRVJBR0VfSU5WRVJUGEdMX1NBTVBMRV9DT1ZFUkFHRV9WQUxVRRFHTF9TQU1QTEVfU0hBRElORxJHTF9TQU1QTEVSX0JJTkRJTkcKR0xfU0FNUExFUw5HTF9TQ0lTU09SX0JPWA9HTF9TQ0lTU09SX1RFU1QYR0xfU0hBREVSX0JJTkFSWV9GT1JNQVRTEkdMX1NIQURFUl9DT01QSUxFUiBHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfQklORElORylHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVB1HTF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfU0laRR5HTF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfU1RBUlQUR0xfU1RFTkNJTF9CQUNLX0ZBSUwUR0xfU1RFTkNJTF9CQUNLX0ZVTkMfR0xfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfRkFJTB9HTF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9QQVNTE0dMX1NURU5DSUxfQkFDS19SRUYaR0xfU1RFTkNJTF9CQUNLX1ZBTFVFX01BU0sZR0xfU1RFTkNJTF9CQUNLX1dSSVRFTUFTSw9HTF9TVEVOQ0lMX0JJVFMWR0xfU1RFTkNJTF9DTEVBUl9WQUxVRQ9HTF9TVEVOQ0lMX0ZBSUwPR0xfU1RFTkNJTF9GVU5DGkdMX1NURU5DSUxfUEFTU19ERVBUSF9GQUlMGkdMX1NURU5DSUxfUEFTU19ERVBUSF9QQVNTDkdMX1NURU5DSUxfUkVGD0dMX1NURU5DSUxfVEVTVBVHTF9TVEVOQ0lMX1ZBTFVFX01BU0sUR0xfU1RFTkNJTF9XUklURU1BU0sQR0xfU1VCUElYRUxfQklUUxVHTF9URVhUVVJFX0JJTkRJTkdfMkQfR0xfVEVYVFVSRV9CSU5ESU5HX0VYVEVSTkFMX09FUxtHTF9URVhUVVJFX0JJTkRJTkdfMkRfQVJSQVkhR0xfVEVYVFVSRV9CSU5ESU5HXzJEX01VTFRJU0FNUExFJ0dMX1RFWFRVUkVfQklORElOR18yRF9NVUxUSVNBTVBMRV9BUlJBWRVHTF9URVhUVVJFX0JJTkRJTkdfM0QZR0xfVEVYVFVSRV9CSU5ESU5HX0JVRkZFUhtHTF9URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVAhR0xfVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQX0FSUkFZGUdMX1RFWFRVUkVfQlVGRkVSX0JJTkRJTkciR0xfVEVYVFVSRV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVBxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQUNUSVZFHUdMX1RSQU5TRk9STV9GRUVEQkFDS19CSU5ESU5HJEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfQklORElORyFHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NJWkUiR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TVEFSVBxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfUEFVU0VEGUdMX1VOSUZPUk1fQlVGRkVSX0JJTkRJTkciR0xfVU5JRk9STV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVBZHTF9VTklGT1JNX0JVRkZFUl9TSVpFF0dMX1VOSUZPUk1fQlVGRkVSX1NUQVJUE0dMX1VOUEFDS19BTElHTk1FTlQWR0xfVU5QQUNLX0lNQUdFX0hFSUdIVBRHTF9VTlBBQ0tfUk9XX0xFTkdUSBVHTF9VTlBBQ0tfU0tJUF9JTUFHRVMVR0xfVU5QQUNLX1NLSVBfUElYRUxTE0dMX1VOUEFDS19TS0lQX1JPV1MXR0xfVkVSVEVYX0FSUkFZX0JJTkRJTkcZR0xfVkVSVEVYX0JJTkRJTkdfRElWSVNPUhhHTF9WRVJURVhfQklORElOR19PRkZTRVQYR0xfVkVSVEVYX0JJTkRJTkdfU1RSSURFC0dMX1ZJRVdQT1JUIUdMX01BWF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVBNHTF9HUFVfRElTSk9JTlRfRVhUhpkEhpsGhp0Ihp8KEWdsR2V0SW50ZWdlcjY0aV92BnZhbHVlcwQBAgIPZ2xHZXRJbnRlZ2VyNjR2AoahDIajCIalCg9nbEdldEludGVnZXI2NHYFcGFyYW2BKhFHTF9BQ1RJVkVfVEVYVFVSRRtHTF9BTElBU0VEX0xJTkVfV0lEVEhfUkFOR0UbR0xfQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFDUdMX0FMUEhBX0JJVFMXR0xfQVJSQVlfQlVGRkVSX0JJTkRJTkcgR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSX0JJTkRJTkcdR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSX1NJWkUeR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSX1NUQVJUCEdMX0JMRU5EDkdMX0JMRU5EX0NPTE9SEkdMX0JMRU5EX0RTVF9BTFBIQRBHTF9CTEVORF9EU1RfUkdCF0dMX0JMRU5EX0VRVUFUSU9OX0FMUEhBFUdMX0JMRU5EX0VRVUFUSU9OX1JHQhJHTF9CTEVORF9TUkNfQUxQSEEQR0xfQkxFTkRfU1JDX1JHQgxHTF9CTFVFX0JJVFMUR0xfQ09MT1JfQ0xFQVJfVkFMVUUSR0xfQ09MT1JfV1JJVEVNQVNLHUdMX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTEEdMX0NPTlRFWFRfRkxBR1MYR0xfQ09OVEVYVF9ST0JVU1RfQUNDRVNTG0dMX0NPUFlfUkVBRF9CVUZGRVJfQklORElORxxHTF9DT1BZX1dSSVRFX0JVRkZFUl9CSU5ESU5HDEdMX0NVTExfRkFDRRFHTF9DVUxMX0ZBQ0VfTU9ERRJHTF9DVVJSRU5UX1BST0dSQU0aR0xfREVCVUdfR1JPVVBfU1RBQ0tfREVQVEgYR0xfREVCVUdfTE9HR0VEX01FU1NBR0VTI0dMX0RFQlVHX05FWFRfTE9HR0VEX01FU1NBR0VfTEVOR1RIDUdMX0RFUFRIX0JJVFMUR0xfREVQVEhfQ0xFQVJfVkFMVUUNR0xfREVQVEhfRlVOQw5HTF9ERVBUSF9SQU5HRQ1HTF9ERVBUSF9URVNUEkdMX0RFUFRIX1dSSVRFTUFTSyNHTF9ESVNQQVRDSF9JTkRJUkVDVF9CVUZGRVJfQklORElORwlHTF9ESVRIRVIOR0xfRFJBV19CVUZGRVIPR0xfRFJBV19CVUZGRVIwD0dMX0RSQVdfQlVGRkVSMQ9HTF9EUkFXX0JVRkZFUjIPR0xfRFJBV19CVUZGRVIzD0dMX0RSQVdfQlVGRkVSNA9HTF9EUkFXX0JVRkZFUjUPR0xfRFJBV19CVUZGRVI2D0dMX0RSQVdfQlVGRkVSNw9HTF9EUkFXX0JVRkZFUjgPR0xfRFJBV19CVUZGRVI5EEdMX0RSQVdfQlVGRkVSMTAQR0xfRFJBV19CVUZGRVIxMRBHTF9EUkFXX0JVRkZFUjEyEEdMX0RSQVdfQlVGRkVSMTMQR0xfRFJBV19CVUZGRVIxNBBHTF9EUkFXX0JVRkZFUjE1G0dMX0RSQVdfRlJBTUVCVUZGRVJfQklORElORx9HTF9FTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HJUdMX0ZSQUdNRU5UX0lOVEVSUE9MQVRJT05fT0ZGU0VUX0JJVFMiR0xfRlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVA1HTF9GUk9OVF9GQUNFF0dMX0dFTkVSQVRFX01JUE1BUF9ISU5UDUdMX0dSRUVOX0JJVFMVR0xfSU1BR0VfQklORElOR19OQU1FFkdMX0lNQUdFX0JJTkRJTkdfTEVWRUwYR0xfSU1BR0VfQklORElOR19MQVlFUkVEFkdMX0lNQUdFX0JJTkRJTkdfTEFZRVIXR0xfSU1BR0VfQklORElOR19BQ0NFU1MXR0xfSU1BR0VfQklORElOR19GT1JNQVQjR0xfSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9GT1JNQVQhR0xfSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9UWVBFGUdMX0xBWUVSX1BST1ZPS0lOR19WRVJURVgNR0xfTElORV9XSURUSCpHTF9QUklNSVRJVkVfUkVTVEFSVF9GT1JfUEFUQ0hFU19TVVBQT1JURUQQR0xfTUFKT1JfVkVSU0lPThZHTF9NQVhfM0RfVEVYVFVSRV9TSVpFG0dMX01BWF9BUlJBWV9URVhUVVJFX0xBWUVSUyVHTF9NQVhfQVRPTUlDX0NPVU5URVJfQlVGRkVSX0JJTkRJTkdTIUdMX01BWF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfU0laRSZHTF9NQVhfQ09NQklORURfQVRPTUlDX0NPVU5URVJfQlVGRkVSUxhHTF9NQVhfQ09MT1JfQVRUQUNITUVOVFMcR0xfTUFYX0NPTE9SX1RFWFRVUkVfU0FNUExFUxxHTF9NQVhfREVQVEhfVEVYVFVSRV9TQU1QTEVTH0dMX01BWF9DT01CSU5FRF9BVE9NSUNfQ09VTlRFUlMSR0xfTUFYX0lNQUdFX1VOSVRTKkdMX01BWF9DT01CSU5FRF9DT01QVVRFX1VOSUZPUk1fQ09NUE9ORU5UUytHTF9NQVhfQ09NQklORURfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTK0dMX01BWF9DT01CSU5FRF9HRU9NRVRSWV9VTklGT1JNX0NPTVBPTkVOVFMlR0xfTUFYX0NPTUJJTkVEX1NIQURFUl9TVE9SQUdFX0JMT0NLUy9HTF9NQVhfQ09NQklORURfVEVTU19DT05UUk9MX1VOSUZPUk1fQ09NUE9ORU5UUzJHTF9NQVhfQ09NQklORURfVEVTU19FVkFMVUFUSU9OX1VOSUZPUk1fQ09NUE9ORU5UUyNHTF9NQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUydHTF9NQVhfQ09NQklORURfU0hBREVSX09VVFBVVF9SRVNPVVJDRVMeR0xfTUFYX0NPTUJJTkVEX1VOSUZPUk1fQkxPQ0tTKUdMX01BWF9DT01CSU5FRF9WRVJURVhfVU5JRk9STV9DT01QT05FTlRTJUdMX01BWF9DT01QVVRFX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMeR0xfTUFYX0NPTVBVVEVfQVRPTUlDX0NPVU5URVJTHUdMX01BWF9DT01QVVRFX0lNQUdFX1VOSUZPUk1THkdMX01BWF9DT01CSU5FRF9JTUFHRV9VTklGT1JNUyRHTF9NQVhfQ09NUFVURV9TSEFERVJfU1RPUkFHRV9CTE9DS1MiR0xfTUFYX0NPTVBVVEVfVEVYVFVSRV9JTUFHRV9VTklUUyFHTF9NQVhfQ09NUFVURV9TSEFSRURfTUVNT1JZX1NJWkUdR0xfTUFYX0NPTVBVVEVfVU5JRk9STV9CTE9DS1MhR0xfTUFYX0NPTVBVVEVfVU5JRk9STV9DT01QT05FTlRTH0dMX01BWF9DT01QVVRFX1dPUktfR1JPVVBfQ09VTlQlR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9JTlZPQ0FUSU9OUx5HTF9NQVhfQ09NUFVURV9XT1JLX0dST1VQX1NJWkUcR0xfTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRR5HTF9NQVhfREVCVUdfR1JPVVBfU1RBQ0tfREVQVEgcR0xfTUFYX0RFQlVHX0xPR0dFRF9NRVNTQUdFUxtHTF9NQVhfREVCVUdfTUVTU0FHRV9MRU5HVEgTR0xfTUFYX0RSQVdfQlVGRkVSUxRHTF9NQVhfRUxFTUVOVF9JTkRFWBdHTF9NQVhfRUxFTUVOVFNfSU5ESUNFUxhHTF9NQVhfRUxFTUVOVFNfVkVSVElDRVMmR0xfTUFYX0ZSQUdNRU5UX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMfR0xfTUFYX0ZSQUdNRU5UX0FUT01JQ19DT1VOVEVSUx5HTF9NQVhfRlJBR01FTlRfSU1BR0VfVU5JRk9STVMgR0xfTUFYX0ZSQUdNRU5UX0lOUFVUX0NPTVBPTkVOVFMkR0xfTUFYX0ZSQUdNRU5UX0lOVEVSUE9MQVRJT05fT0ZGU0VUJUdMX01BWF9GUkFHTUVOVF9TSEFERVJfU1RPUkFHRV9CTE9DS1MkR0xfTUlOX1BST0dSQU1fVEVYVFVSRV9HQVRIRVJfT0ZGU0VUJEdMX01BWF9QUk9HUkFNX1RFWFRVUkVfR0FUSEVSX09GRlNFVB5HTF9NQVhfRlJBR01FTlRfVU5JRk9STV9CTE9DS1MiR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UUx9HTF9NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTGUdMX01BWF9GUkFNRUJVRkZFUl9IRUlHSFQZR0xfTUFYX0ZSQU1FQlVGRkVSX0xBWUVSUxpHTF9NQVhfRlJBTUVCVUZGRVJfU0FNUExFUxhHTF9NQVhfRlJBTUVCVUZGRVJfV0lEVEgmR0xfTUFYX0dFT01FVFJZX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMfR0xfTUFYX0dFT01FVFJZX0FUT01JQ19DT1VOVEVSUx5HTF9NQVhfR0VPTUVUUllfSU1BR0VfVU5JRk9STVMgR0xfTUFYX0dFT01FVFJZX0lOUFVUX0NPTVBPTkVOVFMhR0xfTUFYX0dFT01FVFJZX09VVFBVVF9DT01QT05FTlRTH0dMX01BWF9HRU9NRVRSWV9PVVRQVVRfVkVSVElDRVMiR0xfTUFYX0dFT01FVFJZX1NIQURFUl9JTlZPQ0FUSU9OUyVHTF9NQVhfR0VPTUVUUllfU0hBREVSX1NUT1JBR0VfQkxPQ0tTI0dMX01BWF9HRU9NRVRSWV9URVhUVVJFX0lNQUdFX1VOSVRTJ0dMX01BWF9HRU9NRVRSWV9UT1RBTF9PVVRQVVRfQ09NUE9ORU5UUx5HTF9NQVhfR0VPTUVUUllfVU5JRk9STV9CTE9DS1MiR0xfTUFYX0dFT01FVFJZX1VOSUZPUk1fQ09NUE9ORU5UUxZHTF9NQVhfSU5URUdFUl9TQU1QTEVTE0dMX01BWF9MQUJFTF9MRU5HVEgbR0xfTUFYX1BST0dSQU1fVEVYRUxfT0ZGU0VUGEdMX01BWF9SRU5ERVJCVUZGRVJfU0laRRhHTF9NQVhfU0FNUExFX01BU0tfV09SRFMOR0xfTUFYX1NBTVBMRVMaR0xfTUFYX1NFUlZFUl9XQUlUX1RJTUVPVVQgR0xfTUFYX1NIQURFUl9TVE9SQUdFX0JMT0NLX1NJWkUlR0xfTUFYX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9CSU5ESU5HUypHTF9NQVhfVEVTU19DT05UUk9MX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMjR0xfTUFYX1RFU1NfQ09OVFJPTF9BVE9NSUNfQ09VTlRFUlMiR0xfTUFYX1RFU1NfQ09OVFJPTF9JTUFHRV9VTklGT1JNUyRHTF9NQVhfVEVTU19DT05UUk9MX0lOUFVUX0NPTVBPTkVOVFMlR0xfTUFYX1RFU1NfQ09OVFJPTF9PVVRQVVRfQ09NUE9ORU5UUylHTF9NQVhfVEVTU19DT05UUk9MX1NIQURFUl9TVE9SQUdFX0JMT0NLUydHTF9NQVhfVEVTU19DT05UUk9MX1RFWFRVUkVfSU1BR0VfVU5JVFMrR0xfTUFYX1RFU1NfQ09OVFJPTF9UT1RBTF9PVVRQVVRfQ09NUE9ORU5UUyJHTF9NQVhfVEVTU19DT05UUk9MX1VOSUZPUk1fQkxPQ0tTJkdMX01BWF9URVNTX0NPTlRST0xfVU5JRk9STV9DT01QT05FTlRTLUdMX01BWF9URVNTX0VWQUxVQVRJT05fQVRPTUlDX0NPVU5URVJfQlVGRkVSUyZHTF9NQVhfVEVTU19FVkFMVUFUSU9OX0FUT01JQ19DT1VOVEVSUyVHTF9NQVhfVEVTU19FVkFMVUFUSU9OX0lNQUdFX1VOSUZPUk1TJ0dMX01BWF9URVNTX0VWQUxVQVRJT05fSU5QVVRfQ09NUE9ORU5UUyhHTF9NQVhfVEVTU19FVkFMVUFUSU9OX09VVFBVVF9DT01QT05FTlRTLEdMX01BWF9URVNTX0VWQUxVQVRJT05fU0hBREVSX1NUT1JBR0VfQkxPQ0tTKkdMX01BWF9URVNTX0VWQUxVQVRJT05fVEVYVFVSRV9JTUFHRV9VTklUUyVHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1VOSUZPUk1fQkxPQ0tTKUdMX01BWF9URVNTX0VWQUxVQVRJT05fVU5JRk9STV9DT01QT05FTlRTFUdMX01BWF9URVNTX0dFTl9MRVZFTBVHTF9NQVhfUEFUQ0hfVkVSVElDRVMcR0xfTUFYX1RFU1NfUEFUQ0hfQ09NUE9ORU5UUxpHTF9NQVhfVEVYVFVSRV9CVUZGRVJfU0laRRpHTF9NQVhfVEVYVFVSRV9JTUFHRV9VTklUUxdHTF9NQVhfVEVYVFVSRV9MT0RfQklBUxNHTF9NQVhfVEVYVFVSRV9TSVpFMEdMX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfSU5URVJMRUFWRURfQ09NUE9ORU5UUypHTF9NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFSQVRFX0FUVFJJQlMtR0xfTUFYX1RSQU5TRk9STV9GRUVEQkFDS19TRVBBUkFURV9DT01QT05FTlRTGUdMX01BWF9VTklGT1JNX0JMT0NLX1NJWkUeR0xfTUFYX1VOSUZPUk1fQlVGRkVSX0JJTkRJTkdTGEdMX01BWF9VTklGT1JNX0xPQ0FUSU9OUxlHTF9NQVhfVkFSWUlOR19DT01QT05FTlRTFkdMX01BWF9WQVJZSU5HX1ZFQ1RPUlMdR0xfTUFYX1ZFUlRFWF9BVE9NSUNfQ09VTlRFUlMkR0xfTUFYX1ZFUlRFWF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTHUdMX01BWF9WRVJURVhfQVRUUklCX0JJTkRJTkdTG0dMX01BWF9WRVJURVhfQVRUUklCX1NUUklERSRHTF9NQVhfVkVSVEVYX0FUVFJJQl9SRUxBVElWRV9PRkZTRVQVR0xfTUFYX1ZFUlRFWF9BVFRSSUJTHEdMX01BWF9WRVJURVhfSU1BR0VfVU5JRk9STVMfR0xfTUFYX1ZFUlRFWF9PVVRQVVRfQ09NUE9ORU5UUyNHTF9NQVhfVkVSVEVYX1NIQURFUl9TVE9SQUdFX0JMT0NLUyFHTF9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFMcR0xfTUFYX1ZFUlRFWF9VTklGT1JNX0JMT0NLUyBHTF9NQVhfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUx1HTF9NQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUxRHTF9NQVhfVklFV1BPUlRfRElNUyRHTF9NSU5fRlJBR01FTlRfSU5URVJQT0xBVElPTl9PRkZTRVQbR0xfTUlOX1BST0dSQU1fVEVYRUxfT0ZGU0VUG0dMX01JTl9TQU1QTEVfU0hBRElOR19WQUxVRRBHTF9NSU5PUl9WRVJTSU9OH0dMX01VTFRJU0FNUExFX0xJTkVfV0lEVEhfUkFOR0UlR0xfTVVMVElTQU1QTEVfTElORV9XSURUSF9HUkFOVUxBUklUWSFHTF9OVU1fQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMRR0xfTlVNX0VYVEVOU0lPTlMdR0xfTlVNX1BST0dSQU1fQklOQVJZX0ZPUk1BVFMcR0xfTlVNX1NIQURFUl9CSU5BUllfRk9STUFUUxFHTF9QQUNLX0FMSUdOTUVOVBRHTF9QQUNLX0lNQUdFX0hFSUdIVBJHTF9QQUNLX1JPV19MRU5HVEgTR0xfUEFDS19TS0lQX0lNQUdFUxNHTF9QQUNLX1NLSVBfUElYRUxTEUdMX1BBQ0tfU0tJUF9ST1dTEUdMX1BBVENIX1ZFUlRJQ0VTHEdMX1BJWEVMX1BBQ0tfQlVGRkVSX0JJTkRJTkceR0xfUElYRUxfVU5QQUNLX0JVRkZFUl9CSU5ESU5HGEdMX1BPTFlHT05fT0ZGU0VUX0ZBQ1RPUhZHTF9QT0xZR09OX09GRlNFVF9GSUxMF0dMX1BPTFlHT05fT0ZGU0VUX1VOSVRTGUdMX1BSSU1JVElWRV9CT1VORElOR19CT1ggR0xfUFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgZR0xfUFJPR1JBTV9CSU5BUllfRk9STUFUUxtHTF9QUk9HUkFNX1BJUEVMSU5FX0JJTkRJTkcVR0xfUkFTVEVSSVpFUl9ESVNDQVJEDkdMX1JFQURfQlVGRkVSG0dMX1JFQURfRlJBTUVCVUZGRVJfQklORElORwtHTF9SRURfQklUUxdHTF9SRU5ERVJCVUZGRVJfQklORElORx5HTF9SRVNFVF9OT1RJRklDQVRJT05fU1RSQVRFR1kbR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFEUdMX1NBTVBMRV9CVUZGRVJTEkdMX1NBTVBMRV9DT1ZFUkFHRRlHTF9TQU1QTEVfQ09WRVJBR0VfSU5WRVJUGEdMX1NBTVBMRV9DT1ZFUkFHRV9WQUxVRRFHTF9TQU1QTEVfU0hBRElORxJHTF9TQU1QTEVSX0JJTkRJTkcKR0xfU0FNUExFUw5HTF9TQ0lTU09SX0JPWA9HTF9TQ0lTU09SX1RFU1QYR0xfU0hBREVSX0JJTkFSWV9GT1JNQVRTEkdMX1NIQURFUl9DT01QSUxFUiBHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfQklORElORylHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVB1HTF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfU0laRR5HTF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfU1RBUlQUR0xfU1RFTkNJTF9CQUNLX0ZBSUwUR0xfU1RFTkNJTF9CQUNLX0ZVTkMfR0xfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfRkFJTB9HTF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9QQVNTE0dMX1NURU5DSUxfQkFDS19SRUYaR0xfU1RFTkNJTF9CQUNLX1ZBTFVFX01BU0sZR0xfU1RFTkNJTF9CQUNLX1dSSVRFTUFTSw9HTF9TVEVOQ0lMX0JJVFMWR0xfU1RFTkNJTF9DTEVBUl9WQUxVRQ9HTF9TVEVOQ0lMX0ZBSUwPR0xfU1RFTkNJTF9GVU5DGkdMX1NURU5DSUxfUEFTU19ERVBUSF9GQUlMGkdMX1NURU5DSUxfUEFTU19ERVBUSF9QQVNTDkdMX1NURU5DSUxfUkVGD0dMX1NURU5DSUxfVEVTVBVHTF9TVEVOQ0lMX1ZBTFVFX01BU0sUR0xfU1RFTkNJTF9XUklURU1BU0sQR0xfU1VCUElYRUxfQklUUxVHTF9URVhUVVJFX0JJTkRJTkdfMkQfR0xfVEVYVFVSRV9CSU5ESU5HX0VYVEVSTkFMX09FUxtHTF9URVhUVVJFX0JJTkRJTkdfMkRfQVJSQVkhR0xfVEVYVFVSRV9CSU5ESU5HXzJEX01VTFRJU0FNUExFJ0dMX1RFWFRVUkVfQklORElOR18yRF9NVUxUSVNBTVBMRV9BUlJBWRVHTF9URVhUVVJFX0JJTkRJTkdfM0QZR0xfVEVYVFVSRV9CSU5ESU5HX0JVRkZFUhtHTF9URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVAhR0xfVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQX0FSUkFZGUdMX1RFWFRVUkVfQlVGRkVSX0JJTkRJTkciR0xfVEVYVFVSRV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVBxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQUNUSVZFHUdMX1RSQU5TRk9STV9GRUVEQkFDS19CSU5ESU5HJEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfQklORElORyFHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NJWkUiR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TVEFSVBxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfUEFVU0VEGUdMX1VOSUZPUk1fQlVGRkVSX0JJTkRJTkciR0xfVU5JRk9STV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVBZHTF9VTklGT1JNX0JVRkZFUl9TSVpFF0dMX1VOSUZPUk1fQlVGRkVSX1NUQVJUE0dMX1VOUEFDS19BTElHTk1FTlQWR0xfVU5QQUNLX0lNQUdFX0hFSUdIVBRHTF9VTlBBQ0tfUk9XX0xFTkdUSBVHTF9VTlBBQ0tfU0tJUF9JTUFHRVMVR0xfVU5QQUNLX1NLSVBfUElYRUxTE0dMX1VOUEFDS19TS0lQX1JPV1MXR0xfVkVSVEVYX0FSUkFZX0JJTkRJTkcZR0xfVkVSVEVYX0JJTkRJTkdfRElWSVNPUhhHTF9WRVJURVhfQklORElOR19PRkZTRVQYR0xfVkVSVEVYX0JJTkRJTkdfU1RSSURFC0dMX1ZJRVdQT1JUIUdMX01BWF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVBNHTF9HUFVfRElTSk9JTlRfRVhUhqcEhqkGhqsIhq0KD2dsR2V0SW50ZWdlcjY0dgZ2YWx1ZXMEAQICFGdsR2V0SW50ZWdlcjY0dkFQUExFAoavDIaxCIazChRnbEdldEludGVnZXI2NHZBUFBMRQVwbmFtZYEqEUdMX0FDVElWRV9URVhUVVJFG0dMX0FMSUFTRURfTElORV9XSURUSF9SQU5HRRtHTF9BTElBU0VEX1BPSU5UX1NJWkVfUkFOR0UNR0xfQUxQSEFfQklUUxdHTF9BUlJBWV9CVUZGRVJfQklORElORyBHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfQklORElORx1HTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfU0laRR5HTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfU1RBUlQIR0xfQkxFTkQOR0xfQkxFTkRfQ09MT1ISR0xfQkxFTkRfRFNUX0FMUEhBEEdMX0JMRU5EX0RTVF9SR0IXR0xfQkxFTkRfRVFVQVRJT05fQUxQSEEVR0xfQkxFTkRfRVFVQVRJT05fUkdCEkdMX0JMRU5EX1NSQ19BTFBIQRBHTF9CTEVORF9TUkNfUkdCDEdMX0JMVUVfQklUUxRHTF9DT0xPUl9DTEVBUl9WQUxVRRJHTF9DT0xPUl9XUklURU1BU0sdR0xfQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMQR0xfQ09OVEVYVF9GTEFHUxhHTF9DT05URVhUX1JPQlVTVF9BQ0NFU1MbR0xfQ09QWV9SRUFEX0JVRkZFUl9CSU5ESU5HHEdMX0NPUFlfV1JJVEVfQlVGRkVSX0JJTkRJTkcMR0xfQ1VMTF9GQUNFEUdMX0NVTExfRkFDRV9NT0RFEkdMX0NVUlJFTlRfUFJPR1JBTRpHTF9ERUJVR19HUk9VUF9TVEFDS19ERVBUSBhHTF9ERUJVR19MT0dHRURfTUVTU0FHRVMjR0xfREVCVUdfTkVYVF9MT0dHRURfTUVTU0FHRV9MRU5HVEgNR0xfREVQVEhfQklUUxRHTF9ERVBUSF9DTEVBUl9WQUxVRQ1HTF9ERVBUSF9GVU5DDkdMX0RFUFRIX1JBTkdFDUdMX0RFUFRIX1RFU1QSR0xfREVQVEhfV1JJVEVNQVNLI0dMX0RJU1BBVENIX0lORElSRUNUX0JVRkZFUl9CSU5ESU5HCUdMX0RJVEhFUg5HTF9EUkFXX0JVRkZFUg9HTF9EUkFXX0JVRkZFUjAPR0xfRFJBV19CVUZGRVIxD0dMX0RSQVdfQlVGRkVSMg9HTF9EUkFXX0JVRkZFUjMPR0xfRFJBV19CVUZGRVI0D0dMX0RSQVdfQlVGRkVSNQ9HTF9EUkFXX0JVRkZFUjYPR0xfRFJBV19CVUZGRVI3D0dMX0RSQVdfQlVGRkVSOA9HTF9EUkFXX0JVRkZFUjkQR0xfRFJBV19CVUZGRVIxMBBHTF9EUkFXX0JVRkZFUjExEEdMX0RSQVdfQlVGRkVSMTIQR0xfRFJBV19CVUZGRVIxMxBHTF9EUkFXX0JVRkZFUjE0EEdMX0RSQVdfQlVGRkVSMTUbR0xfRFJBV19GUkFNRUJVRkZFUl9CSU5ESU5HH0dMX0VMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkclR0xfRlJBR01FTlRfSU5URVJQT0xBVElPTl9PRkZTRVRfQklUUyJHTF9GUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UDUdMX0ZST05UX0ZBQ0UXR0xfR0VORVJBVEVfTUlQTUFQX0hJTlQNR0xfR1JFRU5fQklUUxVHTF9JTUFHRV9CSU5ESU5HX05BTUUWR0xfSU1BR0VfQklORElOR19MRVZFTBhHTF9JTUFHRV9CSU5ESU5HX0xBWUVSRUQWR0xfSU1BR0VfQklORElOR19MQVlFUhdHTF9JTUFHRV9CSU5ESU5HX0FDQ0VTUxdHTF9JTUFHRV9CSU5ESU5HX0ZPUk1BVCNHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX0ZPUk1BVCFHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX1RZUEUZR0xfTEFZRVJfUFJPVk9LSU5HX1ZFUlRFWA1HTF9MSU5FX1dJRFRIKkdMX1BSSU1JVElWRV9SRVNUQVJUX0ZPUl9QQVRDSEVTX1NVUFBPUlRFRBBHTF9NQUpPUl9WRVJTSU9OFkdMX01BWF8zRF9URVhUVVJFX1NJWkUbR0xfTUFYX0FSUkFZX1RFWFRVUkVfTEFZRVJTJUdMX01BWF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfQklORElOR1MhR0xfTUFYX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TSVpFJkdMX01BWF9DT01CSU5FRF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTGEdMX01BWF9DT0xPUl9BVFRBQ0hNRU5UUxxHTF9NQVhfQ09MT1JfVEVYVFVSRV9TQU1QTEVTHEdMX01BWF9ERVBUSF9URVhUVVJFX1NBTVBMRVMfR0xfTUFYX0NPTUJJTkVEX0FUT01JQ19DT1VOVEVSUxJHTF9NQVhfSU1BR0VfVU5JVFMqR0xfTUFYX0NPTUJJTkVEX0NPTVBVVEVfVU5JRk9STV9DT01QT05FTlRTK0dMX01BWF9DT01CSU5FRF9GUkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFMrR0xfTUFYX0NPTUJJTkVEX0dFT01FVFJZX1VOSUZPUk1fQ09NUE9ORU5UUyVHTF9NQVhfQ09NQklORURfU0hBREVSX1NUT1JBR0VfQkxPQ0tTL0dMX01BWF9DT01CSU5FRF9URVNTX0NPTlRST0xfVU5JRk9STV9DT01QT05FTlRTMkdMX01BWF9DT01CSU5FRF9URVNTX0VWQUxVQVRJT05fVU5JRk9STV9DT01QT05FTlRTI0dMX01BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTJ0dMX01BWF9DT01CSU5FRF9TSEFERVJfT1VUUFVUX1JFU09VUkNFUx5HTF9NQVhfQ09NQklORURfVU5JRk9STV9CTE9DS1MpR0xfTUFYX0NPTUJJTkVEX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFMlR0xfTUFYX0NPTVBVVEVfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx5HTF9NQVhfQ09NUFVURV9BVE9NSUNfQ09VTlRFUlMdR0xfTUFYX0NPTVBVVEVfSU1BR0VfVU5JRk9STVMeR0xfTUFYX0NPTUJJTkVEX0lNQUdFX1VOSUZPUk1TJEdMX01BWF9DT01QVVRFX1NIQURFUl9TVE9SQUdFX0JMT0NLUyJHTF9NQVhfQ09NUFVURV9URVhUVVJFX0lNQUdFX1VOSVRTIUdMX01BWF9DT01QVVRFX1NIQVJFRF9NRU1PUllfU0laRR1HTF9NQVhfQ09NUFVURV9VTklGT1JNX0JMT0NLUyFHTF9NQVhfQ09NUFVURV9VTklGT1JNX0NPTVBPTkVOVFMfR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9DT1VOVCVHTF9NQVhfQ09NUFVURV9XT1JLX0dST1VQX0lOVk9DQVRJT05THkdMX01BWF9DT01QVVRFX1dPUktfR1JPVVBfU0laRRxHTF9NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFHkdMX01BWF9ERUJVR19HUk9VUF9TVEFDS19ERVBUSBxHTF9NQVhfREVCVUdfTE9HR0VEX01FU1NBR0VTG0dMX01BWF9ERUJVR19NRVNTQUdFX0xFTkdUSBNHTF9NQVhfRFJBV19CVUZGRVJTFEdMX01BWF9FTEVNRU5UX0lOREVYF0dMX01BWF9FTEVNRU5UU19JTkRJQ0VTGEdMX01BWF9FTEVNRU5UU19WRVJUSUNFUyZHTF9NQVhfRlJBR01FTlRfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx9HTF9NQVhfRlJBR01FTlRfQVRPTUlDX0NPVU5URVJTHkdMX01BWF9GUkFHTUVOVF9JTUFHRV9VTklGT1JNUyBHTF9NQVhfRlJBR01FTlRfSU5QVVRfQ09NUE9ORU5UUyRHTF9NQVhfRlJBR01FTlRfSU5URVJQT0xBVElPTl9PRkZTRVQlR0xfTUFYX0ZSQUdNRU5UX1NIQURFUl9TVE9SQUdFX0JMT0NLUyRHTF9NSU5fUFJPR1JBTV9URVhUVVJFX0dBVEhFUl9PRkZTRVQkR0xfTUFYX1BST0dSQU1fVEVYVFVSRV9HQVRIRVJfT0ZGU0VUHkdMX01BWF9GUkFHTUVOVF9VTklGT1JNX0JMT0NLUyJHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTH0dMX01BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMZR0xfTUFYX0ZSQU1FQlVGRkVSX0hFSUdIVBlHTF9NQVhfRlJBTUVCVUZGRVJfTEFZRVJTGkdMX01BWF9GUkFNRUJVRkZFUl9TQU1QTEVTGEdMX01BWF9GUkFNRUJVRkZFUl9XSURUSCZHTF9NQVhfR0VPTUVUUllfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx9HTF9NQVhfR0VPTUVUUllfQVRPTUlDX0NPVU5URVJTHkdMX01BWF9HRU9NRVRSWV9JTUFHRV9VTklGT1JNUyBHTF9NQVhfR0VPTUVUUllfSU5QVVRfQ09NUE9ORU5UUyFHTF9NQVhfR0VPTUVUUllfT1VUUFVUX0NPTVBPTkVOVFMfR0xfTUFYX0dFT01FVFJZX09VVFBVVF9WRVJUSUNFUyJHTF9NQVhfR0VPTUVUUllfU0hBREVSX0lOVk9DQVRJT05TJUdMX01BWF9HRU9NRVRSWV9TSEFERVJfU1RPUkFHRV9CTE9DS1MjR0xfTUFYX0dFT01FVFJZX1RFWFRVUkVfSU1BR0VfVU5JVFMnR0xfTUFYX0dFT01FVFJZX1RPVEFMX09VVFBVVF9DT01QT05FTlRTHkdMX01BWF9HRU9NRVRSWV9VTklGT1JNX0JMT0NLUyJHTF9NQVhfR0VPTUVUUllfVU5JRk9STV9DT01QT05FTlRTFkdMX01BWF9JTlRFR0VSX1NBTVBMRVMTR0xfTUFYX0xBQkVMX0xFTkdUSBtHTF9NQVhfUFJPR1JBTV9URVhFTF9PRkZTRVQYR0xfTUFYX1JFTkRFUkJVRkZFUl9TSVpFGEdMX01BWF9TQU1QTEVfTUFTS19XT1JEUw5HTF9NQVhfU0FNUExFUxpHTF9NQVhfU0VSVkVSX1dBSVRfVElNRU9VVCBHTF9NQVhfU0hBREVSX1NUT1JBR0VfQkxPQ0tfU0laRSVHTF9NQVhfU0hBREVSX1NUT1JBR0VfQlVGRkVSX0JJTkRJTkdTKkdMX01BWF9URVNTX0NPTlRST0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSUyNHTF9NQVhfVEVTU19DT05UUk9MX0FUT01JQ19DT1VOVEVSUyJHTF9NQVhfVEVTU19DT05UUk9MX0lNQUdFX1VOSUZPUk1TJEdMX01BWF9URVNTX0NPTlRST0xfSU5QVVRfQ09NUE9ORU5UUyVHTF9NQVhfVEVTU19DT05UUk9MX09VVFBVVF9DT01QT05FTlRTKUdMX01BWF9URVNTX0NPTlRST0xfU0hBREVSX1NUT1JBR0VfQkxPQ0tTJ0dMX01BWF9URVNTX0NPTlRST0xfVEVYVFVSRV9JTUFHRV9VTklUUytHTF9NQVhfVEVTU19DT05UUk9MX1RPVEFMX09VVFBVVF9DT01QT05FTlRTIkdMX01BWF9URVNTX0NPTlRST0xfVU5JRk9STV9CTE9DS1MmR0xfTUFYX1RFU1NfQ09OVFJPTF9VTklGT1JNX0NPTVBPTkVOVFMtR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTJkdMX01BWF9URVNTX0VWQUxVQVRJT05fQVRPTUlDX0NPVU5URVJTJUdMX01BWF9URVNTX0VWQUxVQVRJT05fSU1BR0VfVU5JRk9STVMnR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9JTlBVVF9DT01QT05FTlRTKEdMX01BWF9URVNTX0VWQUxVQVRJT05fT1VUUFVUX0NPTVBPTkVOVFMsR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9TSEFERVJfU1RPUkFHRV9CTE9DS1MqR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9URVhUVVJFX0lNQUdFX1VOSVRTJUdMX01BWF9URVNTX0VWQUxVQVRJT05fVU5JRk9STV9CTE9DS1MpR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0NPTVBPTkVOVFMVR0xfTUFYX1RFU1NfR0VOX0xFVkVMFUdMX01BWF9QQVRDSF9WRVJUSUNFUxxHTF9NQVhfVEVTU19QQVRDSF9DT01QT05FTlRTGkdMX01BWF9URVhUVVJFX0JVRkZFUl9TSVpFGkdMX01BWF9URVhUVVJFX0lNQUdFX1VOSVRTF0dMX01BWF9URVhUVVJFX0xPRF9CSUFTE0dMX01BWF9URVhUVVJFX1NJWkUwR0xfTUFYX1RSQU5TRk9STV9GRUVEQkFDS19JTlRFUkxFQVZFRF9DT01QT05FTlRTKkdMX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQVRUUklCUy1HTF9NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFSQVRFX0NPTVBPTkVOVFMZR0xfTUFYX1VOSUZPUk1fQkxPQ0tfU0laRR5HTF9NQVhfVU5JRk9STV9CVUZGRVJfQklORElOR1MYR0xfTUFYX1VOSUZPUk1fTE9DQVRJT05TGUdMX01BWF9WQVJZSU5HX0NPTVBPTkVOVFMWR0xfTUFYX1ZBUllJTkdfVkVDVE9SUx1HTF9NQVhfVkVSVEVYX0FUT01JQ19DT1VOVEVSUyRHTF9NQVhfVkVSVEVYX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMdR0xfTUFYX1ZFUlRFWF9BVFRSSUJfQklORElOR1MbR0xfTUFYX1ZFUlRFWF9BVFRSSUJfU1RSSURFJEdMX01BWF9WRVJURVhfQVRUUklCX1JFTEFUSVZFX09GRlNFVBVHTF9NQVhfVkVSVEVYX0FUVFJJQlMcR0xfTUFYX1ZFUlRFWF9JTUFHRV9VTklGT1JNUx9HTF9NQVhfVkVSVEVYX09VVFBVVF9DT01QT05FTlRTI0dMX01BWF9WRVJURVhfU0hBREVSX1NUT1JBR0VfQkxPQ0tTIUdMX01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUxxHTF9NQVhfVkVSVEVYX1VOSUZPUk1fQkxPQ0tTIEdMX01BWF9WRVJURVhfVU5JRk9STV9DT01QT05FTlRTHUdMX01BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTFEdMX01BWF9WSUVXUE9SVF9ESU1TJEdMX01JTl9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVBtHTF9NSU5fUFJPR1JBTV9URVhFTF9PRkZTRVQbR0xfTUlOX1NBTVBMRV9TSEFESU5HX1ZBTFVFEEdMX01JTk9SX1ZFUlNJT04fR0xfTVVMVElTQU1QTEVfTElORV9XSURUSF9SQU5HRSVHTF9NVUxUSVNBTVBMRV9MSU5FX1dJRFRIX0dSQU5VTEFSSVRZIUdMX05VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUxFHTF9OVU1fRVhURU5TSU9OUx1HTF9OVU1fUFJPR1JBTV9CSU5BUllfRk9STUFUUxxHTF9OVU1fU0hBREVSX0JJTkFSWV9GT1JNQVRTEUdMX1BBQ0tfQUxJR05NRU5UFEdMX1BBQ0tfSU1BR0VfSEVJR0hUEkdMX1BBQ0tfUk9XX0xFTkdUSBNHTF9QQUNLX1NLSVBfSU1BR0VTE0dMX1BBQ0tfU0tJUF9QSVhFTFMRR0xfUEFDS19TS0lQX1JPV1MRR0xfUEFUQ0hfVkVSVElDRVMcR0xfUElYRUxfUEFDS19CVUZGRVJfQklORElORx5HTF9QSVhFTF9VTlBBQ0tfQlVGRkVSX0JJTkRJTkcYR0xfUE9MWUdPTl9PRkZTRVRfRkFDVE9SFkdMX1BPTFlHT05fT0ZGU0VUX0ZJTEwXR0xfUE9MWUdPTl9PRkZTRVRfVU5JVFMZR0xfUFJJTUlUSVZFX0JPVU5ESU5HX0JPWCBHTF9QUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWBlHTF9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTG0dMX1BST0dSQU1fUElQRUxJTkVfQklORElORxVHTF9SQVNURVJJWkVSX0RJU0NBUkQOR0xfUkVBRF9CVUZGRVIbR0xfUkVBRF9GUkFNRUJVRkZFUl9CSU5ESU5HC0dMX1JFRF9CSVRTF0dMX1JFTkRFUkJVRkZFUl9CSU5ESU5HHkdMX1JFU0VUX05PVElGSUNBVElPTl9TVFJBVEVHWRtHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0URR0xfU0FNUExFX0JVRkZFUlMSR0xfU0FNUExFX0NPVkVSQUdFGUdMX1NBTVBMRV9DT1ZFUkFHRV9JTlZFUlQYR0xfU0FNUExFX0NPVkVSQUdFX1ZBTFVFEUdMX1NBTVBMRV9TSEFESU5HEkdMX1NBTVBMRVJfQklORElORwpHTF9TQU1QTEVTDkdMX1NDSVNTT1JfQk9YD0dMX1NDSVNTT1JfVEVTVBhHTF9TSEFERVJfQklOQVJZX0ZPUk1BVFMSR0xfU0hBREVSX0NPTVBJTEVSIEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9CSU5ESU5HKUdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UHUdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9TSVpFHkdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9TVEFSVBRHTF9TVEVOQ0lMX0JBQ0tfRkFJTBRHTF9TVEVOQ0lMX0JBQ0tfRlVOQx9HTF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMH0dMX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1MTR0xfU1RFTkNJTF9CQUNLX1JFRhpHTF9TVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTSxlHTF9TVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLD0dMX1NURU5DSUxfQklUUxZHTF9TVEVOQ0lMX0NMRUFSX1ZBTFVFD0dMX1NURU5DSUxfRkFJTA9HTF9TVEVOQ0lMX0ZVTkMaR0xfU1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUwaR0xfU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1MOR0xfU1RFTkNJTF9SRUYPR0xfU1RFTkNJTF9URVNUFUdMX1NURU5DSUxfVkFMVUVfTUFTSxRHTF9TVEVOQ0lMX1dSSVRFTUFTSxBHTF9TVUJQSVhFTF9CSVRTFUdMX1RFWFRVUkVfQklORElOR18yRB9HTF9URVhUVVJFX0JJTkRJTkdfRVhURVJOQUxfT0VTG0dMX1RFWFRVUkVfQklORElOR18yRF9BUlJBWSFHTF9URVhUVVJFX0JJTkRJTkdfMkRfTVVMVElTQU1QTEUnR0xfVEVYVFVSRV9CSU5ESU5HXzJEX01VTFRJU0FNUExFX0FSUkFZFUdMX1RFWFRVUkVfQklORElOR18zRBlHTF9URVhUVVJFX0JJTkRJTkdfQlVGRkVSG0dMX1RFWFRVUkVfQklORElOR19DVUJFX01BUCFHTF9URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVBfQVJSQVkZR0xfVEVYVFVSRV9CVUZGRVJfQklORElORyJHTF9URVhUVVJFX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UHEdMX1RSQU5TRk9STV9GRUVEQkFDS19BQ1RJVkUdR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JJTkRJTkckR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9CSU5ESU5HIUdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU0laRSJHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NUQVJUHEdMX1RSQU5TRk9STV9GRUVEQkFDS19QQVVTRUQZR0xfVU5JRk9STV9CVUZGRVJfQklORElORyJHTF9VTklGT1JNX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UFkdMX1VOSUZPUk1fQlVGRkVSX1NJWkUXR0xfVU5JRk9STV9CVUZGRVJfU1RBUlQTR0xfVU5QQUNLX0FMSUdOTUVOVBZHTF9VTlBBQ0tfSU1BR0VfSEVJR0hUFEdMX1VOUEFDS19ST1dfTEVOR1RIFUdMX1VOUEFDS19TS0lQX0lNQUdFUxVHTF9VTlBBQ0tfU0tJUF9QSVhFTFMTR0xfVU5QQUNLX1NLSVBfUk9XUxdHTF9WRVJURVhfQVJSQVlfQklORElORxlHTF9WRVJURVhfQklORElOR19ESVZJU09SGEdMX1ZFUlRFWF9CSU5ESU5HX09GRlNFVBhHTF9WRVJURVhfQklORElOR19TVFJJREULR0xfVklFV1BPUlQhR0xfTUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUE0dMX0dQVV9ESVNKT0lOVF9FWFSGtQSGtwaGuQiGuwoUZ2xHZXRJbnRlZ2VyNjR2QVBQTEUGcGFyYW1zBAECAg9nbEdldEludGVnZXJpX3YChr0Mhr8IhsEKD2dsR2V0SW50ZWdlcmlfdgVwYXJhbYEqEUdMX0FDVElWRV9URVhUVVJFG0dMX0FMSUFTRURfTElORV9XSURUSF9SQU5HRRtHTF9BTElBU0VEX1BPSU5UX1NJWkVfUkFOR0UNR0xfQUxQSEFfQklUUxdHTF9BUlJBWV9CVUZGRVJfQklORElORyBHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfQklORElORx1HTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfU0laRR5HTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfU1RBUlQIR0xfQkxFTkQOR0xfQkxFTkRfQ09MT1ISR0xfQkxFTkRfRFNUX0FMUEhBEEdMX0JMRU5EX0RTVF9SR0IXR0xfQkxFTkRfRVFVQVRJT05fQUxQSEEVR0xfQkxFTkRfRVFVQVRJT05fUkdCEkdMX0JMRU5EX1NSQ19BTFBIQRBHTF9CTEVORF9TUkNfUkdCDEdMX0JMVUVfQklUUxRHTF9DT0xPUl9DTEVBUl9WQUxVRRJHTF9DT0xPUl9XUklURU1BU0sdR0xfQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMQR0xfQ09OVEVYVF9GTEFHUxhHTF9DT05URVhUX1JPQlVTVF9BQ0NFU1MbR0xfQ09QWV9SRUFEX0JVRkZFUl9CSU5ESU5HHEdMX0NPUFlfV1JJVEVfQlVGRkVSX0JJTkRJTkcMR0xfQ1VMTF9GQUNFEUdMX0NVTExfRkFDRV9NT0RFEkdMX0NVUlJFTlRfUFJPR1JBTRpHTF9ERUJVR19HUk9VUF9TVEFDS19ERVBUSBhHTF9ERUJVR19MT0dHRURfTUVTU0FHRVMjR0xfREVCVUdfTkVYVF9MT0dHRURfTUVTU0FHRV9MRU5HVEgNR0xfREVQVEhfQklUUxRHTF9ERVBUSF9DTEVBUl9WQUxVRQ1HTF9ERVBUSF9GVU5DDkdMX0RFUFRIX1JBTkdFDUdMX0RFUFRIX1RFU1QSR0xfREVQVEhfV1JJVEVNQVNLI0dMX0RJU1BBVENIX0lORElSRUNUX0JVRkZFUl9CSU5ESU5HCUdMX0RJVEhFUg5HTF9EUkFXX0JVRkZFUg9HTF9EUkFXX0JVRkZFUjAPR0xfRFJBV19CVUZGRVIxD0dMX0RSQVdfQlVGRkVSMg9HTF9EUkFXX0JVRkZFUjMPR0xfRFJBV19CVUZGRVI0D0dMX0RSQVdfQlVGRkVSNQ9HTF9EUkFXX0JVRkZFUjYPR0xfRFJBV19CVUZGRVI3D0dMX0RSQVdfQlVGRkVSOA9HTF9EUkFXX0JVRkZFUjkQR0xfRFJBV19CVUZGRVIxMBBHTF9EUkFXX0JVRkZFUjExEEdMX0RSQVdfQlVGRkVSMTIQR0xfRFJBV19CVUZGRVIxMxBHTF9EUkFXX0JVRkZFUjE0EEdMX0RSQVdfQlVGRkVSMTUbR0xfRFJBV19GUkFNRUJVRkZFUl9CSU5ESU5HH0dMX0VMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkclR0xfRlJBR01FTlRfSU5URVJQT0xBVElPTl9PRkZTRVRfQklUUyJHTF9GUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UDUdMX0ZST05UX0ZBQ0UXR0xfR0VORVJBVEVfTUlQTUFQX0hJTlQNR0xfR1JFRU5fQklUUxVHTF9JTUFHRV9CSU5ESU5HX05BTUUWR0xfSU1BR0VfQklORElOR19MRVZFTBhHTF9JTUFHRV9CSU5ESU5HX0xBWUVSRUQWR0xfSU1BR0VfQklORElOR19MQVlFUhdHTF9JTUFHRV9CSU5ESU5HX0FDQ0VTUxdHTF9JTUFHRV9CSU5ESU5HX0ZPUk1BVCNHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX0ZPUk1BVCFHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX1RZUEUZR0xfTEFZRVJfUFJPVk9LSU5HX1ZFUlRFWA1HTF9MSU5FX1dJRFRIKkdMX1BSSU1JVElWRV9SRVNUQVJUX0ZPUl9QQVRDSEVTX1NVUFBPUlRFRBBHTF9NQUpPUl9WRVJTSU9OFkdMX01BWF8zRF9URVhUVVJFX1NJWkUbR0xfTUFYX0FSUkFZX1RFWFRVUkVfTEFZRVJTJUdMX01BWF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfQklORElOR1MhR0xfTUFYX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TSVpFJkdMX01BWF9DT01CSU5FRF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTGEdMX01BWF9DT0xPUl9BVFRBQ0hNRU5UUxxHTF9NQVhfQ09MT1JfVEVYVFVSRV9TQU1QTEVTHEdMX01BWF9ERVBUSF9URVhUVVJFX1NBTVBMRVMfR0xfTUFYX0NPTUJJTkVEX0FUT01JQ19DT1VOVEVSUxJHTF9NQVhfSU1BR0VfVU5JVFMqR0xfTUFYX0NPTUJJTkVEX0NPTVBVVEVfVU5JRk9STV9DT01QT05FTlRTK0dMX01BWF9DT01CSU5FRF9GUkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFMrR0xfTUFYX0NPTUJJTkVEX0dFT01FVFJZX1VOSUZPUk1fQ09NUE9ORU5UUyVHTF9NQVhfQ09NQklORURfU0hBREVSX1NUT1JBR0VfQkxPQ0tTL0dMX01BWF9DT01CSU5FRF9URVNTX0NPTlRST0xfVU5JRk9STV9DT01QT05FTlRTMkdMX01BWF9DT01CSU5FRF9URVNTX0VWQUxVQVRJT05fVU5JRk9STV9DT01QT05FTlRTI0dMX01BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTJ0dMX01BWF9DT01CSU5FRF9TSEFERVJfT1VUUFVUX1JFU09VUkNFUx5HTF9NQVhfQ09NQklORURfVU5JRk9STV9CTE9DS1MpR0xfTUFYX0NPTUJJTkVEX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFMlR0xfTUFYX0NPTVBVVEVfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx5HTF9NQVhfQ09NUFVURV9BVE9NSUNfQ09VTlRFUlMdR0xfTUFYX0NPTVBVVEVfSU1BR0VfVU5JRk9STVMeR0xfTUFYX0NPTUJJTkVEX0lNQUdFX1VOSUZPUk1TJEdMX01BWF9DT01QVVRFX1NIQURFUl9TVE9SQUdFX0JMT0NLUyJHTF9NQVhfQ09NUFVURV9URVhUVVJFX0lNQUdFX1VOSVRTIUdMX01BWF9DT01QVVRFX1NIQVJFRF9NRU1PUllfU0laRR1HTF9NQVhfQ09NUFVURV9VTklGT1JNX0JMT0NLUyFHTF9NQVhfQ09NUFVURV9VTklGT1JNX0NPTVBPTkVOVFMfR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9DT1VOVCVHTF9NQVhfQ09NUFVURV9XT1JLX0dST1VQX0lOVk9DQVRJT05THkdMX01BWF9DT01QVVRFX1dPUktfR1JPVVBfU0laRRxHTF9NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFHkdMX01BWF9ERUJVR19HUk9VUF9TVEFDS19ERVBUSBxHTF9NQVhfREVCVUdfTE9HR0VEX01FU1NBR0VTG0dMX01BWF9ERUJVR19NRVNTQUdFX0xFTkdUSBNHTF9NQVhfRFJBV19CVUZGRVJTFEdMX01BWF9FTEVNRU5UX0lOREVYF0dMX01BWF9FTEVNRU5UU19JTkRJQ0VTGEdMX01BWF9FTEVNRU5UU19WRVJUSUNFUyZHTF9NQVhfRlJBR01FTlRfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx9HTF9NQVhfRlJBR01FTlRfQVRPTUlDX0NPVU5URVJTHkdMX01BWF9GUkFHTUVOVF9JTUFHRV9VTklGT1JNUyBHTF9NQVhfRlJBR01FTlRfSU5QVVRfQ09NUE9ORU5UUyRHTF9NQVhfRlJBR01FTlRfSU5URVJQT0xBVElPTl9PRkZTRVQlR0xfTUFYX0ZSQUdNRU5UX1NIQURFUl9TVE9SQUdFX0JMT0NLUyRHTF9NSU5fUFJPR1JBTV9URVhUVVJFX0dBVEhFUl9PRkZTRVQkR0xfTUFYX1BST0dSQU1fVEVYVFVSRV9HQVRIRVJfT0ZGU0VUHkdMX01BWF9GUkFHTUVOVF9VTklGT1JNX0JMT0NLUyJHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTH0dMX01BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMZR0xfTUFYX0ZSQU1FQlVGRkVSX0hFSUdIVBlHTF9NQVhfRlJBTUVCVUZGRVJfTEFZRVJTGkdMX01BWF9GUkFNRUJVRkZFUl9TQU1QTEVTGEdMX01BWF9GUkFNRUJVRkZFUl9XSURUSCZHTF9NQVhfR0VPTUVUUllfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx9HTF9NQVhfR0VPTUVUUllfQVRPTUlDX0NPVU5URVJTHkdMX01BWF9HRU9NRVRSWV9JTUFHRV9VTklGT1JNUyBHTF9NQVhfR0VPTUVUUllfSU5QVVRfQ09NUE9ORU5UUyFHTF9NQVhfR0VPTUVUUllfT1VUUFVUX0NPTVBPTkVOVFMfR0xfTUFYX0dFT01FVFJZX09VVFBVVF9WRVJUSUNFUyJHTF9NQVhfR0VPTUVUUllfU0hBREVSX0lOVk9DQVRJT05TJUdMX01BWF9HRU9NRVRSWV9TSEFERVJfU1RPUkFHRV9CTE9DS1MjR0xfTUFYX0dFT01FVFJZX1RFWFRVUkVfSU1BR0VfVU5JVFMnR0xfTUFYX0dFT01FVFJZX1RPVEFMX09VVFBVVF9DT01QT05FTlRTHkdMX01BWF9HRU9NRVRSWV9VTklGT1JNX0JMT0NLUyJHTF9NQVhfR0VPTUVUUllfVU5JRk9STV9DT01QT05FTlRTFkdMX01BWF9JTlRFR0VSX1NBTVBMRVMTR0xfTUFYX0xBQkVMX0xFTkdUSBtHTF9NQVhfUFJPR1JBTV9URVhFTF9PRkZTRVQYR0xfTUFYX1JFTkRFUkJVRkZFUl9TSVpFGEdMX01BWF9TQU1QTEVfTUFTS19XT1JEUw5HTF9NQVhfU0FNUExFUxpHTF9NQVhfU0VSVkVSX1dBSVRfVElNRU9VVCBHTF9NQVhfU0hBREVSX1NUT1JBR0VfQkxPQ0tfU0laRSVHTF9NQVhfU0hBREVSX1NUT1JBR0VfQlVGRkVSX0JJTkRJTkdTKkdMX01BWF9URVNTX0NPTlRST0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSUyNHTF9NQVhfVEVTU19DT05UUk9MX0FUT01JQ19DT1VOVEVSUyJHTF9NQVhfVEVTU19DT05UUk9MX0lNQUdFX1VOSUZPUk1TJEdMX01BWF9URVNTX0NPTlRST0xfSU5QVVRfQ09NUE9ORU5UUyVHTF9NQVhfVEVTU19DT05UUk9MX09VVFBVVF9DT01QT05FTlRTKUdMX01BWF9URVNTX0NPTlRST0xfU0hBREVSX1NUT1JBR0VfQkxPQ0tTJ0dMX01BWF9URVNTX0NPTlRST0xfVEVYVFVSRV9JTUFHRV9VTklUUytHTF9NQVhfVEVTU19DT05UUk9MX1RPVEFMX09VVFBVVF9DT01QT05FTlRTIkdMX01BWF9URVNTX0NPTlRST0xfVU5JRk9STV9CTE9DS1MmR0xfTUFYX1RFU1NfQ09OVFJPTF9VTklGT1JNX0NPTVBPTkVOVFMtR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTJkdMX01BWF9URVNTX0VWQUxVQVRJT05fQVRPTUlDX0NPVU5URVJTJUdMX01BWF9URVNTX0VWQUxVQVRJT05fSU1BR0VfVU5JRk9STVMnR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9JTlBVVF9DT01QT05FTlRTKEdMX01BWF9URVNTX0VWQUxVQVRJT05fT1VUUFVUX0NPTVBPTkVOVFMsR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9TSEFERVJfU1RPUkFHRV9CTE9DS1MqR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9URVhUVVJFX0lNQUdFX1VOSVRTJUdMX01BWF9URVNTX0VWQUxVQVRJT05fVU5JRk9STV9CTE9DS1MpR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0NPTVBPTkVOVFMVR0xfTUFYX1RFU1NfR0VOX0xFVkVMFUdMX01BWF9QQVRDSF9WRVJUSUNFUxxHTF9NQVhfVEVTU19QQVRDSF9DT01QT05FTlRTGkdMX01BWF9URVhUVVJFX0JVRkZFUl9TSVpFGkdMX01BWF9URVhUVVJFX0lNQUdFX1VOSVRTF0dMX01BWF9URVhUVVJFX0xPRF9CSUFTE0dMX01BWF9URVhUVVJFX1NJWkUwR0xfTUFYX1RSQU5TRk9STV9GRUVEQkFDS19JTlRFUkxFQVZFRF9DT01QT05FTlRTKkdMX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQVRUUklCUy1HTF9NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFSQVRFX0NPTVBPTkVOVFMZR0xfTUFYX1VOSUZPUk1fQkxPQ0tfU0laRR5HTF9NQVhfVU5JRk9STV9CVUZGRVJfQklORElOR1MYR0xfTUFYX1VOSUZPUk1fTE9DQVRJT05TGUdMX01BWF9WQVJZSU5HX0NPTVBPTkVOVFMWR0xfTUFYX1ZBUllJTkdfVkVDVE9SUx1HTF9NQVhfVkVSVEVYX0FUT01JQ19DT1VOVEVSUyRHTF9NQVhfVkVSVEVYX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMdR0xfTUFYX1ZFUlRFWF9BVFRSSUJfQklORElOR1MbR0xfTUFYX1ZFUlRFWF9BVFRSSUJfU1RSSURFJEdMX01BWF9WRVJURVhfQVRUUklCX1JFTEFUSVZFX09GRlNFVBVHTF9NQVhfVkVSVEVYX0FUVFJJQlMcR0xfTUFYX1ZFUlRFWF9JTUFHRV9VTklGT1JNUx9HTF9NQVhfVkVSVEVYX09VVFBVVF9DT01QT05FTlRTI0dMX01BWF9WRVJURVhfU0hBREVSX1NUT1JBR0VfQkxPQ0tTIUdMX01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUxxHTF9NQVhfVkVSVEVYX1VOSUZPUk1fQkxPQ0tTIEdMX01BWF9WRVJURVhfVU5JRk9STV9DT01QT05FTlRTHUdMX01BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTFEdMX01BWF9WSUVXUE9SVF9ESU1TJEdMX01JTl9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVBtHTF9NSU5fUFJPR1JBTV9URVhFTF9PRkZTRVQbR0xfTUlOX1NBTVBMRV9TSEFESU5HX1ZBTFVFEEdMX01JTk9SX1ZFUlNJT04fR0xfTVVMVElTQU1QTEVfTElORV9XSURUSF9SQU5HRSVHTF9NVUxUSVNBTVBMRV9MSU5FX1dJRFRIX0dSQU5VTEFSSVRZIUdMX05VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUxFHTF9OVU1fRVhURU5TSU9OUx1HTF9OVU1fUFJPR1JBTV9CSU5BUllfRk9STUFUUxxHTF9OVU1fU0hBREVSX0JJTkFSWV9GT1JNQVRTEUdMX1BBQ0tfQUxJR05NRU5UFEdMX1BBQ0tfSU1BR0VfSEVJR0hUEkdMX1BBQ0tfUk9XX0xFTkdUSBNHTF9QQUNLX1NLSVBfSU1BR0VTE0dMX1BBQ0tfU0tJUF9QSVhFTFMRR0xfUEFDS19TS0lQX1JPV1MRR0xfUEFUQ0hfVkVSVElDRVMcR0xfUElYRUxfUEFDS19CVUZGRVJfQklORElORx5HTF9QSVhFTF9VTlBBQ0tfQlVGRkVSX0JJTkRJTkcYR0xfUE9MWUdPTl9PRkZTRVRfRkFDVE9SFkdMX1BPTFlHT05fT0ZGU0VUX0ZJTEwXR0xfUE9MWUdPTl9PRkZTRVRfVU5JVFMZR0xfUFJJTUlUSVZFX0JPVU5ESU5HX0JPWCBHTF9QUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWBlHTF9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTG0dMX1BST0dSQU1fUElQRUxJTkVfQklORElORxVHTF9SQVNURVJJWkVSX0RJU0NBUkQOR0xfUkVBRF9CVUZGRVIbR0xfUkVBRF9GUkFNRUJVRkZFUl9CSU5ESU5HC0dMX1JFRF9CSVRTF0dMX1JFTkRFUkJVRkZFUl9CSU5ESU5HHkdMX1JFU0VUX05PVElGSUNBVElPTl9TVFJBVEVHWRtHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0URR0xfU0FNUExFX0JVRkZFUlMSR0xfU0FNUExFX0NPVkVSQUdFGUdMX1NBTVBMRV9DT1ZFUkFHRV9JTlZFUlQYR0xfU0FNUExFX0NPVkVSQUdFX1ZBTFVFEUdMX1NBTVBMRV9TSEFESU5HEkdMX1NBTVBMRVJfQklORElORwpHTF9TQU1QTEVTDkdMX1NDSVNTT1JfQk9YD0dMX1NDSVNTT1JfVEVTVBhHTF9TSEFERVJfQklOQVJZX0ZPUk1BVFMSR0xfU0hBREVSX0NPTVBJTEVSIEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9CSU5ESU5HKUdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UHUdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9TSVpFHkdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9TVEFSVBRHTF9TVEVOQ0lMX0JBQ0tfRkFJTBRHTF9TVEVOQ0lMX0JBQ0tfRlVOQx9HTF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMH0dMX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1MTR0xfU1RFTkNJTF9CQUNLX1JFRhpHTF9TVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTSxlHTF9TVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLD0dMX1NURU5DSUxfQklUUxZHTF9TVEVOQ0lMX0NMRUFSX1ZBTFVFD0dMX1NURU5DSUxfRkFJTA9HTF9TVEVOQ0lMX0ZVTkMaR0xfU1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUwaR0xfU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1MOR0xfU1RFTkNJTF9SRUYPR0xfU1RFTkNJTF9URVNUFUdMX1NURU5DSUxfVkFMVUVfTUFTSxRHTF9TVEVOQ0lMX1dSSVRFTUFTSxBHTF9TVUJQSVhFTF9CSVRTFUdMX1RFWFRVUkVfQklORElOR18yRB9HTF9URVhUVVJFX0JJTkRJTkdfRVhURVJOQUxfT0VTG0dMX1RFWFRVUkVfQklORElOR18yRF9BUlJBWSFHTF9URVhUVVJFX0JJTkRJTkdfMkRfTVVMVElTQU1QTEUnR0xfVEVYVFVSRV9CSU5ESU5HXzJEX01VTFRJU0FNUExFX0FSUkFZFUdMX1RFWFRVUkVfQklORElOR18zRBlHTF9URVhUVVJFX0JJTkRJTkdfQlVGRkVSG0dMX1RFWFRVUkVfQklORElOR19DVUJFX01BUCFHTF9URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVBfQVJSQVkZR0xfVEVYVFVSRV9CVUZGRVJfQklORElORyJHTF9URVhUVVJFX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UHEdMX1RSQU5TRk9STV9GRUVEQkFDS19BQ1RJVkUdR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JJTkRJTkckR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9CSU5ESU5HIUdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU0laRSJHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NUQVJUHEdMX1RSQU5TRk9STV9GRUVEQkFDS19QQVVTRUQZR0xfVU5JRk9STV9CVUZGRVJfQklORElORyJHTF9VTklGT1JNX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UFkdMX1VOSUZPUk1fQlVGRkVSX1NJWkUXR0xfVU5JRk9STV9CVUZGRVJfU1RBUlQTR0xfVU5QQUNLX0FMSUdOTUVOVBZHTF9VTlBBQ0tfSU1BR0VfSEVJR0hUFEdMX1VOUEFDS19ST1dfTEVOR1RIFUdMX1VOUEFDS19TS0lQX0lNQUdFUxVHTF9VTlBBQ0tfU0tJUF9QSVhFTFMTR0xfVU5QQUNLX1NLSVBfUk9XUxdHTF9WRVJURVhfQVJSQVlfQklORElORxlHTF9WRVJURVhfQklORElOR19ESVZJU09SGEdMX1ZFUlRFWF9CSU5ESU5HX09GRlNFVBhHTF9WRVJURVhfQklORElOR19TVFJJREULR0xfVklFV1BPUlQhR0xfTUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUE0dMX0dQVV9ESVNKT0lOVF9FWFSGwwSGxQaGxwiGyQoPZ2xHZXRJbnRlZ2VyaV92BnZhbHVlcwQBAgINZ2xHZXRJbnRlZ2VydgKGywyGzQiGzwoNZ2xHZXRJbnRlZ2VydgVwYXJhbYEqEUdMX0FDVElWRV9URVhUVVJFG0dMX0FMSUFTRURfTElORV9XSURUSF9SQU5HRRtHTF9BTElBU0VEX1BPSU5UX1NJWkVfUkFOR0UNR0xfQUxQSEFfQklUUxdHTF9BUlJBWV9CVUZGRVJfQklORElORyBHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfQklORElORx1HTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfU0laRR5HTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfU1RBUlQIR0xfQkxFTkQOR0xfQkxFTkRfQ09MT1ISR0xfQkxFTkRfRFNUX0FMUEhBEEdMX0JMRU5EX0RTVF9SR0IXR0xfQkxFTkRfRVFVQVRJT05fQUxQSEEVR0xfQkxFTkRfRVFVQVRJT05fUkdCEkdMX0JMRU5EX1NSQ19BTFBIQRBHTF9CTEVORF9TUkNfUkdCDEdMX0JMVUVfQklUUxRHTF9DT0xPUl9DTEVBUl9WQUxVRRJHTF9DT0xPUl9XUklURU1BU0sdR0xfQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMQR0xfQ09OVEVYVF9GTEFHUxhHTF9DT05URVhUX1JPQlVTVF9BQ0NFU1MbR0xfQ09QWV9SRUFEX0JVRkZFUl9CSU5ESU5HHEdMX0NPUFlfV1JJVEVfQlVGRkVSX0JJTkRJTkcMR0xfQ1VMTF9GQUNFEUdMX0NVTExfRkFDRV9NT0RFEkdMX0NVUlJFTlRfUFJPR1JBTRpHTF9ERUJVR19HUk9VUF9TVEFDS19ERVBUSBhHTF9ERUJVR19MT0dHRURfTUVTU0FHRVMjR0xfREVCVUdfTkVYVF9MT0dHRURfTUVTU0FHRV9MRU5HVEgNR0xfREVQVEhfQklUUxRHTF9ERVBUSF9DTEVBUl9WQUxVRQ1HTF9ERVBUSF9GVU5DDkdMX0RFUFRIX1JBTkdFDUdMX0RFUFRIX1RFU1QSR0xfREVQVEhfV1JJVEVNQVNLI0dMX0RJU1BBVENIX0lORElSRUNUX0JVRkZFUl9CSU5ESU5HCUdMX0RJVEhFUg5HTF9EUkFXX0JVRkZFUg9HTF9EUkFXX0JVRkZFUjAPR0xfRFJBV19CVUZGRVIxD0dMX0RSQVdfQlVGRkVSMg9HTF9EUkFXX0JVRkZFUjMPR0xfRFJBV19CVUZGRVI0D0dMX0RSQVdfQlVGRkVSNQ9HTF9EUkFXX0JVRkZFUjYPR0xfRFJBV19CVUZGRVI3D0dMX0RSQVdfQlVGRkVSOA9HTF9EUkFXX0JVRkZFUjkQR0xfRFJBV19CVUZGRVIxMBBHTF9EUkFXX0JVRkZFUjExEEdMX0RSQVdfQlVGRkVSMTIQR0xfRFJBV19CVUZGRVIxMxBHTF9EUkFXX0JVRkZFUjE0EEdMX0RSQVdfQlVGRkVSMTUbR0xfRFJBV19GUkFNRUJVRkZFUl9CSU5ESU5HH0dMX0VMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkclR0xfRlJBR01FTlRfSU5URVJQT0xBVElPTl9PRkZTRVRfQklUUyJHTF9GUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UDUdMX0ZST05UX0ZBQ0UXR0xfR0VORVJBVEVfTUlQTUFQX0hJTlQNR0xfR1JFRU5fQklUUxVHTF9JTUFHRV9CSU5ESU5HX05BTUUWR0xfSU1BR0VfQklORElOR19MRVZFTBhHTF9JTUFHRV9CSU5ESU5HX0xBWUVSRUQWR0xfSU1BR0VfQklORElOR19MQVlFUhdHTF9JTUFHRV9CSU5ESU5HX0FDQ0VTUxdHTF9JTUFHRV9CSU5ESU5HX0ZPUk1BVCNHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX0ZPUk1BVCFHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX1RZUEUZR0xfTEFZRVJfUFJPVk9LSU5HX1ZFUlRFWA1HTF9MSU5FX1dJRFRIKkdMX1BSSU1JVElWRV9SRVNUQVJUX0ZPUl9QQVRDSEVTX1NVUFBPUlRFRBBHTF9NQUpPUl9WRVJTSU9OFkdMX01BWF8zRF9URVhUVVJFX1NJWkUbR0xfTUFYX0FSUkFZX1RFWFRVUkVfTEFZRVJTJUdMX01BWF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfQklORElOR1MhR0xfTUFYX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TSVpFJkdMX01BWF9DT01CSU5FRF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTGEdMX01BWF9DT0xPUl9BVFRBQ0hNRU5UUxxHTF9NQVhfQ09MT1JfVEVYVFVSRV9TQU1QTEVTHEdMX01BWF9ERVBUSF9URVhUVVJFX1NBTVBMRVMfR0xfTUFYX0NPTUJJTkVEX0FUT01JQ19DT1VOVEVSUxJHTF9NQVhfSU1BR0VfVU5JVFMqR0xfTUFYX0NPTUJJTkVEX0NPTVBVVEVfVU5JRk9STV9DT01QT05FTlRTK0dMX01BWF9DT01CSU5FRF9GUkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFMrR0xfTUFYX0NPTUJJTkVEX0dFT01FVFJZX1VOSUZPUk1fQ09NUE9ORU5UUyVHTF9NQVhfQ09NQklORURfU0hBREVSX1NUT1JBR0VfQkxPQ0tTL0dMX01BWF9DT01CSU5FRF9URVNTX0NPTlRST0xfVU5JRk9STV9DT01QT05FTlRTMkdMX01BWF9DT01CSU5FRF9URVNTX0VWQUxVQVRJT05fVU5JRk9STV9DT01QT05FTlRTI0dMX01BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTJ0dMX01BWF9DT01CSU5FRF9TSEFERVJfT1VUUFVUX1JFU09VUkNFUx5HTF9NQVhfQ09NQklORURfVU5JRk9STV9CTE9DS1MpR0xfTUFYX0NPTUJJTkVEX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFMlR0xfTUFYX0NPTVBVVEVfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx5HTF9NQVhfQ09NUFVURV9BVE9NSUNfQ09VTlRFUlMdR0xfTUFYX0NPTVBVVEVfSU1BR0VfVU5JRk9STVMeR0xfTUFYX0NPTUJJTkVEX0lNQUdFX1VOSUZPUk1TJEdMX01BWF9DT01QVVRFX1NIQURFUl9TVE9SQUdFX0JMT0NLUyJHTF9NQVhfQ09NUFVURV9URVhUVVJFX0lNQUdFX1VOSVRTIUdMX01BWF9DT01QVVRFX1NIQVJFRF9NRU1PUllfU0laRR1HTF9NQVhfQ09NUFVURV9VTklGT1JNX0JMT0NLUyFHTF9NQVhfQ09NUFVURV9VTklGT1JNX0NPTVBPTkVOVFMfR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9DT1VOVCVHTF9NQVhfQ09NUFVURV9XT1JLX0dST1VQX0lOVk9DQVRJT05THkdMX01BWF9DT01QVVRFX1dPUktfR1JPVVBfU0laRRxHTF9NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFHkdMX01BWF9ERUJVR19HUk9VUF9TVEFDS19ERVBUSBxHTF9NQVhfREVCVUdfTE9HR0VEX01FU1NBR0VTG0dMX01BWF9ERUJVR19NRVNTQUdFX0xFTkdUSBNHTF9NQVhfRFJBV19CVUZGRVJTFEdMX01BWF9FTEVNRU5UX0lOREVYF0dMX01BWF9FTEVNRU5UU19JTkRJQ0VTGEdMX01BWF9FTEVNRU5UU19WRVJUSUNFUyZHTF9NQVhfRlJBR01FTlRfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx9HTF9NQVhfRlJBR01FTlRfQVRPTUlDX0NPVU5URVJTHkdMX01BWF9GUkFHTUVOVF9JTUFHRV9VTklGT1JNUyBHTF9NQVhfRlJBR01FTlRfSU5QVVRfQ09NUE9ORU5UUyRHTF9NQVhfRlJBR01FTlRfSU5URVJQT0xBVElPTl9PRkZTRVQlR0xfTUFYX0ZSQUdNRU5UX1NIQURFUl9TVE9SQUdFX0JMT0NLUyRHTF9NSU5fUFJPR1JBTV9URVhUVVJFX0dBVEhFUl9PRkZTRVQkR0xfTUFYX1BST0dSQU1fVEVYVFVSRV9HQVRIRVJfT0ZGU0VUHkdMX01BWF9GUkFHTUVOVF9VTklGT1JNX0JMT0NLUyJHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTH0dMX01BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMZR0xfTUFYX0ZSQU1FQlVGRkVSX0hFSUdIVBlHTF9NQVhfRlJBTUVCVUZGRVJfTEFZRVJTGkdMX01BWF9GUkFNRUJVRkZFUl9TQU1QTEVTGEdMX01BWF9GUkFNRUJVRkZFUl9XSURUSCZHTF9NQVhfR0VPTUVUUllfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx9HTF9NQVhfR0VPTUVUUllfQVRPTUlDX0NPVU5URVJTHkdMX01BWF9HRU9NRVRSWV9JTUFHRV9VTklGT1JNUyBHTF9NQVhfR0VPTUVUUllfSU5QVVRfQ09NUE9ORU5UUyFHTF9NQVhfR0VPTUVUUllfT1VUUFVUX0NPTVBPTkVOVFMfR0xfTUFYX0dFT01FVFJZX09VVFBVVF9WRVJUSUNFUyJHTF9NQVhfR0VPTUVUUllfU0hBREVSX0lOVk9DQVRJT05TJUdMX01BWF9HRU9NRVRSWV9TSEFERVJfU1RPUkFHRV9CTE9DS1MjR0xfTUFYX0dFT01FVFJZX1RFWFRVUkVfSU1BR0VfVU5JVFMnR0xfTUFYX0dFT01FVFJZX1RPVEFMX09VVFBVVF9DT01QT05FTlRTHkdMX01BWF9HRU9NRVRSWV9VTklGT1JNX0JMT0NLUyJHTF9NQVhfR0VPTUVUUllfVU5JRk9STV9DT01QT05FTlRTFkdMX01BWF9JTlRFR0VSX1NBTVBMRVMTR0xfTUFYX0xBQkVMX0xFTkdUSBtHTF9NQVhfUFJPR1JBTV9URVhFTF9PRkZTRVQYR0xfTUFYX1JFTkRFUkJVRkZFUl9TSVpFGEdMX01BWF9TQU1QTEVfTUFTS19XT1JEUw5HTF9NQVhfU0FNUExFUxpHTF9NQVhfU0VSVkVSX1dBSVRfVElNRU9VVCBHTF9NQVhfU0hBREVSX1NUT1JBR0VfQkxPQ0tfU0laRSVHTF9NQVhfU0hBREVSX1NUT1JBR0VfQlVGRkVSX0JJTkRJTkdTKkdMX01BWF9URVNTX0NPTlRST0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSUyNHTF9NQVhfVEVTU19DT05UUk9MX0FUT01JQ19DT1VOVEVSUyJHTF9NQVhfVEVTU19DT05UUk9MX0lNQUdFX1VOSUZPUk1TJEdMX01BWF9URVNTX0NPTlRST0xfSU5QVVRfQ09NUE9ORU5UUyVHTF9NQVhfVEVTU19DT05UUk9MX09VVFBVVF9DT01QT05FTlRTKUdMX01BWF9URVNTX0NPTlRST0xfU0hBREVSX1NUT1JBR0VfQkxPQ0tTJ0dMX01BWF9URVNTX0NPTlRST0xfVEVYVFVSRV9JTUFHRV9VTklUUytHTF9NQVhfVEVTU19DT05UUk9MX1RPVEFMX09VVFBVVF9DT01QT05FTlRTIkdMX01BWF9URVNTX0NPTlRST0xfVU5JRk9STV9CTE9DS1MmR0xfTUFYX1RFU1NfQ09OVFJPTF9VTklGT1JNX0NPTVBPTkVOVFMtR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTJkdMX01BWF9URVNTX0VWQUxVQVRJT05fQVRPTUlDX0NPVU5URVJTJUdMX01BWF9URVNTX0VWQUxVQVRJT05fSU1BR0VfVU5JRk9STVMnR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9JTlBVVF9DT01QT05FTlRTKEdMX01BWF9URVNTX0VWQUxVQVRJT05fT1VUUFVUX0NPTVBPTkVOVFMsR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9TSEFERVJfU1RPUkFHRV9CTE9DS1MqR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9URVhUVVJFX0lNQUdFX1VOSVRTJUdMX01BWF9URVNTX0VWQUxVQVRJT05fVU5JRk9STV9CTE9DS1MpR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0NPTVBPTkVOVFMVR0xfTUFYX1RFU1NfR0VOX0xFVkVMFUdMX01BWF9QQVRDSF9WRVJUSUNFUxxHTF9NQVhfVEVTU19QQVRDSF9DT01QT05FTlRTGkdMX01BWF9URVhUVVJFX0JVRkZFUl9TSVpFGkdMX01BWF9URVhUVVJFX0lNQUdFX1VOSVRTF0dMX01BWF9URVhUVVJFX0xPRF9CSUFTE0dMX01BWF9URVhUVVJFX1NJWkUwR0xfTUFYX1RSQU5TRk9STV9GRUVEQkFDS19JTlRFUkxFQVZFRF9DT01QT05FTlRTKkdMX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQVRUUklCUy1HTF9NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFSQVRFX0NPTVBPTkVOVFMZR0xfTUFYX1VOSUZPUk1fQkxPQ0tfU0laRR5HTF9NQVhfVU5JRk9STV9CVUZGRVJfQklORElOR1MYR0xfTUFYX1VOSUZPUk1fTE9DQVRJT05TGUdMX01BWF9WQVJZSU5HX0NPTVBPTkVOVFMWR0xfTUFYX1ZBUllJTkdfVkVDVE9SUx1HTF9NQVhfVkVSVEVYX0FUT01JQ19DT1VOVEVSUyRHTF9NQVhfVkVSVEVYX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMdR0xfTUFYX1ZFUlRFWF9BVFRSSUJfQklORElOR1MbR0xfTUFYX1ZFUlRFWF9BVFRSSUJfU1RSSURFJEdMX01BWF9WRVJURVhfQVRUUklCX1JFTEFUSVZFX09GRlNFVBVHTF9NQVhfVkVSVEVYX0FUVFJJQlMcR0xfTUFYX1ZFUlRFWF9JTUFHRV9VTklGT1JNUx9HTF9NQVhfVkVSVEVYX09VVFBVVF9DT01QT05FTlRTI0dMX01BWF9WRVJURVhfU0hBREVSX1NUT1JBR0VfQkxPQ0tTIUdMX01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUxxHTF9NQVhfVkVSVEVYX1VOSUZPUk1fQkxPQ0tTIEdMX01BWF9WRVJURVhfVU5JRk9STV9DT01QT05FTlRTHUdMX01BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTFEdMX01BWF9WSUVXUE9SVF9ESU1TJEdMX01JTl9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVBtHTF9NSU5fUFJPR1JBTV9URVhFTF9PRkZTRVQbR0xfTUlOX1NBTVBMRV9TSEFESU5HX1ZBTFVFEEdMX01JTk9SX1ZFUlNJT04fR0xfTVVMVElTQU1QTEVfTElORV9XSURUSF9SQU5HRSVHTF9NVUxUSVNBTVBMRV9MSU5FX1dJRFRIX0dSQU5VTEFSSVRZIUdMX05VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUxFHTF9OVU1fRVhURU5TSU9OUx1HTF9OVU1fUFJPR1JBTV9CSU5BUllfRk9STUFUUxxHTF9OVU1fU0hBREVSX0JJTkFSWV9GT1JNQVRTEUdMX1BBQ0tfQUxJR05NRU5UFEdMX1BBQ0tfSU1BR0VfSEVJR0hUEkdMX1BBQ0tfUk9XX0xFTkdUSBNHTF9QQUNLX1NLSVBfSU1BR0VTE0dMX1BBQ0tfU0tJUF9QSVhFTFMRR0xfUEFDS19TS0lQX1JPV1MRR0xfUEFUQ0hfVkVSVElDRVMcR0xfUElYRUxfUEFDS19CVUZGRVJfQklORElORx5HTF9QSVhFTF9VTlBBQ0tfQlVGRkVSX0JJTkRJTkcYR0xfUE9MWUdPTl9PRkZTRVRfRkFDVE9SFkdMX1BPTFlHT05fT0ZGU0VUX0ZJTEwXR0xfUE9MWUdPTl9PRkZTRVRfVU5JVFMZR0xfUFJJTUlUSVZFX0JPVU5ESU5HX0JPWCBHTF9QUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWBlHTF9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTG0dMX1BST0dSQU1fUElQRUxJTkVfQklORElORxVHTF9SQVNURVJJWkVSX0RJU0NBUkQOR0xfUkVBRF9CVUZGRVIbR0xfUkVBRF9GUkFNRUJVRkZFUl9CSU5ESU5HC0dMX1JFRF9CSVRTF0dMX1JFTkRFUkJVRkZFUl9CSU5ESU5HHkdMX1JFU0VUX05PVElGSUNBVElPTl9TVFJBVEVHWRtHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0URR0xfU0FNUExFX0JVRkZFUlMSR0xfU0FNUExFX0NPVkVSQUdFGUdMX1NBTVBMRV9DT1ZFUkFHRV9JTlZFUlQYR0xfU0FNUExFX0NPVkVSQUdFX1ZBTFVFEUdMX1NBTVBMRV9TSEFESU5HEkdMX1NBTVBMRVJfQklORElORwpHTF9TQU1QTEVTDkdMX1NDSVNTT1JfQk9YD0dMX1NDSVNTT1JfVEVTVBhHTF9TSEFERVJfQklOQVJZX0ZPUk1BVFMSR0xfU0hBREVSX0NPTVBJTEVSIEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9CSU5ESU5HKUdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UHUdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9TSVpFHkdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9TVEFSVBRHTF9TVEVOQ0lMX0JBQ0tfRkFJTBRHTF9TVEVOQ0lMX0JBQ0tfRlVOQx9HTF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMH0dMX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1MTR0xfU1RFTkNJTF9CQUNLX1JFRhpHTF9TVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTSxlHTF9TVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLD0dMX1NURU5DSUxfQklUUxZHTF9TVEVOQ0lMX0NMRUFSX1ZBTFVFD0dMX1NURU5DSUxfRkFJTA9HTF9TVEVOQ0lMX0ZVTkMaR0xfU1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUwaR0xfU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1MOR0xfU1RFTkNJTF9SRUYPR0xfU1RFTkNJTF9URVNUFUdMX1NURU5DSUxfVkFMVUVfTUFTSxRHTF9TVEVOQ0lMX1dSSVRFTUFTSxBHTF9TVUJQSVhFTF9CSVRTFUdMX1RFWFRVUkVfQklORElOR18yRB9HTF9URVhUVVJFX0JJTkRJTkdfRVhURVJOQUxfT0VTG0dMX1RFWFRVUkVfQklORElOR18yRF9BUlJBWSFHTF9URVhUVVJFX0JJTkRJTkdfMkRfTVVMVElTQU1QTEUnR0xfVEVYVFVSRV9CSU5ESU5HXzJEX01VTFRJU0FNUExFX0FSUkFZFUdMX1RFWFRVUkVfQklORElOR18zRBlHTF9URVhUVVJFX0JJTkRJTkdfQlVGRkVSG0dMX1RFWFRVUkVfQklORElOR19DVUJFX01BUCFHTF9URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVBfQVJSQVkZR0xfVEVYVFVSRV9CVUZGRVJfQklORElORyJHTF9URVhUVVJFX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UHEdMX1RSQU5TRk9STV9GRUVEQkFDS19BQ1RJVkUdR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JJTkRJTkckR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9CSU5ESU5HIUdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU0laRSJHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NUQVJUHEdMX1RSQU5TRk9STV9GRUVEQkFDS19QQVVTRUQZR0xfVU5JRk9STV9CVUZGRVJfQklORElORyJHTF9VTklGT1JNX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UFkdMX1VOSUZPUk1fQlVGRkVSX1NJWkUXR0xfVU5JRk9STV9CVUZGRVJfU1RBUlQTR0xfVU5QQUNLX0FMSUdOTUVOVBZHTF9VTlBBQ0tfSU1BR0VfSEVJR0hUFEdMX1VOUEFDS19ST1dfTEVOR1RIFUdMX1VOUEFDS19TS0lQX0lNQUdFUxVHTF9VTlBBQ0tfU0tJUF9QSVhFTFMTR0xfVU5QQUNLX1NLSVBfUk9XUxdHTF9WRVJURVhfQVJSQVlfQklORElORxlHTF9WRVJURVhfQklORElOR19ESVZJU09SGEdMX1ZFUlRFWF9CSU5ESU5HX09GRlNFVBhHTF9WRVJURVhfQklORElOR19TVFJJREULR0xfVklFV1BPUlQhR0xfTUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUE0dMX0dQVV9ESVNKT0lOVF9FWFSG0QSG0waG1QiG1woNZ2xHZXRJbnRlZ2VydgZ2YWx1ZXMEAQICFWdsR2V0SW50ZXJuYWxmb3JtYXRpdgOG2QyG2wiG3QoVZ2xHZXRJbnRlcm5hbGZvcm1hdGl2BnRhcmdldAMPR0xfUkVOREVSQlVGRkVSGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWYbfDIbhCIbjChVnbEdldEludGVybmFsZm9ybWF0aXYOaW50ZXJuYWxmb3JtYXQ3E0dMX0RFUFRIMjRfU1RFTkNJTDgUR0xfREVQVEgzMkZfU1RFTkNJTDgUR0xfREVQVEhfQ09NUE9ORU5UMTYUR0xfREVQVEhfQ09NUE9ORU5UMjQVR0xfREVQVEhfQ09NUE9ORU5UMzJGEUdMX1IxMUZfRzExRl9CMTBGB0dMX1IxNkYHR0xfUjE2SQhHTF9SMTZVSQdHTF9SMzJGB0dMX1IzMkkIR0xfUjMyVUkFR0xfUjgGR0xfUjhJB0dMX1I4VUkLR0xfUjhfU05PUk0IR0xfUkcxNkYIR0xfUkcxNkkJR0xfUkcxNlVJCEdMX1JHMzJGCEdMX1JHMzJJCUdMX1JHMzJVSQZHTF9SRzgHR0xfUkc4SQhHTF9SRzhVSQxHTF9SRzhfU05PUk0LR0xfUkdCMTBfQTINR0xfUkdCMTBfQTJVSQlHTF9SR0IxNkYJR0xfUkdCMTZJCkdMX1JHQjE2VUkJR0xfUkdCMzJGCUdMX1JHQjMySQpHTF9SR0IzMlVJCUdMX1JHQjU2NQpHTF9SR0I1X0ExB0dMX1JHQjgIR0xfUkdCOEkJR0xfUkdCOFVJDUdMX1JHQjhfU05PUk0KR0xfUkdCOV9FNQpHTF9SR0JBMTZGCkdMX1JHQkExNkkLR0xfUkdCQTE2VUkKR0xfUkdCQTMyRgpHTF9SR0JBMzJJC0dMX1JHQkEzMlVJCEdMX1JHQkE0CEdMX1JHQkE4CUdMX1JHQkE4SQpHTF9SR0JBOFVJDkdMX1JHQkE4X1NOT1JNCEdMX1NSR0I4D0dMX1NSR0I4X0FMUEhBOBFHTF9TVEVOQ0lMX0lOREVYOIblDIbnCIbpChVnbEdldEludGVybmFsZm9ybWF0aXYFcG5hbWUCFEdMX05VTV9TQU1QTEVfQ09VTlRTCkdMX1NBTVBMRVMCEmdsR2V0TXVsdGlzYW1wbGVmdgKG6wyG7QiG7woSZ2xHZXRNdWx0aXNhbXBsZWZ2BXBuYW1lARJHTF9TQU1QTEVfUE9TSVRJT06G8QSG8waG9QiG9woSZ2xHZXRNdWx0aXNhbXBsZWZ2A3ZhbAQBAAIQZ2xHZXRPYmplY3RMYWJlbAKG+QyG+wiG/QoQZ2xHZXRPYmplY3RMYWJlbAppZGVudGlmaWVyCwlHTF9CVUZGRVIOR0xfRlJBTUVCVUZGRVIKR0xfUFJPR1JBTRNHTF9QUk9HUkFNX1BJUEVMSU5FCEdMX1FVRVJZD0dMX1JFTkRFUkJVRkZFUgpHTF9TQU1QTEVSCUdMX1NIQURFUgpHTF9URVhUVVJFFUdMX1RSQU5TRk9STV9GRUVEQkFDSw9HTF9WRVJURVhfQVJSQVmG/wSHAQaHAwiHBQoQZ2xHZXRPYmplY3RMYWJlbAVsYWJlbAQBAgITZ2xHZXRPYmplY3RMYWJlbEVYVAKHBwyHCQiHCwoTZ2xHZXRPYmplY3RMYWJlbEVYVAR0eXBlCwpHTF9URVhUVVJFDkdMX0ZSQU1FQlVGRkVSD0dMX1JFTkRFUkJVRkZFUhRHTF9CVUZGRVJfT0JKRUNUX0VYVBRHTF9TSEFERVJfT0JKRUNUX0VYVBVHTF9QUk9HUkFNX09CSkVDVF9FWFQaR0xfVkVSVEVYX0FSUkFZX09CSkVDVF9FWFQTR0xfUVVFUllfT0JKRUNUX0VYVApHTF9TQU1QTEVSFUdMX1RSQU5TRk9STV9GRUVEQkFDSx5HTF9QUk9HUkFNX1BJUEVMSU5FX09CSkVDVF9FWFSHDQSHDwaHEQiHEwoTZ2xHZXRPYmplY3RMYWJlbEVYVAVsYWJlbAQBAgITZ2xHZXRPYmplY3RMYWJlbEtIUgKHFQyHFwiHGQoTZ2xHZXRPYmplY3RMYWJlbEtIUgppZGVudGlmaWVyCwlHTF9CVUZGRVIOR0xfRlJBTUVCVUZGRVIKR0xfUFJPR1JBTRNHTF9QUk9HUkFNX1BJUEVMSU5FCEdMX1FVRVJZD0dMX1JFTkRFUkJVRkZFUgpHTF9TQU1QTEVSCUdMX1NIQURFUgpHTF9URVhUVVJFFUdMX1RSQU5TRk9STV9GRUVEQkFDSw9HTF9WRVJURVhfQVJSQVmHGwSHHQaHHwiHIQoTZ2xHZXRPYmplY3RMYWJlbEtIUgVsYWJlbAQBAgITZ2xHZXRPYmplY3RQdHJMYWJlbAGHIwSHJQaHJwiHKQoTZ2xHZXRPYmplY3RQdHJMYWJlbAVsYWJlbAQBAgIWZ2xHZXRPYmplY3RQdHJMYWJlbEtIUgGHKwSHLQaHLwiHMQoWZ2xHZXRPYmplY3RQdHJMYWJlbEtIUgVsYWJlbAQBAgINZ2xHZXRQb2ludGVydgKHMwyHNQiHNwoNZ2xHZXRQb2ludGVydgVwbmFtZQIaR0xfREVCVUdfQ0FMTEJBQ0tfRlVOQ1RJT04cR0xfREVCVUdfQ0FMTEJBQ0tfVVNFUl9QQVJBTYc5BIc7Boc9CIc/Cg1nbEdldFBvaW50ZXJ2BnBhcmFtcwQBAgIQZ2xHZXRQb2ludGVydktIUgKHQQyHQwiHRQoQZ2xHZXRQb2ludGVydktIUgVwbmFtZQIaR0xfREVCVUdfQ0FMTEJBQ0tfRlVOQ1RJT04cR0xfREVCVUdfQ0FMTEJBQ0tfVVNFUl9QQVJBTYdHBIdJBodLCIdNChBnbEdldFBvaW50ZXJ2S0hSBnBhcmFtcwQBAgISZ2xHZXRQcm9ncmFtQmluYXJ5AYdPBIdRBodTCIdVChJnbEdldFByb2dyYW1CaW5hcnkGYmluYXJ5BAECAhVnbEdldFByb2dyYW1CaW5hcnlPRVMBh1cEh1kGh1sIh10KFWdsR2V0UHJvZ3JhbUJpbmFyeU9FUwZiaW5hcnkEAQICE2dsR2V0UHJvZ3JhbUluZm9Mb2cBh18Eh2EGh2MIh2UKE2dsR2V0UHJvZ3JhbUluZm9Mb2cEaW5mbwQBAgIXZ2xHZXRQcm9ncmFtSW50ZXJmYWNlaXYCh2cMh2kIh2sKF2dsR2V0UHJvZ3JhbUludGVyZmFjZWl2EHByb2dyYW1JbnRlcmZhY2UJGEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUhJHTF9CVUZGRVJfVkFSSUFCTEUQR0xfUFJPR1JBTV9JTlBVVBFHTF9QUk9HUkFNX09VVFBVVBdHTF9TSEFERVJfU1RPUkFHRV9CTE9DSxxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSHUdMX1RSQU5TRk9STV9GRUVEQkFDS19WQVJZSU5HCkdMX1VOSUZPUk0QR0xfVU5JRk9STV9CTE9DS4dtDIdvCIdxChdnbEdldFByb2dyYW1JbnRlcmZhY2VpdgVwbmFtZQMTR0xfQUNUSVZFX1JFU09VUkNFUxJHTF9NQVhfTkFNRV9MRU5HVEgbR0xfTUFYX05VTV9BQ1RJVkVfVkFSSUFCTEVTAhtnbEdldFByb2dyYW1QaXBlbGluZUluZm9Mb2cBh3MEh3UGh3cIh3kKG2dsR2V0UHJvZ3JhbVBpcGVsaW5lSW5mb0xvZwdpbmZvTG9nBAECAhZnbEdldFByb2dyYW1QaXBlbGluZWl2AYd7DId9CId/ChZnbEdldFByb2dyYW1QaXBlbGluZWl2BXBuYW1lCRFHTF9BQ1RJVkVfUFJPR1JBTRFHTF9DT01QVVRFX1NIQURFUhJHTF9GUkFHTUVOVF9TSEFERVISR0xfSU5GT19MT0dfTEVOR1RIEkdMX1ZBTElEQVRFX1NUQVRVUxBHTF9WRVJURVhfU0hBREVSEkdMX0dFT01FVFJZX1NIQURFUhZHTF9URVNTX0NPTlRST0xfU0hBREVSGUdMX1RFU1NfRVZBTFVBVElPTl9TSEFERVICGWdsR2V0UHJvZ3JhbVJlc291cmNlSW5kZXgBh4EMh4MIh4UKGWdsR2V0UHJvZ3JhbVJlc291cmNlSW5kZXgQcHJvZ3JhbUludGVyZmFjZQcSR0xfQlVGRkVSX1ZBUklBQkxFEEdMX1BST0dSQU1fSU5QVVQRR0xfUFJPR1JBTV9PVVRQVVQXR0xfU0hBREVSX1NUT1JBR0VfQkxPQ0sdR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1ZBUllJTkcKR0xfVU5JRk9STRBHTF9VTklGT1JNX0JMT0NLAhxnbEdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uAYeHDIeJCIeLChxnbEdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uEHByb2dyYW1JbnRlcmZhY2UEEEdMX1BST0dSQU1fSU5QVVQRR0xfUFJPR1JBTV9PVVRQVVQcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUgpHTF9VTklGT1JNAhhnbEdldFByb2dyYW1SZXNvdXJjZU5hbWUCh40Mh48Ih5EKGGdsR2V0UHJvZ3JhbVJlc291cmNlTmFtZRBwcm9ncmFtSW50ZXJmYWNlBxJHTF9CVUZGRVJfVkFSSUFCTEUQR0xfUFJPR1JBTV9JTlBVVBFHTF9QUk9HUkFNX09VVFBVVBdHTF9TSEFERVJfU1RPUkFHRV9CTE9DSx1HTF9UUkFOU0ZPUk1fRkVFREJBQ0tfVkFSWUlORwpHTF9VTklGT1JNEEdMX1VOSUZPUk1fQkxPQ0uHkwSHlQaHlwiHmQoYZ2xHZXRQcm9ncmFtUmVzb3VyY2VOYW1lBG5hbWUEAQICFmdsR2V0UHJvZ3JhbVJlc291cmNlaXYDh5sMh50Ih58KFmdsR2V0UHJvZ3JhbVJlc291cmNlaXYQcHJvZ3JhbUludGVyZmFjZQkYR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSEkdMX0JVRkZFUl9WQVJJQUJMRRBHTF9QUk9HUkFNX0lOUFVUEUdMX1BST0dSQU1fT1VUUFVUF0dMX1NIQURFUl9TVE9SQUdFX0JMT0NLHEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIdR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1ZBUllJTkcKR0xfVU5JRk9STRBHTF9VTklGT1JNX0JMT0NLh6EEh6MGh6UIh6cKFmdsR2V0UHJvZ3JhbVJlc291cmNlaXYFcHJvcHMEAQCHqQSHqwaHrQiHrwoWZ2xHZXRQcm9ncmFtUmVzb3VyY2VpdgZwYXJhbXMEAQICDmdsR2V0UHJvZ3JhbWl2AYexDIezCIe1Cg5nbEdldFByb2dyYW1pdglwYXJhbWV0ZXIcFEdMX0FDVElWRV9BVFRSSUJVVEVTHkdMX0FDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSBJHTF9BQ1RJVkVfVU5JRk9STVMcR0xfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSBNHTF9BVFRBQ0hFRF9TSEFERVJTEEdMX0RFTEVURV9TVEFUVVMSR0xfSU5GT19MT0dfTEVOR1RIDkdMX0xJTktfU1RBVFVTEkdMX1ZBTElEQVRFX1NUQVRVUxhHTF9BQ1RJVkVfVU5JRk9STV9CTE9DS1MnR0xfQUNUSVZFX1VOSUZPUk1fQkxPQ0tfTUFYX05BTUVfTEVOR1RIIkdMX1BST0dSQU1fQklOQVJZX1JFVFJJRVZBQkxFX0hJTlQhR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9NT0RFHkdMX1RSQU5TRk9STV9GRUVEQkFDS19WQVJZSU5HUyhHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfVkFSWUlOR19NQVhfTEVOR1RIGEdMX1BST0dSQU1fQklOQVJZX0xFTkdUSCBHTF9BQ1RJVkVfQVRPTUlDX0NPVU5URVJfQlVGRkVSUxpHTF9DT01QVVRFX1dPUktfR1JPVVBfU0laRRRHTF9QUk9HUkFNX1NFUEFSQUJMRRZHTF9HRU9NRVRSWV9JTlBVVF9UWVBFF0dMX0dFT01FVFJZX09VVFBVVF9UWVBFGEdMX0dFT01FVFJZX1ZFUlRJQ0VTX09VVB5HTF9HRU9NRVRSWV9TSEFERVJfSU5WT0NBVElPTlMfR0xfVEVTU19DT05UUk9MX09VVFBVVF9WRVJUSUNFUxBHTF9URVNTX0dFTl9NT0RFFkdMX1RFU1NfR0VOX1BPSU5UX01PREUTR0xfVEVTU19HRU5fU1BBQ0lORxhHTF9URVNTX0dFTl9WRVJURVhfT1JERVICE2dsR2V0UXVlcnlPYmplY3R1aXYBh7cMh7kIh7sKE2dsR2V0UXVlcnlPYmplY3R1aXYJcGFyYW1ldGVyAg9HTF9RVUVSWV9SRVNVTFQZR0xfUVVFUllfUkVTVUxUX0FWQUlMQUJMRQIMZ2xHZXRRdWVyeWl2Aoe9DIe/CIfBCgxnbEdldFF1ZXJ5aXYGdGFyZ2V0BBVHTF9BTllfU0FNUExFU19QQVNTRUQiR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRShHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfUFJJTUlUSVZFU19XUklUVEVOF0dMX1BSSU1JVElWRVNfR0VORVJBVEVEh8MMh8UIh8cKDGdsR2V0UXVlcnlpdglwYXJhbWV0ZXIBEEdMX0NVUlJFTlRfUVVFUlkCHGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYCh8kMh8sIh80KHGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYGdGFyZ2V0AQ9HTF9SRU5ERVJCVUZGRVKHzwyH0QiH0wocZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdglwYXJhbWV0ZXIKGkdMX1JFTkRFUkJVRkZFUl9BTFBIQV9TSVpFGUdMX1JFTkRFUkJVRkZFUl9CTFVFX1NJWkUaR0xfUkVOREVSQlVGRkVSX0RFUFRIX1NJWkUaR0xfUkVOREVSQlVGRkVSX0dSRUVOX1NJWkUWR0xfUkVOREVSQlVGRkVSX0hFSUdIVB9HTF9SRU5ERVJCVUZGRVJfSU5URVJOQUxfRk9STUFUGEdMX1JFTkRFUkJVRkZFUl9SRURfU0laRRxHTF9SRU5ERVJCVUZGRVJfU1RFTkNJTF9TSVpFFUdMX1JFTkRFUkJVRkZFUl9XSURUSBdHTF9SRU5ERVJCVUZGRVJfU0FNUExFUwIYZ2xHZXRTYW1wbGVyUGFyYW1ldGVySWl2AYfVDIfXCIfZChhnbEdldFNhbXBsZXJQYXJhbWV0ZXJJaXYFcG5hbWUKF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhVHTF9URVhUVVJFX01BR19GSUxURVISR0xfVEVYVFVSRV9NSU5fTE9EEkdMX1RFWFRVUkVfTUFYX0xPRBFHTF9URVhUVVJFX1dSQVBfUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUgIbZ2xHZXRTYW1wbGVyUGFyYW1ldGVySWl2RVhUAYfbDIfdCIffChtnbEdldFNhbXBsZXJQYXJhbWV0ZXJJaXZFWFQFcG5hbWUKF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhVHTF9URVhUVVJFX01BR19GSUxURVISR0xfVEVYVFVSRV9NSU5fTE9EEkdMX1RFWFRVUkVfTUFYX0xPRBFHTF9URVhUVVJFX1dSQVBfUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUgIbZ2xHZXRTYW1wbGVyUGFyYW1ldGVySWl2T0VTAYfhDIfjCIflChtnbEdldFNhbXBsZXJQYXJhbWV0ZXJJaXZPRVMFcG5hbWUKF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhVHTF9URVhUVVJFX01BR19GSUxURVISR0xfVEVYVFVSRV9NSU5fTE9EEkdMX1RFWFRVUkVfTUFYX0xPRBFHTF9URVhUVVJFX1dSQVBfUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUgIZZ2xHZXRTYW1wbGVyUGFyYW1ldGVySXVpdgGH5wyH6QiH6woZZ2xHZXRTYW1wbGVyUGFyYW1ldGVySXVpdgVwbmFtZQoXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUVR0xfVEVYVFVSRV9NSU5fRklMVEVSFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhJHTF9URVhUVVJFX01JTl9MT0QSR0xfVEVYVFVSRV9NQVhfTE9EEUdMX1RFWFRVUkVfV1JBUF9SEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SAhxnbEdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2RVhUAYftDIfvCIfxChxnbEdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2RVhUBXBuYW1lChdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRVHTF9URVhUVVJFX01JTl9GSUxURVIVR0xfVEVYVFVSRV9NQUdfRklMVEVSEkdMX1RFWFRVUkVfTUlOX0xPRBJHTF9URVhUVVJFX01BWF9MT0QRR0xfVEVYVFVSRV9XUkFQX1IRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1ICHGdsR2V0U2FtcGxlclBhcmFtZXRlckl1aXZPRVMBh/MMh/UIh/cKHGdsR2V0U2FtcGxlclBhcmFtZXRlckl1aXZPRVMFcG5hbWUKF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhVHTF9URVhUVVJFX01BR19GSUxURVISR0xfVEVYVFVSRV9NSU5fTE9EEkdMX1RFWFRVUkVfTUFYX0xPRBFHTF9URVhUVVJFX1dSQVBfUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUgIXZ2xHZXRTYW1wbGVyUGFyYW1ldGVyZnYBh/kMh/sIh/0KF2dsR2V0U2FtcGxlclBhcmFtZXRlcmZ2BXBuYW1lChdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRVHTF9URVhUVVJFX01JTl9GSUxURVIVR0xfVEVYVFVSRV9NQUdfRklMVEVSEkdMX1RFWFRVUkVfTUlOX0xPRBJHTF9URVhUVVJFX01BWF9MT0QRR0xfVEVYVFVSRV9XUkFQX1IRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1ICF2dsR2V0U2FtcGxlclBhcmFtZXRlcml2AYf/DIgBCIgDChdnbEdldFNhbXBsZXJQYXJhbWV0ZXJpdgVwbmFtZQoXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUVR0xfVEVYVFVSRV9NSU5fRklMVEVSFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhJHTF9URVhUVVJFX01JTl9MT0QSR0xfVEVYVFVSRV9NQVhfTE9EEUdMX1RFWFRVUkVfV1JBUF9SEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SAhJnbEdldFNoYWRlckluZm9Mb2cBiAUEiAcGiAkIiAsKEmdsR2V0U2hhZGVySW5mb0xvZwRpbmZvBAECAhpnbEdldFNoYWRlclByZWNpc2lvbkZvcm1hdAOIDQyIDwiIEQoaZ2xHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQLc2hhZGVyX3R5cGUCEkdMX0ZSQUdNRU5UX1NIQURFUhBHTF9WRVJURVhfU0hBREVSiBMMiBUIiBcKGmdsR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0DnByZWNpc2lvbl90eXBlBg1HTF9ISUdIX0ZMT0FUC0dMX0hJR0hfSU5UDEdMX0xPV19GTE9BVApHTF9MT1dfSU5UD0dMX01FRElVTV9GTE9BVA1HTF9NRURJVU1fSU5UiBkEiBsGiB0IiB8KGmdsR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0BXJhbmdlBAECAhFnbEdldFNoYWRlclNvdXJjZQGIIQSIIwaIJQiIJwoRZ2xHZXRTaGFkZXJTb3VyY2UGc291cmNlBAECAg1nbEdldFNoYWRlcml2AYgpDIgrCIgtCg1nbEdldFNoYWRlcml2CXBhcmFtZXRlcgURR0xfQ09NUElMRV9TVEFUVVMQR0xfREVMRVRFX1NUQVRVUxJHTF9JTkZPX0xPR19MRU5HVEgXR0xfU0hBREVSX1NPVVJDRV9MRU5HVEgOR0xfU0hBREVSX1RZUEUCC2dsR2V0U3RyaW5nAYgvDIgxCIgzCgtnbEdldFN0cmluZwVwYXJhbQUNR0xfRVhURU5TSU9OUwtHTF9SRU5ERVJFUhtHTF9TSEFESU5HX0xBTkdVQUdFX1ZFUlNJT04JR0xfVkVORE9SCkdMX1ZFUlNJT04CDGdsR2V0U3RyaW5naQGINQyINwiIOQoMZ2xHZXRTdHJpbmdpBG5hbWUBDUdMX0VYVEVOU0lPTlMCC2dsR2V0U3luY2l2AYg7DIg9CIg/CgtnbEdldFN5bmNpdgVwbmFtZQQOR0xfT0JKRUNUX1RZUEURR0xfU1lOQ19DT05ESVRJT04NR0xfU1lOQ19GTEFHUw5HTF9TWU5DX1NUQVRVUwIQZ2xHZXRTeW5jaXZBUFBMRQGIQQyIQwiIRQoQZ2xHZXRTeW5jaXZBUFBMRQVwbmFtZQQOR0xfT0JKRUNUX1RZUEURR0xfU1lOQ19DT05ESVRJT04NR0xfU1lOQ19GTEFHUw5HTF9TWU5DX1NUQVRVUwIYZ2xHZXRUZXhMZXZlbFBhcmFtZXRlcmZ2AohHDIhJCIhLChhnbEdldFRleExldmVsUGFyYW1ldGVyZnYGdGFyZ2V0DQ1HTF9URVhUVVJFXzJEE0dMX1RFWFRVUkVfMkRfQVJSQVkZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRQ1HTF9URVhUVVJFXzNEHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWB5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1keR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWB5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1keR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aH0dMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVkRR0xfVEVYVFVSRV9CVUZGRVIZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWYhNDIhPCIhRChhnbEdldFRleExldmVsUGFyYW1ldGVyZnYFcG5hbWUWFUdMX1RFWFRVUkVfQUxQSEFfU0laRRVHTF9URVhUVVJFX0FMUEhBX1RZUEUUR0xfVEVYVFVSRV9CTFVFX1NJWkUUR0xfVEVYVFVSRV9CTFVFX1RZUEUVR0xfVEVYVFVSRV9DT01QUkVTU0VEEEdMX1RFWFRVUkVfREVQVEgVR0xfVEVYVFVSRV9ERVBUSF9TSVpFFUdMX1RFWFRVUkVfREVQVEhfVFlQRSFHTF9URVhUVVJFX0ZJWEVEX1NBTVBMRV9MT0NBVElPTlMVR0xfVEVYVFVSRV9HUkVFTl9TSVpFFUdMX1RFWFRVUkVfR1JFRU5fVFlQRRFHTF9URVhUVVJFX0hFSUdIVBpHTF9URVhUVVJFX0lOVEVSTkFMX0ZPUk1BVBNHTF9URVhUVVJFX1JFRF9TSVpFE0dMX1RFWFRVUkVfUkVEX1RZUEUSR0xfVEVYVFVSRV9TQU1QTEVTFkdMX1RFWFRVUkVfU0hBUkVEX1NJWkUXR0xfVEVYVFVSRV9TVEVOQ0lMX1NJWkUQR0xfVEVYVFVSRV9XSURUSCRHTF9URVhUVVJFX0JVRkZFUl9EQVRBX1NUT1JFX0JJTkRJTkcYR0xfVEVYVFVSRV9CVUZGRVJfT0ZGU0VUFkdMX1RFWFRVUkVfQlVGRkVSX1NJWkUCGGdsR2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdgKIUwyIVQiIVwoYZ2xHZXRUZXhMZXZlbFBhcmFtZXRlcml2BnRhcmdldA0NR0xfVEVYVFVSRV8yRBNHTF9URVhUVVJFXzJEX0FSUkFZGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUNR0xfVEVYVFVSRV8zRB5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1geR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWh5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1geR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWh9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZEUdMX1RFWFRVUkVfQlVGRkVSGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVmIWQyIWwiIXQoYZ2xHZXRUZXhMZXZlbFBhcmFtZXRlcml2BXBuYW1lFhVHTF9URVhUVVJFX0FMUEhBX1NJWkUVR0xfVEVYVFVSRV9BTFBIQV9UWVBFFEdMX1RFWFRVUkVfQkxVRV9TSVpFFEdMX1RFWFRVUkVfQkxVRV9UWVBFFUdMX1RFWFRVUkVfQ09NUFJFU1NFRBBHTF9URVhUVVJFX0RFUFRIFUdMX1RFWFRVUkVfREVQVEhfU0laRRVHTF9URVhUVVJFX0RFUFRIX1RZUEUhR0xfVEVYVFVSRV9GSVhFRF9TQU1QTEVfTE9DQVRJT05TFUdMX1RFWFRVUkVfR1JFRU5fU0laRRVHTF9URVhUVVJFX0dSRUVOX1RZUEURR0xfVEVYVFVSRV9IRUlHSFQaR0xfVEVYVFVSRV9JTlRFUk5BTF9GT1JNQVQTR0xfVEVYVFVSRV9SRURfU0laRRNHTF9URVhUVVJFX1JFRF9UWVBFEkdMX1RFWFRVUkVfU0FNUExFUxZHTF9URVhUVVJFX1NIQVJFRF9TSVpFF0dMX1RFWFRVUkVfU1RFTkNJTF9TSVpFEEdMX1RFWFRVUkVfV0lEVEgkR0xfVEVYVFVSRV9CVUZGRVJfREFUQV9TVE9SRV9CSU5ESU5HGEdMX1RFWFRVUkVfQlVGRkVSX09GRlNFVBZHTF9URVhUVVJFX0JVRkZFUl9TSVpFAhRnbEdldFRleFBhcmFtZXRlcklpdgKIXwyIYQiIYwoUZ2xHZXRUZXhQYXJhbWV0ZXJJaXYGdGFyZ2V0CQ1HTF9URVhUVVJFXzJEE0dMX1RFWFRVUkVfQ1VCRV9NQVATR0xfVEVYVFVSRV8yRF9BUlJBWQ1HTF9URVhUVVJFXzNEGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWRlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZF0dMX1RFWFRVUkVfRVhURVJOQUxfT0VTEUdMX1RFWFRVUkVfQlVGRkVSiGUMiGcIiGkKFGdsR2V0VGV4UGFyYW1ldGVySWl2BXBuYW1lFRVHTF9URVhUVVJFX01BR19GSUxURVIVR0xfVEVYVFVSRV9NSU5fRklMVEVSEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UFUdMX1RFWFRVUkVfQkFTRV9MRVZFTBdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRtHTF9URVhUVVJFX0lNTVVUQUJMRV9GT1JNQVQUR0xfVEVYVFVSRV9NQVhfTEVWRUwSR0xfVEVYVFVSRV9NQVhfTE9EEkdMX1RFWFRVUkVfTUlOX0xPRBRHTF9URVhUVVJFX1NXSVpaTEVfQRRHTF9URVhUVVJFX1NXSVpaTEVfQhRHTF9URVhUVVJFX1NXSVpaTEVfRxRHTF9URVhUVVJFX1NXSVpaTEVfUhFHTF9URVhUVVJFX1dSQVBfUh1HTF9ERVBUSF9TVEVOQ0lMX1RFWFRVUkVfTU9ERSJHTF9JTUFHRV9GT1JNQVRfQ09NUEFUSUJJTElUWV9UWVBFG0dMX1RFWFRVUkVfSU1NVVRBQkxFX0xFVkVMUxdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUh1HTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVAIXZ2xHZXRUZXhQYXJhbWV0ZXJJaXZFWFQCiGsMiG0IiG8KF2dsR2V0VGV4UGFyYW1ldGVySWl2RVhUBnRhcmdldAkNR0xfVEVYVFVSRV8yRBNHTF9URVhUVVJFX0NVQkVfTUFQE0dMX1RFWFRVUkVfMkRfQVJSQVkNR0xfVEVYVFVSRV8zRBlHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFH0dMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVkZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWRdHTF9URVhUVVJFX0VYVEVSTkFMX09FUxFHTF9URVhUVVJFX0JVRkZFUohxDIhzCIh1ChdnbEdldFRleFBhcmFtZXRlcklpdkVYVAVwbmFtZRUVR0xfVEVYVFVSRV9NQUdfRklMVEVSFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBVHTF9URVhUVVJFX0JBU0VfTEVWRUwXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUbR0xfVEVYVFVSRV9JTU1VVEFCTEVfRk9STUFUFEdMX1RFWFRVUkVfTUFYX0xFVkVMEkdMX1RFWFRVUkVfTUFYX0xPRBJHTF9URVhUVVJFX01JTl9MT0QUR0xfVEVYVFVSRV9TV0laWkxFX0EUR0xfVEVYVFVSRV9TV0laWkxFX0IUR0xfVEVYVFVSRV9TV0laWkxFX0cUR0xfVEVYVFVSRV9TV0laWkxFX1IRR0xfVEVYVFVSRV9XUkFQX1IdR0xfREVQVEhfU1RFTkNJTF9URVhUVVJFX01PREUiR0xfSU1BR0VfRk9STUFUX0NPTVBBVElCSUxJVFlfVFlQRRtHTF9URVhUVVJFX0lNTVVUQUJMRV9MRVZFTFMXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1IdR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQCF2dsR2V0VGV4UGFyYW1ldGVySWl2T0VTAoh3DIh5CIh7ChdnbEdldFRleFBhcmFtZXRlcklpdk9FUwZ0YXJnZXQJDUdMX1RFWFRVUkVfMkQTR0xfVEVYVFVSRV9DVUJFX01BUBNHTF9URVhUVVJFXzJEX0FSUkFZDUdMX1RFWFRVUkVfM0QZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVkXR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMRR0xfVEVYVFVSRV9CVUZGRVKIfQyIfwiIgQoXZ2xHZXRUZXhQYXJhbWV0ZXJJaXZPRVMFcG5hbWUVFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhVHTF9URVhUVVJFX01JTl9GSUxURVIRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QVR0xfVEVYVFVSRV9CQVNFX0xFVkVMF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFG0dMX1RFWFRVUkVfSU1NVVRBQkxFX0ZPUk1BVBRHTF9URVhUVVJFX01BWF9MRVZFTBJHTF9URVhUVVJFX01BWF9MT0QSR0xfVEVYVFVSRV9NSU5fTE9EFEdMX1RFWFRVUkVfU1dJWlpMRV9BFEdMX1RFWFRVUkVfU1dJWlpMRV9CFEdMX1RFWFRVUkVfU1dJWlpMRV9HFEdMX1RFWFRVUkVfU1dJWlpMRV9SEUdMX1RFWFRVUkVfV1JBUF9SHUdMX0RFUFRIX1NURU5DSUxfVEVYVFVSRV9NT0RFIkdMX0lNQUdFX0ZPUk1BVF9DT01QQVRJQklMSVRZX1RZUEUbR0xfVEVYVFVSRV9JTU1VVEFCTEVfTEVWRUxTF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SHUdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUAhVnbEdldFRleFBhcmFtZXRlckl1aXYCiIMMiIUIiIcKFWdsR2V0VGV4UGFyYW1ldGVySXVpdgZ0YXJnZXQJDUdMX1RFWFRVUkVfMkQTR0xfVEVYVFVSRV9DVUJFX01BUBNHTF9URVhUVVJFXzJEX0FSUkFZDUdMX1RFWFRVUkVfM0QZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVkXR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMRR0xfVEVYVFVSRV9CVUZGRVKIiQyIiwiIjQoVZ2xHZXRUZXhQYXJhbWV0ZXJJdWl2BXBuYW1lFRVHTF9URVhUVVJFX01BR19GSUxURVIVR0xfVEVYVFVSRV9NSU5fRklMVEVSEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UFUdMX1RFWFRVUkVfQkFTRV9MRVZFTBdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRtHTF9URVhUVVJFX0lNTVVUQUJMRV9GT1JNQVQUR0xfVEVYVFVSRV9NQVhfTEVWRUwSR0xfVEVYVFVSRV9NQVhfTE9EEkdMX1RFWFRVUkVfTUlOX0xPRBRHTF9URVhUVVJFX1NXSVpaTEVfQRRHTF9URVhUVVJFX1NXSVpaTEVfQhRHTF9URVhUVVJFX1NXSVpaTEVfRxRHTF9URVhUVVJFX1NXSVpaTEVfUhFHTF9URVhUVVJFX1dSQVBfUh1HTF9ERVBUSF9TVEVOQ0lMX1RFWFRVUkVfTU9ERSJHTF9JTUFHRV9GT1JNQVRfQ09NUEFUSUJJTElUWV9UWVBFG0dMX1RFWFRVUkVfSU1NVVRBQkxFX0xFVkVMUxdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUh1HTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVAIYZ2xHZXRUZXhQYXJhbWV0ZXJJdWl2RVhUAoiPDIiRCIiTChhnbEdldFRleFBhcmFtZXRlckl1aXZFWFQGdGFyZ2V0CQ1HTF9URVhUVVJFXzJEE0dMX1RFWFRVUkVfQ1VCRV9NQVATR0xfVEVYVFVSRV8yRF9BUlJBWQ1HTF9URVhUVVJFXzNEGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWRlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZF0dMX1RFWFRVUkVfRVhURVJOQUxfT0VTEUdMX1RFWFRVUkVfQlVGRkVSiJUMiJcIiJkKGGdsR2V0VGV4UGFyYW1ldGVySXVpdkVYVAVwbmFtZRUVR0xfVEVYVFVSRV9NQUdfRklMVEVSFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBVHTF9URVhUVVJFX0JBU0VfTEVWRUwXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUbR0xfVEVYVFVSRV9JTU1VVEFCTEVfRk9STUFUFEdMX1RFWFRVUkVfTUFYX0xFVkVMEkdMX1RFWFRVUkVfTUFYX0xPRBJHTF9URVhUVVJFX01JTl9MT0QUR0xfVEVYVFVSRV9TV0laWkxFX0EUR0xfVEVYVFVSRV9TV0laWkxFX0IUR0xfVEVYVFVSRV9TV0laWkxFX0cUR0xfVEVYVFVSRV9TV0laWkxFX1IRR0xfVEVYVFVSRV9XUkFQX1IdR0xfREVQVEhfU1RFTkNJTF9URVhUVVJFX01PREUiR0xfSU1BR0VfRk9STUFUX0NPTVBBVElCSUxJVFlfVFlQRRtHTF9URVhUVVJFX0lNTVVUQUJMRV9MRVZFTFMXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1IdR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQCGGdsR2V0VGV4UGFyYW1ldGVySXVpdk9FUwKImwyInQiInwoYZ2xHZXRUZXhQYXJhbWV0ZXJJdWl2T0VTBnRhcmdldAkNR0xfVEVYVFVSRV8yRBNHTF9URVhUVVJFX0NVQkVfTUFQE0dMX1RFWFRVUkVfMkRfQVJSQVkNR0xfVEVYVFVSRV8zRBlHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFH0dMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVkZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWRdHTF9URVhUVVJFX0VYVEVSTkFMX09FUxFHTF9URVhUVVJFX0JVRkZFUoihDIijCIilChhnbEdldFRleFBhcmFtZXRlckl1aXZPRVMFcG5hbWUVFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhVHTF9URVhUVVJFX01JTl9GSUxURVIRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QVR0xfVEVYVFVSRV9CQVNFX0xFVkVMF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFG0dMX1RFWFRVUkVfSU1NVVRBQkxFX0ZPUk1BVBRHTF9URVhUVVJFX01BWF9MRVZFTBJHTF9URVhUVVJFX01BWF9MT0QSR0xfVEVYVFVSRV9NSU5fTE9EFEdMX1RFWFRVUkVfU1dJWlpMRV9BFEdMX1RFWFRVUkVfU1dJWlpMRV9CFEdMX1RFWFRVUkVfU1dJWlpMRV9HFEdMX1RFWFRVUkVfU1dJWlpMRV9SEUdMX1RFWFRVUkVfV1JBUF9SHUdMX0RFUFRIX1NURU5DSUxfVEVYVFVSRV9NT0RFIkdMX0lNQUdFX0ZPUk1BVF9DT01QQVRJQklMSVRZX1RZUEUbR0xfVEVYVFVSRV9JTU1VVEFCTEVfTEVWRUxTF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SHUdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUAhNnbEdldFRleFBhcmFtZXRlcmZ2AoinDIipCIirChNnbEdldFRleFBhcmFtZXRlcmZ2BnRhcmdldAkNR0xfVEVYVFVSRV8yRBNHTF9URVhUVVJFX0NVQkVfTUFQE0dMX1RFWFRVUkVfMkRfQVJSQVkNR0xfVEVYVFVSRV8zRBlHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFH0dMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVkZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWRdHTF9URVhUVVJFX0VYVEVSTkFMX09FUxFHTF9URVhUVVJFX0JVRkZFUoitDIivCIixChNnbEdldFRleFBhcmFtZXRlcmZ2CXBhcmFtZXRlchUVR0xfVEVYVFVSRV9NQUdfRklMVEVSFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBVHTF9URVhUVVJFX0JBU0VfTEVWRUwXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUbR0xfVEVYVFVSRV9JTU1VVEFCTEVfRk9STUFUFEdMX1RFWFRVUkVfTUFYX0xFVkVMEkdMX1RFWFRVUkVfTUFYX0xPRBJHTF9URVhUVVJFX01JTl9MT0QUR0xfVEVYVFVSRV9TV0laWkxFX0EUR0xfVEVYVFVSRV9TV0laWkxFX0IUR0xfVEVYVFVSRV9TV0laWkxFX0cUR0xfVEVYVFVSRV9TV0laWkxFX1IRR0xfVEVYVFVSRV9XUkFQX1IdR0xfREVQVEhfU1RFTkNJTF9URVhUVVJFX01PREUiR0xfSU1BR0VfRk9STUFUX0NPTVBBVElCSUxJVFlfVFlQRRtHTF9URVhUVVJFX0lNTVVUQUJMRV9MRVZFTFMXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1IdR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQCE2dsR2V0VGV4UGFyYW1ldGVyaXYCiLMMiLUIiLcKE2dsR2V0VGV4UGFyYW1ldGVyaXYGdGFyZ2V0CQ1HTF9URVhUVVJFXzJEE0dMX1RFWFRVUkVfQ1VCRV9NQVATR0xfVEVYVFVSRV8yRF9BUlJBWQ1HTF9URVhUVVJFXzNEGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWRlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZF0dMX1RFWFRVUkVfRVhURVJOQUxfT0VTEUdMX1RFWFRVUkVfQlVGRkVSiLkMiLsIiL0KE2dsR2V0VGV4UGFyYW1ldGVyaXYJcGFyYW1ldGVyFRVHTF9URVhUVVJFX01BR19GSUxURVIVR0xfVEVYVFVSRV9NSU5fRklMVEVSEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UFUdMX1RFWFRVUkVfQkFTRV9MRVZFTBdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRtHTF9URVhUVVJFX0lNTVVUQUJMRV9GT1JNQVQUR0xfVEVYVFVSRV9NQVhfTEVWRUwSR0xfVEVYVFVSRV9NQVhfTE9EEkdMX1RFWFRVUkVfTUlOX0xPRBRHTF9URVhUVVJFX1NXSVpaTEVfQRRHTF9URVhUVVJFX1NXSVpaTEVfQhRHTF9URVhUVVJFX1NXSVpaTEVfRxRHTF9URVhUVVJFX1NXSVpaTEVfUhFHTF9URVhUVVJFX1dSQVBfUh1HTF9ERVBUSF9TVEVOQ0lMX1RFWFRVUkVfTU9ERSJHTF9JTUFHRV9GT1JNQVRfQ09NUEFUSUJJTElUWV9UWVBFG0dMX1RFWFRVUkVfSU1NVVRBQkxFX0xFVkVMUxdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUh1HTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVAIdZ2xHZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcBiL8EiMEGiMMIiMUKHWdsR2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nBG5hbWUEAQICE2dsR2V0VW5pZm9ybUluZGljZXMBiMcEiMkGiMsIiM0KE2dsR2V0VW5pZm9ybUluZGljZXMOdW5pZm9ybUluZGljZXMEAQICDmdsR2V0VW5pZm9ybWZ2AYjPBIjRBojTCIjVCg5nbEdldFVuaWZvcm1mdgZ2YWx1ZXMEAQICDmdsR2V0VW5pZm9ybWl2AYjXBIjZBojbCIjdCg5nbEdldFVuaWZvcm1pdgZ2YWx1ZXMEAQICD2dsR2V0VW5pZm9ybXVpdgGI3wSI4QaI4wiI5QoPZ2xHZXRVbmlmb3JtdWl2BnZhbHVlcwQBAgIUZ2xHZXRWZXJ0ZXhBdHRyaWJJaXYCiOcMiOkIiOsKFGdsR2V0VmVydGV4QXR0cmliSWl2BXBuYW1lCxhHTF9DVVJSRU5UX1ZFUlRFWF9BVFRSSUIeR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEG0dMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRRtHTF9WRVJURVhfQVRUUklCX0FSUkFZX1RZUEUhR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVEHUdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFJUdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkceR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9ESVZJU09SHkdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfSU5URUdFUhhHTF9WRVJURVhfQVRUUklCX0JJTkRJTkcgR0xfVkVSVEVYX0FUVFJJQl9SRUxBVElWRV9PRkZTRVSI7QSI7waI8QiI8woUZ2xHZXRWZXJ0ZXhBdHRyaWJJaXYGcGFyYW1zBAECAhVnbEdldFZlcnRleEF0dHJpYkl1aXYCiPUMiPcIiPkKFWdsR2V0VmVydGV4QXR0cmliSXVpdgVwbmFtZQsYR0xfQ1VSUkVOVF9WRVJURVhfQVRUUklCHkdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRBtHTF9WRVJURVhfQVRUUklCX0FSUkFZX1NJWkUbR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFIUdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfTk9STUFMSVpFRB1HTF9WRVJURVhfQVRUUklCX0FSUkFZX1NUUklERSVHTF9WRVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5HHkdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfRElWSVNPUh5HTF9WRVJURVhfQVRUUklCX0FSUkFZX0lOVEVHRVIYR0xfVkVSVEVYX0FUVFJJQl9CSU5ESU5HIEdMX1ZFUlRFWF9BVFRSSUJfUkVMQVRJVkVfT0ZGU0VUiPsEiP0GiP8IiQEKFWdsR2V0VmVydGV4QXR0cmliSXVpdgZwYXJhbXMEAQICGWdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnYBiQMMiQUIiQcKGWdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnYFcG5hbWUBHkdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfUE9JTlRFUgITZ2xHZXRWZXJ0ZXhBdHRyaWJmdgKJCQyJCwiJDQoTZ2xHZXRWZXJ0ZXhBdHRyaWJmdgVwbmFtZQsYR0xfQ1VSUkVOVF9WRVJURVhfQVRUUklCHkdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRBtHTF9WRVJURVhfQVRUUklCX0FSUkFZX1NJWkUbR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFIUdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfTk9STUFMSVpFRB1HTF9WRVJURVhfQVRUUklCX0FSUkFZX1NUUklERSVHTF9WRVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5HHkdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfRElWSVNPUh5HTF9WRVJURVhfQVRUUklCX0FSUkFZX0lOVEVHRVIYR0xfVkVSVEVYX0FUVFJJQl9CSU5ESU5HIEdMX1ZFUlRFWF9BVFRSSUJfUkVMQVRJVkVfT0ZGU0VUiQ8EiREGiRMIiRUKE2dsR2V0VmVydGV4QXR0cmliZnYGcGFyYW1zBAECAhNnbEdldFZlcnRleEF0dHJpYml2AokXDIkZCIkbChNnbEdldFZlcnRleEF0dHJpYml2BXBuYW1lCxhHTF9DVVJSRU5UX1ZFUlRFWF9BVFRSSUIeR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEG0dMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRRtHTF9WRVJURVhfQVRUUklCX0FSUkFZX1RZUEUhR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVEHUdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFJUdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkceR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9ESVZJU09SHkdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfSU5URUdFUhhHTF9WRVJURVhfQVRUUklCX0JJTkRJTkcgR0xfVkVSVEVYX0FUVFJJQl9SRUxBVElWRV9PRkZTRVSJHQSJHwaJIQiJIwoTZ2xHZXRWZXJ0ZXhBdHRyaWJpdgZwYXJhbXMEAQICD2dsR2V0blVuaWZvcm1mdgGJJQSJJwaJKQiJKwoPZ2xHZXRuVW5pZm9ybWZ2BnZhbHVlcwQBAgISZ2xHZXRuVW5pZm9ybWZ2S0hSAYktBIkvBokxCIkzChJnbEdldG5Vbmlmb3JtZnZLSFIGcGFyYW1zBAECAg9nbEdldG5Vbmlmb3JtaXYBiTUEiTcGiTkIiTsKD2dsR2V0blVuaWZvcm1pdgZ2YWx1ZXMEAQICEmdsR2V0blVuaWZvcm1pdktIUgGJPQSJPwaJQQiJQwoSZ2xHZXRuVW5pZm9ybWl2S0hSBnBhcmFtcwQBAgIQZ2xHZXRuVW5pZm9ybXVpdgGJRQSJRwaJSQiJSwoQZ2xHZXRuVW5pZm9ybXVpdgZ2YWx1ZXMEAQICE2dsR2V0blVuaWZvcm11aXZLSFIBiU0EiU8GiVEIiVMKE2dsR2V0blVuaWZvcm11aXZLSFIGcGFyYW1zBAECAgZnbEhpbnQCiVUMiVcIiVkKBmdsSGludAZ0YXJnZXQCF0dMX0dFTkVSQVRFX01JUE1BUF9ISU5UIkdMX0ZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlSJWwyJXQiJXwoGZ2xIaW50BG1vZGUDDEdMX0RPTlRfQ0FSRQpHTF9GQVNURVNUCUdMX05JQ0VTVAIWZ2xJbnNlcnRFdmVudE1hcmtlckVYVAGJYQSJYwaJZQiJZwoWZ2xJbnNlcnRFdmVudE1hcmtlckVYVAZtYXJrZXIEAQACF2dsSW52YWxpZGF0ZUZyYW1lYnVmZmVyAolpDIlrCIltChdnbEludmFsaWRhdGVGcmFtZWJ1ZmZlcgZ0YXJnZXQDDkdMX0ZSQU1FQlVGRkVSE0dMX0RSQVdfRlJBTUVCVUZGRVITR0xfUkVBRF9GUkFNRUJVRkZFUolvDIlxBolzBol1CIl3ChdnbEludmFsaWRhdGVGcmFtZWJ1ZmZlcgthdHRhY2htZW50cwQCFghHTF9DT0xPUghHTF9ERVBUSApHTF9TVEVOQ0lMFEdMX0NPTE9SX0FUVEFDSE1FTlQwFEdMX0NPTE9SX0FUVEFDSE1FTlQxFUdMX0NPTE9SX0FUVEFDSE1FTlQxMBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTEVR0xfQ09MT1JfQVRUQUNITUVOVDEyFUdMX0NPTE9SX0FUVEFDSE1FTlQxMxVHTF9DT0xPUl9BVFRBQ0hNRU5UMTQVR0xfQ09MT1JfQVRUQUNITUVOVDE1FEdMX0NPTE9SX0FUVEFDSE1FTlQyFEdMX0NPTE9SX0FUVEFDSE1FTlQzFEdMX0NPTE9SX0FUVEFDSE1FTlQ0FEdMX0NPTE9SX0FUVEFDSE1FTlQ1FEdMX0NPTE9SX0FUVEFDSE1FTlQ2FEdMX0NPTE9SX0FUVEFDSE1FTlQ3FEdMX0NPTE9SX0FUVEFDSE1FTlQ4FEdMX0NPTE9SX0FUVEFDSE1FTlQ5E0dMX0RFUFRIX0FUVEFDSE1FTlQbR0xfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UFUdMX1NURU5DSUxfQVRUQUNITUVOVAIaZ2xJbnZhbGlkYXRlU3ViRnJhbWVidWZmZXICiXkMiXsIiX0KGmdsSW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyBnRhcmdldAEOR0xfRlJBTUVCVUZGRVKJfwSJgQaJgwiJhQoaZ2xJbnZhbGlkYXRlU3ViRnJhbWVidWZmZXILYXR0YWNobWVudHMEAQACC2dsSXNFbmFibGVkAYmHDImJCImLCgtnbElzRW5hYmxlZApjYXBhYmlsaXR5EAhHTF9CTEVORAxHTF9DVUxMX0ZBQ0UNR0xfREVQVEhfVEVTVAlHTF9ESVRIRVIWR0xfUE9MWUdPTl9PRkZTRVRfRklMTBtHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0USR0xfU0FNUExFX0NPVkVSQUdFD0dMX1NDSVNTT1JfVEVTVA9HTF9TVEVOQ0lMX1RFU1QgR0xfUFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgVR0xfUkFTVEVSSVpFUl9ESVNDQVJEDkdMX1NBTVBMRV9NQVNLD0dMX0RFQlVHX09VVFBVVBtHTF9ERUJVR19PVVRQVVRfU1lOQ0hST05PVVMSR0xfQUxQSEFfVEVTVF9RQ09NF0dMX0ZSQU1FQlVGRkVSX1NSR0JfRVhUAgxnbElzRW5hYmxlZGkBiY0MiY8IiZEKDGdsSXNFbmFibGVkaQpjYXBhYmlsaXR5EAhHTF9CTEVORAxHTF9DVUxMX0ZBQ0UNR0xfREVQVEhfVEVTVAlHTF9ESVRIRVIWR0xfUE9MWUdPTl9PRkZTRVRfRklMTBtHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0USR0xfU0FNUExFX0NPVkVSQUdFD0dMX1NDSVNTT1JfVEVTVA9HTF9TVEVOQ0lMX1RFU1QgR0xfUFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgVR0xfUkFTVEVSSVpFUl9ESVNDQVJEDkdMX1NBTVBMRV9NQVNLD0dMX0RFQlVHX09VVFBVVBtHTF9ERUJVR19PVVRQVVRfU1lOQ0hST05PVVMSR0xfQUxQSEFfVEVTVF9RQ09NF0dMX0ZSQU1FQlVGRkVSX1NSR0JfRVhUAg9nbElzRW5hYmxlZGlFWFQBiZMMiZUIiZcKD2dsSXNFbmFibGVkaUVYVAZ0YXJnZXQQCEdMX0JMRU5EDEdMX0NVTExfRkFDRQ1HTF9ERVBUSF9URVNUCUdMX0RJVEhFUhZHTF9QT0xZR09OX09GRlNFVF9GSUxMG0dMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRRJHTF9TQU1QTEVfQ09WRVJBR0UPR0xfU0NJU1NPUl9URVNUD0dMX1NURU5DSUxfVEVTVCBHTF9QUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWBVHTF9SQVNURVJJWkVSX0RJU0NBUkQOR0xfU0FNUExFX01BU0sPR0xfREVCVUdfT1VUUFVUG0dMX0RFQlVHX09VVFBVVF9TWU5DSFJPTk9VUxJHTF9BTFBIQV9URVNUX1FDT00XR0xfRlJBTUVCVUZGRVJfU1JHQl9FWFQCDmdsSXNFbmFibGVkaU5WAYmZDImbCImdCg5nbElzRW5hYmxlZGlOVgZ0YXJnZXQQCEdMX0JMRU5EDEdMX0NVTExfRkFDRQ1HTF9ERVBUSF9URVNUCUdMX0RJVEhFUhZHTF9QT0xZR09OX09GRlNFVF9GSUxMG0dMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRRJHTF9TQU1QTEVfQ09WRVJBR0UPR0xfU0NJU1NPUl9URVNUD0dMX1NURU5DSUxfVEVTVCBHTF9QUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWBVHTF9SQVNURVJJWkVSX0RJU0NBUkQOR0xfU0FNUExFX01BU0sPR0xfREVCVUdfT1VUUFVUG0dMX0RFQlVHX09VVFBVVF9TWU5DSFJPTk9VUxJHTF9BTFBIQV9URVNUX1FDT00XR0xfRlJBTUVCVUZGRVJfU1JHQl9FWFQCD2dsSXNFbmFibGVkaU9FUwGJnwyJoQiJowoPZ2xJc0VuYWJsZWRpT0VTBnRhcmdldBAIR0xfQkxFTkQMR0xfQ1VMTF9GQUNFDUdMX0RFUFRIX1RFU1QJR0xfRElUSEVSFkdMX1BPTFlHT05fT0ZGU0VUX0ZJTEwbR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFEkdMX1NBTVBMRV9DT1ZFUkFHRQ9HTF9TQ0lTU09SX1RFU1QPR0xfU1RFTkNJTF9URVNUIEdMX1BSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYFUdMX1JBU1RFUklaRVJfRElTQ0FSRA5HTF9TQU1QTEVfTUFTSw9HTF9ERUJVR19PVVRQVVQbR0xfREVCVUdfT1VUUFVUX1NZTkNIUk9OT1VTEkdMX0FMUEhBX1RFU1RfUUNPTRdHTF9GUkFNRUJVRkZFUl9TUkdCX0VYVAIQZ2xMYWJlbE9iamVjdEVYVAGJpQyJpwiJqQoQZ2xMYWJlbE9iamVjdEVYVAR0eXBlCwpHTF9URVhUVVJFDkdMX0ZSQU1FQlVGRkVSD0dMX1JFTkRFUkJVRkZFUhRHTF9CVUZGRVJfT0JKRUNUX0VYVBRHTF9TSEFERVJfT0JKRUNUX0VYVBVHTF9QUk9HUkFNX09CSkVDVF9FWFQaR0xfVkVSVEVYX0FSUkFZX09CSkVDVF9FWFQTR0xfUVVFUllfT0JKRUNUX0VYVApHTF9TQU1QTEVSFUdMX1RSQU5TRk9STV9GRUVEQkFDSx5HTF9QUk9HUkFNX1BJUEVMSU5FX09CSkVDVF9FWFQCC2dsTWFwQnVmZmVyA4mrDImtCImvCgtnbE1hcEJ1ZmZlcgZ0YXJnZXQND0dMX0FSUkFZX0JVRkZFUhdHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUhNHTF9DT1BZX1JFQURfQlVGRkVSFEdMX0NPUFlfV1JJVEVfQlVGRkVSFEdMX1BJWEVMX1BBQ0tfQlVGRkVSFkdMX1BJWEVMX1VOUEFDS19CVUZGRVIcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUhFHTF9VTklGT1JNX0JVRkZFUhhHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVIbR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSF0dMX0RSQVdfSU5ESVJFQ1RfQlVGRkVSGEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUhFHTF9URVhUVVJFX0JVRkZFUomxDImzCIm1CgtnbE1hcEJ1ZmZlcgZhY2Nlc3MDDEdMX1JFQURfT05MWQ1HTF9XUklURV9PTkxZDUdMX1JFQURfV1JJVEWJtwSJuQaJuwiJvQoLZ2xNYXBCdWZmZXIGcmVzdWx0BAICAAIOZ2xNYXBCdWZmZXJPRVMDib8MicEIicMKDmdsTWFwQnVmZmVyT0VTBnRhcmdldA0PR0xfQVJSQVlfQlVGRkVSF0dMX0VMRU1FTlRfQVJSQVlfQlVGRkVSE0dMX0NPUFlfUkVBRF9CVUZGRVIUR0xfQ09QWV9XUklURV9CVUZGRVIUR0xfUElYRUxfUEFDS19CVUZGRVIWR0xfUElYRUxfVU5QQUNLX0JVRkZFUhxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSEUdMX1VOSUZPUk1fQlVGRkVSGEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUhtHTF9ESVNQQVRDSF9JTkRJUkVDVF9CVUZGRVIXR0xfRFJBV19JTkRJUkVDVF9CVUZGRVIYR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSEUdMX1RFWFRVUkVfQlVGRkVSicUMiccIickKDmdsTWFwQnVmZmVyT0VTBmFjY2VzcwMMR0xfUkVBRF9PTkxZDUdMX1dSSVRFX09OTFkNR0xfUkVBRF9XUklURYnLBInNBonPCInRCg5nbE1hcEJ1ZmZlck9FUwZyZXN1bHQEAgIAAhBnbE1hcEJ1ZmZlclJhbmdlA4nTDInVCInXChBnbE1hcEJ1ZmZlclJhbmdlBnRhcmdldA0PR0xfQVJSQVlfQlVGRkVSF0dMX0VMRU1FTlRfQVJSQVlfQlVGRkVSE0dMX0NPUFlfUkVBRF9CVUZGRVIUR0xfQ09QWV9XUklURV9CVUZGRVIUR0xfUElYRUxfUEFDS19CVUZGRVIWR0xfUElYRUxfVU5QQUNLX0JVRkZFUhxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSEUdMX1VOSUZPUk1fQlVGRkVSGEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUhtHTF9ESVNQQVRDSF9JTkRJUkVDVF9CVUZGRVIXR0xfRFJBV19JTkRJUkVDVF9CVUZGRVIYR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSEUdMX1RFWFRVUkVfQlVGRkVSidkMidsIid0KEGdsTWFwQnVmZmVyUmFuZ2UGYWNjZXNzAQ9HTF9NQVBfUkVBRF9CSVSJ3wSJ4QaJ4wiJ5QoQZ2xNYXBCdWZmZXJSYW5nZQZyZXN1bHQEAgIAAhNnbE1hcEJ1ZmZlclJhbmdlRVhUA4nnDInpCInrChNnbE1hcEJ1ZmZlclJhbmdlRVhUBnRhcmdldA0PR0xfQVJSQVlfQlVGRkVSF0dMX0VMRU1FTlRfQVJSQVlfQlVGRkVSE0dMX0NPUFlfUkVBRF9CVUZGRVIUR0xfQ09QWV9XUklURV9CVUZGRVIUR0xfUElYRUxfUEFDS19CVUZGRVIWR0xfUElYRUxfVU5QQUNLX0JVRkZFUhxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSEUdMX1VOSUZPUk1fQlVGRkVSGEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUhtHTF9ESVNQQVRDSF9JTkRJUkVDVF9CVUZGRVIXR0xfRFJBV19JTkRJUkVDVF9CVUZGRVIYR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSEUdMX1RFWFRVUkVfQlVGRkVSie0Mie8IifEKE2dsTWFwQnVmZmVyUmFuZ2VFWFQGYWNjZXNzAQ9HTF9NQVBfUkVBRF9CSVSJ8wSJ9QaJ9wiJ+QoTZ2xNYXBCdWZmZXJSYW5nZUVYVAZyZXN1bHQEAgIAAg9nbE1lbW9yeUJhcnJpZXIBifsMif0Iif8KD2dsTWVtb3J5QmFycmllcghiYXJyaWVycw4TR0xfQUxMX0JBUlJJRVJfQklUUx1HTF9BVE9NSUNfQ09VTlRFUl9CQVJSSUVSX0JJVBxHTF9CVUZGRVJfVVBEQVRFX0JBUlJJRVJfQklUFkdMX0NPTU1BTkRfQkFSUklFUl9CSVQcR0xfRUxFTUVOVF9BUlJBWV9CQVJSSUVSX0JJVBpHTF9GUkFNRUJVRkZFUl9CQVJSSUVSX0JJVBtHTF9QSVhFTF9CVUZGRVJfQkFSUklFUl9CSVQiR0xfU0hBREVSX0lNQUdFX0FDQ0VTU19CQVJSSUVSX0JJVB1HTF9TSEFERVJfU1RPUkFHRV9CQVJSSUVSX0JJVBxHTF9URVhUVVJFX0ZFVENIX0JBUlJJRVJfQklUHUdMX1RFWFRVUkVfVVBEQVRFX0JBUlJJRVJfQklUIUdMX1RSQU5TRk9STV9GRUVEQkFDS19CQVJSSUVSX0JJVBZHTF9VTklGT1JNX0JBUlJJRVJfQklUIkdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfQkFSUklFUl9CSVQCF2dsTWVtb3J5QmFycmllckJ5UmVnaW9uAYoBDIoDCIoFChdnbE1lbW9yeUJhcnJpZXJCeVJlZ2lvbghiYXJyaWVycw4TR0xfQUxMX0JBUlJJRVJfQklUUx1HTF9BVE9NSUNfQ09VTlRFUl9CQVJSSUVSX0JJVBxHTF9CVUZGRVJfVVBEQVRFX0JBUlJJRVJfQklUFkdMX0NPTU1BTkRfQkFSUklFUl9CSVQcR0xfRUxFTUVOVF9BUlJBWV9CQVJSSUVSX0JJVBpHTF9GUkFNRUJVRkZFUl9CQVJSSUVSX0JJVBtHTF9QSVhFTF9CVUZGRVJfQkFSUklFUl9CSVQiR0xfU0hBREVSX0lNQUdFX0FDQ0VTU19CQVJSSUVSX0JJVB1HTF9TSEFERVJfU1RPUkFHRV9CQVJSSUVSX0JJVBxHTF9URVhUVVJFX0ZFVENIX0JBUlJJRVJfQklUHUdMX1RFWFRVUkVfVVBEQVRFX0JBUlJJRVJfQklUIUdMX1RSQU5TRk9STV9GRUVEQkFDS19CQVJSSUVSX0JJVBZHTF9VTklGT1JNX0JBUlJJRVJfQklUIkdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfQkFSUklFUl9CSVQCDWdsT2JqZWN0TGFiZWwBigcMigkIigsKDWdsT2JqZWN0TGFiZWwKaWRlbnRpZmllcgsKR0xfVEVYVFVSRQ5HTF9GUkFNRUJVRkZFUg9HTF9SRU5ERVJCVUZGRVIJR0xfQlVGRkVSCUdMX1NIQURFUgpHTF9QUk9HUkFND0dMX1ZFUlRFWF9BUlJBWQhHTF9RVUVSWQpHTF9TQU1QTEVSFUdMX1RSQU5TRk9STV9GRUVEQkFDSxNHTF9QUk9HUkFNX1BJUEVMSU5FAhBnbE9iamVjdExhYmVsS0hSAYoNDIoPCIoRChBnbE9iamVjdExhYmVsS0hSCmlkZW50aWZpZXILCkdMX1RFWFRVUkUOR0xfRlJBTUVCVUZGRVIPR0xfUkVOREVSQlVGRkVSCUdMX0JVRkZFUglHTF9TSEFERVIKR0xfUFJPR1JBTQ9HTF9WRVJURVhfQVJSQVkIR0xfUVVFUlkKR0xfU0FNUExFUhVHTF9UUkFOU0ZPUk1fRkVFREJBQ0sTR0xfUFJPR1JBTV9QSVBFTElORQIQZ2xPYmplY3RQdHJMYWJlbAGKEwSKFQaKFwiKGQoQZ2xPYmplY3RQdHJMYWJlbAVsYWJlbAQBAAITZ2xPYmplY3RQdHJMYWJlbEtIUgGKGwSKHQaKHwiKIQoTZ2xPYmplY3RQdHJMYWJlbEtIUgVsYWJlbAQBAAIRZ2xQYXRjaFBhcmFtZXRlcmkBiiMMiiUIiicKEWdsUGF0Y2hQYXJhbWV0ZXJpBXBuYW1lARFHTF9QQVRDSF9WRVJUSUNFUwIUZ2xQYXRjaFBhcmFtZXRlcmlFWFQBiikMiisIii0KFGdsUGF0Y2hQYXJhbWV0ZXJpRVhUBXBuYW1lARFHTF9QQVRDSF9WRVJUSUNFUwIUZ2xQYXRjaFBhcmFtZXRlcmlPRVMBii8MijEIijMKFGdsUGF0Y2hQYXJhbWV0ZXJpT0VTBXBuYW1lARFHTF9QQVRDSF9WRVJUSUNFUwINZ2xQaXhlbFN0b3JlaQGKNQyKNwiKOQoNZ2xQaXhlbFN0b3JlaQlwYXJhbWV0ZXIMEUdMX1BBQ0tfQUxJR05NRU5UFEdMX1BBQ0tfSU1BR0VfSEVJR0hUEkdMX1BBQ0tfUk9XX0xFTkdUSBNHTF9QQUNLX1NLSVBfSU1BR0VTE0dMX1BBQ0tfU0tJUF9QSVhFTFMRR0xfUEFDS19TS0lQX1JPV1MTR0xfVU5QQUNLX0FMSUdOTUVOVBZHTF9VTlBBQ0tfSU1BR0VfSEVJR0hUFEdMX1VOUEFDS19ST1dfTEVOR1RIFUdMX1VOUEFDS19TS0lQX0lNQUdFUxVHTF9VTlBBQ0tfU0tJUF9QSVhFTFMTR0xfVU5QQUNLX1NLSVBfUk9XUwIPZ2xQcm9ncmFtQmluYXJ5Aoo7DIo9CIo/Cg9nbFByb2dyYW1CaW5hcnkMYmluYXJ5Rm9ybWF0ARJHTF9aNDAwX0JJTkFSWV9BTUSKQQSKQwaKRQiKRwoPZ2xQcm9ncmFtQmluYXJ5BmJpbmFyeQQBAAISZ2xQcm9ncmFtQmluYXJ5T0VTAopJDIpLCIpNChJnbFByb2dyYW1CaW5hcnlPRVMNYmluYXJ5X2Zvcm1hdAESR0xfWjQwMF9CSU5BUllfQU1Eik8EilEGilMIilUKEmdsUHJvZ3JhbUJpbmFyeU9FUwZiaW5hcnkEAQACE2dsUHJvZ3JhbVBhcmFtZXRlcmkBilcMilkIilsKE2dsUHJvZ3JhbVBhcmFtZXRlcmkFcG5hbWUCIkdMX1BST0dSQU1fQklOQVJZX1JFVFJJRVZBQkxFX0hJTlQUR0xfUFJPR1JBTV9TRVBBUkFCTEUCFmdsUHJvZ3JhbVBhcmFtZXRlcmlFWFQBil0Mil8IimEKFmdsUHJvZ3JhbVBhcmFtZXRlcmlFWFQFcG5hbWUCIkdMX1BST0dSQU1fQklOQVJZX1JFVFJJRVZBQkxFX0hJTlQUR0xfUFJPR1JBTV9TRVBBUkFCTEUCEmdsUHJvZ3JhbVVuaWZvcm0xZgACFWdsUHJvZ3JhbVVuaWZvcm0xZkVYVAACE2dsUHJvZ3JhbVVuaWZvcm0xZnYBimMEimUGimcIimkKE2dsUHJvZ3JhbVVuaWZvcm0xZnYGdmFsdWVzBAICAAIWZ2xQcm9ncmFtVW5pZm9ybTFmdkVYVAGKawSKbQaKbwiKcQoWZ2xQcm9ncmFtVW5pZm9ybTFmdkVYVAV2YWx1ZQQCAgACEmdsUHJvZ3JhbVVuaWZvcm0xaQACFWdsUHJvZ3JhbVVuaWZvcm0xaUVYVAACE2dsUHJvZ3JhbVVuaWZvcm0xaXYBinMEinUGincIinkKE2dsUHJvZ3JhbVVuaWZvcm0xaXYGdmFsdWVzBAICAAIWZ2xQcm9ncmFtVW5pZm9ybTFpdkVYVAGKewSKfQaKfwiKgQoWZ2xQcm9ncmFtVW5pZm9ybTFpdkVYVAV2YWx1ZQQCAgACE2dsUHJvZ3JhbVVuaWZvcm0xdWkAAhZnbFByb2dyYW1Vbmlmb3JtMXVpRVhUAAIUZ2xQcm9ncmFtVW5pZm9ybTF1aXYBioMEioUGiocIiokKFGdsUHJvZ3JhbVVuaWZvcm0xdWl2BnZhbHVlcwQCAgACF2dsUHJvZ3JhbVVuaWZvcm0xdWl2RVhUAYqLBIqNBoqPCIqRChdnbFByb2dyYW1Vbmlmb3JtMXVpdkVYVAV2YWx1ZQQCAgACEmdsUHJvZ3JhbVVuaWZvcm0yZgACFWdsUHJvZ3JhbVVuaWZvcm0yZkVYVAACE2dsUHJvZ3JhbVVuaWZvcm0yZnYBipMEipUGipcIipkKE2dsUHJvZ3JhbVVuaWZvcm0yZnYGdmFsdWVzBAICAAIWZ2xQcm9ncmFtVW5pZm9ybTJmdkVYVAGKmwSKnQaKnwiKoQoWZ2xQcm9ncmFtVW5pZm9ybTJmdkVYVAV2YWx1ZQQCAgACEmdsUHJvZ3JhbVVuaWZvcm0yaQACFWdsUHJvZ3JhbVVuaWZvcm0yaUVYVAACE2dsUHJvZ3JhbVVuaWZvcm0yaXYBiqMEiqUGiqcIiqkKE2dsUHJvZ3JhbVVuaWZvcm0yaXYGdmFsdWVzBAICAAIWZ2xQcm9ncmFtVW5pZm9ybTJpdkVYVAGKqwSKrQaKrwiKsQoWZ2xQcm9ncmFtVW5pZm9ybTJpdkVYVAV2YWx1ZQQCAgACE2dsUHJvZ3JhbVVuaWZvcm0ydWkAAhZnbFByb2dyYW1Vbmlmb3JtMnVpRVhUAAIUZ2xQcm9ncmFtVW5pZm9ybTJ1aXYBirMEirUGircIirkKFGdsUHJvZ3JhbVVuaWZvcm0ydWl2BnZhbHVlcwQCAgACF2dsUHJvZ3JhbVVuaWZvcm0ydWl2RVhUAYq7BIq9Boq/CIrBChdnbFByb2dyYW1Vbmlmb3JtMnVpdkVYVAV2YWx1ZQQCAgACEmdsUHJvZ3JhbVVuaWZvcm0zZgACFWdsUHJvZ3JhbVVuaWZvcm0zZkVYVAACE2dsUHJvZ3JhbVVuaWZvcm0zZnYBisMEisUGiscIiskKE2dsUHJvZ3JhbVVuaWZvcm0zZnYGdmFsdWVzBAICAAIWZ2xQcm9ncmFtVW5pZm9ybTNmdkVYVAGKywSKzQaKzwiK0QoWZ2xQcm9ncmFtVW5pZm9ybTNmdkVYVAV2YWx1ZQQCAgACEmdsUHJvZ3JhbVVuaWZvcm0zaQACFWdsUHJvZ3JhbVVuaWZvcm0zaUVYVAACE2dsUHJvZ3JhbVVuaWZvcm0zaXYBitMEitUGitcIitkKE2dsUHJvZ3JhbVVuaWZvcm0zaXYGdmFsdWVzBAICAAIWZ2xQcm9ncmFtVW5pZm9ybTNpdkVYVAGK2wSK3QaK3wiK4QoWZ2xQcm9ncmFtVW5pZm9ybTNpdkVYVAV2YWx1ZQQCAgACE2dsUHJvZ3JhbVVuaWZvcm0zdWkAAhZnbFByb2dyYW1Vbmlmb3JtM3VpRVhUAAIUZ2xQcm9ncmFtVW5pZm9ybTN1aXYBiuMEiuUGiucIiukKFGdsUHJvZ3JhbVVuaWZvcm0zdWl2BnZhbHVlcwQCAgACF2dsUHJvZ3JhbVVuaWZvcm0zdWl2RVhUAYrrBIrtBorvCIrxChdnbFByb2dyYW1Vbmlmb3JtM3VpdkVYVAV2YWx1ZQQCAgACEmdsUHJvZ3JhbVVuaWZvcm00ZgACFWdsUHJvZ3JhbVVuaWZvcm00ZkVYVAACE2dsUHJvZ3JhbVVuaWZvcm00ZnYBivMEivUGivcIivkKE2dsUHJvZ3JhbVVuaWZvcm00ZnYGdmFsdWVzBAICAAIWZ2xQcm9ncmFtVW5pZm9ybTRmdkVYVAGK+wSK/QaK/wiLAQoWZ2xQcm9ncmFtVW5pZm9ybTRmdkVYVAV2YWx1ZQQCAgACEmdsUHJvZ3JhbVVuaWZvcm00aQACFWdsUHJvZ3JhbVVuaWZvcm00aUVYVAACE2dsUHJvZ3JhbVVuaWZvcm00aXYBiwMEiwUGiwcIiwkKE2dsUHJvZ3JhbVVuaWZvcm00aXYGdmFsdWVzBAICAAIWZ2xQcm9ncmFtVW5pZm9ybTRpdkVYVAGLCwSLDQaLDwiLEQoWZ2xQcm9ncmFtVW5pZm9ybTRpdkVYVAV2YWx1ZQQCAgACE2dsUHJvZ3JhbVVuaWZvcm00dWkAAhZnbFByb2dyYW1Vbmlmb3JtNHVpRVhUAAIUZ2xQcm9ncmFtVW5pZm9ybTR1aXYBixMEixUGixcIixkKFGdsUHJvZ3JhbVVuaWZvcm00dWl2BnZhbHVlcwQCAgACF2dsUHJvZ3JhbVVuaWZvcm00dWl2RVhUAYsbBIsdBosfCIshChdnbFByb2dyYW1Vbmlmb3JtNHVpdkVYVAV2YWx1ZQQCAgACGWdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgyZnYBiyMEiyUGiycIiykKGWdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgyZnYGdmFsdWVzBAICAAIcZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDJmdkVYVAGLKwSLLQaLLwiLMQocZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDJmdkVYVAV2YWx1ZQQCAgACG2dsUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNmdgGLMwSLNQaLNwiLOQobZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4M2Z2BnZhbHVlcwQCAgACHmdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNmdkVYVAGLOwSLPQaLPwiLQQoeZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4M2Z2RVhUBXZhbHVlBAICAAIbZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4NGZ2AYtDBItFBotHCItJChtnbFByb2dyYW1Vbmlmb3JtTWF0cml4Mng0ZnYGdmFsdWVzBAICAAIeZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4NGZ2RVhUAYtLBItNBotPCItRCh5nbFByb2dyYW1Vbmlmb3JtTWF0cml4Mng0ZnZFWFQFdmFsdWUEAgIAAhlnbFByb2dyYW1Vbmlmb3JtTWF0cml4M2Z2AYtTBItVBotXCItZChlnbFByb2dyYW1Vbmlmb3JtTWF0cml4M2Z2BnZhbHVlcwQCAgACHGdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgzZnZFWFQBi1sEi10Gi18Ii2EKHGdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgzZnZFWFQFdmFsdWUEAgIAAhtnbFByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZnYBi2MEi2UGi2cIi2kKG2dsUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDJmdgZ2YWx1ZXMEAgIAAh5nbFByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZnZFWFQBi2sEi20Gi28Ii3EKHmdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDJmdkVYVAV2YWx1ZQQCAgACG2dsUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRmdgGLcwSLdQaLdwiLeQobZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDN4NGZ2BnZhbHVlcwQCAgACHmdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRmdkVYVAGLewSLfQaLfwiLgQoeZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDN4NGZ2RVhUBXZhbHVlBAICAAIZZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDRmdgGLgwSLhQaLhwiLiQoZZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDRmdgZ2YWx1ZXMEAgIAAhxnbFByb2dyYW1Vbmlmb3JtTWF0cml4NGZ2RVhUAYuLBIuNBouPCIuRChxnbFByb2dyYW1Vbmlmb3JtTWF0cml4NGZ2RVhUBXZhbHVlBAICAAIbZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDR4MmZ2AYuTBIuVBouXCIuZChtnbFByb2dyYW1Vbmlmb3JtTWF0cml4NHgyZnYGdmFsdWVzBAICAAIeZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDR4MmZ2RVhUAYubBIudBoufCIuhCh5nbFByb2dyYW1Vbmlmb3JtTWF0cml4NHgyZnZFWFQFdmFsdWUEAgIAAhtnbFByb2dyYW1Vbmlmb3JtTWF0cml4NHgzZnYBi6MEi6UGi6cIi6kKG2dsUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNmdgZ2YWx1ZXMEAgIAAh5nbFByb2dyYW1Vbmlmb3JtTWF0cml4NHgzZnZFWFQBi6sEi60Gi68Ii7EKHmdsUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNmdkVYVAV2YWx1ZQQCAgACEGdsUHVzaERlYnVnR3JvdXACi7MMi7UIi7cKEGdsUHVzaERlYnVnR3JvdXAGc291cmNlAhtHTF9ERUJVR19TT1VSQ0VfQVBQTElDQVRJT04bR0xfREVCVUdfU09VUkNFX1RISVJEX1BBUlRZi7kEi7sGi70Ii78KEGdsUHVzaERlYnVnR3JvdXAHbWVzc2FnZQQBAAITZ2xQdXNoRGVidWdHcm91cEtIUgKLwQyLwwiLxQoTZ2xQdXNoRGVidWdHcm91cEtIUgZzb3VyY2UCG0dMX0RFQlVHX1NPVVJDRV9BUFBMSUNBVElPThtHTF9ERUJVR19TT1VSQ0VfVEhJUkRfUEFSVFmLxwSLyQaLywiLzQoTZ2xQdXNoRGVidWdHcm91cEtIUgdtZXNzYWdlBAEAAhRnbFB1c2hHcm91cE1hcmtlckVYVAGLzwSL0QaL0wiL1QoUZ2xQdXNoR3JvdXBNYXJrZXJFWFQGbWFya2VyBAEAAgxnbFJlYWRCdWZmZXIBi9cMi9kIi9sKDGdsUmVhZEJ1ZmZlcgNzcmMSB0dMX0JBQ0sUR0xfQ09MT1JfQVRUQUNITUVOVDAUR0xfQ09MT1JfQVRUQUNITUVOVDEVR0xfQ09MT1JfQVRUQUNITUVOVDEwFUdMX0NPTE9SX0FUVEFDSE1FTlQxMRVHTF9DT0xPUl9BVFRBQ0hNRU5UMTIVR0xfQ09MT1JfQVRUQUNITUVOVDEzFUdMX0NPTE9SX0FUVEFDSE1FTlQxNBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTUUR0xfQ09MT1JfQVRUQUNITUVOVDIUR0xfQ09MT1JfQVRUQUNITUVOVDMUR0xfQ09MT1JfQVRUQUNITUVOVDQUR0xfQ09MT1JfQVRUQUNITUVOVDUUR0xfQ09MT1JfQVRUQUNITUVOVDYUR0xfQ09MT1JfQVRUQUNITUVOVDcUR0xfQ09MT1JfQVRUQUNITUVOVDgUR0xfQ09MT1JfQVRUQUNITUVOVDkHR0xfTk9ORQIMZ2xSZWFkUGl4ZWxzA4vdDIvfCIvhCgxnbFJlYWRQaXhlbHMGZm9ybWF0DwhHTF9BTFBIQQZHTF9SR0IHR0xfUkdCQQZHTF9SRUQOR0xfUkVEX0lOVEVHRVIFR0xfUkcNR0xfUkdfSU5URUdFUg5HTF9SR0JfSU5URUdFUhJHTF9MVU1JTkFOQ0VfQUxQSEEMR0xfTFVNSU5BTkNFD0dMX1JHQkFfSU5URUdFUhJHTF9ERVBUSF9DT01QT05FTlQQR0xfREVQVEhfU1RFTkNJTBBHTF9TVEVOQ0lMX0lOREVYC0dMX0JHUkFfRVhUi+MMi+UIi+cKDGdsUmVhZFBpeGVscwR0eXBlOBdHTF9VTlNJR05FRF9TSE9SVF81XzZfNRlHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80GUdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzEQR0xfVU5TSUdORURfQllURQhHTF9GTE9BVAZHTF9JTlQPR0xfVU5TSUdORURfSU5UHkdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVh9HTF9VTlNJR05FRF9JTlRfMTBGXzExRl8xMUZfUkVWG0dMX1VOU0lHTkVEX0lOVF81XzlfOV85X1JFVgdHTF9CWVRFEUdMX1VOU0lHTkVEX1NIT1JUCEdMX1NIT1JUDUdMX0hBTEZfRkxPQVQRR0xfSEFMRl9GTE9BVF9PRVMUR0xfVU5TSUdORURfSU5UXzI0XzghR0xfRkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWFUdMX0NPTVBSRVNTRURfUjExX0VBQxxHTF9DT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDF0dMX0NPTVBSRVNTRURfUkdCOF9FVEMyGEdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMitHTF9DT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyLEdMX0NPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyFkdMX0NPTVBSRVNTRURfUkcxMV9FQUMdR0xfQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUMcR0xfQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQyNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQxtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg4I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDUkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDYkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDgkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4HUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTAdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTAlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMiVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyEEdMX0VUQzFfUkdCOF9PRVOL6QSL6waL7QiL7woMZ2xSZWFkUGl4ZWxzBGRhdGEEAQICDWdsUmVhZG5QaXhlbHMDi/EMi/MIi/UKDWdsUmVhZG5QaXhlbHMGZm9ybWF0DwhHTF9BTFBIQQZHTF9SR0IHR0xfUkdCQQZHTF9SRUQOR0xfUkVEX0lOVEVHRVIFR0xfUkcNR0xfUkdfSU5URUdFUg5HTF9SR0JfSU5URUdFUhJHTF9MVU1JTkFOQ0VfQUxQSEEMR0xfTFVNSU5BTkNFD0dMX1JHQkFfSU5URUdFUhJHTF9ERVBUSF9DT01QT05FTlQQR0xfREVQVEhfU1RFTkNJTBBHTF9TVEVOQ0lMX0lOREVYC0dMX0JHUkFfRVhUi/cMi/kIi/sKDWdsUmVhZG5QaXhlbHMEdHlwZTgXR0xfVU5TSUdORURfU0hPUlRfNV82XzUZR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNBlHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xEEdMX1VOU0lHTkVEX0JZVEUIR0xfRkxPQVQGR0xfSU5UD0dMX1VOU0lHTkVEX0lOVB5HTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYfR0xfVU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFVhtHTF9VTlNJR05FRF9JTlRfNV85XzlfOV9SRVYHR0xfQllURRFHTF9VTlNJR05FRF9TSE9SVAhHTF9TSE9SVA1HTF9IQUxGX0ZMT0FUEUdMX0hBTEZfRkxPQVRfT0VTFEdMX1VOU0lHTkVEX0lOVF8yNF84IUdMX0ZMT0FUXzMyX1VOU0lHTkVEX0lOVF8yNF84X1JFVhVHTF9DT01QUkVTU0VEX1IxMV9FQUMcR0xfQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQxdHTF9DT01QUkVTU0VEX1JHQjhfRVRDMhhHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzIrR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMixHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMhZHTF9DT01QUkVTU0VEX1JHMTFfRUFDHUdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDHEdMX0NPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4OCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OBxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NRxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NhxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTAdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTIlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMhBHTF9FVEMxX1JHQjhfT0VTi/0Ei/8GjAEIjAMKDWdsUmVhZG5QaXhlbHMEZGF0YQQBAgIQZ2xSZWFkblBpeGVsc0VYVAOMBQyMBwiMCQoQZ2xSZWFkblBpeGVsc0VYVAZmb3JtYXQPCEdMX0FMUEhBBkdMX1JHQgdHTF9SR0JBBkdMX1JFRA5HTF9SRURfSU5URUdFUgVHTF9SRw1HTF9SR19JTlRFR0VSDkdMX1JHQl9JTlRFR0VSEkdMX0xVTUlOQU5DRV9BTFBIQQxHTF9MVU1JTkFOQ0UPR0xfUkdCQV9JTlRFR0VSEkdMX0RFUFRIX0NPTVBPTkVOVBBHTF9ERVBUSF9TVEVOQ0lMEEdMX1NURU5DSUxfSU5ERVgLR0xfQkdSQV9FWFSMCwyMDQiMDwoQZ2xSZWFkblBpeGVsc0VYVAR0eXBlOBdHTF9VTlNJR05FRF9TSE9SVF81XzZfNRlHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80GUdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzEQR0xfVU5TSUdORURfQllURQhHTF9GTE9BVAZHTF9JTlQPR0xfVU5TSUdORURfSU5UHkdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVh9HTF9VTlNJR05FRF9JTlRfMTBGXzExRl8xMUZfUkVWG0dMX1VOU0lHTkVEX0lOVF81XzlfOV85X1JFVgdHTF9CWVRFEUdMX1VOU0lHTkVEX1NIT1JUCEdMX1NIT1JUDUdMX0hBTEZfRkxPQVQRR0xfSEFMRl9GTE9BVF9PRVMUR0xfVU5TSUdORURfSU5UXzI0XzghR0xfRkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWFUdMX0NPTVBSRVNTRURfUjExX0VBQxxHTF9DT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDF0dMX0NPTVBSRVNTRURfUkdCOF9FVEMyGEdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMitHTF9DT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyLEdMX0NPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyFkdMX0NPTVBSRVNTRURfUkcxMV9FQUMdR0xfQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUMcR0xfQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQyNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQxtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg4I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDUkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDYkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDgkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4HUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTAdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTAlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMiVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyEEdMX0VUQzFfUkdCOF9PRVOMEQSMEwaMFQiMFwoQZ2xSZWFkblBpeGVsc0VYVARkYXRhBAECAhBnbFJlYWRuUGl4ZWxzS0hSA4wZDIwbCIwdChBnbFJlYWRuUGl4ZWxzS0hSBmZvcm1hdA8IR0xfQUxQSEEGR0xfUkdCB0dMX1JHQkEGR0xfUkVEDkdMX1JFRF9JTlRFR0VSBUdMX1JHDUdMX1JHX0lOVEVHRVIOR0xfUkdCX0lOVEVHRVISR0xfTFVNSU5BTkNFX0FMUEhBDEdMX0xVTUlOQU5DRQ9HTF9SR0JBX0lOVEVHRVISR0xfREVQVEhfQ09NUE9ORU5UEEdMX0RFUFRIX1NURU5DSUwQR0xfU1RFTkNJTF9JTkRFWAtHTF9CR1JBX0VYVIwfDIwhCIwjChBnbFJlYWRuUGl4ZWxzS0hSBHR5cGU4F0dMX1VOU0lHTkVEX1NIT1JUXzVfNl81GUdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQZR0xfVU5TSUdORURfU0hPUlRfNV81XzVfMRBHTF9VTlNJR05FRF9CWVRFCEdMX0ZMT0FUBkdMX0lOVA9HTF9VTlNJR05FRF9JTlQeR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWH0dMX1VOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVYbR0xfVU5TSUdORURfSU5UXzVfOV85XzlfUkVWB0dMX0JZVEURR0xfVU5TSUdORURfU0hPUlQIR0xfU0hPUlQNR0xfSEFMRl9GTE9BVBFHTF9IQUxGX0ZMT0FUX09FUxRHTF9VTlNJR05FRF9JTlRfMjRfOCFHTF9GTE9BVF8zMl9VTlNJR05FRF9JTlRfMjRfOF9SRVYVR0xfQ09NUFJFU1NFRF9SMTFfRUFDHEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMXR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIYR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyK0dMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIsR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIWR0xfQ09NUFJFU1NFRF9SRzExX0VBQx1HTF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQxxHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDG0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzR4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDgjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDgcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NSRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDUcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NiRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDYcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OCRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDgdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTAlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTIQR0xfRVRDMV9SR0I4X09FU4wlBIwnBowpCIwrChBnbFJlYWRuUGl4ZWxzS0hSBGRhdGEEAQICFWdsUmVuZGVyYnVmZmVyU3RvcmFnZQKMLQyMLwiMMQoVZ2xSZW5kZXJidWZmZXJTdG9yYWdlBnRhcmdldAEPR0xfUkVOREVSQlVGRkVSjDMMjDUIjDcKFWdsUmVuZGVyYnVmZmVyU3RvcmFnZQ5pbnRlcm5hbGZvcm1hdCUUR0xfREVQVEhfQ09NUE9ORU5UMTYJR0xfUkdCNTY1CkdMX1JHQjVfQTEIR0xfUkdCQTQRR0xfU1RFTkNJTF9JTkRFWDgTR0xfREVQVEgyNF9TVEVOQ0lMOBRHTF9ERVBUSDMyRl9TVEVOQ0lMOBRHTF9ERVBUSF9DT01QT05FTlQyNBVHTF9ERVBUSF9DT01QT05FTlQzMkYHR0xfUjE2SQhHTF9SMTZVSQdHTF9SMzJJCEdMX1IzMlVJBUdMX1I4BkdMX1I4SQdHTF9SOFVJCEdMX1JHMTZJCUdMX1JHMTZVSQhHTF9SRzMySQlHTF9SRzMyVUkGR0xfUkc4B0dMX1JHOEkIR0xfUkc4VUkLR0xfUkdCMTBfQTINR0xfUkdCMTBfQTJVSQdHTF9SR0I4CkdMX1JHQkExNkkLR0xfUkdCQTE2VUkKR0xfUkdCQTMySQtHTF9SR0JBMzJVSQhHTF9SR0JBOAlHTF9SR0JBOEkKR0xfUkdCQThVSQ9HTF9TUkdCOF9BTFBIQTgGR0xfUjE2B0dMX1JHMTYJR0xfUkdCQTE2AiBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZQKMOQyMOwiMPQogZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUGdGFyZ2V0AQ9HTF9SRU5ERVJCVUZGRVKMPwyMQQiMQwogZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUOaW50ZXJuYWxmb3JtYXQlE0dMX0RFUFRIMjRfU1RFTkNJTDgUR0xfREVQVEgzMkZfU1RFTkNJTDgUR0xfREVQVEhfQ09NUE9ORU5UMTYUR0xfREVQVEhfQ09NUE9ORU5UMjQVR0xfREVQVEhfQ09NUE9ORU5UMzJGB0dMX1IxNkkIR0xfUjE2VUkHR0xfUjMySQhHTF9SMzJVSQVHTF9SOAZHTF9SOEkHR0xfUjhVSQhHTF9SRzE2SQlHTF9SRzE2VUkIR0xfUkczMkkJR0xfUkczMlVJBkdMX1JHOAdHTF9SRzhJCEdMX1JHOFVJC0dMX1JHQjEwX0EyDUdMX1JHQjEwX0EyVUkJR0xfUkdCNTY1CkdMX1JHQjVfQTEHR0xfUkdCOApHTF9SR0JBMTZJC0dMX1JHQkExNlVJCkdMX1JHQkEzMkkLR0xfUkdCQTMyVUkIR0xfUkdCQTQIR0xfUkdCQTgJR0xfUkdCQThJCkdMX1JHQkE4VUkPR0xfU1JHQjhfQUxQSEE4EUdMX1NURU5DSUxfSU5ERVg4BkdMX1IxNgdHTF9SRzE2CUdMX1JHQkExNgIjZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVFWFQCjEUMjEcIjEkKI2dsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlRVhUBnRhcmdldAEPR0xfUkVOREVSQlVGRkVSjEsMjE0IjE8KI2dsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlRVhUDmludGVybmFsZm9ybWF0JRNHTF9ERVBUSDI0X1NURU5DSUw4FEdMX0RFUFRIMzJGX1NURU5DSUw4FEdMX0RFUFRIX0NPTVBPTkVOVDE2FEdMX0RFUFRIX0NPTVBPTkVOVDI0FUdMX0RFUFRIX0NPTVBPTkVOVDMyRgdHTF9SMTZJCEdMX1IxNlVJB0dMX1IzMkkIR0xfUjMyVUkFR0xfUjgGR0xfUjhJB0dMX1I4VUkIR0xfUkcxNkkJR0xfUkcxNlVJCEdMX1JHMzJJCUdMX1JHMzJVSQZHTF9SRzgHR0xfUkc4SQhHTF9SRzhVSQtHTF9SR0IxMF9BMg1HTF9SR0IxMF9BMlVJCUdMX1JHQjU2NQpHTF9SR0I1X0ExB0dMX1JHQjgKR0xfUkdCQTE2SQtHTF9SR0JBMTZVSQpHTF9SR0JBMzJJC0dMX1JHQkEzMlVJCEdMX1JHQkE0CEdMX1JHQkE4CUdMX1JHQkE4SQpHTF9SR0JBOFVJD0dMX1NSR0I4X0FMUEhBOBFHTF9TVEVOQ0lMX0lOREVYOAZHTF9SMTYHR0xfUkcxNglHTF9SR0JBMTYCImdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlTlYCjFEMjFMIjFUKImdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlTlYGdGFyZ2V0AQ9HTF9SRU5ERVJCVUZGRVKMVwyMWQiMWwoiZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVOVg5pbnRlcm5hbGZvcm1hdCUTR0xfREVQVEgyNF9TVEVOQ0lMOBRHTF9ERVBUSDMyRl9TVEVOQ0lMOBRHTF9ERVBUSF9DT01QT05FTlQxNhRHTF9ERVBUSF9DT01QT05FTlQyNBVHTF9ERVBUSF9DT01QT05FTlQzMkYHR0xfUjE2SQhHTF9SMTZVSQdHTF9SMzJJCEdMX1IzMlVJBUdMX1I4BkdMX1I4SQdHTF9SOFVJCEdMX1JHMTZJCUdMX1JHMTZVSQhHTF9SRzMySQlHTF9SRzMyVUkGR0xfUkc4B0dMX1JHOEkIR0xfUkc4VUkLR0xfUkdCMTBfQTINR0xfUkdCMTBfQTJVSQlHTF9SR0I1NjUKR0xfUkdCNV9BMQdHTF9SR0I4CkdMX1JHQkExNkkLR0xfUkdCQTE2VUkKR0xfUkdCQTMySQtHTF9SR0JBMzJVSQhHTF9SR0JBNAhHTF9SR0JBOAlHTF9SR0JBOEkKR0xfUkdCQThVSQ9HTF9TUkdCOF9BTFBIQTgRR0xfU1RFTkNJTF9JTkRFWDgGR0xfUjE2B0dMX1JHMTYJR0xfUkdCQTE2AhVnbFNhbXBsZXJQYXJhbWV0ZXJJaXYBjF0MjF8IjGEKFWdsU2FtcGxlclBhcmFtZXRlcklpdgVwbmFtZQoXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUVR0xfVEVYVFVSRV9NSU5fRklMVEVSFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhJHTF9URVhUVVJFX01JTl9MT0QSR0xfVEVYVFVSRV9NQVhfTE9EEUdMX1RFWFRVUkVfV1JBUF9SEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SAhhnbFNhbXBsZXJQYXJhbWV0ZXJJaXZFWFQBjGMMjGUIjGcKGGdsU2FtcGxlclBhcmFtZXRlcklpdkVYVAVwbmFtZQoXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUVR0xfVEVYVFVSRV9NSU5fRklMVEVSFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhJHTF9URVhUVVJFX01JTl9MT0QSR0xfVEVYVFVSRV9NQVhfTE9EEUdMX1RFWFRVUkVfV1JBUF9SEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SAhhnbFNhbXBsZXJQYXJhbWV0ZXJJaXZPRVMBjGkMjGsIjG0KGGdsU2FtcGxlclBhcmFtZXRlcklpdk9FUwVwbmFtZQoXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUVR0xfVEVYVFVSRV9NSU5fRklMVEVSFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhJHTF9URVhUVVJFX01JTl9MT0QSR0xfVEVYVFVSRV9NQVhfTE9EEUdMX1RFWFRVUkVfV1JBUF9SEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SAhZnbFNhbXBsZXJQYXJhbWV0ZXJJdWl2AYxvDIxxCIxzChZnbFNhbXBsZXJQYXJhbWV0ZXJJdWl2BXBuYW1lChdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRVHTF9URVhUVVJFX01JTl9GSUxURVIVR0xfVEVYVFVSRV9NQUdfRklMVEVSEkdMX1RFWFRVUkVfTUlOX0xPRBJHTF9URVhUVVJFX01BWF9MT0QRR0xfVEVYVFVSRV9XUkFQX1IRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1ICGWdsU2FtcGxlclBhcmFtZXRlckl1aXZFWFQBjHUMjHcIjHkKGWdsU2FtcGxlclBhcmFtZXRlckl1aXZFWFQFcG5hbWUKF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhVHTF9URVhUVVJFX01BR19GSUxURVISR0xfVEVYVFVSRV9NSU5fTE9EEkdMX1RFWFRVUkVfTUFYX0xPRBFHTF9URVhUVVJFX1dSQVBfUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUgIZZ2xTYW1wbGVyUGFyYW1ldGVySXVpdk9FUwGMewyMfQiMfwoZZ2xTYW1wbGVyUGFyYW1ldGVySXVpdk9FUwVwbmFtZQoXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUVR0xfVEVYVFVSRV9NSU5fRklMVEVSFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhJHTF9URVhUVVJFX01JTl9MT0QSR0xfVEVYVFVSRV9NQVhfTE9EEUdMX1RFWFRVUkVfV1JBUF9SEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SAhNnbFNhbXBsZXJQYXJhbWV0ZXJmAYyBDIyDCIyFChNnbFNhbXBsZXJQYXJhbWV0ZXJmBXBuYW1lChdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRVHTF9URVhUVVJFX01JTl9GSUxURVIVR0xfVEVYVFVSRV9NQUdfRklMVEVSEkdMX1RFWFRVUkVfTUlOX0xPRBJHTF9URVhUVVJFX01BWF9MT0QRR0xfVEVYVFVSRV9XUkFQX1IRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1ICFGdsU2FtcGxlclBhcmFtZXRlcmZ2AYyHDIyJCIyLChRnbFNhbXBsZXJQYXJhbWV0ZXJmdgVwbmFtZQoXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUVR0xfVEVYVFVSRV9NSU5fRklMVEVSFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhJHTF9URVhUVVJFX01JTl9MT0QSR0xfVEVYVFVSRV9NQVhfTE9EEUdMX1RFWFRVUkVfV1JBUF9SEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SAhNnbFNhbXBsZXJQYXJhbWV0ZXJpAYyNDIyPCIyRChNnbFNhbXBsZXJQYXJhbWV0ZXJpBXBuYW1lChdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRVHTF9URVhUVVJFX01JTl9GSUxURVIVR0xfVEVYVFVSRV9NQUdfRklMVEVSEkdMX1RFWFRVUkVfTUlOX0xPRBJHTF9URVhUVVJFX01BWF9MT0QRR0xfVEVYVFVSRV9XUkFQX1IRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1ICFGdsU2FtcGxlclBhcmFtZXRlcml2AYyTDIyVCIyXChRnbFNhbXBsZXJQYXJhbWV0ZXJpdgVwbmFtZQoXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUVR0xfVEVYVFVSRV9NSU5fRklMVEVSFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhJHTF9URVhUVVJFX01JTl9MT0QSR0xfVEVYVFVSRV9NQVhfTE9EEUdMX1RFWFRVUkVfV1JBUF9SEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SAg5nbFNoYWRlckJpbmFyeQKMmQSMmwaMnQiMnwoOZ2xTaGFkZXJCaW5hcnkHc2hhZGVycwQBAIyhBIyjBoylCIynCg5nbFNoYWRlckJpbmFyeQZiaW5hcnkEAQACDWdsU3RlbmNpbEZ1bmMBjKkMjKsIjK0KDWdsU3RlbmNpbEZ1bmMEZnVuYwgJR0xfQUxXQVlTCEdMX0VRVUFMCUdMX0dFUVVBTApHTF9HUkVBVEVSCUdMX0xFUVVBTAdHTF9MRVNTCEdMX05FVkVSC0dMX05PVEVRVUFMAhVnbFN0ZW5jaWxGdW5jU2VwYXJhdGUCjK8MjLEIjLMKFWdsU3RlbmNpbEZ1bmNTZXBhcmF0ZQRmYWNlAwdHTF9CQUNLCEdMX0ZST05UEUdMX0ZST05UX0FORF9CQUNLjLUMjLcIjLkKFWdsU3RlbmNpbEZ1bmNTZXBhcmF0ZQhmdW5jdGlvbggJR0xfQUxXQVlTCEdMX0VRVUFMCUdMX0dFUVVBTApHTF9HUkVBVEVSCUdMX0xFUVVBTAdHTF9MRVNTCEdMX05FVkVSC0dMX05PVEVRVUFMAhVnbFN0ZW5jaWxNYXNrU2VwYXJhdGUBjLsMjL0IjL8KFWdsU3RlbmNpbE1hc2tTZXBhcmF0ZQRmYWNlAwdHTF9CQUNLCEdMX0ZST05UEUdMX0ZST05UX0FORF9CQUNLAgtnbFN0ZW5jaWxPcAOMwQyMwwiMxQoLZ2xTdGVuY2lsT3AEZmFpbAgHR0xfREVDUgxHTF9ERUNSX1dSQVAHR0xfSU5DUgxHTF9JTkNSX1dSQVAJR0xfSU5WRVJUB0dMX0tFRVAKR0xfUkVQTEFDRQdHTF9aRVJPjMcMjMkIjMsKC2dsU3RlbmNpbE9wBXpmYWlsCAdHTF9ERUNSDEdMX0RFQ1JfV1JBUAdHTF9JTkNSDEdMX0lOQ1JfV1JBUAlHTF9JTlZFUlQHR0xfS0VFUApHTF9SRVBMQUNFB0dMX1pFUk+MzQyMzwiM0QoLZ2xTdGVuY2lsT3AFenBhc3MIB0dMX0RFQ1IMR0xfREVDUl9XUkFQB0dMX0lOQ1IMR0xfSU5DUl9XUkFQCUdMX0lOVkVSVAdHTF9LRUVQCkdMX1JFUExBQ0UHR0xfWkVSTwITZ2xTdGVuY2lsT3BTZXBhcmF0ZQSM0wyM1QiM1woTZ2xTdGVuY2lsT3BTZXBhcmF0ZQRmYWNlAwdHTF9CQUNLCEdMX0ZST05UEUdMX0ZST05UX0FORF9CQUNLjNkMjNsIjN0KE2dsU3RlbmNpbE9wU2VwYXJhdGUMc3RlbmNpbF9mYWlsCAdHTF9ERUNSDEdMX0RFQ1JfV1JBUAdHTF9JTkNSDEdMX0lOQ1JfV1JBUAlHTF9JTlZFUlQHR0xfS0VFUApHTF9SRVBMQUNFB0dMX1pFUk+M3wyM4QiM4woTZ2xTdGVuY2lsT3BTZXBhcmF0ZRdzdGVuY2lsX3Bhc3NfZGVwdGhfZmFpbAgHR0xfREVDUgxHTF9ERUNSX1dSQVAHR0xfSU5DUgxHTF9JTkNSX1dSQVAJR0xfSU5WRVJUB0dMX0tFRVAKR0xfUkVQTEFDRQdHTF9aRVJPjOUMjOcIjOkKE2dsU3RlbmNpbE9wU2VwYXJhdGUXc3RlbmNpbF9wYXNzX2RlcHRoX3Bhc3MIB0dMX0RFQ1IMR0xfREVDUl9XUkFQB0dMX0lOQ1IMR0xfSU5DUl9XUkFQCUdMX0lOVkVSVAdHTF9LRUVQCkdMX1JFUExBQ0UHR0xfWkVSTwILZ2xUZXhCdWZmZXICjOsMjO0IjO8KC2dsVGV4QnVmZmVyBnRhcmdldAERR0xfVEVYVFVSRV9CVUZGRVKM8QyM8wiM9QoLZ2xUZXhCdWZmZXIOaW50ZXJuYWxmb3JtYXQhBkdMX1IxNgdHTF9SMTZGB0dMX1IxNkkIR0xfUjE2VUkHR0xfUjMyRgdHTF9SMzJJCEdMX1IzMlVJBUdMX1I4BkdMX1I4SQdHTF9SOFVJB0dMX1JHMTYIR0xfUkcxNkYIR0xfUkcxNkkJR0xfUkcxNlVJCEdMX1JHMzJGCEdMX1JHMzJJCUdMX1JHMzJVSQZHTF9SRzgHR0xfUkc4SQhHTF9SRzhVSQlHTF9SR0IzMkYJR0xfUkdCMzJJCkdMX1JHQjMyVUkJR0xfUkdCQTE2CkdMX1JHQkExNkYKR0xfUkdCQTE2SQtHTF9SR0JBMTZVSQpHTF9SR0JBMzJGCkdMX1JHQkEzMkkLR0xfUkdCQTMyVUkIR0xfUkdCQTgJR0xfUkdCQThJCkdMX1JHQkE4VUkCDmdsVGV4QnVmZmVyRVhUAoz3DIz5CIz7Cg5nbFRleEJ1ZmZlckVYVAZ0YXJnZXQBEUdMX1RFWFRVUkVfQlVGRkVSjP0MjP8IjQEKDmdsVGV4QnVmZmVyRVhUDmludGVybmFsZm9ybWF0IQZHTF9SMTYHR0xfUjE2RgdHTF9SMTZJCEdMX1IxNlVJB0dMX1IzMkYHR0xfUjMySQhHTF9SMzJVSQVHTF9SOAZHTF9SOEkHR0xfUjhVSQdHTF9SRzE2CEdMX1JHMTZGCEdMX1JHMTZJCUdMX1JHMTZVSQhHTF9SRzMyRghHTF9SRzMySQlHTF9SRzMyVUkGR0xfUkc4B0dMX1JHOEkIR0xfUkc4VUkJR0xfUkdCMzJGCUdMX1JHQjMySQpHTF9SR0IzMlVJCUdMX1JHQkExNgpHTF9SR0JBMTZGCkdMX1JHQkExNkkLR0xfUkdCQTE2VUkKR0xfUkdCQTMyRgpHTF9SR0JBMzJJC0dMX1JHQkEzMlVJCEdMX1JHQkE4CUdMX1JHQkE4SQpHTF9SR0JBOFVJAg5nbFRleEJ1ZmZlck9FUwKNAwyNBQiNBwoOZ2xUZXhCdWZmZXJPRVMGdGFyZ2V0ARFHTF9URVhUVVJFX0JVRkZFUo0JDI0LCI0NCg5nbFRleEJ1ZmZlck9FUw5pbnRlcm5hbGZvcm1hdCEGR0xfUjE2B0dMX1IxNkYHR0xfUjE2SQhHTF9SMTZVSQdHTF9SMzJGB0dMX1IzMkkIR0xfUjMyVUkFR0xfUjgGR0xfUjhJB0dMX1I4VUkHR0xfUkcxNghHTF9SRzE2RghHTF9SRzE2SQlHTF9SRzE2VUkIR0xfUkczMkYIR0xfUkczMkkJR0xfUkczMlVJBkdMX1JHOAdHTF9SRzhJCEdMX1JHOFVJCUdMX1JHQjMyRglHTF9SR0IzMkkKR0xfUkdCMzJVSQlHTF9SR0JBMTYKR0xfUkdCQTE2RgpHTF9SR0JBMTZJC0dMX1JHQkExNlVJCkdMX1JHQkEzMkYKR0xfUkdCQTMySQtHTF9SR0JBMzJVSQhHTF9SR0JBOAlHTF9SR0JBOEkKR0xfUkdCQThVSQIQZ2xUZXhCdWZmZXJSYW5nZQKNDwyNEQiNEwoQZ2xUZXhCdWZmZXJSYW5nZQZ0YXJnZXQBEUdMX1RFWFRVUkVfQlVGRkVSjRUMjRcIjRkKEGdsVGV4QnVmZmVyUmFuZ2UOaW50ZXJuYWxmb3JtYXQhBkdMX1IxNgdHTF9SMTZGB0dMX1IxNkkIR0xfUjE2VUkHR0xfUjMyRgdHTF9SMzJJCEdMX1IzMlVJBUdMX1I4BkdMX1I4SQdHTF9SOFVJB0dMX1JHMTYIR0xfUkcxNkYIR0xfUkcxNkkJR0xfUkcxNlVJCEdMX1JHMzJGCEdMX1JHMzJJCUdMX1JHMzJVSQZHTF9SRzgHR0xfUkc4SQhHTF9SRzhVSQlHTF9SR0IzMkYJR0xfUkdCMzJJCkdMX1JHQjMyVUkJR0xfUkdCQTE2CkdMX1JHQkExNkYKR0xfUkdCQTE2SQtHTF9SR0JBMTZVSQpHTF9SR0JBMzJGCkdMX1JHQkEzMkkLR0xfUkdCQTMyVUkIR0xfUkdCQTgJR0xfUkdCQThJCkdMX1JHQkE4VUkCE2dsVGV4QnVmZmVyUmFuZ2VFWFQCjRsMjR0IjR8KE2dsVGV4QnVmZmVyUmFuZ2VFWFQGdGFyZ2V0ARFHTF9URVhUVVJFX0JVRkZFUo0hDI0jCI0lChNnbFRleEJ1ZmZlclJhbmdlRVhUDmludGVybmFsZm9ybWF0IQZHTF9SMTYHR0xfUjE2RgdHTF9SMTZJCEdMX1IxNlVJB0dMX1IzMkYHR0xfUjMySQhHTF9SMzJVSQVHTF9SOAZHTF9SOEkHR0xfUjhVSQdHTF9SRzE2CEdMX1JHMTZGCEdMX1JHMTZJCUdMX1JHMTZVSQhHTF9SRzMyRghHTF9SRzMySQlHTF9SRzMyVUkGR0xfUkc4B0dMX1JHOEkIR0xfUkc4VUkJR0xfUkdCMzJGCUdMX1JHQjMySQpHTF9SR0IzMlVJCUdMX1JHQkExNgpHTF9SR0JBMTZGCkdMX1JHQkExNkkLR0xfUkdCQTE2VUkKR0xfUkdCQTMyRgpHTF9SR0JBMzJJC0dMX1JHQkEzMlVJCEdMX1JHQkE4CUdMX1JHQkE4SQpHTF9SR0JBOFVJAhNnbFRleEJ1ZmZlclJhbmdlT0VTAo0nDI0pCI0rChNnbFRleEJ1ZmZlclJhbmdlT0VTBnRhcmdldAERR0xfVEVYVFVSRV9CVUZGRVKNLQyNLwiNMQoTZ2xUZXhCdWZmZXJSYW5nZU9FUw5pbnRlcm5hbGZvcm1hdCEGR0xfUjE2B0dMX1IxNkYHR0xfUjE2SQhHTF9SMTZVSQdHTF9SMzJGB0dMX1IzMkkIR0xfUjMyVUkFR0xfUjgGR0xfUjhJB0dMX1I4VUkHR0xfUkcxNghHTF9SRzE2RghHTF9SRzE2SQlHTF9SRzE2VUkIR0xfUkczMkYIR0xfUkczMkkJR0xfUkczMlVJBkdMX1JHOAdHTF9SRzhJCEdMX1JHOFVJCUdMX1JHQjMyRglHTF9SR0IzMkkKR0xfUkdCMzJVSQlHTF9SR0JBMTYKR0xfUkdCQTE2RgpHTF9SR0JBMTZJC0dMX1JHQkExNlVJCkdMX1JHQkEzMkYKR0xfUkdCQTMySQtHTF9SR0JBMzJVSQhHTF9SR0JBOAlHTF9SR0JBOEkKR0xfUkdCQThVSQIMZ2xUZXhJbWFnZTJEBY0zDI01CI03CgxnbFRleEltYWdlMkQGdGFyZ2V0Bw1HTF9URVhUVVJFXzJEHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWB5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1keR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWB5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1keR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ajTkMjTsIjT0KDGdsVGV4SW1hZ2UyRA5pbnRlcm5hbGZvcm1hdEEGR0xfUkdCB0dMX1JHQkESR0xfTFVNSU5BTkNFX0FMUEhBDEdMX0xVTUlOQU5DRQhHTF9BTFBIQQVHTF9SOAtHTF9SOF9TTk9STQdHTF9SMTZGB0dMX1IzMkYHR0xfUjhVSQZHTF9SOEkIR0xfUjE2VUkHR0xfUjE2SQhHTF9SMzJVSQdHTF9SMzJJBkdMX1JHOAxHTF9SRzhfU05PUk0IR0xfUkcxNkYIR0xfUkczMkYIR0xfUkc4VUkHR0xfUkc4SQlHTF9SRzE2VUkIR0xfUkcxNkkJR0xfUkczMlVJCEdMX1JHMzJJB0dMX1JHQjgIR0xfU1JHQjgJR0xfUkdCNTY1DUdMX1JHQjhfU05PUk0RR0xfUjExRl9HMTFGX0IxMEYKR0xfUkdCOV9FNQlHTF9SR0IxNkYJR0xfUkdCMzJGCUdMX1JHQjhVSQhHTF9SR0I4SQpHTF9SR0IxNlVJCUdMX1JHQjE2SQpHTF9SR0IzMlVJCUdMX1JHQjMySQhHTF9SR0JBOA9HTF9TUkdCOF9BTFBIQTgOR0xfUkdCQThfU05PUk0KR0xfUkdCNV9BMQhHTF9SR0JBNAtHTF9SR0IxMF9BMgpHTF9SR0JBMTZGCkdMX1JHQkEzMkYKR0xfUkdCQThVSQlHTF9SR0JBOEkNR0xfUkdCMTBfQTJVSQtHTF9SR0JBMTZVSQpHTF9SR0JBMTZJCkdMX1JHQkEzMkkLR0xfUkdCQTMyVUkUR0xfREVQVEhfQ09NUE9ORU5UMTYUR0xfREVQVEhfQ09NUE9ORU5UMjQVR0xfREVQVEhfQ09NUE9ORU5UMzJGE0dMX0RFUFRIMjRfU1RFTkNJTDgUR0xfREVQVEgzMkZfU1RFTkNJTDgRR0xfU1RFTkNJTF9JTkRFWDgSR0xfREVQVEhfQ09NUE9ORU5UEEdMX0RFUFRIX1NURU5DSUwKR0xfUkVEX0VYVAlHTF9SR19FWFQLR0xfQkdSQV9FWFSNPwyNQQiNQwoMZ2xUZXhJbWFnZTJEBmZvcm1hdA8IR0xfQUxQSEEMR0xfTFVNSU5BTkNFEkdMX0xVTUlOQU5DRV9BTFBIQQZHTF9SR0IHR0xfUkdCQRJHTF9ERVBUSF9DT01QT05FTlQQR0xfREVQVEhfU1RFTkNJTAZHTF9SRUQOR0xfUkVEX0lOVEVHRVIFR0xfUkcPR0xfUkdCQV9JTlRFR0VSDkdMX1JHQl9JTlRFR0VSDUdMX1JHX0lOVEVHRVIQR0xfU1RFTkNJTF9JTkRFWAtHTF9CR1JBX0VYVI1FDI1HCI1JCgxnbFRleEltYWdlMkQEdHlwZTgQR0xfVU5TSUdORURfQllURRlHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80GUdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzEXR0xfVU5TSUdORURfU0hPUlRfNV82XzURR0xfSEFMRl9GTE9BVF9PRVMHR0xfQllURQhHTF9GTE9BVCFHTF9GTE9BVF8zMl9VTlNJR05FRF9JTlRfMjRfOF9SRVYNR0xfSEFMRl9GTE9BVAZHTF9JTlQIR0xfU0hPUlQPR0xfVU5TSUdORURfSU5UH0dMX1VOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVYUR0xfVU5TSUdORURfSU5UXzI0XzgeR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWG0dMX1VOU0lHTkVEX0lOVF81XzlfOV85X1JFVhFHTF9VTlNJR05FRF9TSE9SVBVHTF9DT01QUkVTU0VEX1IxMV9FQUMcR0xfQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQxdHTF9DT01QUkVTU0VEX1JHQjhfRVRDMhhHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzIrR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMixHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMhZHTF9DT01QUkVTU0VEX1JHMTFfRUFDHUdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDHEdMX0NPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4OCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OBxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NRxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NhxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTAdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTIlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMhBHTF9FVEMxX1JHQjhfT0VTjUsEjU0GjU8IjVEKDGdsVGV4SW1hZ2UyRARkYXRhBAEAAgxnbFRleEltYWdlM0QFjVMMjVUIjVcKDGdsVGV4SW1hZ2UzRAZ0YXJnZXQDE0dMX1RFWFRVUkVfMkRfQVJSQVkNR0xfVEVYVFVSRV8zRBlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZjVkMjVsIjV0KDGdsVGV4SW1hZ2UzRA5pbnRlcm5hbGZvcm1hdEEGR0xfUkdCB0dMX1JHQkESR0xfTFVNSU5BTkNFX0FMUEhBDEdMX0xVTUlOQU5DRQhHTF9BTFBIQQVHTF9SOAtHTF9SOF9TTk9STQdHTF9SMTZGB0dMX1IzMkYHR0xfUjhVSQZHTF9SOEkIR0xfUjE2VUkHR0xfUjE2SQhHTF9SMzJVSQdHTF9SMzJJBkdMX1JHOAxHTF9SRzhfU05PUk0IR0xfUkcxNkYIR0xfUkczMkYIR0xfUkc4VUkHR0xfUkc4SQlHTF9SRzE2VUkIR0xfUkcxNkkJR0xfUkczMlVJCEdMX1JHMzJJB0dMX1JHQjgIR0xfU1JHQjgJR0xfUkdCNTY1DUdMX1JHQjhfU05PUk0RR0xfUjExRl9HMTFGX0IxMEYKR0xfUkdCOV9FNQlHTF9SR0IxNkYJR0xfUkdCMzJGCUdMX1JHQjhVSQhHTF9SR0I4SQpHTF9SR0IxNlVJCUdMX1JHQjE2SQpHTF9SR0IzMlVJCUdMX1JHQjMySQhHTF9SR0JBOA9HTF9TUkdCOF9BTFBIQTgOR0xfUkdCQThfU05PUk0KR0xfUkdCNV9BMQhHTF9SR0JBNAtHTF9SR0IxMF9BMgpHTF9SR0JBMTZGCkdMX1JHQkEzMkYKR0xfUkdCQThVSQlHTF9SR0JBOEkNR0xfUkdCMTBfQTJVSQtHTF9SR0JBMTZVSQpHTF9SR0JBMTZJCkdMX1JHQkEzMkkLR0xfUkdCQTMyVUkUR0xfREVQVEhfQ09NUE9ORU5UMTYUR0xfREVQVEhfQ09NUE9ORU5UMjQVR0xfREVQVEhfQ09NUE9ORU5UMzJGE0dMX0RFUFRIMjRfU1RFTkNJTDgUR0xfREVQVEgzMkZfU1RFTkNJTDgRR0xfU1RFTkNJTF9JTkRFWDgSR0xfREVQVEhfQ09NUE9ORU5UEEdMX0RFUFRIX1NURU5DSUwKR0xfUkVEX0VYVAlHTF9SR19FWFQLR0xfQkdSQV9FWFSNXwyNYQiNYwoMZ2xUZXhJbWFnZTNEBmZvcm1hdA8IR0xfQUxQSEESR0xfREVQVEhfQ09NUE9ORU5UEEdMX0RFUFRIX1NURU5DSUwMR0xfTFVNSU5BTkNFEkdMX0xVTUlOQU5DRV9BTFBIQQZHTF9SRUQOR0xfUkVEX0lOVEVHRVIFR0xfUkcGR0xfUkdCB0dMX1JHQkEPR0xfUkdCQV9JTlRFR0VSDkdMX1JHQl9JTlRFR0VSDUdMX1JHX0lOVEVHRVIQR0xfU1RFTkNJTF9JTkRFWAtHTF9CR1JBX0VYVI1lDI1nCI1pCgxnbFRleEltYWdlM0QEdHlwZTgRR0xfSEFMRl9GTE9BVF9PRVMHR0xfQllURQhHTF9GTE9BVCFHTF9GTE9BVF8zMl9VTlNJR05FRF9JTlRfMjRfOF9SRVYNR0xfSEFMRl9GTE9BVAZHTF9JTlQIR0xfU0hPUlQQR0xfVU5TSUdORURfQllURQ9HTF9VTlNJR05FRF9JTlQfR0xfVU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFVhRHTF9VTlNJR05FRF9JTlRfMjRfOB5HTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYbR0xfVU5TSUdORURfSU5UXzVfOV85XzlfUkVWEUdMX1VOU0lHTkVEX1NIT1JUGUdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQZR0xfVU5TSUdORURfU0hPUlRfNV81XzVfMRdHTF9VTlNJR05FRF9TSE9SVF81XzZfNRVHTF9DT01QUkVTU0VEX1IxMV9FQUMcR0xfQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQxdHTF9DT01QUkVTU0VEX1JHQjhfRVRDMhhHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzIrR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMixHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMhZHTF9DT01QUkVTU0VEX1JHMTFfRUFDHUdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDHEdMX0NPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4OCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OBxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NRxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NhxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTAdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTIlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMhBHTF9FVEMxX1JHQjhfT0VTjWsEjW0GjW8IjXEKDGdsVGV4SW1hZ2UzRARkYXRhBAEAAg9nbFRleEltYWdlM0RPRVMFjXMMjXUIjXcKD2dsVGV4SW1hZ2UzRE9FUwZ0YXJnZXQDE0dMX1RFWFRVUkVfMkRfQVJSQVkNR0xfVEVYVFVSRV8zRBlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZjXkMjXsIjX0KD2dsVGV4SW1hZ2UzRE9FUw5pbnRlcm5hbGZvcm1hdEEGR0xfUkdCB0dMX1JHQkESR0xfTFVNSU5BTkNFX0FMUEhBDEdMX0xVTUlOQU5DRQhHTF9BTFBIQQVHTF9SOAtHTF9SOF9TTk9STQdHTF9SMTZGB0dMX1IzMkYHR0xfUjhVSQZHTF9SOEkIR0xfUjE2VUkHR0xfUjE2SQhHTF9SMzJVSQdHTF9SMzJJBkdMX1JHOAxHTF9SRzhfU05PUk0IR0xfUkcxNkYIR0xfUkczMkYIR0xfUkc4VUkHR0xfUkc4SQlHTF9SRzE2VUkIR0xfUkcxNkkJR0xfUkczMlVJCEdMX1JHMzJJB0dMX1JHQjgIR0xfU1JHQjgJR0xfUkdCNTY1DUdMX1JHQjhfU05PUk0RR0xfUjExRl9HMTFGX0IxMEYKR0xfUkdCOV9FNQlHTF9SR0IxNkYJR0xfUkdCMzJGCUdMX1JHQjhVSQhHTF9SR0I4SQpHTF9SR0IxNlVJCUdMX1JHQjE2SQpHTF9SR0IzMlVJCUdMX1JHQjMySQhHTF9SR0JBOA9HTF9TUkdCOF9BTFBIQTgOR0xfUkdCQThfU05PUk0KR0xfUkdCNV9BMQhHTF9SR0JBNAtHTF9SR0IxMF9BMgpHTF9SR0JBMTZGCkdMX1JHQkEzMkYKR0xfUkdCQThVSQlHTF9SR0JBOEkNR0xfUkdCMTBfQTJVSQtHTF9SR0JBMTZVSQpHTF9SR0JBMTZJCkdMX1JHQkEzMkkLR0xfUkdCQTMyVUkUR0xfREVQVEhfQ09NUE9ORU5UMTYUR0xfREVQVEhfQ09NUE9ORU5UMjQVR0xfREVQVEhfQ09NUE9ORU5UMzJGE0dMX0RFUFRIMjRfU1RFTkNJTDgUR0xfREVQVEgzMkZfU1RFTkNJTDgRR0xfU1RFTkNJTF9JTkRFWDgSR0xfREVQVEhfQ09NUE9ORU5UEEdMX0RFUFRIX1NURU5DSUwKR0xfUkVEX0VYVAlHTF9SR19FWFQLR0xfQkdSQV9FWFSNfwyNgQiNgwoPZ2xUZXhJbWFnZTNET0VTBmZvcm1hdA8IR0xfQUxQSEESR0xfREVQVEhfQ09NUE9ORU5UEEdMX0RFUFRIX1NURU5DSUwMR0xfTFVNSU5BTkNFEkdMX0xVTUlOQU5DRV9BTFBIQQZHTF9SRUQOR0xfUkVEX0lOVEVHRVIFR0xfUkcGR0xfUkdCB0dMX1JHQkEPR0xfUkdCQV9JTlRFR0VSDkdMX1JHQl9JTlRFR0VSDUdMX1JHX0lOVEVHRVIQR0xfU1RFTkNJTF9JTkRFWAtHTF9CR1JBX0VYVI2FDI2HCI2JCg9nbFRleEltYWdlM0RPRVMEdHlwZTgRR0xfSEFMRl9GTE9BVF9PRVMHR0xfQllURQhHTF9GTE9BVCFHTF9GTE9BVF8zMl9VTlNJR05FRF9JTlRfMjRfOF9SRVYNR0xfSEFMRl9GTE9BVAZHTF9JTlQIR0xfU0hPUlQQR0xfVU5TSUdORURfQllURQ9HTF9VTlNJR05FRF9JTlQfR0xfVU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFVhRHTF9VTlNJR05FRF9JTlRfMjRfOB5HTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYbR0xfVU5TSUdORURfSU5UXzVfOV85XzlfUkVWEUdMX1VOU0lHTkVEX1NIT1JUGUdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQZR0xfVU5TSUdORURfU0hPUlRfNV81XzVfMRdHTF9VTlNJR05FRF9TSE9SVF81XzZfNRVHTF9DT01QUkVTU0VEX1IxMV9FQUMcR0xfQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQxdHTF9DT01QUkVTU0VEX1JHQjhfRVRDMhhHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzIrR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMixHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMhZHTF9DT01QUkVTU0VEX1JHMTFfRUFDHUdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDHEdMX0NPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4OCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OBxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NRxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NhxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTAdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTIlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMhBHTF9FVEMxX1JHQjhfT0VTjYsEjY0GjY8IjZEKD2dsVGV4SW1hZ2UzRE9FUwZwaXhlbHMEAQACEWdsVGV4UGFyYW1ldGVySWl2A42TDI2VCI2XChFnbFRleFBhcmFtZXRlcklpdgZ0YXJnZXQJEUdMX1RFWFRVUkVfQlVGRkVSDUdMX1RFWFRVUkVfMkQXR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMTR0xfVEVYVFVSRV8yRF9BUlJBWRlHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFH0dMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVkNR0xfVEVYVFVSRV8zRBNHTF9URVhUVVJFX0NVQkVfTUFQGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVmNmQyNmwiNnQoRZ2xUZXhQYXJhbWV0ZXJJaXYFcG5hbWUTFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhVHTF9URVhUVVJFX01JTl9GSUxURVIRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QVR0xfVEVYVFVSRV9CQVNFX0xFVkVMF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFFEdMX1RFWFRVUkVfTUFYX0xFVkVMEkdMX1RFWFRVUkVfTUFYX0xPRBJHTF9URVhUVVJFX01JTl9MT0QUR0xfVEVYVFVSRV9TV0laWkxFX0EUR0xfVEVYVFVSRV9TV0laWkxFX0IUR0xfVEVYVFVSRV9TV0laWkxFX0cUR0xfVEVYVFVSRV9TV0laWkxFX1IRR0xfVEVYVFVSRV9XUkFQX1IdR0xfREVQVEhfU1RFTkNJTF9URVhUVVJFX01PREUXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1IdR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQaR0xfVEVYVFVSRV9TUkdCX0RFQ09ERV9FWFSNnwyNoQaNowaNpQiNpwoRZ2xUZXhQYXJhbWV0ZXJJaXYGcGFyYW1zBAIQCkdMX05FQVJFU1QJR0xfTElORUFSGUdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1QYR0xfTElORUFSX01JUE1BUF9ORUFSRVNUGEdMX05FQVJFU1RfTUlQTUFQX0xJTkVBUhdHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUhBHTF9DTEFNUF9UT19FREdFCUdMX1JFUEVBVBJHTF9NSVJST1JFRF9SRVBFQVQSR0xfQ0xBTVBfVE9fQk9SREVSBkdMX1JFRAhHTF9HUkVFTgdHTF9CTFVFCEdMX0FMUEhBB0dMX1pFUk8GR0xfT05FAhRnbFRleFBhcmFtZXRlcklpdkVYVAONqQyNqwiNrQoUZ2xUZXhQYXJhbWV0ZXJJaXZFWFQGdGFyZ2V0CRFHTF9URVhUVVJFX0JVRkZFUg1HTF9URVhUVVJFXzJEF0dMX1RFWFRVUkVfRVhURVJOQUxfT0VTE0dMX1RFWFRVUkVfMkRfQVJSQVkZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZDUdMX1RFWFRVUkVfM0QTR0xfVEVYVFVSRV9DVUJFX01BUBlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZja8MjbEIjbMKFGdsVGV4UGFyYW1ldGVySWl2RVhUBXBuYW1lExVHTF9URVhUVVJFX01BR19GSUxURVIVR0xfVEVYVFVSRV9NSU5fRklMVEVSEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UFUdMX1RFWFRVUkVfQkFTRV9MRVZFTBdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRRHTF9URVhUVVJFX01BWF9MRVZFTBJHTF9URVhUVVJFX01BWF9MT0QSR0xfVEVYVFVSRV9NSU5fTE9EFEdMX1RFWFRVUkVfU1dJWlpMRV9BFEdMX1RFWFRVUkVfU1dJWlpMRV9CFEdMX1RFWFRVUkVfU1dJWlpMRV9HFEdMX1RFWFRVUkVfU1dJWlpMRV9SEUdMX1RFWFRVUkVfV1JBUF9SHUdMX0RFUFRIX1NURU5DSUxfVEVYVFVSRV9NT0RFF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SHUdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUGkdMX1RFWFRVUkVfU1JHQl9ERUNPREVfRVhUjbUMjbcGjbkGjbsIjb0KFGdsVGV4UGFyYW1ldGVySWl2RVhUBnBhcmFtcwQCEApHTF9ORUFSRVNUCUdMX0xJTkVBUhlHTF9ORUFSRVNUX01JUE1BUF9ORUFSRVNUGEdMX0xJTkVBUl9NSVBNQVBfTkVBUkVTVBhHTF9ORUFSRVNUX01JUE1BUF9MSU5FQVIXR0xfTElORUFSX01JUE1BUF9MSU5FQVIQR0xfQ0xBTVBfVE9fRURHRQlHTF9SRVBFQVQSR0xfTUlSUk9SRURfUkVQRUFUEkdMX0NMQU1QX1RPX0JPUkRFUgZHTF9SRUQIR0xfR1JFRU4HR0xfQkxVRQhHTF9BTFBIQQdHTF9aRVJPBkdMX09ORQIUZ2xUZXhQYXJhbWV0ZXJJaXZPRVMDjb8MjcEIjcMKFGdsVGV4UGFyYW1ldGVySWl2T0VTBnRhcmdldAkRR0xfVEVYVFVSRV9CVUZGRVINR0xfVEVYVFVSRV8yRBdHTF9URVhUVVJFX0VYVEVSTkFMX09FUxNHTF9URVhUVVJFXzJEX0FSUkFZGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWQ1HTF9URVhUVVJFXzNEE0dMX1RFWFRVUkVfQ1VCRV9NQVAZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWY3FDI3HCI3JChRnbFRleFBhcmFtZXRlcklpdk9FUwVwbmFtZRMVR0xfVEVYVFVSRV9NQUdfRklMVEVSFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBVHTF9URVhUVVJFX0JBU0VfTEVWRUwXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUUR0xfVEVYVFVSRV9NQVhfTEVWRUwSR0xfVEVYVFVSRV9NQVhfTE9EEkdMX1RFWFRVUkVfTUlOX0xPRBRHTF9URVhUVVJFX1NXSVpaTEVfQRRHTF9URVhUVVJFX1NXSVpaTEVfQhRHTF9URVhUVVJFX1NXSVpaTEVfRxRHTF9URVhUVVJFX1NXSVpaTEVfUhFHTF9URVhUVVJFX1dSQVBfUh1HTF9ERVBUSF9TVEVOQ0lMX1RFWFRVUkVfTU9ERRdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUh1HTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVBpHTF9URVhUVVJFX1NSR0JfREVDT0RFX0VYVI3LDI3NBo3PBo3RCI3TChRnbFRleFBhcmFtZXRlcklpdk9FUwZwYXJhbXMEAhAKR0xfTkVBUkVTVAlHTF9MSU5FQVIZR0xfTkVBUkVTVF9NSVBNQVBfTkVBUkVTVBhHTF9MSU5FQVJfTUlQTUFQX05FQVJFU1QYR0xfTkVBUkVTVF9NSVBNQVBfTElORUFSF0dMX0xJTkVBUl9NSVBNQVBfTElORUFSEEdMX0NMQU1QX1RPX0VER0UJR0xfUkVQRUFUEkdMX01JUlJPUkVEX1JFUEVBVBJHTF9DTEFNUF9UT19CT1JERVIGR0xfUkVECEdMX0dSRUVOB0dMX0JMVUUIR0xfQUxQSEEHR0xfWkVSTwZHTF9PTkUCEmdsVGV4UGFyYW1ldGVySXVpdgON1QyN1wiN2QoSZ2xUZXhQYXJhbWV0ZXJJdWl2BnRhcmdldAkRR0xfVEVYVFVSRV9CVUZGRVINR0xfVEVYVFVSRV8yRBdHTF9URVhUVVJFX0VYVEVSTkFMX09FUxNHTF9URVhUVVJFXzJEX0FSUkFZGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWQ1HTF9URVhUVVJFXzNEE0dMX1RFWFRVUkVfQ1VCRV9NQVAZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWY3bDI3dCI3fChJnbFRleFBhcmFtZXRlckl1aXYFcG5hbWUTFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhVHTF9URVhUVVJFX01JTl9GSUxURVIRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QVR0xfVEVYVFVSRV9CQVNFX0xFVkVMF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFFEdMX1RFWFRVUkVfTUFYX0xFVkVMEkdMX1RFWFRVUkVfTUFYX0xPRBJHTF9URVhUVVJFX01JTl9MT0QUR0xfVEVYVFVSRV9TV0laWkxFX0EUR0xfVEVYVFVSRV9TV0laWkxFX0IUR0xfVEVYVFVSRV9TV0laWkxFX0cUR0xfVEVYVFVSRV9TV0laWkxFX1IRR0xfVEVYVFVSRV9XUkFQX1IdR0xfREVQVEhfU1RFTkNJTF9URVhUVVJFX01PREUXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1IdR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQaR0xfVEVYVFVSRV9TUkdCX0RFQ09ERV9FWFSN4QyN4waN5QaN5wiN6QoSZ2xUZXhQYXJhbWV0ZXJJdWl2BnBhcmFtcwQCEApHTF9ORUFSRVNUCUdMX0xJTkVBUhlHTF9ORUFSRVNUX01JUE1BUF9ORUFSRVNUGEdMX0xJTkVBUl9NSVBNQVBfTkVBUkVTVBhHTF9ORUFSRVNUX01JUE1BUF9MSU5FQVIXR0xfTElORUFSX01JUE1BUF9MSU5FQVIQR0xfQ0xBTVBfVE9fRURHRQlHTF9SRVBFQVQSR0xfTUlSUk9SRURfUkVQRUFUEkdMX0NMQU1QX1RPX0JPUkRFUgZHTF9SRUQIR0xfR1JFRU4HR0xfQkxVRQhHTF9BTFBIQQdHTF9aRVJPBkdMX09ORQIVZ2xUZXhQYXJhbWV0ZXJJdWl2RVhUA43rDI3tCI3vChVnbFRleFBhcmFtZXRlckl1aXZFWFQGdGFyZ2V0CRFHTF9URVhUVVJFX0JVRkZFUg1HTF9URVhUVVJFXzJEF0dMX1RFWFRVUkVfRVhURVJOQUxfT0VTE0dMX1RFWFRVUkVfMkRfQVJSQVkZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZDUdMX1RFWFRVUkVfM0QTR0xfVEVYVFVSRV9DVUJFX01BUBlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZjfEMjfMIjfUKFWdsVGV4UGFyYW1ldGVySXVpdkVYVAVwbmFtZRMVR0xfVEVYVFVSRV9NQUdfRklMVEVSFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBVHTF9URVhUVVJFX0JBU0VfTEVWRUwXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUUR0xfVEVYVFVSRV9NQVhfTEVWRUwSR0xfVEVYVFVSRV9NQVhfTE9EEkdMX1RFWFRVUkVfTUlOX0xPRBRHTF9URVhUVVJFX1NXSVpaTEVfQRRHTF9URVhUVVJFX1NXSVpaTEVfQhRHTF9URVhUVVJFX1NXSVpaTEVfRxRHTF9URVhUVVJFX1NXSVpaTEVfUhFHTF9URVhUVVJFX1dSQVBfUh1HTF9ERVBUSF9TVEVOQ0lMX1RFWFRVUkVfTU9ERRdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUh1HTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVBpHTF9URVhUVVJFX1NSR0JfREVDT0RFX0VYVI33DI35Bo37Bo39CI3/ChVnbFRleFBhcmFtZXRlckl1aXZFWFQGcGFyYW1zBAIQCkdMX05FQVJFU1QJR0xfTElORUFSGUdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1QYR0xfTElORUFSX01JUE1BUF9ORUFSRVNUGEdMX05FQVJFU1RfTUlQTUFQX0xJTkVBUhdHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUhBHTF9DTEFNUF9UT19FREdFCUdMX1JFUEVBVBJHTF9NSVJST1JFRF9SRVBFQVQSR0xfQ0xBTVBfVE9fQk9SREVSBkdMX1JFRAhHTF9HUkVFTgdHTF9CTFVFCEdMX0FMUEhBB0dMX1pFUk8GR0xfT05FAhVnbFRleFBhcmFtZXRlckl1aXZPRVMDjgEMjgMIjgUKFWdsVGV4UGFyYW1ldGVySXVpdk9FUwZ0YXJnZXQJEUdMX1RFWFRVUkVfQlVGRkVSDUdMX1RFWFRVUkVfMkQXR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMTR0xfVEVYVFVSRV8yRF9BUlJBWRlHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFH0dMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVkNR0xfVEVYVFVSRV8zRBNHTF9URVhUVVJFX0NVQkVfTUFQGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVmOBwyOCQiOCwoVZ2xUZXhQYXJhbWV0ZXJJdWl2T0VTBXBuYW1lExVHTF9URVhUVVJFX01BR19GSUxURVIVR0xfVEVYVFVSRV9NSU5fRklMVEVSEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UFUdMX1RFWFRVUkVfQkFTRV9MRVZFTBdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRRHTF9URVhUVVJFX01BWF9MRVZFTBJHTF9URVhUVVJFX01BWF9MT0QSR0xfVEVYVFVSRV9NSU5fTE9EFEdMX1RFWFRVUkVfU1dJWlpMRV9BFEdMX1RFWFRVUkVfU1dJWlpMRV9CFEdMX1RFWFRVUkVfU1dJWlpMRV9HFEdMX1RFWFRVUkVfU1dJWlpMRV9SEUdMX1RFWFRVUkVfV1JBUF9SHUdMX0RFUFRIX1NURU5DSUxfVEVYVFVSRV9NT0RFF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SHUdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUGkdMX1RFWFRVUkVfU1JHQl9ERUNPREVfRVhUjg0Mjg8GjhEGjhMIjhUKFWdsVGV4UGFyYW1ldGVySXVpdk9FUwZwYXJhbXMEAhAKR0xfTkVBUkVTVAlHTF9MSU5FQVIZR0xfTkVBUkVTVF9NSVBNQVBfTkVBUkVTVBhHTF9MSU5FQVJfTUlQTUFQX05FQVJFU1QYR0xfTkVBUkVTVF9NSVBNQVBfTElORUFSF0dMX0xJTkVBUl9NSVBNQVBfTElORUFSEEdMX0NMQU1QX1RPX0VER0UJR0xfUkVQRUFUEkdMX01JUlJPUkVEX1JFUEVBVBJHTF9DTEFNUF9UT19CT1JERVIGR0xfUkVECEdMX0dSRUVOB0dMX0JMVUUIR0xfQUxQSEEHR0xfWkVSTwZHTF9PTkUCD2dsVGV4UGFyYW1ldGVyZgOOFwyOGQiOGwoPZ2xUZXhQYXJhbWV0ZXJmBnRhcmdldAkRR0xfVEVYVFVSRV9CVUZGRVINR0xfVEVYVFVSRV8yRBdHTF9URVhUVVJFX0VYVEVSTkFMX09FUxNHTF9URVhUVVJFXzJEX0FSUkFZGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWQ1HTF9URVhUVVJFXzNEE0dMX1RFWFRVUkVfQ1VCRV9NQVAZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWY4dDI4fCI4hCg9nbFRleFBhcmFtZXRlcmYJcGFyYW1ldGVyExdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUhVHTF9URVhUVVJFX01BR19GSUxURVIVR0xfVEVYVFVSRV9NSU5fRklMVEVSEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UFUdMX1RFWFRVUkVfQkFTRV9MRVZFTBdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRRHTF9URVhUVVJFX01BWF9MRVZFTBJHTF9URVhUVVJFX01BWF9MT0QSR0xfVEVYVFVSRV9NSU5fTE9EFEdMX1RFWFRVUkVfU1dJWlpMRV9BFEdMX1RFWFRVUkVfU1dJWlpMRV9CFEdMX1RFWFRVUkVfU1dJWlpMRV9HFEdMX1RFWFRVUkVfU1dJWlpMRV9SEUdMX1RFWFRVUkVfV1JBUF9SHUdMX0RFUFRIX1NURU5DSUxfVEVYVFVSRV9NT0RFHUdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUGkdMX1RFWFRVUkVfU1JHQl9ERUNPREVfRVhUjiMMjiUIjicKD2dsVGV4UGFyYW1ldGVyZgV2YWx1ZRAKR0xfTkVBUkVTVAlHTF9MSU5FQVIZR0xfTkVBUkVTVF9NSVBNQVBfTkVBUkVTVBhHTF9MSU5FQVJfTUlQTUFQX05FQVJFU1QYR0xfTkVBUkVTVF9NSVBNQVBfTElORUFSF0dMX0xJTkVBUl9NSVBNQVBfTElORUFSEEdMX0NMQU1QX1RPX0VER0UJR0xfUkVQRUFUEkdMX01JUlJPUkVEX1JFUEVBVBJHTF9DTEFNUF9UT19CT1JERVIGR0xfUkVECEdMX0dSRUVOB0dMX0JMVUUIR0xfQUxQSEEHR0xfWkVSTwZHTF9PTkUCEGdsVGV4UGFyYW1ldGVyZnYDjikMjisIji0KEGdsVGV4UGFyYW1ldGVyZnYGdGFyZ2V0CRFHTF9URVhUVVJFX0JVRkZFUg1HTF9URVhUVVJFXzJEF0dMX1RFWFRVUkVfRVhURVJOQUxfT0VTE0dMX1RFWFRVUkVfMkRfQVJSQVkZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZDUdMX1RFWFRVUkVfM0QTR0xfVEVYVFVSRV9DVUJFX01BUBlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZji8MjjEIjjMKEGdsVGV4UGFyYW1ldGVyZnYFcG5hbWUTFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhVHTF9URVhUVVJFX01JTl9GSUxURVIRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QVR0xfVEVYVFVSRV9CQVNFX0xFVkVMF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFFEdMX1RFWFRVUkVfTUFYX0xFVkVMEkdMX1RFWFRVUkVfTUFYX0xPRBJHTF9URVhUVVJFX01JTl9MT0QUR0xfVEVYVFVSRV9TV0laWkxFX0EUR0xfVEVYVFVSRV9TV0laWkxFX0IUR0xfVEVYVFVSRV9TV0laWkxFX0cUR0xfVEVYVFVSRV9TV0laWkxFX1IRR0xfVEVYVFVSRV9XUkFQX1IdR0xfREVQVEhfU1RFTkNJTF9URVhUVVJFX01PREUXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1IdR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQaR0xfVEVYVFVSRV9TUkdCX0RFQ09ERV9FWFSONQyONwaOOQaOOwiOPQoQZ2xUZXhQYXJhbWV0ZXJmdgZwYXJhbXMEAhAKR0xfTkVBUkVTVAlHTF9MSU5FQVIZR0xfTkVBUkVTVF9NSVBNQVBfTkVBUkVTVBhHTF9MSU5FQVJfTUlQTUFQX05FQVJFU1QYR0xfTkVBUkVTVF9NSVBNQVBfTElORUFSF0dMX0xJTkVBUl9NSVBNQVBfTElORUFSEEdMX0NMQU1QX1RPX0VER0UJR0xfUkVQRUFUEkdMX01JUlJPUkVEX1JFUEVBVBJHTF9DTEFNUF9UT19CT1JERVIGR0xfUkVECEdMX0dSRUVOB0dMX0JMVUUIR0xfQUxQSEEHR0xfWkVSTwZHTF9PTkUCD2dsVGV4UGFyYW1ldGVyaQOOPwyOQQiOQwoPZ2xUZXhQYXJhbWV0ZXJpBnRhcmdldAkRR0xfVEVYVFVSRV9CVUZGRVINR0xfVEVYVFVSRV8yRBdHTF9URVhUVVJFX0VYVEVSTkFMX09FUxNHTF9URVhUVVJFXzJEX0FSUkFZGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWQ1HTF9URVhUVVJFXzNEE0dMX1RFWFRVUkVfQ1VCRV9NQVAZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWY5FDI5HCI5JCg9nbFRleFBhcmFtZXRlcmkJcGFyYW1ldGVyExdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUhVHTF9URVhUVVJFX01BR19GSUxURVIVR0xfVEVYVFVSRV9NSU5fRklMVEVSEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UFUdMX1RFWFRVUkVfQkFTRV9MRVZFTBdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRRHTF9URVhUVVJFX01BWF9MRVZFTBJHTF9URVhUVVJFX01BWF9MT0QSR0xfVEVYVFVSRV9NSU5fTE9EFEdMX1RFWFRVUkVfU1dJWlpMRV9BFEdMX1RFWFRVUkVfU1dJWlpMRV9CFEdMX1RFWFRVUkVfU1dJWlpMRV9HFEdMX1RFWFRVUkVfU1dJWlpMRV9SEUdMX1RFWFRVUkVfV1JBUF9SHUdMX0RFUFRIX1NURU5DSUxfVEVYVFVSRV9NT0RFHUdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUGkdMX1RFWFRVUkVfU1JHQl9ERUNPREVfRVhUjksMjk0Ijk8KD2dsVGV4UGFyYW1ldGVyaQV2YWx1ZRAKR0xfTkVBUkVTVAlHTF9MSU5FQVIZR0xfTkVBUkVTVF9NSVBNQVBfTkVBUkVTVBhHTF9MSU5FQVJfTUlQTUFQX05FQVJFU1QYR0xfTkVBUkVTVF9NSVBNQVBfTElORUFSF0dMX0xJTkVBUl9NSVBNQVBfTElORUFSEEdMX0NMQU1QX1RPX0VER0UJR0xfUkVQRUFUEkdMX01JUlJPUkVEX1JFUEVBVBJHTF9DTEFNUF9UT19CT1JERVIGR0xfUkVECEdMX0dSRUVOB0dMX0JMVUUIR0xfQUxQSEEHR0xfWkVSTwZHTF9PTkUCEGdsVGV4UGFyYW1ldGVyaXYDjlEMjlMIjlUKEGdsVGV4UGFyYW1ldGVyaXYGdGFyZ2V0CRFHTF9URVhUVVJFX0JVRkZFUg1HTF9URVhUVVJFXzJEF0dMX1RFWFRVUkVfRVhURVJOQUxfT0VTE0dMX1RFWFRVUkVfMkRfQVJSQVkZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZDUdMX1RFWFRVUkVfM0QTR0xfVEVYVFVSRV9DVUJFX01BUBlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZjlcMjlkIjlsKEGdsVGV4UGFyYW1ldGVyaXYFcG5hbWUTFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhVHTF9URVhUVVJFX01JTl9GSUxURVIRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QVR0xfVEVYVFVSRV9CQVNFX0xFVkVMF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFFEdMX1RFWFRVUkVfTUFYX0xFVkVMEkdMX1RFWFRVUkVfTUFYX0xPRBJHTF9URVhUVVJFX01JTl9MT0QUR0xfVEVYVFVSRV9TV0laWkxFX0EUR0xfVEVYVFVSRV9TV0laWkxFX0IUR0xfVEVYVFVSRV9TV0laWkxFX0cUR0xfVEVYVFVSRV9TV0laWkxFX1IRR0xfVEVYVFVSRV9XUkFQX1IdR0xfREVQVEhfU1RFTkNJTF9URVhUVVJFX01PREUXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1IdR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQaR0xfVEVYVFVSRV9TUkdCX0RFQ09ERV9FWFSOXQyOXwaOYQaOYwiOZQoQZ2xUZXhQYXJhbWV0ZXJpdgZwYXJhbXMEAhAKR0xfTkVBUkVTVAlHTF9MSU5FQVIZR0xfTkVBUkVTVF9NSVBNQVBfTkVBUkVTVBhHTF9MSU5FQVJfTUlQTUFQX05FQVJFU1QYR0xfTkVBUkVTVF9NSVBNQVBfTElORUFSF0dMX0xJTkVBUl9NSVBNQVBfTElORUFSEEdMX0NMQU1QX1RPX0VER0UJR0xfUkVQRUFUEkdMX01JUlJPUkVEX1JFUEVBVBJHTF9DTEFNUF9UT19CT1JERVIGR0xfUkVECEdMX0dSRUVOB0dMX0JMVUUIR0xfQUxQSEEHR0xfWkVSTwZHTF9PTkUCDmdsVGV4U3RvcmFnZTJEAo5nDI5pCI5rCg5nbFRleFN0b3JhZ2UyRAZ0YXJnZXQCDUdMX1RFWFRVUkVfMkQTR0xfVEVYVFVSRV9DVUJFX01BUI5tDI5vCI5xCg5nbFRleFN0b3JhZ2UyRA5pbnRlcm5hbGZvcm1hdGgVR0xfQ09NUFJFU1NFRF9SMTFfRUFDFkdMX0NPTVBSRVNTRURfUkcxMV9FQUMXR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIrR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMhxHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDHEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMdR0xfQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUMjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMYR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyLEdMX0NPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyE0dMX0RFUFRIMjRfU1RFTkNJTDgUR0xfREVQVEgzMkZfU1RFTkNJTDgUR0xfREVQVEhfQ09NUE9ORU5UMTYUR0xfREVQVEhfQ09NUE9ORU5UMjQVR0xfREVQVEhfQ09NUE9ORU5UMzJGEUdMX1IxMUZfRzExRl9CMTBGB0dMX1IxNkYHR0xfUjE2SQhHTF9SMTZVSQdHTF9SMzJGB0dMX1IzMkkIR0xfUjMyVUkFR0xfUjgGR0xfUjhJB0dMX1I4VUkLR0xfUjhfU05PUk0IR0xfUkcxNkYIR0xfUkcxNkkJR0xfUkcxNlVJCEdMX1JHMzJGCEdMX1JHMzJJCUdMX1JHMzJVSQZHTF9SRzgHR0xfUkc4SQhHTF9SRzhVSQxHTF9SRzhfU05PUk0LR0xfUkdCMTBfQTINR0xfUkdCMTBfQTJVSQlHTF9SR0IxNkYJR0xfUkdCMTZJCkdMX1JHQjE2VUkJR0xfUkdCMzJGCUdMX1JHQjMySQpHTF9SR0IzMlVJCUdMX1JHQjU2NQpHTF9SR0I1X0ExB0dMX1JHQjgIR0xfUkdCOEkJR0xfUkdCOFVJDUdMX1JHQjhfU05PUk0KR0xfUkdCOV9FNQpHTF9SR0JBMTZGCkdMX1JHQkExNkkLR0xfUkdCQTE2VUkKR0xfUkdCQTMyRgpHTF9SR0JBMzJJC0dMX1JHQkEzMlVJCEdMX1JHQkE0CEdMX1JHQkE4CUdMX1JHQkE4SQpHTF9SR0JBOFVJDkdMX1JHQkE4X1NOT1JNCEdMX1NSR0I4D0dMX1NSR0I4X0FMUEhBOAZHTF9SMTYMR0xfUjE2X1NOT1JNB0dMX1JHMTYNR0xfUkcxNl9TTk9STQhHTF9SR0IxNg5HTF9SR0IxNl9TTk9STQlHTF9SR0JBMTYPR0xfUkdCQTE2X1NOT1JNHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwHEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDUcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NhxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4HUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyG0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzR4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDglR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMCRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDUkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTIjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDgRR0xfU1RFTkNJTF9JTkRFWDgNR0xfQUxQSEE4X0VYVBBHTF9FVEMxX1JHQjhfT0VTC0dMX0JHUkFfRVhUAhFnbFRleFN0b3JhZ2UyREVYVAKOcwyOdQiOdwoRZ2xUZXhTdG9yYWdlMkRFWFQGdGFyZ2V0Ag1HTF9URVhUVVJFXzJEE0dMX1RFWFRVUkVfQ1VCRV9NQVCOeQyOewiOfQoRZ2xUZXhTdG9yYWdlMkRFWFQOaW50ZXJuYWxmb3JtYXRoFUdMX0NPTVBSRVNTRURfUjExX0VBQxZHTF9DT01QUkVTU0VEX1JHMTFfRUFDF0dMX0NPTVBSRVNTRURfUkdCOF9FVEMyK0dMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIcR0xfQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQxxHTF9DT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDHUdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDGEdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMixHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMhNHTF9ERVBUSDI0X1NURU5DSUw4FEdMX0RFUFRIMzJGX1NURU5DSUw4FEdMX0RFUFRIX0NPTVBPTkVOVDE2FEdMX0RFUFRIX0NPTVBPTkVOVDI0FUdMX0RFUFRIX0NPTVBPTkVOVDMyRhFHTF9SMTFGX0cxMUZfQjEwRgdHTF9SMTZGB0dMX1IxNkkIR0xfUjE2VUkHR0xfUjMyRgdHTF9SMzJJCEdMX1IzMlVJBUdMX1I4BkdMX1I4SQdHTF9SOFVJC0dMX1I4X1NOT1JNCEdMX1JHMTZGCEdMX1JHMTZJCUdMX1JHMTZVSQhHTF9SRzMyRghHTF9SRzMySQlHTF9SRzMyVUkGR0xfUkc4B0dMX1JHOEkIR0xfUkc4VUkMR0xfUkc4X1NOT1JNC0dMX1JHQjEwX0EyDUdMX1JHQjEwX0EyVUkJR0xfUkdCMTZGCUdMX1JHQjE2SQpHTF9SR0IxNlVJCUdMX1JHQjMyRglHTF9SR0IzMkkKR0xfUkdCMzJVSQlHTF9SR0I1NjUKR0xfUkdCNV9BMQdHTF9SR0I4CEdMX1JHQjhJCUdMX1JHQjhVSQ1HTF9SR0I4X1NOT1JNCkdMX1JHQjlfRTUKR0xfUkdCQTE2RgpHTF9SR0JBMTZJC0dMX1JHQkExNlVJCkdMX1JHQkEzMkYKR0xfUkdCQTMySQtHTF9SR0JBMzJVSQhHTF9SR0JBNAhHTF9SR0JBOAlHTF9SR0JBOEkKR0xfUkdCQThVSQ5HTF9SR0JBOF9TTk9STQhHTF9TUkdCOA9HTF9TUkdCOF9BTFBIQTgGR0xfUjE2DEdMX1IxNl9TTk9STQdHTF9SRzE2DUdMX1JHMTZfU05PUk0IR0xfUkdCMTYOR0xfUkdCMTZfU05PUk0JR0xfUkdCQTE2D0dMX1JHQkExNl9TTk9STR1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMBxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDYcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg4JUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTAkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NiRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDglR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4EUdMX1NURU5DSUxfSU5ERVg4DUdMX0FMUEhBOF9FWFQQR0xfRVRDMV9SR0I4X09FUwtHTF9CR1JBX0VYVAIZZ2xUZXhTdG9yYWdlMkRNdWx0aXNhbXBsZQKOfwyOgQiOgwoZZ2xUZXhTdG9yYWdlMkRNdWx0aXNhbXBsZQZ0YXJnZXQBGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEWOhQyOhwiOiQoZZ2xUZXhTdG9yYWdlMkRNdWx0aXNhbXBsZQ5pbnRlcm5hbGZvcm1hdDcTR0xfREVQVEgyNF9TVEVOQ0lMOBRHTF9ERVBUSDMyRl9TVEVOQ0lMOBRHTF9ERVBUSF9DT01QT05FTlQxNhRHTF9ERVBUSF9DT01QT05FTlQyNBVHTF9ERVBUSF9DT01QT05FTlQzMkYRR0xfUjExRl9HMTFGX0IxMEYHR0xfUjE2RgdHTF9SMTZJCEdMX1IxNlVJB0dMX1IzMkYHR0xfUjMySQhHTF9SMzJVSQVHTF9SOAZHTF9SOEkHR0xfUjhVSQtHTF9SOF9TTk9STQhHTF9SRzE2RghHTF9SRzE2SQlHTF9SRzE2VUkIR0xfUkczMkYIR0xfUkczMkkJR0xfUkczMlVJBkdMX1JHOAdHTF9SRzhJCEdMX1JHOFVJDEdMX1JHOF9TTk9STQtHTF9SR0IxMF9BMg1HTF9SR0IxMF9BMlVJCUdMX1JHQjE2RglHTF9SR0IxNkkKR0xfUkdCMTZVSQlHTF9SR0IzMkYJR0xfUkdCMzJJCkdMX1JHQjMyVUkJR0xfUkdCNTY1CkdMX1JHQjVfQTEHR0xfUkdCOAhHTF9SR0I4SQlHTF9SR0I4VUkNR0xfUkdCOF9TTk9STQpHTF9SR0I5X0U1CkdMX1JHQkExNkYKR0xfUkdCQTE2SQtHTF9SR0JBMTZVSQpHTF9SR0JBMzJGCkdMX1JHQkEzMkkLR0xfUkdCQTMyVUkIR0xfUkdCQTQIR0xfUkdCQTgJR0xfUkdCQThJCkdMX1JHQkE4VUkOR0xfUkdCQThfU05PUk0IR0xfU1JHQjgPR0xfU1JHQjhfQUxQSEE4EUdMX1NURU5DSUxfSU5ERVg4Ag5nbFRleFN0b3JhZ2UzRAKOiwyOjQiOjwoOZ2xUZXhTdG9yYWdlM0QGdGFyZ2V0AxNHTF9URVhUVVJFXzJEX0FSUkFZDUdMX1RFWFRVUkVfM0QZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWY6RDI6TCI6VCg5nbFRleFN0b3JhZ2UzRA5pbnRlcm5hbGZvcm1hdF0VR0xfQ09NUFJFU1NFRF9SMTFfRUFDFkdMX0NPTVBSRVNTRURfUkcxMV9FQUMXR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIrR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMhxHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDHEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMdR0xfQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUMjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMYR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyLEdMX0NPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyE0dMX0RFUFRIMjRfU1RFTkNJTDgUR0xfREVQVEgzMkZfU1RFTkNJTDgUR0xfREVQVEhfQ09NUE9ORU5UMTYUR0xfREVQVEhfQ09NUE9ORU5UMjQVR0xfREVQVEhfQ09NUE9ORU5UMzJGEUdMX1IxMUZfRzExRl9CMTBGB0dMX1IxNkYHR0xfUjE2SQhHTF9SMTZVSQdHTF9SMzJGB0dMX1IzMkkIR0xfUjMyVUkFR0xfUjgGR0xfUjhJB0dMX1I4VUkLR0xfUjhfU05PUk0IR0xfUkcxNkYIR0xfUkcxNkkJR0xfUkcxNlVJCEdMX1JHMzJGCEdMX1JHMzJJCUdMX1JHMzJVSQZHTF9SRzgHR0xfUkc4SQhHTF9SRzhVSQxHTF9SRzhfU05PUk0LR0xfUkdCMTBfQTINR0xfUkdCMTBfQTJVSQlHTF9SR0IxNkYJR0xfUkdCMTZJCkdMX1JHQjE2VUkJR0xfUkdCMzJGCUdMX1JHQjMySQpHTF9SR0IzMlVJCUdMX1JHQjU2NQpHTF9SR0I1X0ExB0dMX1JHQjgIR0xfUkdCOEkJR0xfUkdCOFVJDUdMX1JHQjhfU05PUk0KR0xfUkdCOV9FNQpHTF9SR0JBMTZGCkdMX1JHQkExNkkLR0xfUkdCQTE2VUkKR0xfUkdCQTMyRgpHTF9SR0JBMzJJC0dMX1JHQkEzMlVJCEdMX1JHQkE0CEdMX1JHQkE4CUdMX1JHQkE4SQpHTF9SR0JBOFVJDkdMX1JHQkE4X1NOT1JNCEdMX1NSR0I4D0dMX1NSR0I4X0FMUEhBOB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMBxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDYcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg4JUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTAkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NiRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDglR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4EUdMX1NURU5DSUxfSU5ERVg4AhFnbFRleFN0b3JhZ2UzREVYVAKOlwyOmQiOmwoRZ2xUZXhTdG9yYWdlM0RFWFQGdGFyZ2V0AxNHTF9URVhUVVJFXzJEX0FSUkFZDUdMX1RFWFRVUkVfM0QZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWY6dDI6fCI6hChFnbFRleFN0b3JhZ2UzREVYVA5pbnRlcm5hbGZvcm1hdF0VR0xfQ09NUFJFU1NFRF9SMTFfRUFDFkdMX0NPTVBSRVNTRURfUkcxMV9FQUMXR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIrR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMhxHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDHEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMdR0xfQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUMjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMYR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyLEdMX0NPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyE0dMX0RFUFRIMjRfU1RFTkNJTDgUR0xfREVQVEgzMkZfU1RFTkNJTDgUR0xfREVQVEhfQ09NUE9ORU5UMTYUR0xfREVQVEhfQ09NUE9ORU5UMjQVR0xfREVQVEhfQ09NUE9ORU5UMzJGEUdMX1IxMUZfRzExRl9CMTBGB0dMX1IxNkYHR0xfUjE2SQhHTF9SMTZVSQdHTF9SMzJGB0dMX1IzMkkIR0xfUjMyVUkFR0xfUjgGR0xfUjhJB0dMX1I4VUkLR0xfUjhfU05PUk0IR0xfUkcxNkYIR0xfUkcxNkkJR0xfUkcxNlVJCEdMX1JHMzJGCEdMX1JHMzJJCUdMX1JHMzJVSQZHTF9SRzgHR0xfUkc4SQhHTF9SRzhVSQxHTF9SRzhfU05PUk0LR0xfUkdCMTBfQTINR0xfUkdCMTBfQTJVSQlHTF9SR0IxNkYJR0xfUkdCMTZJCkdMX1JHQjE2VUkJR0xfUkdCMzJGCUdMX1JHQjMySQpHTF9SR0IzMlVJCUdMX1JHQjU2NQpHTF9SR0I1X0ExB0dMX1JHQjgIR0xfUkdCOEkJR0xfUkdCOFVJDUdMX1JHQjhfU05PUk0KR0xfUkdCOV9FNQpHTF9SR0JBMTZGCkdMX1JHQkExNkkLR0xfUkdCQTE2VUkKR0xfUkdCQTMyRgpHTF9SR0JBMzJJC0dMX1JHQkEzMlVJCEdMX1JHQkE0CEdMX1JHQkE4CUdMX1JHQkE4SQpHTF9SR0JBOFVJDkdMX1JHQkE4X1NOT1JNCEdMX1NSR0I4D0dMX1NSR0I4X0FMUEhBOB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMBxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDYcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg4JUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTAkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NiRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDglR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4EUdMX1NURU5DSUxfSU5ERVg4AhlnbFRleFN0b3JhZ2UzRE11bHRpc2FtcGxlAo6jDI6lCI6nChlnbFRleFN0b3JhZ2UzRE11bHRpc2FtcGxlBnRhcmdldAEfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWY6pDI6rCI6tChlnbFRleFN0b3JhZ2UzRE11bHRpc2FtcGxlDmludGVybmFsZm9ybWF0NxNHTF9ERVBUSDI0X1NURU5DSUw4FEdMX0RFUFRIMzJGX1NURU5DSUw4FEdMX0RFUFRIX0NPTVBPTkVOVDE2FEdMX0RFUFRIX0NPTVBPTkVOVDI0FUdMX0RFUFRIX0NPTVBPTkVOVDMyRhFHTF9SMTFGX0cxMUZfQjEwRgdHTF9SMTZGB0dMX1IxNkkIR0xfUjE2VUkHR0xfUjMyRgdHTF9SMzJJCEdMX1IzMlVJBUdMX1I4BkdMX1I4SQdHTF9SOFVJC0dMX1I4X1NOT1JNCEdMX1JHMTZGCEdMX1JHMTZJCUdMX1JHMTZVSQhHTF9SRzMyRghHTF9SRzMySQlHTF9SRzMyVUkGR0xfUkc4B0dMX1JHOEkIR0xfUkc4VUkMR0xfUkc4X1NOT1JNC0dMX1JHQjEwX0EyDUdMX1JHQjEwX0EyVUkJR0xfUkdCMTZGCUdMX1JHQjE2SQpHTF9SR0IxNlVJCUdMX1JHQjMyRglHTF9SR0IzMkkKR0xfUkdCMzJVSQlHTF9SR0I1NjUKR0xfUkdCNV9BMQdHTF9SR0I4CEdMX1JHQjhJCUdMX1JHQjhVSQ1HTF9SR0I4X1NOT1JNCkdMX1JHQjlfRTUKR0xfUkdCQTE2RgpHTF9SR0JBMTZJC0dMX1JHQkExNlVJCkdMX1JHQkEzMkYKR0xfUkdCQTMySQtHTF9SR0JBMzJVSQhHTF9SR0JBNAhHTF9SR0JBOAlHTF9SR0JBOEkKR0xfUkdCQThVSQ5HTF9SR0JBOF9TTk9STQhHTF9TUkdCOA9HTF9TUkdCOF9BTFBIQTgRR0xfU1RFTkNJTF9JTkRFWDgCHGdsVGV4U3RvcmFnZTNETXVsdGlzYW1wbGVPRVMCjq8MjrEIjrMKHGdsVGV4U3RvcmFnZTNETXVsdGlzYW1wbGVPRVMGdGFyZ2V0AR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZjrUMjrcIjrkKHGdsVGV4U3RvcmFnZTNETXVsdGlzYW1wbGVPRVMOaW50ZXJuYWxmb3JtYXQ3E0dMX0RFUFRIMjRfU1RFTkNJTDgUR0xfREVQVEgzMkZfU1RFTkNJTDgUR0xfREVQVEhfQ09NUE9ORU5UMTYUR0xfREVQVEhfQ09NUE9ORU5UMjQVR0xfREVQVEhfQ09NUE9ORU5UMzJGEUdMX1IxMUZfRzExRl9CMTBGB0dMX1IxNkYHR0xfUjE2SQhHTF9SMTZVSQdHTF9SMzJGB0dMX1IzMkkIR0xfUjMyVUkFR0xfUjgGR0xfUjhJB0dMX1I4VUkLR0xfUjhfU05PUk0IR0xfUkcxNkYIR0xfUkcxNkkJR0xfUkcxNlVJCEdMX1JHMzJGCEdMX1JHMzJJCUdMX1JHMzJVSQZHTF9SRzgHR0xfUkc4SQhHTF9SRzhVSQxHTF9SRzhfU05PUk0LR0xfUkdCMTBfQTINR0xfUkdCMTBfQTJVSQlHTF9SR0IxNkYJR0xfUkdCMTZJCkdMX1JHQjE2VUkJR0xfUkdCMzJGCUdMX1JHQjMySQpHTF9SR0IzMlVJCUdMX1JHQjU2NQpHTF9SR0I1X0ExB0dMX1JHQjgIR0xfUkdCOEkJR0xfUkdCOFVJDUdMX1JHQjhfU05PUk0KR0xfUkdCOV9FNQpHTF9SR0JBMTZGCkdMX1JHQkExNkkLR0xfUkdCQTE2VUkKR0xfUkdCQTMyRgpHTF9SR0JBMzJJC0dMX1JHQkEzMlVJCEdMX1JHQkE0CEdMX1JHQkE4CUdMX1JHQkE4SQpHTF9SR0JBOFVJDkdMX1JHQkE4X1NOT1JNCEdMX1NSR0I4D0dMX1NSR0I4X0FMUEhBOBFHTF9TVEVOQ0lMX0lOREVYOAIPZ2xUZXhTdWJJbWFnZTJEA467DI69CI6/Cg9nbFRleFN1YkltYWdlMkQGdGFyZ2V0Bw1HTF9URVhUVVJFXzJEHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWB5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1keR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWB5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1keR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ajsEMjsMIjsUKD2dsVGV4U3ViSW1hZ2UyRAZmb3JtYXQPCEdMX0FMUEhBDEdMX0xVTUlOQU5DRRJHTF9MVU1JTkFOQ0VfQUxQSEEGR0xfUkdCB0dMX1JHQkESR0xfREVQVEhfQ09NUE9ORU5UEEdMX0RFUFRIX1NURU5DSUwGR0xfUkVEDkdMX1JFRF9JTlRFR0VSBUdMX1JHD0dMX1JHQkFfSU5URUdFUg5HTF9SR0JfSU5URUdFUg1HTF9SR19JTlRFR0VSEEdMX1NURU5DSUxfSU5ERVgLR0xfQkdSQV9FWFSOxwyOyQiOywoPZ2xUZXhTdWJJbWFnZTJEBHR5cGU4EEdMX1VOU0lHTkVEX0JZVEUZR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNBlHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xF0dMX1VOU0lHTkVEX1NIT1JUXzVfNl81EUdMX0hBTEZfRkxPQVRfT0VTB0dMX0JZVEUIR0xfRkxPQVQhR0xfRkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWDUdMX0hBTEZfRkxPQVQGR0xfSU5UCEdMX1NIT1JUD0dMX1VOU0lHTkVEX0lOVB9HTF9VTlNJR05FRF9JTlRfMTBGXzExRl8xMUZfUkVWFEdMX1VOU0lHTkVEX0lOVF8yNF84HkdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVhtHTF9VTlNJR05FRF9JTlRfNV85XzlfOV9SRVYRR0xfVU5TSUdORURfU0hPUlQVR0xfQ09NUFJFU1NFRF9SMTFfRUFDHEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMXR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIYR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyK0dMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIsR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIWR0xfQ09NUFJFU1NFRF9SRzExX0VBQx1HTF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQxxHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDG0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzR4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDgjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDgcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NSRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDUcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NiRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDYcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OCRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDgdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTAlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTIQR0xfRVRDMV9SR0I4X09FUwIPZ2xUZXhTdWJJbWFnZTNEBI7NDI7PCI7RCg9nbFRleFN1YkltYWdlM0QGdGFyZ2V0AxNHTF9URVhUVVJFXzJEX0FSUkFZDUdMX1RFWFRVUkVfM0QZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWY7TDI7VCI7XCg9nbFRleFN1YkltYWdlM0QGZm9ybWF0DwhHTF9BTFBIQRJHTF9ERVBUSF9DT01QT05FTlQQR0xfREVQVEhfU1RFTkNJTAxHTF9MVU1JTkFOQ0USR0xfTFVNSU5BTkNFX0FMUEhBBkdMX1JFRA5HTF9SRURfSU5URUdFUgVHTF9SRwZHTF9SR0IHR0xfUkdCQQ9HTF9SR0JBX0lOVEVHRVIOR0xfUkdCX0lOVEVHRVINR0xfUkdfSU5URUdFUhBHTF9TVEVOQ0lMX0lOREVYC0dMX0JHUkFfRVhUjtkMjtsIjt0KD2dsVGV4U3ViSW1hZ2UzRAR0eXBlOBFHTF9IQUxGX0ZMT0FUX09FUwdHTF9CWVRFCEdMX0ZMT0FUIUdMX0ZMT0FUXzMyX1VOU0lHTkVEX0lOVF8yNF84X1JFVg1HTF9IQUxGX0ZMT0FUBkdMX0lOVAhHTF9TSE9SVBBHTF9VTlNJR05FRF9CWVRFD0dMX1VOU0lHTkVEX0lOVB9HTF9VTlNJR05FRF9JTlRfMTBGXzExRl8xMUZfUkVWFEdMX1VOU0lHTkVEX0lOVF8yNF84HkdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVhtHTF9VTlNJR05FRF9JTlRfNV85XzlfOV9SRVYRR0xfVU5TSUdORURfU0hPUlQZR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNBlHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xF0dMX1VOU0lHTkVEX1NIT1JUXzVfNl81FUdMX0NPTVBSRVNTRURfUjExX0VBQxxHTF9DT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDF0dMX0NPTVBSRVNTRURfUkdCOF9FVEMyGEdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMitHTF9DT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyLEdMX0NPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyFkdMX0NPTVBSRVNTRURfUkcxMV9FQUMdR0xfQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUMcR0xfQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQyNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQxtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg4I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDUkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDYkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDgkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4HUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTAdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTAlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMiVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyEEdMX0VUQzFfUkdCOF9PRVOO3wSO4QaO4wiO5QoPZ2xUZXhTdWJJbWFnZTNEBGRhdGEEAQACEmdsVGV4U3ViSW1hZ2UzRE9FUwSO5wyO6QiO6woSZ2xUZXhTdWJJbWFnZTNET0VTBnRhcmdldAMTR0xfVEVYVFVSRV8yRF9BUlJBWQ1HTF9URVhUVVJFXzNEGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVmO7QyO7wiO8QoSZ2xUZXhTdWJJbWFnZTNET0VTBmZvcm1hdA8IR0xfQUxQSEESR0xfREVQVEhfQ09NUE9ORU5UEEdMX0RFUFRIX1NURU5DSUwMR0xfTFVNSU5BTkNFEkdMX0xVTUlOQU5DRV9BTFBIQQZHTF9SRUQOR0xfUkVEX0lOVEVHRVIFR0xfUkcGR0xfUkdCB0dMX1JHQkEPR0xfUkdCQV9JTlRFR0VSDkdMX1JHQl9JTlRFR0VSDUdMX1JHX0lOVEVHRVIQR0xfU1RFTkNJTF9JTkRFWAtHTF9CR1JBX0VYVI7zDI71CI73ChJnbFRleFN1YkltYWdlM0RPRVMEdHlwZTgRR0xfSEFMRl9GTE9BVF9PRVMHR0xfQllURQhHTF9GTE9BVCFHTF9GTE9BVF8zMl9VTlNJR05FRF9JTlRfMjRfOF9SRVYNR0xfSEFMRl9GTE9BVAZHTF9JTlQIR0xfU0hPUlQQR0xfVU5TSUdORURfQllURQ9HTF9VTlNJR05FRF9JTlQfR0xfVU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFVhRHTF9VTlNJR05FRF9JTlRfMjRfOB5HTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYbR0xfVU5TSUdORURfSU5UXzVfOV85XzlfUkVWEUdMX1VOU0lHTkVEX1NIT1JUGUdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQZR0xfVU5TSUdORURfU0hPUlRfNV81XzVfMRdHTF9VTlNJR05FRF9TSE9SVF81XzZfNRVHTF9DT01QUkVTU0VEX1IxMV9FQUMcR0xfQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQxdHTF9DT01QUkVTU0VEX1JHQjhfRVRDMhhHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzIrR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMixHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMhZHTF9DT01QUkVTU0VEX1JHMTFfRUFDHUdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDHEdMX0NPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4OCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OBxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NRxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NhxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTAdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTIlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMhBHTF9FVEMxX1JHQjhfT0VTjvkEjvsGjv0Ijv8KEmdsVGV4U3ViSW1hZ2UzRE9FUwZwaXhlbHMEAQACG2dsVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncwGPAQyPAwiPBQobZ2xUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzCmJ1ZmZlck1vZGUCFkdMX0lOVEVSTEVBVkVEX0FUVFJJQlMTR0xfU0VQQVJBVEVfQVRUUklCUwILZ2xVbmlmb3JtMWYAAgxnbFVuaWZvcm0xZnYBjwcEjwkGjwsIjw0KDGdsVW5pZm9ybTFmdgZ2YWx1ZXMEAgIAAgtnbFVuaWZvcm0xaQACDGdsVW5pZm9ybTFpdgGPDwSPEQaPEwiPFQoMZ2xVbmlmb3JtMWl2BnZhbHVlcwQCAgACDGdsVW5pZm9ybTF1aQACDWdsVW5pZm9ybTF1aXYBjxcEjxkGjxsIjx0KDWdsVW5pZm9ybTF1aXYGdmFsdWVzBAICAAILZ2xVbmlmb3JtMmYAAgxnbFVuaWZvcm0yZnYBjx8EjyEGjyMIjyUKDGdsVW5pZm9ybTJmdgZ2YWx1ZXMEAgIAAgtnbFVuaWZvcm0yaQACDGdsVW5pZm9ybTJpdgGPJwSPKQaPKwiPLQoMZ2xVbmlmb3JtMml2BnZhbHVlcwQCAgACDGdsVW5pZm9ybTJ1aQACDWdsVW5pZm9ybTJ1aXYBjy8EjzEGjzMIjzUKDWdsVW5pZm9ybTJ1aXYGdmFsdWVzBAICAAILZ2xVbmlmb3JtM2YAAgxnbFVuaWZvcm0zZnYBjzcEjzkGjzsIjz0KDGdsVW5pZm9ybTNmdgZ2YWx1ZXMEAgIAAgtnbFVuaWZvcm0zaQACDGdsVW5pZm9ybTNpdgGPPwSPQQaPQwiPRQoMZ2xVbmlmb3JtM2l2BnZhbHVlcwQCAgACDGdsVW5pZm9ybTN1aQACDWdsVW5pZm9ybTN1aXYBj0cEj0kGj0sIj00KDWdsVW5pZm9ybTN1aXYGdmFsdWVzBAICAAILZ2xVbmlmb3JtNGYAAgxnbFVuaWZvcm00ZnYBj08Ej1EGj1MIj1UKDGdsVW5pZm9ybTRmdgZ2YWx1ZXMEAgIAAgtnbFVuaWZvcm00aQACDGdsVW5pZm9ybTRpdgGPVwSPWQaPWwiPXQoMZ2xVbmlmb3JtNGl2BnZhbHVlcwQCAgACDGdsVW5pZm9ybTR1aQACDWdsVW5pZm9ybTR1aXYBj18Ej2EGj2MIj2UKDWdsVW5pZm9ybTR1aXYGdmFsdWVzBAICAAISZ2xVbmlmb3JtTWF0cml4MmZ2AY9nBI9pBo9rCI9tChJnbFVuaWZvcm1NYXRyaXgyZnYGdmFsdWVzBAICAAIUZ2xVbmlmb3JtTWF0cml4MngzZnYBj28Ej3EGj3MIj3UKFGdsVW5pZm9ybU1hdHJpeDJ4M2Z2BnZhbHVlcwQCAgACFmdsVW5pZm9ybU1hdHJpeDJ4M2Z2TlYBj3cEj3kGj3sIj30KFmdsVW5pZm9ybU1hdHJpeDJ4M2Z2TlYFdmFsdWUEAgIAAhRnbFVuaWZvcm1NYXRyaXgyeDRmdgGPfwSPgQaPgwiPhQoUZ2xVbmlmb3JtTWF0cml4Mng0ZnYGdmFsdWVzBAICAAIWZ2xVbmlmb3JtTWF0cml4Mng0ZnZOVgGPhwSPiQaPiwiPjQoWZ2xVbmlmb3JtTWF0cml4Mng0ZnZOVgV2YWx1ZQQCAgACEmdsVW5pZm9ybU1hdHJpeDNmdgGPjwSPkQaPkwiPlQoSZ2xVbmlmb3JtTWF0cml4M2Z2BnZhbHVlcwQCAgACFGdsVW5pZm9ybU1hdHJpeDN4MmZ2AY+XBI+ZBo+bCI+dChRnbFVuaWZvcm1NYXRyaXgzeDJmdgZ2YWx1ZXMEAgIAAhZnbFVuaWZvcm1NYXRyaXgzeDJmdk5WAY+fBI+hBo+jCI+lChZnbFVuaWZvcm1NYXRyaXgzeDJmdk5WBXZhbHVlBAICAAIUZ2xVbmlmb3JtTWF0cml4M3g0ZnYBj6cEj6kGj6sIj60KFGdsVW5pZm9ybU1hdHJpeDN4NGZ2BnZhbHVlcwQCAgACFmdsVW5pZm9ybU1hdHJpeDN4NGZ2TlYBj68Ej7EGj7MIj7UKFmdsVW5pZm9ybU1hdHJpeDN4NGZ2TlYFdmFsdWUEAgIAAhJnbFVuaWZvcm1NYXRyaXg0ZnYBj7cEj7kGj7sIj70KEmdsVW5pZm9ybU1hdHJpeDRmdgZ2YWx1ZXMEAgIAAhRnbFVuaWZvcm1NYXRyaXg0eDJmdgGPvwSPwQaPwwiPxQoUZ2xVbmlmb3JtTWF0cml4NHgyZnYGdmFsdWVzBAICAAIWZ2xVbmlmb3JtTWF0cml4NHgyZnZOVgGPxwSPyQaPywiPzQoWZ2xVbmlmb3JtTWF0cml4NHgyZnZOVgV2YWx1ZQQCAgACFGdsVW5pZm9ybU1hdHJpeDR4M2Z2AY/PBI/RBo/TCI/VChRnbFVuaWZvcm1NYXRyaXg0eDNmdgZ2YWx1ZXMEAgIAAhZnbFVuaWZvcm1NYXRyaXg0eDNmdk5WAY/XBI/ZBo/bCI/dChZnbFVuaWZvcm1NYXRyaXg0eDNmdk5WBXZhbHVlBAICAAINZ2xVbm1hcEJ1ZmZlcgGP3wyP4QiP4woNZ2xVbm1hcEJ1ZmZlcgZ0YXJnZXQND0dMX0FSUkFZX0JVRkZFUhdHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUhNHTF9DT1BZX1JFQURfQlVGRkVSFEdMX0NPUFlfV1JJVEVfQlVGRkVSFEdMX1BJWEVMX1BBQ0tfQlVGRkVSFkdMX1BJWEVMX1VOUEFDS19CVUZGRVIcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUhFHTF9VTklGT1JNX0JVRkZFUhhHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVIbR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSF0dMX0RSQVdfSU5ESVJFQ1RfQlVGRkVSGEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUhFHTF9URVhUVVJFX0JVRkZFUgIQZ2xVbm1hcEJ1ZmZlck9FUwGP5QyP5wiP6QoQZ2xVbm1hcEJ1ZmZlck9FUwZ0YXJnZXQND0dMX0FSUkFZX0JVRkZFUhdHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUhNHTF9DT1BZX1JFQURfQlVGRkVSFEdMX0NPUFlfV1JJVEVfQlVGRkVSFEdMX1BJWEVMX1BBQ0tfQlVGRkVSFkdMX1BJWEVMX1VOUEFDS19CVUZGRVIcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUhFHTF9VTklGT1JNX0JVRkZFUhhHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVIbR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSF0dMX0RSQVdfSU5ESVJFQ1RfQlVGRkVSGEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUhFHTF9URVhUVVJFX0JVRkZFUgISZ2xVc2VQcm9ncmFtU3RhZ2VzAY/rDI/tCI/vChJnbFVzZVByb2dyYW1TdGFnZXMGc3RhZ2VzBBJHTF9BTExfU0hBREVSX0JJVFMVR0xfQ09NUFVURV9TSEFERVJfQklUFkdMX0ZSQUdNRU5UX1NIQURFUl9CSVQUR0xfVkVSVEVYX1NIQURFUl9CSVQCFGdsVmVydGV4QXR0cmliRm9ybWF0AY/xDI/zCI/1ChRnbFZlcnRleEF0dHJpYkZvcm1hdAR0eXBlDAdHTF9CWVRFBkdMX0lOVAhHTF9TSE9SVBBHTF9VTlNJR05FRF9CWVRFD0dMX1VOU0lHTkVEX0lOVBFHTF9VTlNJR05FRF9TSE9SVAhHTF9GSVhFRAhHTF9GTE9BVBFHTF9IQUxGX0ZMT0FUX09FUw1HTF9IQUxGX0ZMT0FUFUdMX0lOVF8yXzEwXzEwXzEwX1JFVh5HTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYCFWdsVmVydGV4QXR0cmliSUZvcm1hdAGP9wyP+QiP+woVZ2xWZXJ0ZXhBdHRyaWJJRm9ybWF0BHR5cGUMB0dMX0JZVEUGR0xfSU5UCEdMX1NIT1JUEEdMX1VOU0lHTkVEX0JZVEUPR0xfVU5TSUdORURfSU5UEUdMX1VOU0lHTkVEX1NIT1JUCEdMX0ZJWEVECEdMX0ZMT0FUEUdMX0hBTEZfRkxPQVRfT0VTDUdMX0hBTEZfRkxPQVQVR0xfSU5UXzJfMTBfMTBfMTBfUkVWHkdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVgIWZ2xWZXJ0ZXhBdHRyaWJJUG9pbnRlcgGP/QyP/wiQAQoWZ2xWZXJ0ZXhBdHRyaWJJUG9pbnRlcgR0eXBlDAdHTF9CWVRFBkdMX0lOVAhHTF9TSE9SVBBHTF9VTlNJR05FRF9CWVRFD0dMX1VOU0lHTkVEX0lOVBFHTF9VTlNJR05FRF9TSE9SVAhHTF9GSVhFRAhHTF9GTE9BVBFHTF9IQUxGX0ZMT0FUX09FUw1HTF9IQUxGX0ZMT0FUFUdMX0lOVF8yXzEwXzEwXzEwX1JFVh5HTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYCFWdsVmVydGV4QXR0cmliUG9pbnRlcgGQAwyQBQiQBwoVZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyBHR5cGUMB0dMX0JZVEUGR0xfSU5UCEdMX1NIT1JUEEdMX1VOU0lHTkVEX0JZVEUPR0xfVU5TSUdORURfSU5UEUdMX1VOU0lHTkVEX1NIT1JUCEdMX0ZJWEVECEdMX0ZMT0FUEUdMX0hBTEZfRkxPQVRfT0VTDUdMX0hBTEZfRkxPQVQVR0xfSU5UXzJfMTBfMTBfMTBfUkVWHkdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVg==`
+const snippets_base64 = `AwhzbmlwcGV0cwxBdG9tU25pcHBldHMAArAGAxNDR1NHZXRTdXJmYWNlQm91bmRzAQMFCHNuaXBwZXRzDE9ic2VydmF0aW9ucwACAwZQBQcIc25pcHBldHMIcGFydFBhdGgAAgNQBwkIc25pcHBldHMJZmllbGRQYXRoAAIDsAkLCHNuaXBwZXRzDHJlbGF0aXZlUGF0aAABsBNDR1NHZXRTdXJmYWNlQm91bmRzBmJvdW5kcwQBAgIPZWdsQ2hvb3NlQ29uZmlnAgsNCHNuaXBwZXRzBkxhYmVscwACAwawDQYPBhEIEwoPZWdsQ2hvb3NlQ29uZmlnC2F0dHJpYl9saXN0BAIBCEVHTF9OT05FFQQXBhkIGwoPZWdsQ2hvb3NlQ29uZmlnB2NvbmZpZ3MEAQICEGVnbENyZWF0ZUNvbnRleHQBHQwfBiEGIwglChBlZ2xDcmVhdGVDb250ZXh0C2F0dHJpYl9saXN0BAIBCEVHTF9OT05FAhFlZ2xDcmVhdGVJbWFnZUtIUgInDCkIKwoRZWdsQ3JlYXRlSW1hZ2VLSFIGdGFyZ2V0ARlFR0xfTkFUSVZFX0JVRkZFUl9BTkRST0lELQwvBjEGMwg1ChFlZ2xDcmVhdGVJbWFnZUtIUgthdHRyaWJfbGlzdAQCAQhFR0xfTk9ORQIiZWdsQ3JlYXRlTmF0aXZlQ2xpZW50QnVmZmVyQU5EUk9JRAE3DDkGOwY9CD8KImVnbENyZWF0ZU5hdGl2ZUNsaWVudEJ1ZmZlckFORFJPSUQLYXR0cmliX2xpc3QEAgEIRUdMX05PTkUCIGVnbENyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyAUEMQwZFBkcISQogZWdsQ3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXILYXR0cmliX2xpc3QEAgEIRUdMX05PTkUCF2VnbENyZWF0ZVBidWZmZXJTdXJmYWNlAUsMTQZPBlEIUwoXZWdsQ3JlYXRlUGJ1ZmZlclN1cmZhY2ULYXR0cmliX2xpc3QEAgEIRUdMX05PTkUCFmVnbENyZWF0ZVBpeG1hcFN1cmZhY2UBVQxXBlkGWwhdChZlZ2xDcmVhdGVQaXhtYXBTdXJmYWNlC2F0dHJpYl9saXN0BAIBCEVHTF9OT05FAhBlZ2xDcmVhdGVTeW5jS0hSAV8MYQZjBmUIZwoQZWdsQ3JlYXRlU3luY0tIUgthdHRyaWJfbGlzdAQCAQhFR0xfTk9ORQIWZWdsQ3JlYXRlV2luZG93U3VyZmFjZQFpDGsGbQZvCHEKFmVnbENyZWF0ZVdpbmRvd1N1cmZhY2ULYXR0cmliX2xpc3QEAgEIRUdMX05PTkUCDWVnbEdldENvbmZpZ3MBcwR1BncIeQoNZWdsR2V0Q29uZmlncwdjb25maWdzBAECAg5lZ2xNYWtlQ3VycmVudAACG2VnbFN3YXBCdWZmZXJzV2l0aERhbWFnZUtIUgF7BH0GfwiAgQobZWdsU3dhcEJ1ZmZlcnNXaXRoRGFtYWdlS0hSBXJlY3RzBAEAAg9nbEFjdGl2ZVRleHR1cmUBgIMMgIUIgIcKD2dsQWN0aXZlVGV4dHVyZQR1bml0IAtHTF9URVhUVVJFMAtHTF9URVhUVVJFMQxHTF9URVhUVVJFMTAMR0xfVEVYVFVSRTExDEdMX1RFWFRVUkUxMgxHTF9URVhUVVJFMTMMR0xfVEVYVFVSRTE0DEdMX1RFWFRVUkUxNQxHTF9URVhUVVJFMTYMR0xfVEVYVFVSRTE3DEdMX1RFWFRVUkUxOAxHTF9URVhUVVJFMTkLR0xfVEVYVFVSRTIMR0xfVEVYVFVSRTIwDEdMX1RFWFRVUkUyMQxHTF9URVhUVVJFMjIMR0xfVEVYVFVSRTIzDEdMX1RFWFRVUkUyNAxHTF9URVhUVVJFMjUMR0xfVEVYVFVSRTI2DEdMX1RFWFRVUkUyNwxHTF9URVhUVVJFMjgMR0xfVEVYVFVSRTI5C0dMX1RFWFRVUkUzDEdMX1RFWFRVUkUzMAxHTF9URVhUVVJFMzELR0xfVEVYVFVSRTQLR0xfVEVYVFVSRTULR0xfVEVYVFVSRTYLR0xfVEVYVFVSRTcLR0xfVEVYVFVSRTgLR0xfVEVYVFVSRTkCDGdsQmVnaW5RdWVyeQGAiQyAiwiAjQoMZ2xCZWdpblF1ZXJ5BnRhcmdldAQVR0xfQU5ZX1NBTVBMRVNfUEFTU0VEIkdMX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkUoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1BSSU1JVElWRVNfV1JJVFRFThdHTF9QUklNSVRJVkVTX0dFTkVSQVRFRAIYZ2xCZWdpblRyYW5zZm9ybUZlZWRiYWNrAYCPDICRCICTChhnbEJlZ2luVHJhbnNmb3JtRmVlZGJhY2sNcHJpbWl0aXZlTW9kZQMIR0xfTElORVMJR0xfUE9JTlRTDEdMX1RSSUFOR0xFUwIMZ2xCaW5kQnVmZmVyAYCVDICXCICZCgxnbEJpbmRCdWZmZXIGdGFyZ2V0DQ9HTF9BUlJBWV9CVUZGRVIXR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVITR0xfQ09QWV9SRUFEX0JVRkZFUhRHTF9DT1BZX1dSSVRFX0JVRkZFUhRHTF9QSVhFTF9QQUNLX0JVRkZFUhZHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSHEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIRR0xfVU5JRk9STV9CVUZGRVIYR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSG0dMX0RJU1BBVENIX0lORElSRUNUX0JVRkZFUhdHTF9EUkFXX0lORElSRUNUX0JVRkZFUhhHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVIRR0xfVEVYVFVSRV9CVUZGRVICEGdsQmluZEJ1ZmZlckJhc2UBgJsMgJ0IgJ8KEGdsQmluZEJ1ZmZlckJhc2UGdGFyZ2V0BBxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSEUdMX1VOSUZPUk1fQlVGRkVSGEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUhhHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVICEWdsQmluZEJ1ZmZlclJhbmdlAYChDICjCIClChFnbEJpbmRCdWZmZXJSYW5nZQZ0YXJnZXQEHEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIRR0xfVU5JRk9STV9CVUZGRVIYR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSGEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUgIRZ2xCaW5kRnJhbWVidWZmZXIBgKcMgKkIgKsKEWdsQmluZEZyYW1lYnVmZmVyBnRhcmdldAMTR0xfUkVBRF9GUkFNRUJVRkZFUhNHTF9EUkFXX0ZSQU1FQlVGRkVSDkdMX0ZSQU1FQlVGRkVSAhJnbEJpbmRJbWFnZVRleHR1cmUCgK0MgK8IgLEKEmdsQmluZEltYWdlVGV4dHVyZQZhY2Nlc3MDDEdMX1JFQURfT05MWQ1HTF9SRUFEX1dSSVRFDUdMX1dSSVRFX09OTFmAswyAtQiAtwoSZ2xCaW5kSW1hZ2VUZXh0dXJlBmZvcm1hdA0HR0xfUjMyRgdHTF9SMzJJCEdMX1IzMlVJCkdMX1JHQkExNkYKR0xfUkdCQTE2SQtHTF9SR0JBMTZVSQpHTF9SR0JBMzJGCkdMX1JHQkEzMkkLR0xfUkdCQTMyVUkIR0xfUkdCQTgJR0xfUkdCQThJCkdMX1JHQkE4VUkOR0xfUkdCQThfU05PUk0CEmdsQmluZFJlbmRlcmJ1ZmZlcgGAuQyAuwiAvQoSZ2xCaW5kUmVuZGVyYnVmZmVyBnRhcmdldAEPR0xfUkVOREVSQlVGRkVSAg1nbEJpbmRTYW1wbGVyAYC/DIDBCIDDCg1nbEJpbmRTYW1wbGVyBWluZGV4AQtHTF9URVhUVVJFMAINZ2xCaW5kVGV4dHVyZQGAxQyAxwiAyQoNZ2xCaW5kVGV4dHVyZQZ0YXJnZXQJF0dMX1RFWFRVUkVfRVhURVJOQUxfT0VTDUdMX1RFWFRVUkVfMkQTR0xfVEVYVFVSRV8yRF9BUlJBWRlHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFH0dMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVkNR0xfVEVYVFVSRV8zRBFHTF9URVhUVVJFX0JVRkZFUhNHTF9URVhUVVJFX0NVQkVfTUFQGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVkCF2dsQmluZFRyYW5zZm9ybUZlZWRiYWNrAYDLDIDNCIDPChdnbEJpbmRUcmFuc2Zvcm1GZWVkYmFjawZ0YXJnZXQBFUdMX1RSQU5TRk9STV9GRUVEQkFDSwIPZ2xCbGVuZEVxdWF0aW9uAYDRDIDTCIDVCg9nbEJsZW5kRXF1YXRpb24IZXF1YXRpb24FC0dMX0ZVTkNfQUREGEdMX0ZVTkNfUkVWRVJTRV9TVUJUUkFDVBBHTF9GVU5DX1NVQlRSQUNUBkdMX01BWAZHTF9NSU4CF2dsQmxlbmRFcXVhdGlvblNlcGFyYXRlAoDXDIDZCIDbChdnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZQNyZ2IFC0dMX0ZVTkNfQUREGEdMX0ZVTkNfUkVWRVJTRV9TVUJUUkFDVBBHTF9GVU5DX1NVQlRSQUNUBkdMX01BWAZHTF9NSU6A3QyA3wiA4QoXZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUFYWxwaGEFC0dMX0ZVTkNfQUREGEdMX0ZVTkNfUkVWRVJTRV9TVUJUUkFDVBBHTF9GVU5DX1NVQlRSQUNUBkdMX01BWAZHTF9NSU4CGGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlaQKA4wyA5QiA5woYZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVpB21vZGVSR0IFC0dMX0ZVTkNfQUREGEdMX0ZVTkNfUkVWRVJTRV9TVUJUUkFDVBBHTF9GVU5DX1NVQlRSQUNUBkdMX01BWAZHTF9NSU6A6QyA6wiA7QoYZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVpCW1vZGVBbHBoYQULR0xfRlVOQ19BREQYR0xfRlVOQ19SRVZFUlNFX1NVQlRSQUNUEEdMX0ZVTkNfU1VCVFJBQ1QGR0xfTUFYBkdMX01JTgIbZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVpRVhUAoDvDIDxCIDzChtnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZWlFWFQHbW9kZVJHQgULR0xfRlVOQ19BREQYR0xfRlVOQ19SRVZFUlNFX1NVQlRSQUNUEEdMX0ZVTkNfU1VCVFJBQ1QGR0xfTUFYBkdMX01JToD1DID3CID5ChtnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZWlFWFQJbW9kZUFscGhhBQtHTF9GVU5DX0FERBhHTF9GVU5DX1JFVkVSU0VfU1VCVFJBQ1QQR0xfRlVOQ19TVUJUUkFDVAZHTF9NQVgGR0xfTUlOAhtnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZWlPRVMCgPsMgP0IgP8KG2dsQmxlbmRFcXVhdGlvblNlcGFyYXRlaU9FUwdtb2RlUkdCBQtHTF9GVU5DX0FERBhHTF9GVU5DX1JFVkVSU0VfU1VCVFJBQ1QQR0xfRlVOQ19TVUJUUkFDVAZHTF9NQVgGR0xfTUlOgQEMgQMIgQUKG2dsQmxlbmRFcXVhdGlvblNlcGFyYXRlaU9FUwltb2RlQWxwaGEFC0dMX0ZVTkNfQUREGEdMX0ZVTkNfUkVWRVJTRV9TVUJUUkFDVBBHTF9GVU5DX1NVQlRSQUNUBkdMX01BWAZHTF9NSU4CEGdsQmxlbmRFcXVhdGlvbmkBgQcMgQkIgQsKEGdsQmxlbmRFcXVhdGlvbmkEbW9kZQULR0xfRlVOQ19BREQYR0xfRlVOQ19SRVZFUlNFX1NVQlRSQUNUEEdMX0ZVTkNfU1VCVFJBQ1QGR0xfTUFYBkdMX01JTgITZ2xCbGVuZEVxdWF0aW9uaUVYVAGBDQyBDwiBEQoTZ2xCbGVuZEVxdWF0aW9uaUVYVARtb2RlBQtHTF9GVU5DX0FERBhHTF9GVU5DX1JFVkVSU0VfU1VCVFJBQ1QQR0xfRlVOQ19TVUJUUkFDVAZHTF9NQVgGR0xfTUlOAhNnbEJsZW5kRXF1YXRpb25pT0VTAYETDIEVCIEXChNnbEJsZW5kRXF1YXRpb25pT0VTBG1vZGUFC0dMX0ZVTkNfQUREGEdMX0ZVTkNfUkVWRVJTRV9TVUJUUkFDVBBHTF9GVU5DX1NVQlRSQUNUBkdMX01BWAZHTF9NSU4CC2dsQmxlbmRGdW5jAoEZDIEbCIEdCgtnbEJsZW5kRnVuYwpzcmNfZmFjdG9yDxFHTF9DT05TVEFOVF9BTFBIQRFHTF9DT05TVEFOVF9DT0xPUgxHTF9EU1RfQUxQSEEMR0xfRFNUX0NPTE9SBkdMX09ORRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEbR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SFkdMX09ORV9NSU5VU19EU1RfQUxQSEEWR0xfT05FX01JTlVTX0RTVF9DT0xPUhZHTF9PTkVfTUlOVVNfU1JDX0FMUEhBFkdMX09ORV9NSU5VU19TUkNfQ09MT1IMR0xfU1JDX0FMUEhBFUdMX1NSQ19BTFBIQV9TQVRVUkFURQxHTF9TUkNfQ09MT1IHR0xfWkVST4EfDIEhCIEjCgtnbEJsZW5kRnVuYwpkc3RfZmFjdG9yDxFHTF9DT05TVEFOVF9BTFBIQRFHTF9DT05TVEFOVF9DT0xPUgxHTF9EU1RfQUxQSEEMR0xfRFNUX0NPTE9SBkdMX09ORRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEbR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SFkdMX09ORV9NSU5VU19EU1RfQUxQSEEWR0xfT05FX01JTlVTX0RTVF9DT0xPUhZHTF9PTkVfTUlOVVNfU1JDX0FMUEhBFkdMX09ORV9NSU5VU19TUkNfQ09MT1IMR0xfU1JDX0FMUEhBFUdMX1NSQ19BTFBIQV9TQVRVUkFURQxHTF9TUkNfQ09MT1IHR0xfWkVSTwITZ2xCbGVuZEZ1bmNTZXBhcmF0ZQSBJQyBJwiBKQoTZ2xCbGVuZEZ1bmNTZXBhcmF0ZQ5zcmNfZmFjdG9yX3JnYg8RR0xfQ09OU1RBTlRfQUxQSEERR0xfQ09OU1RBTlRfQ09MT1IMR0xfRFNUX0FMUEhBDEdMX0RTVF9DT0xPUgZHTF9PTkUbR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBG0dMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUhZHTF9PTkVfTUlOVVNfRFNUX0FMUEhBFkdMX09ORV9NSU5VU19EU1RfQ09MT1IWR0xfT05FX01JTlVTX1NSQ19BTFBIQRZHTF9PTkVfTUlOVVNfU1JDX0NPTE9SDEdMX1NSQ19BTFBIQRVHTF9TUkNfQUxQSEFfU0FUVVJBVEUMR0xfU1JDX0NPTE9SB0dMX1pFUk+BKwyBLQiBLwoTZ2xCbGVuZEZ1bmNTZXBhcmF0ZQ5kc3RfZmFjdG9yX3JnYg8RR0xfQ09OU1RBTlRfQUxQSEERR0xfQ09OU1RBTlRfQ09MT1IMR0xfRFNUX0FMUEhBDEdMX0RTVF9DT0xPUgZHTF9PTkUbR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBG0dMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUhZHTF9PTkVfTUlOVVNfRFNUX0FMUEhBFkdMX09ORV9NSU5VU19EU1RfQ09MT1IWR0xfT05FX01JTlVTX1NSQ19BTFBIQRZHTF9PTkVfTUlOVVNfU1JDX0NPTE9SDEdMX1NSQ19BTFBIQRVHTF9TUkNfQUxQSEFfU0FUVVJBVEUMR0xfU1JDX0NPTE9SB0dMX1pFUk+BMQyBMwiBNQoTZ2xCbGVuZEZ1bmNTZXBhcmF0ZRBzcmNfZmFjdG9yX2FscGhhDxFHTF9DT05TVEFOVF9BTFBIQRFHTF9DT05TVEFOVF9DT0xPUgxHTF9EU1RfQUxQSEEMR0xfRFNUX0NPTE9SBkdMX09ORRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEbR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SFkdMX09ORV9NSU5VU19EU1RfQUxQSEEWR0xfT05FX01JTlVTX0RTVF9DT0xPUhZHTF9PTkVfTUlOVVNfU1JDX0FMUEhBFkdMX09ORV9NSU5VU19TUkNfQ09MT1IMR0xfU1JDX0FMUEhBFUdMX1NSQ19BTFBIQV9TQVRVUkFURQxHTF9TUkNfQ09MT1IHR0xfWkVST4E3DIE5CIE7ChNnbEJsZW5kRnVuY1NlcGFyYXRlEGRzdF9mYWN0b3JfYWxwaGEPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPAhRnbEJsZW5kRnVuY1NlcGFyYXRlaQSBPQyBPwiBQQoUZ2xCbGVuZEZ1bmNTZXBhcmF0ZWkGc3JjUkdCDxFHTF9DT05TVEFOVF9BTFBIQRFHTF9DT05TVEFOVF9DT0xPUgxHTF9EU1RfQUxQSEEMR0xfRFNUX0NPTE9SBkdMX09ORRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEbR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SFkdMX09ORV9NSU5VU19EU1RfQUxQSEEWR0xfT05FX01JTlVTX0RTVF9DT0xPUhZHTF9PTkVfTUlOVVNfU1JDX0FMUEhBFkdMX09ORV9NSU5VU19TUkNfQ09MT1IMR0xfU1JDX0FMUEhBFUdMX1NSQ19BTFBIQV9TQVRVUkFURQxHTF9TUkNfQ09MT1IHR0xfWkVST4FDDIFFCIFHChRnbEJsZW5kRnVuY1NlcGFyYXRlaQZkc3RSR0IPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPgUkMgUsIgU0KFGdsQmxlbmRGdW5jU2VwYXJhdGVpCHNyY0FscGhhDxFHTF9DT05TVEFOVF9BTFBIQRFHTF9DT05TVEFOVF9DT0xPUgxHTF9EU1RfQUxQSEEMR0xfRFNUX0NPTE9SBkdMX09ORRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEbR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SFkdMX09ORV9NSU5VU19EU1RfQUxQSEEWR0xfT05FX01JTlVTX0RTVF9DT0xPUhZHTF9PTkVfTUlOVVNfU1JDX0FMUEhBFkdMX09ORV9NSU5VU19TUkNfQ09MT1IMR0xfU1JDX0FMUEhBFUdMX1NSQ19BTFBIQV9TQVRVUkFURQxHTF9TUkNfQ09MT1IHR0xfWkVST4FPDIFRCIFTChRnbEJsZW5kRnVuY1NlcGFyYXRlaQhkc3RBbHBoYQ8RR0xfQ09OU1RBTlRfQUxQSEERR0xfQ09OU1RBTlRfQ09MT1IMR0xfRFNUX0FMUEhBDEdMX0RTVF9DT0xPUgZHTF9PTkUbR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBG0dMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUhZHTF9PTkVfTUlOVVNfRFNUX0FMUEhBFkdMX09ORV9NSU5VU19EU1RfQ09MT1IWR0xfT05FX01JTlVTX1NSQ19BTFBIQRZHTF9PTkVfTUlOVVNfU1JDX0NPTE9SDEdMX1NSQ19BTFBIQRVHTF9TUkNfQUxQSEFfU0FUVVJBVEUMR0xfU1JDX0NPTE9SB0dMX1pFUk8CF2dsQmxlbmRGdW5jU2VwYXJhdGVpRVhUBIFVDIFXCIFZChdnbEJsZW5kRnVuY1NlcGFyYXRlaUVYVAZzcmNSR0IPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPgVsMgV0IgV8KF2dsQmxlbmRGdW5jU2VwYXJhdGVpRVhUBmRzdFJHQg8RR0xfQ09OU1RBTlRfQUxQSEERR0xfQ09OU1RBTlRfQ09MT1IMR0xfRFNUX0FMUEhBDEdMX0RTVF9DT0xPUgZHTF9PTkUbR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBG0dMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUhZHTF9PTkVfTUlOVVNfRFNUX0FMUEhBFkdMX09ORV9NSU5VU19EU1RfQ09MT1IWR0xfT05FX01JTlVTX1NSQ19BTFBIQRZHTF9PTkVfTUlOVVNfU1JDX0NPTE9SDEdMX1NSQ19BTFBIQRVHTF9TUkNfQUxQSEFfU0FUVVJBVEUMR0xfU1JDX0NPTE9SB0dMX1pFUk+BYQyBYwiBZQoXZ2xCbGVuZEZ1bmNTZXBhcmF0ZWlFWFQIc3JjQWxwaGEPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPgWcMgWkIgWsKF2dsQmxlbmRGdW5jU2VwYXJhdGVpRVhUCGRzdEFscGhhDxFHTF9DT05TVEFOVF9BTFBIQRFHTF9DT05TVEFOVF9DT0xPUgxHTF9EU1RfQUxQSEEMR0xfRFNUX0NPTE9SBkdMX09ORRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEbR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SFkdMX09ORV9NSU5VU19EU1RfQUxQSEEWR0xfT05FX01JTlVTX0RTVF9DT0xPUhZHTF9PTkVfTUlOVVNfU1JDX0FMUEhBFkdMX09ORV9NSU5VU19TUkNfQ09MT1IMR0xfU1JDX0FMUEhBFUdMX1NSQ19BTFBIQV9TQVRVUkFURQxHTF9TUkNfQ09MT1IHR0xfWkVSTwIXZ2xCbGVuZEZ1bmNTZXBhcmF0ZWlPRVMEgW0MgW8IgXEKF2dsQmxlbmRGdW5jU2VwYXJhdGVpT0VTBnNyY1JHQg8RR0xfQ09OU1RBTlRfQUxQSEERR0xfQ09OU1RBTlRfQ09MT1IMR0xfRFNUX0FMUEhBDEdMX0RTVF9DT0xPUgZHTF9PTkUbR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBG0dMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUhZHTF9PTkVfTUlOVVNfRFNUX0FMUEhBFkdMX09ORV9NSU5VU19EU1RfQ09MT1IWR0xfT05FX01JTlVTX1NSQ19BTFBIQRZHTF9PTkVfTUlOVVNfU1JDX0NPTE9SDEdMX1NSQ19BTFBIQRVHTF9TUkNfQUxQSEFfU0FUVVJBVEUMR0xfU1JDX0NPTE9SB0dMX1pFUk+BcwyBdQiBdwoXZ2xCbGVuZEZ1bmNTZXBhcmF0ZWlPRVMGZHN0UkdCDxFHTF9DT05TVEFOVF9BTFBIQRFHTF9DT05TVEFOVF9DT0xPUgxHTF9EU1RfQUxQSEEMR0xfRFNUX0NPTE9SBkdMX09ORRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEbR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SFkdMX09ORV9NSU5VU19EU1RfQUxQSEEWR0xfT05FX01JTlVTX0RTVF9DT0xPUhZHTF9PTkVfTUlOVVNfU1JDX0FMUEhBFkdMX09ORV9NSU5VU19TUkNfQ09MT1IMR0xfU1JDX0FMUEhBFUdMX1NSQ19BTFBIQV9TQVRVUkFURQxHTF9TUkNfQ09MT1IHR0xfWkVST4F5DIF7CIF9ChdnbEJsZW5kRnVuY1NlcGFyYXRlaU9FUwhzcmNBbHBoYQ8RR0xfQ09OU1RBTlRfQUxQSEERR0xfQ09OU1RBTlRfQ09MT1IMR0xfRFNUX0FMUEhBDEdMX0RTVF9DT0xPUgZHTF9PTkUbR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBG0dMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUhZHTF9PTkVfTUlOVVNfRFNUX0FMUEhBFkdMX09ORV9NSU5VU19EU1RfQ09MT1IWR0xfT05FX01JTlVTX1NSQ19BTFBIQRZHTF9PTkVfTUlOVVNfU1JDX0NPTE9SDEdMX1NSQ19BTFBIQRVHTF9TUkNfQUxQSEFfU0FUVVJBVEUMR0xfU1JDX0NPTE9SB0dMX1pFUk+BfwyBgQiBgwoXZ2xCbGVuZEZ1bmNTZXBhcmF0ZWlPRVMIZHN0QWxwaGEPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPAgxnbEJsZW5kRnVuY2kCgYUMgYcIgYkKDGdsQmxlbmRGdW5jaQNzcmMPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPgYsMgY0IgY8KDGdsQmxlbmRGdW5jaQNkc3QPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPAg9nbEJsZW5kRnVuY2lFWFQCgZEMgZMIgZUKD2dsQmxlbmRGdW5jaUVYVANzcmMPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPgZcMgZkIgZsKD2dsQmxlbmRGdW5jaUVYVANkc3QPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPAg9nbEJsZW5kRnVuY2lPRVMCgZ0MgZ8IgaEKD2dsQmxlbmRGdW5jaU9FUwNzcmMPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPgaMMgaUIgacKD2dsQmxlbmRGdW5jaU9FUwNkc3QPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPAhFnbEJsaXRGcmFtZWJ1ZmZlcgKBqQyBqwiBrQoRZ2xCbGl0RnJhbWVidWZmZXIEbWFzawMTR0xfQ09MT1JfQlVGRkVSX0JJVBNHTF9ERVBUSF9CVUZGRVJfQklUFUdMX1NURU5DSUxfQlVGRkVSX0JJVIGvDIGxCIGzChFnbEJsaXRGcmFtZWJ1ZmZlcgZmaWx0ZXICCUdMX0xJTkVBUgpHTF9ORUFSRVNUAhNnbEJsaXRGcmFtZWJ1ZmZlck5WAoG1DIG3CIG5ChNnbEJsaXRGcmFtZWJ1ZmZlck5WBG1hc2sDE0dMX0NPTE9SX0JVRkZFUl9CSVQTR0xfREVQVEhfQlVGRkVSX0JJVBVHTF9TVEVOQ0lMX0JVRkZFUl9CSVSBuwyBvQiBvwoTZ2xCbGl0RnJhbWVidWZmZXJOVgZmaWx0ZXICCUdMX0xJTkVBUgpHTF9ORUFSRVNUAgxnbEJ1ZmZlckRhdGECgcEMgcMIgcUKDGdsQnVmZmVyRGF0YQZ0YXJnZXQND0dMX0FSUkFZX0JVRkZFUhdHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUhNHTF9DT1BZX1JFQURfQlVGRkVSFEdMX0NPUFlfV1JJVEVfQlVGRkVSFEdMX1BJWEVMX1BBQ0tfQlVGRkVSFkdMX1BJWEVMX1VOUEFDS19CVUZGRVIcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUhFHTF9VTklGT1JNX0JVRkZFUhhHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVIbR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSF0dMX0RSQVdfSU5ESVJFQ1RfQlVGRkVSGEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUhFHTF9URVhUVVJFX0JVRkZFUoHHDIHJCIHLCgxnbEJ1ZmZlckRhdGEFdXNhZ2UJD0dMX0RZTkFNSUNfRFJBVw5HTF9TVEFUSUNfRFJBVw5HTF9TVFJFQU1fRFJBVw9HTF9EWU5BTUlDX0NPUFkPR0xfRFlOQU1JQ19SRUFEDkdMX1NUQVRJQ19DT1BZDkdMX1NUQVRJQ19SRUFEDkdMX1NUUkVBTV9DT1BZDkdMX1NUUkVBTV9SRUFEAg9nbEJ1ZmZlclN1YkRhdGECgc0Mgc8IgdEKD2dsQnVmZmVyU3ViRGF0YQZ0YXJnZXQND0dMX0FSUkFZX0JVRkZFUhdHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUhNHTF9DT1BZX1JFQURfQlVGRkVSFEdMX0NPUFlfV1JJVEVfQlVGRkVSFEdMX1BJWEVMX1BBQ0tfQlVGRkVSFkdMX1BJWEVMX1VOUEFDS19CVUZGRVIcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUhFHTF9VTklGT1JNX0JVRkZFUhhHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVIbR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSF0dMX0RSQVdfSU5ESVJFQ1RfQlVGRkVSGEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUhFHTF9URVhUVVJFX0JVRkZFUoHTBIHVBoHXCIHZCg9nbEJ1ZmZlclN1YkRhdGEEZGF0YQQCAgACGGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cwGB2wyB3QiB3woYZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzBnRhcmdldAMOR0xfRlJBTUVCVUZGRVITR0xfRFJBV19GUkFNRUJVRkZFUhNHTF9SRUFEX0ZSQU1FQlVGRkVSAgdnbENsZWFyAYHhDIHjCIHlCgdnbENsZWFyBG1hc2sDE0dMX0NPTE9SX0JVRkZFUl9CSVQTR0xfREVQVEhfQlVGRkVSX0JJVBVHTF9TVEVOQ0lMX0JVRkZFUl9CSVQCD2dsQ2xlYXJCdWZmZXJmaQGB5wyB6QiB6woPZ2xDbGVhckJ1ZmZlcmZpBmJ1ZmZlcgEQR0xfREVQVEhfU1RFTkNJTAIPZ2xDbGVhckJ1ZmZlcmZ2AoHtDIHvCIHxCg9nbENsZWFyQnVmZmVyZnYGYnVmZmVyAghHTF9DT0xPUghHTF9ERVBUSIHzBIH1BoH3CIH5Cg9nbENsZWFyQnVmZmVyZnYFdmFsdWUEAQACD2dsQ2xlYXJCdWZmZXJpdgKB+wyB/QiB/woPZ2xDbGVhckJ1ZmZlcml2BmJ1ZmZlcgIIR0xfQ09MT1IKR0xfU1RFTkNJTIIBBIIDBoIFCIIHCg9nbENsZWFyQnVmZmVyaXYFdmFsdWUEAQACEGdsQ2xlYXJCdWZmZXJ1aXYCggkMggsIgg0KEGdsQ2xlYXJCdWZmZXJ1aXYGYnVmZmVyAQhHTF9DT0xPUoIPBIIRBoITCIIVChBnbENsZWFyQnVmZmVydWl2BXZhbHVlBAEAAhBnbENsaWVudFdhaXRTeW5jAYIXDIIZCIIbChBnbENsaWVudFdhaXRTeW5jCXN5bmNGbGFncwEaR0xfU1lOQ19GTFVTSF9DT01NQU5EU19CSVQCFWdsQ2xpZW50V2FpdFN5bmNBUFBMRQGCHQyCHwiCIQoVZ2xDbGllbnRXYWl0U3luY0FQUExFBGZsYWcBGkdMX1NZTkNfRkxVU0hfQ09NTUFORFNfQklUAhZnbENvbXByZXNzZWRUZXhJbWFnZTJEA4IjDIIlCIInChZnbENvbXByZXNzZWRUZXhJbWFnZTJEBnRhcmdldAcNR0xfVEVYVFVSRV8yRB5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1geR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWh5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1geR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWoIpDIIrCIItChZnbENvbXByZXNzZWRUZXhJbWFnZTJEBmZvcm1hdC4VR0xfQ09NUFJFU1NFRF9SMTFfRUFDFkdMX0NPTVBSRVNTRURfUkcxMV9FQUMXR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIrR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMhxHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDHEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMdR0xfQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUMjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMYR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyLEdMX0NPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyDkdMX0FUQ19SR0JfQU1EHkdMX0FUQ19SR0JBX0VYUExJQ0lUX0FMUEhBX0FNRCJHTF9BVENfUkdCQV9JTlRFUlBPTEFURURfQUxQSEFfQU1EEEdMX0VUQzFfUkdCOF9PRVMdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTAcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NRxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDgdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTAdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTIbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4OCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwJEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NSRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDYkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4JUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTAlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OB9HTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUgi8EgjEGgjMIgjUKFmdsQ29tcHJlc3NlZFRleEltYWdlMkQEZGF0YQQBAAIWZ2xDb21wcmVzc2VkVGV4SW1hZ2UzRAOCNwyCOQiCOwoWZ2xDb21wcmVzc2VkVGV4SW1hZ2UzRAZ0YXJnZXQDE0dMX1RFWFRVUkVfMkRfQVJSQVkNR0xfVEVYVFVSRV8zRBlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZgj0Mgj8IgkEKFmdsQ29tcHJlc3NlZFRleEltYWdlM0QOaW50ZXJuYWxmb3JtYXQqFUdMX0NPTVBSRVNTRURfUjExX0VBQxZHTF9DT01QUkVTU0VEX1JHMTFfRUFDF0dMX0NPTVBSRVNTRURfUkdCOF9FVEMyK0dMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIcR0xfQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQxxHTF9DT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDHUdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDGEdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMixHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMh1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMBxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDYcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg4JUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTAkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NiRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDglR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4H0dMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFSCQwSCRQaCRwiCSQoWZ2xDb21wcmVzc2VkVGV4SW1hZ2UzRARkYXRhBAEAAhlnbENvbXByZXNzZWRUZXhJbWFnZTNET0VTA4JLDIJNCIJPChlnbENvbXByZXNzZWRUZXhJbWFnZTNET0VTBnRhcmdldAMTR0xfVEVYVFVSRV8yRF9BUlJBWQ1HTF9URVhUVVJFXzNEGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVmCUQyCUwiCVQoZZ2xDb21wcmVzc2VkVGV4SW1hZ2UzRE9FUw5pbnRlcm5hbGZvcm1hdCoVR0xfQ09NUFJFU1NFRF9SMTFfRUFDFkdMX0NPTVBSRVNTRURfUkcxMV9FQUMXR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIrR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMhxHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDHEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMdR0xfQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUMjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMYR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyLEdMX0NPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwHEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDUcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NhxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4HUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyG0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzR4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDglR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMCRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDUkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTIjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDgfR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVIJXBIJZBoJbCIJdChlnbENvbXByZXNzZWRUZXhJbWFnZTNET0VTBGRhdGEEAQACGWdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQDgl8MgmEIgmMKGWdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQGdGFyZ2V0Bw1HTF9URVhUVVJFXzJEHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWB5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1keR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWB5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1keR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9agmUMgmcIgmkKGWdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQGZm9ybWF0KxVHTF9DT01QUkVTU0VEX1IxMV9FQUMWR0xfQ09NUFJFU1NFRF9SRzExX0VBQxdHTF9DT01QUkVTU0VEX1JHQjhfRVRDMitHTF9DT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyHEdMX0NPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMcR0xfQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQx1HTF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQyNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQxhHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzIsR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTAcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NRxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDgdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTAdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTIbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4OCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwJEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NSRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDYkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4JUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTAlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OBBHTF9FVEMxX1JHQjhfT0VTH0dMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFSCawSCbQaCbwiCcQoZZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRARkYXRhBAEAAhlnbENvbXByZXNzZWRUZXhTdWJJbWFnZTNEA4JzDIJ1CIJ3ChlnbENvbXByZXNzZWRUZXhTdWJJbWFnZTNEBnRhcmdldAMTR0xfVEVYVFVSRV8yRF9BUlJBWQ1HTF9URVhUVVJFXzNEGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVmCeQyCewiCfQoZZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRAZmb3JtYXQqFUdMX0NPTVBSRVNTRURfUjExX0VBQxZHTF9DT01QUkVTU0VEX1JHMTFfRUFDF0dMX0NPTVBSRVNTRURfUkdCOF9FVEMyK0dMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIcR0xfQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQxxHTF9DT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDHUdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDGEdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMixHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMh1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMBxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDYcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg4JUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTAkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NiRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDglR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4H0dMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFSCfwSCgQaCgwiChQoZZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRARkYXRhBAEAAhxnbENvbXByZXNzZWRUZXhTdWJJbWFnZTNET0VTA4KHDIKJCIKLChxnbENvbXByZXNzZWRUZXhTdWJJbWFnZTNET0VTBnRhcmdldAMTR0xfVEVYVFVSRV8yRF9BUlJBWQ1HTF9URVhUVVJFXzNEGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVmCjQyCjwiCkQocZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRE9FUwZmb3JtYXQqFUdMX0NPTVBSRVNTRURfUjExX0VBQxZHTF9DT01QUkVTU0VEX1JHMTFfRUFDF0dMX0NPTVBSRVNTRURfUkdCOF9FVEMyK0dMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIcR0xfQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQxxHTF9DT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDHUdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDGEdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMixHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMh1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMBxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDYcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg4JUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTAkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NiRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDglR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4H0dMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFSCkwSClQaClwiCmQocZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRE9FUwRkYXRhBAEAAhNnbENvcHlCdWZmZXJTdWJEYXRhAoKbDIKdCIKfChNnbENvcHlCdWZmZXJTdWJEYXRhCnJlYWRUYXJnZXQND0dMX0FSUkFZX0JVRkZFUhdHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUhNHTF9DT1BZX1JFQURfQlVGRkVSFEdMX0NPUFlfV1JJVEVfQlVGRkVSFEdMX1BJWEVMX1BBQ0tfQlVGRkVSFkdMX1BJWEVMX1VOUEFDS19CVUZGRVIcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUhFHTF9VTklGT1JNX0JVRkZFUhhHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVIbR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSF0dMX0RSQVdfSU5ESVJFQ1RfQlVGRkVSGEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUhFHTF9URVhUVVJFX0JVRkZFUoKhDIKjCIKlChNnbENvcHlCdWZmZXJTdWJEYXRhC3dyaXRlVGFyZ2V0DQ9HTF9BUlJBWV9CVUZGRVIXR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVITR0xfQ09QWV9SRUFEX0JVRkZFUhRHTF9DT1BZX1dSSVRFX0JVRkZFUhRHTF9QSVhFTF9QQUNLX0JVRkZFUhZHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSHEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIRR0xfVU5JRk9STV9CVUZGRVIYR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSG0dMX0RJU1BBVENIX0lORElSRUNUX0JVRkZFUhdHTF9EUkFXX0lORElSRUNUX0JVRkZFUhhHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVIRR0xfVEVYVFVSRV9CVUZGRVICFWdsQ29weUJ1ZmZlclN1YkRhdGFOVgKCpwyCqQiCqwoVZ2xDb3B5QnVmZmVyU3ViRGF0YU5WCnJlYWRUYXJnZXQND0dMX0FSUkFZX0JVRkZFUhdHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUhNHTF9DT1BZX1JFQURfQlVGRkVSFEdMX0NPUFlfV1JJVEVfQlVGRkVSFEdMX1BJWEVMX1BBQ0tfQlVGRkVSFkdMX1BJWEVMX1VOUEFDS19CVUZGRVIcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUhFHTF9VTklGT1JNX0JVRkZFUhhHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVIbR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSF0dMX0RSQVdfSU5ESVJFQ1RfQlVGRkVSGEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUhFHTF9URVhUVVJFX0JVRkZFUoKtDIKvCIKxChVnbENvcHlCdWZmZXJTdWJEYXRhTlYLd3JpdGVUYXJnZXQND0dMX0FSUkFZX0JVRkZFUhdHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUhNHTF9DT1BZX1JFQURfQlVGRkVSFEdMX0NPUFlfV1JJVEVfQlVGRkVSFEdMX1BJWEVMX1BBQ0tfQlVGRkVSFkdMX1BJWEVMX1VOUEFDS19CVUZGRVIcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUhFHTF9VTklGT1JNX0JVRkZFUhhHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVIbR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSF0dMX0RSQVdfSU5ESVJFQ1RfQlVGRkVSGEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUhFHTF9URVhUVVJFX0JVRkZFUgISZ2xDb3B5SW1hZ2VTdWJEYXRhAoKzDIK1CIK3ChJnbENvcHlJbWFnZVN1YkRhdGEJc3JjVGFyZ2V0CA9HTF9SRU5ERVJCVUZGRVINR0xfVEVYVFVSRV8yRBNHTF9URVhUVVJFXzJEX0FSUkFZGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWQ1HTF9URVhUVVJFXzNEE0dMX1RFWFRVUkVfQ1VCRV9NQVAZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWYK5DIK7CIK9ChJnbENvcHlJbWFnZVN1YkRhdGEJZHN0VGFyZ2V0CA9HTF9SRU5ERVJCVUZGRVINR0xfVEVYVFVSRV8yRBNHTF9URVhUVVJFXzJEX0FSUkFZGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWQ1HTF9URVhUVVJFXzNEE0dMX1RFWFRVUkVfQ1VCRV9NQVAZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWQIVZ2xDb3B5SW1hZ2VTdWJEYXRhRVhUAoK/DILBCILDChVnbENvcHlJbWFnZVN1YkRhdGFFWFQJc3JjVGFyZ2V0CA9HTF9SRU5ERVJCVUZGRVINR0xfVEVYVFVSRV8yRBNHTF9URVhUVVJFXzJEX0FSUkFZGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWQ1HTF9URVhUVVJFXzNEE0dMX1RFWFRVUkVfQ1VCRV9NQVAZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWYLFDILHCILJChVnbENvcHlJbWFnZVN1YkRhdGFFWFQJZHN0VGFyZ2V0CA9HTF9SRU5ERVJCVUZGRVINR0xfVEVYVFVSRV8yRBNHTF9URVhUVVJFXzJEX0FSUkFZGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWQ1HTF9URVhUVVJFXzNEE0dMX1RFWFRVUkVfQ1VCRV9NQVAZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWQIVZ2xDb3B5SW1hZ2VTdWJEYXRhT0VTAoLLDILNCILPChVnbENvcHlJbWFnZVN1YkRhdGFPRVMJc3JjVGFyZ2V0CA9HTF9SRU5ERVJCVUZGRVINR0xfVEVYVFVSRV8yRBNHTF9URVhUVVJFXzJEX0FSUkFZGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWQ1HTF9URVhUVVJFXzNEE0dMX1RFWFRVUkVfQ1VCRV9NQVAZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWYLRDILTCILVChVnbENvcHlJbWFnZVN1YkRhdGFPRVMJZHN0VGFyZ2V0CA9HTF9SRU5ERVJCVUZGRVINR0xfVEVYVFVSRV8yRBNHTF9URVhUVVJFXzJEX0FSUkFZGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWQ1HTF9URVhUVVJFXzNEE0dMX1RFWFRVUkVfQ1VCRV9NQVAZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWQIQZ2xDb3B5VGV4SW1hZ2UyRAKC1wyC2QiC2woQZ2xDb3B5VGV4SW1hZ2UyRAZ0YXJnZXQHDUdMX1RFWFRVUkVfMkQeR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWR5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1oeR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWR5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1qC3QyC3wiC4QoQZ2xDb3B5VGV4SW1hZ2UyRA5pbnRlcm5hbGZvcm1hdCIIR0xfQUxQSEEMR0xfTFVNSU5BTkNFEkdMX0xVTUlOQU5DRV9BTFBIQQZHTF9SR0IHR0xfUkdCQQdHTF9SMTZJCEdMX1IxNlVJB0dMX1IzMkkIR0xfUjMyVUkFR0xfUjgGR0xfUjhJB0dMX1I4VUkIR0xfUkcxNkkJR0xfUkcxNlVJCEdMX1JHMzJJCUdMX1JHMzJVSQZHTF9SRzgHR0xfUkc4SQhHTF9SRzhVSQtHTF9SR0IxMF9BMg1HTF9SR0IxMF9BMlVJCUdMX1JHQjU2NQpHTF9SR0I1X0ExB0dMX1JHQjgKR0xfUkdCQTE2SQtHTF9SR0JBMTZVSQpHTF9SR0JBMzJJC0dMX1JHQkEzMlVJCEdMX1JHQkE0CEdMX1JHQkE4CUdMX1JHQkE4SQpHTF9SR0JBOFVJCEdMX1NSR0I4D0dMX1NSR0I4X0FMUEhBOAITZ2xDb3B5VGV4U3ViSW1hZ2UyRAGC4wyC5QiC5woTZ2xDb3B5VGV4U3ViSW1hZ2UyRAZ0YXJnZXQPDUdMX1RFWFRVUkVfMkQeR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWR5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1oeR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWR5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1oXR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMTR0xfVEVYVFVSRV8yRF9BUlJBWRlHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFH0dMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVkNR0xfVEVYVFVSRV8zRBFHTF9URVhUVVJFX0JVRkZFUhNHTF9URVhUVVJFX0NVQkVfTUFQGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVkCE2dsQ29weVRleFN1YkltYWdlM0QBgukMgusIgu0KE2dsQ29weVRleFN1YkltYWdlM0QGdGFyZ2V0DxNHTF9URVhUVVJFXzJEX0FSUkFZDUdMX1RFWFRVUkVfM0QZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWQ1HTF9URVhUVVJFXzJEHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWB5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1keR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWB5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1keR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aF0dMX1RFWFRVUkVfRVhURVJOQUxfT0VTGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWRFHTF9URVhUVVJFX0JVRkZFUhNHTF9URVhUVVJFX0NVQkVfTUFQAhZnbENvcHlUZXhTdWJJbWFnZTNET0VTAYLvDILxCILzChZnbENvcHlUZXhTdWJJbWFnZTNET0VTBnRhcmdldA8TR0xfVEVYVFVSRV8yRF9BUlJBWQ1HTF9URVhUVVJFXzNEGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVkNR0xfVEVYVFVSRV8yRB5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1geR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWh5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1geR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWhdHTF9URVhUVVJFX0VYVEVSTkFMX09FUxlHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFH0dMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVkRR0xfVEVYVFVSRV9CVUZGRVITR0xfVEVYVFVSRV9DVUJFX01BUAIOZ2xDcmVhdGVTaGFkZXIBgvUMgvcIgvkKDmdsQ3JlYXRlU2hhZGVyBHR5cGUGEkdMX0ZSQUdNRU5UX1NIQURFUhBHTF9WRVJURVhfU0hBREVSEUdMX0NPTVBVVEVfU0hBREVSEkdMX0dFT01FVFJZX1NIQURFUhZHTF9URVNTX0NPTlRST0xfU0hBREVSGUdMX1RFU1NfRVZBTFVBVElPTl9TSEFERVICFmdsQ3JlYXRlU2hhZGVyUHJvZ3JhbXYBgvsMgv0Igv8KFmdsQ3JlYXRlU2hhZGVyUHJvZ3JhbXYEdHlwZQYRR0xfQ09NUFVURV9TSEFERVISR0xfRlJBR01FTlRfU0hBREVSEEdMX1ZFUlRFWF9TSEFERVISR0xfR0VPTUVUUllfU0hBREVSFkdMX1RFU1NfQ09OVFJPTF9TSEFERVIZR0xfVEVTU19FVkFMVUFUSU9OX1NIQURFUgIKZ2xDdWxsRmFjZQGDAQyDAwiDBQoKZ2xDdWxsRmFjZQRtb2RlAwdHTF9CQUNLCEdMX0ZST05UEUdMX0ZST05UX0FORF9CQUNLAhVnbERlYnVnTWVzc2FnZUNvbnRyb2wEgwcMgwkIgwsKFWdsRGVidWdNZXNzYWdlQ29udHJvbAZzb3VyY2UHE0dMX0RFQlVHX1NPVVJDRV9BUEkbR0xfREVCVUdfU09VUkNFX0FQUExJQ0FUSU9OFUdMX0RFQlVHX1NPVVJDRV9PVEhFUh9HTF9ERUJVR19TT1VSQ0VfU0hBREVSX0NPTVBJTEVSG0dMX0RFQlVHX1NPVVJDRV9USElSRF9QQVJUWR1HTF9ERUJVR19TT1VSQ0VfV0lORE9XX1NZU1RFTQxHTF9ET05UX0NBUkWDDQyDDwiDEQoVZ2xEZWJ1Z01lc3NhZ2VDb250cm9sBHR5cGUKIUdMX0RFQlVHX1RZUEVfREVQUkVDQVRFRF9CRUhBVklPUhNHTF9ERUJVR19UWVBFX0VSUk9SFEdMX0RFQlVHX1RZUEVfTUFSS0VSE0dMX0RFQlVHX1RZUEVfT1RIRVIZR0xfREVCVUdfVFlQRV9QRVJGT1JNQU5DRRdHTF9ERUJVR19UWVBFX1BPUF9HUk9VUBlHTF9ERUJVR19UWVBFX1BPUlRBQklMSVRZGEdMX0RFQlVHX1RZUEVfUFVTSF9HUk9VUCBHTF9ERUJVR19UWVBFX1VOREVGSU5FRF9CRUhBVklPUgxHTF9ET05UX0NBUkWDEwyDFQiDFwoVZ2xEZWJ1Z01lc3NhZ2VDb250cm9sCHNldmVyaXR5BRZHTF9ERUJVR19TRVZFUklUWV9ISUdIFUdMX0RFQlVHX1NFVkVSSVRZX0xPVxhHTF9ERUJVR19TRVZFUklUWV9NRURJVU0eR0xfREVCVUdfU0VWRVJJVFlfTk9USUZJQ0FUSU9ODEdMX0RPTlRfQ0FSRYMZBIMbBoMdCIMfChVnbERlYnVnTWVzc2FnZUNvbnRyb2wDaWRzBAEAAhhnbERlYnVnTWVzc2FnZUNvbnRyb2xLSFIEgyEMgyMIgyUKGGdsRGVidWdNZXNzYWdlQ29udHJvbEtIUgZzb3VyY2UHE0dMX0RFQlVHX1NPVVJDRV9BUEkbR0xfREVCVUdfU09VUkNFX0FQUExJQ0FUSU9OFUdMX0RFQlVHX1NPVVJDRV9PVEhFUh9HTF9ERUJVR19TT1VSQ0VfU0hBREVSX0NPTVBJTEVSG0dMX0RFQlVHX1NPVVJDRV9USElSRF9QQVJUWR1HTF9ERUJVR19TT1VSQ0VfV0lORE9XX1NZU1RFTQxHTF9ET05UX0NBUkWDJwyDKQiDKwoYZ2xEZWJ1Z01lc3NhZ2VDb250cm9sS0hSBHR5cGUKIUdMX0RFQlVHX1RZUEVfREVQUkVDQVRFRF9CRUhBVklPUhNHTF9ERUJVR19UWVBFX0VSUk9SFEdMX0RFQlVHX1RZUEVfTUFSS0VSE0dMX0RFQlVHX1RZUEVfT1RIRVIZR0xfREVCVUdfVFlQRV9QRVJGT1JNQU5DRRdHTF9ERUJVR19UWVBFX1BPUF9HUk9VUBlHTF9ERUJVR19UWVBFX1BPUlRBQklMSVRZGEdMX0RFQlVHX1RZUEVfUFVTSF9HUk9VUCBHTF9ERUJVR19UWVBFX1VOREVGSU5FRF9CRUhBVklPUgxHTF9ET05UX0NBUkWDLQyDLwiDMQoYZ2xEZWJ1Z01lc3NhZ2VDb250cm9sS0hSCHNldmVyaXR5BRZHTF9ERUJVR19TRVZFUklUWV9ISUdIFUdMX0RFQlVHX1NFVkVSSVRZX0xPVxhHTF9ERUJVR19TRVZFUklUWV9NRURJVU0eR0xfREVCVUdfU0VWRVJJVFlfTk9USUZJQ0FUSU9ODEdMX0RPTlRfQ0FSRYMzBIM1BoM3CIM5ChhnbERlYnVnTWVzc2FnZUNvbnRyb2xLSFIDaWRzBAEAAhRnbERlYnVnTWVzc2FnZUluc2VydASDOwyDPQiDPwoUZ2xEZWJ1Z01lc3NhZ2VJbnNlcnQGc291cmNlAhtHTF9ERUJVR19TT1VSQ0VfQVBQTElDQVRJT04bR0xfREVCVUdfU09VUkNFX1RISVJEX1BBUlRZg0EMg0MIg0UKFGdsRGVidWdNZXNzYWdlSW5zZXJ0BHR5cGUJIUdMX0RFQlVHX1RZUEVfREVQUkVDQVRFRF9CRUhBVklPUhNHTF9ERUJVR19UWVBFX0VSUk9SFEdMX0RFQlVHX1RZUEVfTUFSS0VSE0dMX0RFQlVHX1RZUEVfT1RIRVIZR0xfREVCVUdfVFlQRV9QRVJGT1JNQU5DRRdHTF9ERUJVR19UWVBFX1BPUF9HUk9VUBlHTF9ERUJVR19UWVBFX1BPUlRBQklMSVRZGEdMX0RFQlVHX1RZUEVfUFVTSF9HUk9VUCBHTF9ERUJVR19UWVBFX1VOREVGSU5FRF9CRUhBVklPUoNHDINJCINLChRnbERlYnVnTWVzc2FnZUluc2VydAhzZXZlcml0eQQWR0xfREVCVUdfU0VWRVJJVFlfSElHSBVHTF9ERUJVR19TRVZFUklUWV9MT1cYR0xfREVCVUdfU0VWRVJJVFlfTUVESVVNHkdMX0RFQlVHX1NFVkVSSVRZX05PVElGSUNBVElPToNNBINPBoNRCINTChRnbERlYnVnTWVzc2FnZUluc2VydAdtZXNzYWdlBAEAAhdnbERlYnVnTWVzc2FnZUluc2VydEtIUgSDVQyDVwiDWQoXZ2xEZWJ1Z01lc3NhZ2VJbnNlcnRLSFIGc291cmNlAhtHTF9ERUJVR19TT1VSQ0VfQVBQTElDQVRJT04bR0xfREVCVUdfU09VUkNFX1RISVJEX1BBUlRZg1sMg10Ig18KF2dsRGVidWdNZXNzYWdlSW5zZXJ0S0hSBHR5cGUJIUdMX0RFQlVHX1RZUEVfREVQUkVDQVRFRF9CRUhBVklPUhNHTF9ERUJVR19UWVBFX0VSUk9SFEdMX0RFQlVHX1RZUEVfTUFSS0VSE0dMX0RFQlVHX1RZUEVfT1RIRVIZR0xfREVCVUdfVFlQRV9QRVJGT1JNQU5DRRdHTF9ERUJVR19UWVBFX1BPUF9HUk9VUBlHTF9ERUJVR19UWVBFX1BPUlRBQklMSVRZGEdMX0RFQlVHX1RZUEVfUFVTSF9HUk9VUCBHTF9ERUJVR19UWVBFX1VOREVGSU5FRF9CRUhBVklPUoNhDINjCINlChdnbERlYnVnTWVzc2FnZUluc2VydEtIUghzZXZlcml0eQQWR0xfREVCVUdfU0VWRVJJVFlfSElHSBVHTF9ERUJVR19TRVZFUklUWV9MT1cYR0xfREVCVUdfU0VWRVJJVFlfTUVESVVNHkdMX0RFQlVHX1NFVkVSSVRZX05PVElGSUNBVElPToNnBINpBoNrCINtChdnbERlYnVnTWVzc2FnZUluc2VydEtIUgdtZXNzYWdlBAEAAhRnbERlbGV0ZUZyYW1lYnVmZmVycwACGGdsRGVsZXRlUHJvZ3JhbVBpcGVsaW5lcwGDbwSDcQaDcwiDdQoYZ2xEZWxldGVQcm9ncmFtUGlwZWxpbmVzCXBpcGVsaW5lcwQBAAILZ2xEZXB0aEZ1bmMBg3cMg3kIg3sKC2dsRGVwdGhGdW5jCGZ1bmN0aW9uCAlHTF9BTFdBWVMIR0xfRVFVQUwJR0xfR0VRVUFMCkdMX0dSRUFURVIJR0xfTEVRVUFMB0dMX0xFU1MIR0xfTkVWRVILR0xfTk9URVFVQUwCCWdsRGlzYWJsZQGDfQyDfwiDgQoJZ2xEaXNhYmxlCmNhcGFiaWxpdHkQCEdMX0JMRU5EDEdMX0NVTExfRkFDRQ1HTF9ERVBUSF9URVNUCUdMX0RJVEhFUhZHTF9QT0xZR09OX09GRlNFVF9GSUxMG0dMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRRJHTF9TQU1QTEVfQ09WRVJBR0UPR0xfU0NJU1NPUl9URVNUD0dMX1NURU5DSUxfVEVTVCBHTF9QUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWBVHTF9SQVNURVJJWkVSX0RJU0NBUkQOR0xfU0FNUExFX01BU0sPR0xfREVCVUdfT1VUUFVUG0dMX0RFQlVHX09VVFBVVF9TWU5DSFJPTk9VUxJHTF9BTFBIQV9URVNUX1FDT00XR0xfRlJBTUVCVUZGRVJfU1JHQl9FWFQCGmdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5AAIKZ2xEaXNhYmxlaQGDgwyDhQiDhwoKZ2xEaXNhYmxlaQpjYXBhYmlsaXR5EAhHTF9CTEVORAxHTF9DVUxMX0ZBQ0UNR0xfREVQVEhfVEVTVAlHTF9ESVRIRVIWR0xfUE9MWUdPTl9PRkZTRVRfRklMTBtHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0USR0xfU0FNUExFX0NPVkVSQUdFD0dMX1NDSVNTT1JfVEVTVA9HTF9TVEVOQ0lMX1RFU1QgR0xfUFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgVR0xfUkFTVEVSSVpFUl9ESVNDQVJEDkdMX1NBTVBMRV9NQVNLD0dMX0RFQlVHX09VVFBVVBtHTF9ERUJVR19PVVRQVVRfU1lOQ0hST05PVVMSR0xfQUxQSEFfVEVTVF9RQ09NF0dMX0ZSQU1FQlVGRkVSX1NSR0JfRVhUAg1nbERpc2FibGVpRVhUAYOJDIOLCIONCg1nbERpc2FibGVpRVhUBnRhcmdldBAIR0xfQkxFTkQMR0xfQ1VMTF9GQUNFDUdMX0RFUFRIX1RFU1QJR0xfRElUSEVSFkdMX1BPTFlHT05fT0ZGU0VUX0ZJTEwbR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFEkdMX1NBTVBMRV9DT1ZFUkFHRQ9HTF9TQ0lTU09SX1RFU1QPR0xfU1RFTkNJTF9URVNUIEdMX1BSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYFUdMX1JBU1RFUklaRVJfRElTQ0FSRA5HTF9TQU1QTEVfTUFTSw9HTF9ERUJVR19PVVRQVVQbR0xfREVCVUdfT1VUUFVUX1NZTkNIUk9OT1VTEkdMX0FMUEhBX1RFU1RfUUNPTRdHTF9GUkFNRUJVRkZFUl9TUkdCX0VYVAIMZ2xEaXNhYmxlaU5WAYOPDIORCIOTCgxnbERpc2FibGVpTlYGdGFyZ2V0EAhHTF9CTEVORAxHTF9DVUxMX0ZBQ0UNR0xfREVQVEhfVEVTVAlHTF9ESVRIRVIWR0xfUE9MWUdPTl9PRkZTRVRfRklMTBtHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0USR0xfU0FNUExFX0NPVkVSQUdFD0dMX1NDSVNTT1JfVEVTVA9HTF9TVEVOQ0lMX1RFU1QgR0xfUFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgVR0xfUkFTVEVSSVpFUl9ESVNDQVJEDkdMX1NBTVBMRV9NQVNLD0dMX0RFQlVHX09VVFBVVBtHTF9ERUJVR19PVVRQVVRfU1lOQ0hST05PVVMSR0xfQUxQSEFfVEVTVF9RQ09NF0dMX0ZSQU1FQlVGRkVSX1NSR0JfRVhUAg1nbERpc2FibGVpT0VTAYOVDIOXCIOZCg1nbERpc2FibGVpT0VTBnRhcmdldBAIR0xfQkxFTkQMR0xfQ1VMTF9GQUNFDUdMX0RFUFRIX1RFU1QJR0xfRElUSEVSFkdMX1BPTFlHT05fT0ZGU0VUX0ZJTEwbR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFEkdMX1NBTVBMRV9DT1ZFUkFHRQ9HTF9TQ0lTU09SX1RFU1QPR0xfU1RFTkNJTF9URVNUIEdMX1BSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYFUdMX1JBU1RFUklaRVJfRElTQ0FSRA5HTF9TQU1QTEVfTUFTSw9HTF9ERUJVR19PVVRQVVQbR0xfREVCVUdfT1VUUFVUX1NZTkNIUk9OT1VTEkdMX0FMUEhBX1RFU1RfUUNPTRdHTF9GUkFNRUJVRkZFUl9TUkdCX0VYVAIXZ2xEaXNjYXJkRnJhbWVidWZmZXJFWFQCg5sMg50Ig58KF2dsRGlzY2FyZEZyYW1lYnVmZmVyRVhUBnRhcmdldAMOR0xfRlJBTUVCVUZGRVITR0xfRFJBV19GUkFNRUJVRkZFUhNHTF9SRUFEX0ZSQU1FQlVGRkVSg6EMg6MGg6UGg6cIg6kKF2dsRGlzY2FyZEZyYW1lYnVmZmVyRVhUC2F0dGFjaG1lbnRzBAIWCEdMX0NPTE9SCEdMX0RFUFRICkdMX1NURU5DSUwUR0xfQ09MT1JfQVRUQUNITUVOVDAUR0xfQ09MT1JfQVRUQUNITUVOVDEVR0xfQ09MT1JfQVRUQUNITUVOVDEwFUdMX0NPTE9SX0FUVEFDSE1FTlQxMRVHTF9DT0xPUl9BVFRBQ0hNRU5UMTIVR0xfQ09MT1JfQVRUQUNITUVOVDEzFUdMX0NPTE9SX0FUVEFDSE1FTlQxNBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTUUR0xfQ09MT1JfQVRUQUNITUVOVDIUR0xfQ09MT1JfQVRUQUNITUVOVDMUR0xfQ09MT1JfQVRUQUNITUVOVDQUR0xfQ09MT1JfQVRUQUNITUVOVDUUR0xfQ09MT1JfQVRUQUNITUVOVDYUR0xfQ09MT1JfQVRUQUNITUVOVDcUR0xfQ09MT1JfQVRUQUNITUVOVDgUR0xfQ09MT1JfQVRUQUNITUVOVDkTR0xfREVQVEhfQVRUQUNITUVOVBtHTF9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQVR0xfU1RFTkNJTF9BVFRBQ0hNRU5UAgxnbERyYXdBcnJheXMBg6sMg60Ig68KDGdsRHJhd0FycmF5cwlkcmF3X21vZGUMCEdMX0xJTkVTDEdMX0xJTkVfTE9PUA1HTF9MSU5FX1NUUklQCUdMX1BPSU5UUwxHTF9UUklBTkdMRVMPR0xfVFJJQU5HTEVfRkFOEUdMX1RSSUFOR0xFX1NUUklQEkdMX0xJTkVTX0FESkFDRU5DWRdHTF9MSU5FX1NUUklQX0FESkFDRU5DWQpHTF9QQVRDSEVTFkdMX1RSSUFOR0xFU19BREpBQ0VOQ1kbR0xfVFJJQU5HTEVfU1RSSVBfQURKQUNFTkNZAhRnbERyYXdBcnJheXNJbmRpcmVjdAGDsQyDswiDtQoUZ2xEcmF3QXJyYXlzSW5kaXJlY3QJZHJhd19tb2RlDAhHTF9MSU5FUwxHTF9MSU5FX0xPT1ANR0xfTElORV9TVFJJUAlHTF9QT0lOVFMMR0xfVFJJQU5HTEVTD0dMX1RSSUFOR0xFX0ZBThFHTF9UUklBTkdMRV9TVFJJUBJHTF9MSU5FU19BREpBQ0VOQ1kXR0xfTElORV9TVFJJUF9BREpBQ0VOQ1kKR0xfUEFUQ0hFUxZHTF9UUklBTkdMRVNfQURKQUNFTkNZG0dMX1RSSUFOR0xFX1NUUklQX0FESkFDRU5DWQIVZ2xEcmF3QXJyYXlzSW5zdGFuY2VkAYO3DIO5CIO7ChVnbERyYXdBcnJheXNJbnN0YW5jZWQJZHJhd19tb2RlDAhHTF9MSU5FUwxHTF9MSU5FX0xPT1ANR0xfTElORV9TVFJJUAlHTF9QT0lOVFMMR0xfVFJJQU5HTEVTD0dMX1RSSUFOR0xFX0ZBThFHTF9UUklBTkdMRV9TVFJJUBJHTF9MSU5FU19BREpBQ0VOQ1kXR0xfTElORV9TVFJJUF9BREpBQ0VOQ1kKR0xfUEFUQ0hFUxZHTF9UUklBTkdMRVNfQURKQUNFTkNZG0dMX1RSSUFOR0xFX1NUUklQX0FESkFDRU5DWQIaZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUBg70Mg78Ig8EKGmdsRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFBG1vZGUMCEdMX0xJTkVTDEdMX0xJTkVfTE9PUA1HTF9MSU5FX1NUUklQCUdMX1BPSU5UUwxHTF9UUklBTkdMRVMPR0xfVFJJQU5HTEVfRkFOEUdMX1RSSUFOR0xFX1NUUklQEkdMX0xJTkVTX0FESkFDRU5DWRdHTF9MSU5FX1NUUklQX0FESkFDRU5DWQpHTF9QQVRDSEVTFkdMX1RSSUFOR0xFU19BREpBQ0VOQ1kbR0xfVFJJQU5HTEVfU1RSSVBfQURKQUNFTkNZAhhnbERyYXdBcnJheXNJbnN0YW5jZWRFWFQBg8MMg8UIg8cKGGdsRHJhd0FycmF5c0luc3RhbmNlZEVYVARtb2RlDAhHTF9MSU5FUwxHTF9MSU5FX0xPT1ANR0xfTElORV9TVFJJUAlHTF9QT0lOVFMMR0xfVFJJQU5HTEVTD0dMX1RSSUFOR0xFX0ZBThFHTF9UUklBTkdMRV9TVFJJUBJHTF9MSU5FU19BREpBQ0VOQ1kXR0xfTElORV9TVFJJUF9BREpBQ0VOQ1kKR0xfUEFUQ0hFUxZHTF9UUklBTkdMRVNfQURKQUNFTkNZG0dMX1RSSUFOR0xFX1NUUklQX0FESkFDRU5DWQIXZ2xEcmF3QXJyYXlzSW5zdGFuY2VkTlYBg8kMg8sIg80KF2dsRHJhd0FycmF5c0luc3RhbmNlZE5WBG1vZGUMCEdMX0xJTkVTDEdMX0xJTkVfTE9PUA1HTF9MSU5FX1NUUklQCUdMX1BPSU5UUwxHTF9UUklBTkdMRVMPR0xfVFJJQU5HTEVfRkFOEUdMX1RSSUFOR0xFX1NUUklQEkdMX0xJTkVTX0FESkFDRU5DWRdHTF9MSU5FX1NUUklQX0FESkFDRU5DWQpHTF9QQVRDSEVTFkdMX1RSSUFOR0xFU19BREpBQ0VOQ1kbR0xfVFJJQU5HTEVfU1RSSVBfQURKQUNFTkNZAg1nbERyYXdCdWZmZXJzAYPPDIPRBoPTBoPVCIPXCg1nbERyYXdCdWZmZXJzBGJ1ZnMEAgEHR0xfTk9ORQIQZ2xEcmF3QnVmZmVyc0VYVAGD2QyD2waD3QaD3wiD4QoQZ2xEcmF3QnVmZmVyc0VYVARidWZzBAIBB0dMX05PTkUCD2dsRHJhd0J1ZmZlcnNOVgGD4wyD5QaD5waD6QiD6woPZ2xEcmF3QnVmZmVyc05WBGJ1ZnMEAgEHR0xfTk9ORQIOZ2xEcmF3RWxlbWVudHMDg+0Mg+8Ig/EKDmdsRHJhd0VsZW1lbnRzCWRyYXdfbW9kZQwIR0xfTElORVMMR0xfTElORV9MT09QDUdMX0xJTkVfU1RSSVAJR0xfUE9JTlRTDEdMX1RSSUFOR0xFUw9HTF9UUklBTkdMRV9GQU4RR0xfVFJJQU5HTEVfU1RSSVASR0xfTElORVNfQURKQUNFTkNZF0dMX0xJTkVfU1RSSVBfQURKQUNFTkNZCkdMX1BBVENIRVMWR0xfVFJJQU5HTEVTX0FESkFDRU5DWRtHTF9UUklBTkdMRV9TVFJJUF9BREpBQ0VOQ1mD8wyD9QiD9woOZ2xEcmF3RWxlbWVudHMMaW5kaWNlc190eXBlAxBHTF9VTlNJR05FRF9CWVRFEUdMX1VOU0lHTkVEX1NIT1JUD0dMX1VOU0lHTkVEX0lOVIP5BIP7BoP9CIP/Cg5nbERyYXdFbGVtZW50cwdpbmRpY2VzBAEAAhhnbERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXgDhAEMhAMIhAUKGGdsRHJhd0VsZW1lbnRzQmFzZVZlcnRleAlkcmF3X21vZGUMCEdMX0xJTkVTDEdMX0xJTkVfTE9PUA1HTF9MSU5FX1NUUklQCUdMX1BPSU5UUwxHTF9UUklBTkdMRVMPR0xfVFJJQU5HTEVfRkFOEUdMX1RSSUFOR0xFX1NUUklQEkdMX0xJTkVTX0FESkFDRU5DWRdHTF9MSU5FX1NUUklQX0FESkFDRU5DWQpHTF9QQVRDSEVTFkdMX1RSSUFOR0xFU19BREpBQ0VOQ1kbR0xfVFJJQU5HTEVfU1RSSVBfQURKQUNFTkNZhAcMhAkIhAsKGGdsRHJhd0VsZW1lbnRzQmFzZVZlcnRleAxpbmRpY2VzX3R5cGUDEEdMX1VOU0lHTkVEX0JZVEURR0xfVU5TSUdORURfU0hPUlQPR0xfVU5TSUdORURfSU5UhA0EhA8GhBEIhBMKGGdsRHJhd0VsZW1lbnRzQmFzZVZlcnRleAdpbmRpY2VzBAEAAhtnbERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhFWFQDhBUMhBcIhBkKG2dsRHJhd0VsZW1lbnRzQmFzZVZlcnRleEVYVARtb2RlDAhHTF9MSU5FUwxHTF9MSU5FX0xPT1ANR0xfTElORV9TVFJJUAlHTF9QT0lOVFMMR0xfVFJJQU5HTEVTD0dMX1RSSUFOR0xFX0ZBThFHTF9UUklBTkdMRV9TVFJJUBJHTF9MSU5FU19BREpBQ0VOQ1kXR0xfTElORV9TVFJJUF9BREpBQ0VOQ1kKR0xfUEFUQ0hFUxZHTF9UUklBTkdMRVNfQURKQUNFTkNZG0dMX1RSSUFOR0xFX1NUUklQX0FESkFDRU5DWYQbDIQdCIQfChtnbERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhFWFQEdHlwZQMQR0xfVU5TSUdORURfQllURRFHTF9VTlNJR05FRF9TSE9SVA9HTF9VTlNJR05FRF9JTlSEIQSEIwaEJQiEJwobZ2xEcmF3RWxlbWVudHNCYXNlVmVydGV4RVhUB2luZGljZXMEAQACG2dsRHJhd0VsZW1lbnRzQmFzZVZlcnRleE9FUwOEKQyEKwiELQobZ2xEcmF3RWxlbWVudHNCYXNlVmVydGV4T0VTBG1vZGUMCEdMX0xJTkVTDEdMX0xJTkVfTE9PUA1HTF9MSU5FX1NUUklQCUdMX1BPSU5UUwxHTF9UUklBTkdMRVMPR0xfVFJJQU5HTEVfRkFOEUdMX1RSSUFOR0xFX1NUUklQEkdMX0xJTkVTX0FESkFDRU5DWRdHTF9MSU5FX1NUUklQX0FESkFDRU5DWQpHTF9QQVRDSEVTFkdMX1RSSUFOR0xFU19BREpBQ0VOQ1kbR0xfVFJJQU5HTEVfU1RSSVBfQURKQUNFTkNZhC8MhDEIhDMKG2dsRHJhd0VsZW1lbnRzQmFzZVZlcnRleE9FUwR0eXBlAxBHTF9VTlNJR05FRF9CWVRFEUdMX1VOU0lHTkVEX1NIT1JUD0dMX1VOU0lHTkVEX0lOVIQ1BIQ3BoQ5CIQ7ChtnbERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhPRVMHaW5kaWNlcwQBAAIWZ2xEcmF3RWxlbWVudHNJbmRpcmVjdAKEPQyEPwiEQQoWZ2xEcmF3RWxlbWVudHNJbmRpcmVjdAlkcmF3X21vZGUMCEdMX0xJTkVTDEdMX0xJTkVfTE9PUA1HTF9MSU5FX1NUUklQCUdMX1BPSU5UUwxHTF9UUklBTkdMRVMPR0xfVFJJQU5HTEVfRkFOEUdMX1RSSUFOR0xFX1NUUklQEkdMX0xJTkVTX0FESkFDRU5DWRdHTF9MSU5FX1NUUklQX0FESkFDRU5DWQpHTF9QQVRDSEVTFkdMX1RSSUFOR0xFU19BREpBQ0VOQ1kbR0xfVFJJQU5HTEVfU1RSSVBfQURKQUNFTkNZhEMMhEUIhEcKFmdsRHJhd0VsZW1lbnRzSW5kaXJlY3QMaW5kaWNlc190eXBlAxBHTF9VTlNJR05FRF9CWVRFEUdMX1VOU0lHTkVEX1NIT1JUD0dMX1VOU0lHTkVEX0lOVAIXZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWQDhEkMhEsIhE0KF2dsRHJhd0VsZW1lbnRzSW5zdGFuY2VkCWRyYXdfbW9kZQwIR0xfTElORVMMR0xfTElORV9MT09QDUdMX0xJTkVfU1RSSVAJR0xfUE9JTlRTDEdMX1RSSUFOR0xFUw9HTF9UUklBTkdMRV9GQU4RR0xfVFJJQU5HTEVfU1RSSVASR0xfTElORVNfQURKQUNFTkNZF0dMX0xJTkVfU1RSSVBfQURKQUNFTkNZCkdMX1BBVENIRVMWR0xfVFJJQU5HTEVTX0FESkFDRU5DWRtHTF9UUklBTkdMRV9TVFJJUF9BREpBQ0VOQ1mETwyEUQiEUwoXZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWQMaW5kaWNlc190eXBlAxBHTF9VTlNJR05FRF9CWVRFEUdMX1VOU0lHTkVEX1NIT1JUD0dMX1VOU0lHTkVEX0lOVIRVBIRXBoRZCIRbChdnbERyYXdFbGVtZW50c0luc3RhbmNlZAdpbmRpY2VzBAEAAhxnbERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFA4RdDIRfCIRhChxnbERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFBG1vZGUMCEdMX0xJTkVTDEdMX0xJTkVfTE9PUA1HTF9MSU5FX1NUUklQCUdMX1BPSU5UUwxHTF9UUklBTkdMRVMPR0xfVFJJQU5HTEVfRkFOEUdMX1RSSUFOR0xFX1NUUklQEkdMX0xJTkVTX0FESkFDRU5DWRdHTF9MSU5FX1NUUklQX0FESkFDRU5DWQpHTF9QQVRDSEVTFkdMX1RSSUFOR0xFU19BREpBQ0VOQ1kbR0xfVFJJQU5HTEVfU1RSSVBfQURKQUNFTkNZhGMMhGUIhGcKHGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUEdHlwZQMQR0xfVU5TSUdORURfQllURRFHTF9VTlNJR05FRF9TSE9SVA9HTF9VTlNJR05FRF9JTlSEaQSEawaEbQiEbwocZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRQdpbmRpY2VzBAEAAiFnbERyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXgDhHEMhHMIhHUKIWdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleAlkcmF3X21vZGUMCEdMX0xJTkVTDEdMX0xJTkVfTE9PUA1HTF9MSU5FX1NUUklQCUdMX1BPSU5UUwxHTF9UUklBTkdMRVMPR0xfVFJJQU5HTEVfRkFOEUdMX1RSSUFOR0xFX1NUUklQEkdMX0xJTkVTX0FESkFDRU5DWRdHTF9MSU5FX1NUUklQX0FESkFDRU5DWQpHTF9QQVRDSEVTFkdMX1RSSUFOR0xFU19BREpBQ0VOQ1kbR0xfVFJJQU5HTEVfU1RSSVBfQURKQUNFTkNZhHcMhHkIhHsKIWdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleAxpbmRpY2VzX3R5cGUDEEdMX1VOU0lHTkVEX0JZVEURR0xfVU5TSUdORURfU0hPUlQPR0xfVU5TSUdORURfSU5UhH0EhH8GhIEIhIMKIWdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleAdpbmRpY2VzBAEAAiRnbERyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhFWFQDhIUMhIcIhIkKJGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleEVYVARtb2RlDAhHTF9MSU5FUwxHTF9MSU5FX0xPT1ANR0xfTElORV9TVFJJUAlHTF9QT0lOVFMMR0xfVFJJQU5HTEVTD0dMX1RSSUFOR0xFX0ZBThFHTF9UUklBTkdMRV9TVFJJUBJHTF9MSU5FU19BREpBQ0VOQ1kXR0xfTElORV9TVFJJUF9BREpBQ0VOQ1kKR0xfUEFUQ0hFUxZHTF9UUklBTkdMRVNfQURKQUNFTkNZG0dMX1RSSUFOR0xFX1NUUklQX0FESkFDRU5DWYSLDISNCISPCiRnbERyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhFWFQEdHlwZQMQR0xfVU5TSUdORURfQllURRFHTF9VTlNJR05FRF9TSE9SVA9HTF9VTlNJR05FRF9JTlSEkQSEkwaElQiElwokZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4RVhUB2luZGljZXMEAQACJGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleE9FUwOEmQyEmwiEnQokZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4T0VTBG1vZGUMCEdMX0xJTkVTDEdMX0xJTkVfTE9PUA1HTF9MSU5FX1NUUklQCUdMX1BPSU5UUwxHTF9UUklBTkdMRVMPR0xfVFJJQU5HTEVfRkFOEUdMX1RSSUFOR0xFX1NUUklQEkdMX0xJTkVTX0FESkFDRU5DWRdHTF9MSU5FX1NUUklQX0FESkFDRU5DWQpHTF9QQVRDSEVTFkdMX1RSSUFOR0xFU19BREpBQ0VOQ1kbR0xfVFJJQU5HTEVfU1RSSVBfQURKQUNFTkNZhJ8MhKEIhKMKJGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleE9FUwR0eXBlAxBHTF9VTlNJR05FRF9CWVRFEUdMX1VOU0lHTkVEX1NIT1JUD0dMX1VOU0lHTkVEX0lOVISlBISnBoSpCISrCiRnbERyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhPRVMHaW5kaWNlcwQBAAIaZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRFWFQDhK0MhK8IhLEKGmdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkRVhUBG1vZGUMCEdMX0xJTkVTDEdMX0xJTkVfTE9PUA1HTF9MSU5FX1NUUklQCUdMX1BPSU5UUwxHTF9UUklBTkdMRVMPR0xfVFJJQU5HTEVfRkFOEUdMX1RSSUFOR0xFX1NUUklQEkdMX0xJTkVTX0FESkFDRU5DWRdHTF9MSU5FX1NUUklQX0FESkFDRU5DWQpHTF9QQVRDSEVTFkdMX1RSSUFOR0xFU19BREpBQ0VOQ1kbR0xfVFJJQU5HTEVfU1RSSVBfQURKQUNFTkNZhLMMhLUIhLcKGmdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkRVhUBHR5cGUDEEdMX1VOU0lHTkVEX0JZVEURR0xfVU5TSUdORURfU0hPUlQPR0xfVU5TSUdORURfSU5UhLkEhLsGhL0IhL8KGmdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkRVhUB2luZGljZXMEAQACGWdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkTlYDhMEMhMMIhMUKGWdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkTlYEbW9kZQwIR0xfTElORVMMR0xfTElORV9MT09QDUdMX0xJTkVfU1RSSVAJR0xfUE9JTlRTDEdMX1RSSUFOR0xFUw9HTF9UUklBTkdMRV9GQU4RR0xfVFJJQU5HTEVfU1RSSVASR0xfTElORVNfQURKQUNFTkNZF0dMX0xJTkVfU1RSSVBfQURKQUNFTkNZCkdMX1BBVENIRVMWR0xfVFJJQU5HTEVTX0FESkFDRU5DWRtHTF9UUklBTkdMRV9TVFJJUF9BREpBQ0VOQ1mExwyEyQiEywoZZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWROVgR0eXBlAxBHTF9VTlNJR05FRF9CWVRFEUdMX1VOU0lHTkVEX1NIT1JUD0dMX1VOU0lHTkVEX0lOVITNBITPBoTRCITTChlnbERyYXdFbGVtZW50c0luc3RhbmNlZE5WB2luZGljZXMEAQACE2dsRHJhd1JhbmdlRWxlbWVudHMDhNUMhNcIhNkKE2dsRHJhd1JhbmdlRWxlbWVudHMJZHJhd19tb2RlDAhHTF9MSU5FUwxHTF9MSU5FX0xPT1ANR0xfTElORV9TVFJJUAlHTF9QT0lOVFMMR0xfVFJJQU5HTEVTD0dMX1RSSUFOR0xFX0ZBThFHTF9UUklBTkdMRV9TVFJJUBJHTF9MSU5FU19BREpBQ0VOQ1kXR0xfTElORV9TVFJJUF9BREpBQ0VOQ1kKR0xfUEFUQ0hFUxZHTF9UUklBTkdMRVNfQURKQUNFTkNZG0dMX1RSSUFOR0xFX1NUUklQX0FESkFDRU5DWYTbDITdCITfChNnbERyYXdSYW5nZUVsZW1lbnRzDGluZGljZXNfdHlwZQMQR0xfVU5TSUdORURfQllURRFHTF9VTlNJR05FRF9TSE9SVA9HTF9VTlNJR05FRF9JTlSE4QSE4waE5QiE5woTZ2xEcmF3UmFuZ2VFbGVtZW50cwdpbmRpY2VzBAEAAh1nbERyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleAOE6QyE6wiE7QodZ2xEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXgJZHJhd19tb2RlDAhHTF9MSU5FUwxHTF9MSU5FX0xPT1ANR0xfTElORV9TVFJJUAlHTF9QT0lOVFMMR0xfVFJJQU5HTEVTD0dMX1RSSUFOR0xFX0ZBThFHTF9UUklBTkdMRV9TVFJJUBJHTF9MSU5FU19BREpBQ0VOQ1kXR0xfTElORV9TVFJJUF9BREpBQ0VOQ1kKR0xfUEFUQ0hFUxZHTF9UUklBTkdMRVNfQURKQUNFTkNZG0dMX1RSSUFOR0xFX1NUUklQX0FESkFDRU5DWYTvDITxCITzCh1nbERyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleAxpbmRpY2VzX3R5cGUDEEdMX1VOU0lHTkVEX0JZVEURR0xfVU5TSUdORURfU0hPUlQPR0xfVU5TSUdORURfSU5UhPUEhPcGhPkIhPsKHWdsRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4B2luZGljZXMEAQACIGdsRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4RVhUA4T9DIT/CIUBCiBnbERyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleEVYVARtb2RlDAhHTF9MSU5FUwxHTF9MSU5FX0xPT1ANR0xfTElORV9TVFJJUAlHTF9QT0lOVFMMR0xfVFJJQU5HTEVTD0dMX1RSSUFOR0xFX0ZBThFHTF9UUklBTkdMRV9TVFJJUBJHTF9MSU5FU19BREpBQ0VOQ1kXR0xfTElORV9TVFJJUF9BREpBQ0VOQ1kKR0xfUEFUQ0hFUxZHTF9UUklBTkdMRVNfQURKQUNFTkNZG0dMX1RSSUFOR0xFX1NUUklQX0FESkFDRU5DWYUDDIUFCIUHCiBnbERyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleEVYVAR0eXBlAxBHTF9VTlNJR05FRF9CWVRFEUdMX1VOU0lHTkVEX1NIT1JUD0dMX1VOU0lHTkVEX0lOVIUJBIULBoUNCIUPCiBnbERyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleEVYVAdpbmRpY2VzBAEAAiBnbERyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleE9FUwOFEQyFEwiFFQogZ2xEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXhPRVMEbW9kZQwIR0xfTElORVMMR0xfTElORV9MT09QDUdMX0xJTkVfU1RSSVAJR0xfUE9JTlRTDEdMX1RSSUFOR0xFUw9HTF9UUklBTkdMRV9GQU4RR0xfVFJJQU5HTEVfU1RSSVASR0xfTElORVNfQURKQUNFTkNZF0dMX0xJTkVfU1RSSVBfQURKQUNFTkNZCkdMX1BBVENIRVMWR0xfVFJJQU5HTEVTX0FESkFDRU5DWRtHTF9UUklBTkdMRV9TVFJJUF9BREpBQ0VOQ1mFFwyFGQiFGwogZ2xEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXhPRVMEdHlwZQMQR0xfVU5TSUdORURfQllURRFHTF9VTlNJR05FRF9TSE9SVA9HTF9VTlNJR05FRF9JTlSFHQSFHwaFIQiFIwogZ2xEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXhPRVMHaW5kaWNlcwQBAAIcZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUwGFJQyFJwiFKQocZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUwZ0YXJnZXQJDUdMX1RFWFRVUkVfMkQXR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMTR0xfVEVYVFVSRV8yRF9BUlJBWRlHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFH0dMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVkNR0xfVEVYVFVSRV8zRBFHTF9URVhUVVJFX0JVRkZFUhNHTF9URVhUVVJFX0NVQkVfTUFQGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVkCCGdsRW5hYmxlAYUrDIUtCIUvCghnbEVuYWJsZQpjYXBhYmlsaXR5EAhHTF9CTEVORAxHTF9DVUxMX0ZBQ0UNR0xfREVQVEhfVEVTVAlHTF9ESVRIRVIWR0xfUE9MWUdPTl9PRkZTRVRfRklMTBtHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0USR0xfU0FNUExFX0NPVkVSQUdFD0dMX1NDSVNTT1JfVEVTVA9HTF9TVEVOQ0lMX1RFU1QgR0xfUFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgVR0xfUkFTVEVSSVpFUl9ESVNDQVJEDkdMX1NBTVBMRV9NQVNLD0dMX0RFQlVHX09VVFBVVBtHTF9ERUJVR19PVVRQVVRfU1lOQ0hST05PVVMSR0xfQUxQSEFfVEVTVF9RQ09NF0dMX0ZSQU1FQlVGRkVSX1NSR0JfRVhUAhlnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5AAIJZ2xFbmFibGVpAYUxDIUzCIU1CglnbEVuYWJsZWkKY2FwYWJpbGl0eRAIR0xfQkxFTkQMR0xfQ1VMTF9GQUNFDUdMX0RFUFRIX1RFU1QJR0xfRElUSEVSFkdMX1BPTFlHT05fT0ZGU0VUX0ZJTEwbR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFEkdMX1NBTVBMRV9DT1ZFUkFHRQ9HTF9TQ0lTU09SX1RFU1QPR0xfU1RFTkNJTF9URVNUIEdMX1BSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYFUdMX1JBU1RFUklaRVJfRElTQ0FSRA5HTF9TQU1QTEVfTUFTSw9HTF9ERUJVR19PVVRQVVQbR0xfREVCVUdfT1VUUFVUX1NZTkNIUk9OT1VTEkdMX0FMUEhBX1RFU1RfUUNPTRdHTF9GUkFNRUJVRkZFUl9TUkdCX0VYVAIMZ2xFbmFibGVpRVhUAYU3DIU5CIU7CgxnbEVuYWJsZWlFWFQGdGFyZ2V0EAhHTF9CTEVORAxHTF9DVUxMX0ZBQ0UNR0xfREVQVEhfVEVTVAlHTF9ESVRIRVIWR0xfUE9MWUdPTl9PRkZTRVRfRklMTBtHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0USR0xfU0FNUExFX0NPVkVSQUdFD0dMX1NDSVNTT1JfVEVTVA9HTF9TVEVOQ0lMX1RFU1QgR0xfUFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgVR0xfUkFTVEVSSVpFUl9ESVNDQVJEDkdMX1NBTVBMRV9NQVNLD0dMX0RFQlVHX09VVFBVVBtHTF9ERUJVR19PVVRQVVRfU1lOQ0hST05PVVMSR0xfQUxQSEFfVEVTVF9RQ09NF0dMX0ZSQU1FQlVGRkVSX1NSR0JfRVhUAgtnbEVuYWJsZWlOVgGFPQyFPwiFQQoLZ2xFbmFibGVpTlYGdGFyZ2V0EAhHTF9CTEVORAxHTF9DVUxMX0ZBQ0UNR0xfREVQVEhfVEVTVAlHTF9ESVRIRVIWR0xfUE9MWUdPTl9PRkZTRVRfRklMTBtHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0USR0xfU0FNUExFX0NPVkVSQUdFD0dMX1NDSVNTT1JfVEVTVA9HTF9TVEVOQ0lMX1RFU1QgR0xfUFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgVR0xfUkFTVEVSSVpFUl9ESVNDQVJEDkdMX1NBTVBMRV9NQVNLD0dMX0RFQlVHX09VVFBVVBtHTF9ERUJVR19PVVRQVVRfU1lOQ0hST05PVVMSR0xfQUxQSEFfVEVTVF9RQ09NF0dMX0ZSQU1FQlVGRkVSX1NSR0JfRVhUAgxnbEVuYWJsZWlPRVMBhUMMhUUIhUcKDGdsRW5hYmxlaU9FUwZ0YXJnZXQQCEdMX0JMRU5EDEdMX0NVTExfRkFDRQ1HTF9ERVBUSF9URVNUCUdMX0RJVEhFUhZHTF9QT0xZR09OX09GRlNFVF9GSUxMG0dMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRRJHTF9TQU1QTEVfQ09WRVJBR0UPR0xfU0NJU1NPUl9URVNUD0dMX1NURU5DSUxfVEVTVCBHTF9QUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWBVHTF9SQVNURVJJWkVSX0RJU0NBUkQOR0xfU0FNUExFX01BU0sPR0xfREVCVUdfT1VUUFVUG0dMX0RFQlVHX09VVFBVVF9TWU5DSFJPTk9VUxJHTF9BTFBIQV9URVNUX1FDT00XR0xfRlJBTUVCVUZGRVJfU1JHQl9FWFQCCmdsRW5kUXVlcnkBhUkMhUsIhU0KCmdsRW5kUXVlcnkGdGFyZ2V0BBVHTF9BTllfU0FNUExFU19QQVNTRUQiR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRShHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfUFJJTUlUSVZFU19XUklUVEVOF0dMX1BSSU1JVElWRVNfR0VORVJBVEVEAgtnbEZlbmNlU3luYwGFTwyFUQiFUwoLZ2xGZW5jZVN5bmMJY29uZGl0aW9uAR1HTF9TWU5DX0dQVV9DT01NQU5EU19DT01QTEVURQIQZ2xGZW5jZVN5bmNBUFBMRQGFVQyFVwiFWQoQZ2xGZW5jZVN5bmNBUFBMRQljb25kaXRpb24BHUdMX1NZTkNfR1BVX0NPTU1BTkRTX0NPTVBMRVRFAhhnbEZsdXNoTWFwcGVkQnVmZmVyUmFuZ2UBhVsMhV0IhV8KGGdsRmx1c2hNYXBwZWRCdWZmZXJSYW5nZQZ0YXJnZXQND0dMX0FSUkFZX0JVRkZFUhdHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUhNHTF9DT1BZX1JFQURfQlVGRkVSFEdMX0NPUFlfV1JJVEVfQlVGRkVSFEdMX1BJWEVMX1BBQ0tfQlVGRkVSFkdMX1BJWEVMX1VOUEFDS19CVUZGRVIcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUhFHTF9VTklGT1JNX0JVRkZFUhhHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVIbR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSF0dMX0RSQVdfSU5ESVJFQ1RfQlVGRkVSGEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUhFHTF9URVhUVVJFX0JVRkZFUgIbZ2xGbHVzaE1hcHBlZEJ1ZmZlclJhbmdlRVhUAYVhDIVjCIVlChtnbEZsdXNoTWFwcGVkQnVmZmVyUmFuZ2VFWFQGdGFyZ2V0DQ9HTF9BUlJBWV9CVUZGRVIXR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVITR0xfQ09QWV9SRUFEX0JVRkZFUhRHTF9DT1BZX1dSSVRFX0JVRkZFUhRHTF9QSVhFTF9QQUNLX0JVRkZFUhZHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSHEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIRR0xfVU5JRk9STV9CVUZGRVIYR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSG0dMX0RJU1BBVENIX0lORElSRUNUX0JVRkZFUhdHTF9EUkFXX0lORElSRUNUX0JVRkZFUhhHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVIRR0xfVEVYVFVSRV9CVUZGRVICF2dsRnJhbWVidWZmZXJQYXJhbWV0ZXJpAoVnDIVpCIVrChdnbEZyYW1lYnVmZmVyUGFyYW1ldGVyaQZ0YXJnZXQDDkdMX0ZSQU1FQlVGRkVSE0dMX0RSQVdfRlJBTUVCVUZGRVITR0xfUkVBRF9GUkFNRUJVRkZFUoVtDIVvCIVxChdnbEZyYW1lYnVmZmVyUGFyYW1ldGVyaQVwbmFtZQUtR0xfRlJBTUVCVUZGRVJfREVGQVVMVF9GSVhFRF9TQU1QTEVfTE9DQVRJT05THUdMX0ZSQU1FQlVGRkVSX0RFRkFVTFRfSEVJR0hUHkdMX0ZSQU1FQlVGRkVSX0RFRkFVTFRfU0FNUExFUxxHTF9GUkFNRUJVRkZFUl9ERUZBVUxUX1dJRFRIHUdMX0ZSQU1FQlVGRkVSX0RFRkFVTFRfTEFZRVJTAhlnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyA4VzDIV1CIV3ChlnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyEmZyYW1lYnVmZmVyX3RhcmdldAMOR0xfRlJBTUVCVUZGRVITR0xfRFJBV19GUkFNRUJVRkZFUhNHTF9SRUFEX0ZSQU1FQlVGRkVShXkMhXsIhX0KGWdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIWZnJhbWVidWZmZXJfYXR0YWNobWVudBMTR0xfREVQVEhfQVRUQUNITUVOVBVHTF9TVEVOQ0lMX0FUVEFDSE1FTlQUR0xfQ09MT1JfQVRUQUNITUVOVDAUR0xfQ09MT1JfQVRUQUNITUVOVDEVR0xfQ09MT1JfQVRUQUNITUVOVDEwFUdMX0NPTE9SX0FUVEFDSE1FTlQxMRVHTF9DT0xPUl9BVFRBQ0hNRU5UMTIVR0xfQ09MT1JfQVRUQUNITUVOVDEzFUdMX0NPTE9SX0FUVEFDSE1FTlQxNBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTUUR0xfQ09MT1JfQVRUQUNITUVOVDIUR0xfQ09MT1JfQVRUQUNITUVOVDMUR0xfQ09MT1JfQVRUQUNITUVOVDQUR0xfQ09MT1JfQVRUQUNITUVOVDUUR0xfQ09MT1JfQVRUQUNITUVOVDYUR0xfQ09MT1JfQVRUQUNITUVOVDcUR0xfQ09MT1JfQVRUQUNITUVOVDgUR0xfQ09MT1JfQVRUQUNITUVOVDkbR0xfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UhX8MhYEIhYMKGWdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXITcmVuZGVyYnVmZmVyX3RhcmdldAEPR0xfUkVOREVSQlVGRkVSAhRnbEZyYW1lYnVmZmVyVGV4dHVyZQKFhQyFhwiFiQoUZ2xGcmFtZWJ1ZmZlclRleHR1cmUGdGFyZ2V0Aw5HTF9GUkFNRUJVRkZFUhNHTF9EUkFXX0ZSQU1FQlVGRkVSE0dMX1JFQURfRlJBTUVCVUZGRVKFiwyFjQiFjwoUZ2xGcmFtZWJ1ZmZlclRleHR1cmUKYXR0YWNobWVudBMTR0xfREVQVEhfQVRUQUNITUVOVBVHTF9TVEVOQ0lMX0FUVEFDSE1FTlQUR0xfQ09MT1JfQVRUQUNITUVOVDAUR0xfQ09MT1JfQVRUQUNITUVOVDEVR0xfQ09MT1JfQVRUQUNITUVOVDEwFUdMX0NPTE9SX0FUVEFDSE1FTlQxMRVHTF9DT0xPUl9BVFRBQ0hNRU5UMTIVR0xfQ09MT1JfQVRUQUNITUVOVDEzFUdMX0NPTE9SX0FUVEFDSE1FTlQxNBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTUUR0xfQ09MT1JfQVRUQUNITUVOVDIUR0xfQ09MT1JfQVRUQUNITUVOVDMUR0xfQ09MT1JfQVRUQUNITUVOVDQUR0xfQ09MT1JfQVRUQUNITUVOVDUUR0xfQ09MT1JfQVRUQUNITUVOVDYUR0xfQ09MT1JfQVRUQUNITUVOVDcUR0xfQ09MT1JfQVRUQUNITUVOVDgUR0xfQ09MT1JfQVRUQUNITUVOVDkbR0xfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UAhZnbEZyYW1lYnVmZmVyVGV4dHVyZTJEA4WRDIWTCIWVChZnbEZyYW1lYnVmZmVyVGV4dHVyZTJEEmZyYW1lYnVmZmVyX3RhcmdldAMOR0xfRlJBTUVCVUZGRVITR0xfRFJBV19GUkFNRUJVRkZFUhNHTF9SRUFEX0ZSQU1FQlVGRkVShZcMhZkIhZsKFmdsRnJhbWVidWZmZXJUZXh0dXJlMkQWZnJhbWVidWZmZXJfYXR0YWNobWVudBMTR0xfREVQVEhfQVRUQUNITUVOVBVHTF9TVEVOQ0lMX0FUVEFDSE1FTlQUR0xfQ09MT1JfQVRUQUNITUVOVDAUR0xfQ09MT1JfQVRUQUNITUVOVDEVR0xfQ09MT1JfQVRUQUNITUVOVDEwFUdMX0NPTE9SX0FUVEFDSE1FTlQxMRVHTF9DT0xPUl9BVFRBQ0hNRU5UMTIVR0xfQ09MT1JfQVRUQUNITUVOVDEzFUdMX0NPTE9SX0FUVEFDSE1FTlQxNBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTUUR0xfQ09MT1JfQVRUQUNITUVOVDIUR0xfQ09MT1JfQVRUQUNITUVOVDMUR0xfQ09MT1JfQVRUQUNITUVOVDQUR0xfQ09MT1JfQVRUQUNITUVOVDUUR0xfQ09MT1JfQVRUQUNITUVOVDYUR0xfQ09MT1JfQVRUQUNITUVOVDcUR0xfQ09MT1JfQVRUQUNITUVOVDgUR0xfQ09MT1JfQVRUQUNITUVOVDkbR0xfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UhZ0MhZ8IhaEKFmdsRnJhbWVidWZmZXJUZXh0dXJlMkQOdGV4dHVyZV90YXJnZXQIDUdMX1RFWFRVUkVfMkQeR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWR5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1oeR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWR5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1oZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRQIkZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlRVhUA4WjDIWlCIWnCiRnbEZyYW1lYnVmZmVyVGV4dHVyZTJETXVsdGlzYW1wbGVFWFQGdGFyZ2V0Aw5HTF9GUkFNRUJVRkZFUhNHTF9EUkFXX0ZSQU1FQlVGRkVSE0dMX1JFQURfRlJBTUVCVUZGRVKFqQyFqwiFrQokZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlRVhUCmF0dGFjaG1lbnQTE0dMX0RFUFRIX0FUVEFDSE1FTlQVR0xfU1RFTkNJTF9BVFRBQ0hNRU5UFEdMX0NPTE9SX0FUVEFDSE1FTlQwFEdMX0NPTE9SX0FUVEFDSE1FTlQxFUdMX0NPTE9SX0FUVEFDSE1FTlQxMBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTEVR0xfQ09MT1JfQVRUQUNITUVOVDEyFUdMX0NPTE9SX0FUVEFDSE1FTlQxMxVHTF9DT0xPUl9BVFRBQ0hNRU5UMTQVR0xfQ09MT1JfQVRUQUNITUVOVDE1FEdMX0NPTE9SX0FUVEFDSE1FTlQyFEdMX0NPTE9SX0FUVEFDSE1FTlQzFEdMX0NPTE9SX0FUVEFDSE1FTlQ0FEdMX0NPTE9SX0FUVEFDSE1FTlQ1FEdMX0NPTE9SX0FUVEFDSE1FTlQ2FEdMX0NPTE9SX0FUVEFDSE1FTlQ3FEdMX0NPTE9SX0FUVEFDSE1FTlQ4FEdMX0NPTE9SX0FUVEFDSE1FTlQ5G0dMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVIWvDIWxCIWzCiRnbEZyYW1lYnVmZmVyVGV4dHVyZTJETXVsdGlzYW1wbGVFWFQJdGV4dGFyZ2V0CA1HTF9URVhUVVJFXzJEHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWB5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1keR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWB5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1keR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUCGWdsRnJhbWVidWZmZXJUZXh0dXJlMkRPRVMDhbUMhbcIhbkKGWdsRnJhbWVidWZmZXJUZXh0dXJlMkRPRVMGdGFyZ2V0Aw5HTF9GUkFNRUJVRkZFUhNHTF9EUkFXX0ZSQU1FQlVGRkVSE0dMX1JFQURfRlJBTUVCVUZGRVKFuwyFvQiFvwoZZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRE9FUwphdHRhY2htZW50ExNHTF9ERVBUSF9BVFRBQ0hNRU5UFUdMX1NURU5DSUxfQVRUQUNITUVOVBRHTF9DT0xPUl9BVFRBQ0hNRU5UMBRHTF9DT0xPUl9BVFRBQ0hNRU5UMRVHTF9DT0xPUl9BVFRBQ0hNRU5UMTAVR0xfQ09MT1JfQVRUQUNITUVOVDExFUdMX0NPTE9SX0FUVEFDSE1FTlQxMhVHTF9DT0xPUl9BVFRBQ0hNRU5UMTMVR0xfQ09MT1JfQVRUQUNITUVOVDE0FUdMX0NPTE9SX0FUVEFDSE1FTlQxNRRHTF9DT0xPUl9BVFRBQ0hNRU5UMhRHTF9DT0xPUl9BVFRBQ0hNRU5UMxRHTF9DT0xPUl9BVFRBQ0hNRU5UNBRHTF9DT0xPUl9BVFRBQ0hNRU5UNRRHTF9DT0xPUl9BVFRBQ0hNRU5UNhRHTF9DT0xPUl9BVFRBQ0hNRU5UNxRHTF9DT0xPUl9BVFRBQ0hNRU5UOBRHTF9DT0xPUl9BVFRBQ0hNRU5UORtHTF9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlSFwQyFwwiFxQoZZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRE9FUwl0ZXh0YXJnZXQIDUdMX1RFWFRVUkVfMkQeR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWR5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1oeR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWR5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1oZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRQIXZ2xGcmFtZWJ1ZmZlclRleHR1cmVFWFQChccMhckIhcsKF2dsRnJhbWVidWZmZXJUZXh0dXJlRVhUBnRhcmdldAMOR0xfRlJBTUVCVUZGRVITR0xfRFJBV19GUkFNRUJVRkZFUhNHTF9SRUFEX0ZSQU1FQlVGRkVShc0Mhc8IhdEKF2dsRnJhbWVidWZmZXJUZXh0dXJlRVhUCmF0dGFjaG1lbnQTE0dMX0RFUFRIX0FUVEFDSE1FTlQVR0xfU1RFTkNJTF9BVFRBQ0hNRU5UFEdMX0NPTE9SX0FUVEFDSE1FTlQwFEdMX0NPTE9SX0FUVEFDSE1FTlQxFUdMX0NPTE9SX0FUVEFDSE1FTlQxMBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTEVR0xfQ09MT1JfQVRUQUNITUVOVDEyFUdMX0NPTE9SX0FUVEFDSE1FTlQxMxVHTF9DT0xPUl9BVFRBQ0hNRU5UMTQVR0xfQ09MT1JfQVRUQUNITUVOVDE1FEdMX0NPTE9SX0FUVEFDSE1FTlQyFEdMX0NPTE9SX0FUVEFDSE1FTlQzFEdMX0NPTE9SX0FUVEFDSE1FTlQ0FEdMX0NPTE9SX0FUVEFDSE1FTlQ1FEdMX0NPTE9SX0FUVEFDSE1FTlQ2FEdMX0NPTE9SX0FUVEFDSE1FTlQ3FEdMX0NPTE9SX0FUVEFDSE1FTlQ4FEdMX0NPTE9SX0FUVEFDSE1FTlQ5G0dMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVAIZZ2xGcmFtZWJ1ZmZlclRleHR1cmVMYXllcgKF0wyF1QiF1woZZ2xGcmFtZWJ1ZmZlclRleHR1cmVMYXllcgZ0YXJnZXQDDkdMX0ZSQU1FQlVGRkVSE0dMX0RSQVdfRlJBTUVCVUZGRVITR0xfUkVBRF9GUkFNRUJVRkZFUoXZDIXbCIXdChlnbEZyYW1lYnVmZmVyVGV4dHVyZUxheWVyCmF0dGFjaG1lbnQTE0dMX0RFUFRIX0FUVEFDSE1FTlQVR0xfU1RFTkNJTF9BVFRBQ0hNRU5UFEdMX0NPTE9SX0FUVEFDSE1FTlQwFEdMX0NPTE9SX0FUVEFDSE1FTlQxFUdMX0NPTE9SX0FUVEFDSE1FTlQxMBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTEVR0xfQ09MT1JfQVRUQUNITUVOVDEyFUdMX0NPTE9SX0FUVEFDSE1FTlQxMxVHTF9DT0xPUl9BVFRBQ0hNRU5UMTQVR0xfQ09MT1JfQVRUQUNITUVOVDE1FEdMX0NPTE9SX0FUVEFDSE1FTlQyFEdMX0NPTE9SX0FUVEFDSE1FTlQzFEdMX0NPTE9SX0FUVEFDSE1FTlQ0FEdMX0NPTE9SX0FUVEFDSE1FTlQ1FEdMX0NPTE9SX0FUVEFDSE1FTlQ2FEdMX0NPTE9SX0FUVEFDSE1FTlQ3FEdMX0NPTE9SX0FUVEFDSE1FTlQ4FEdMX0NPTE9SX0FUVEFDSE1FTlQ5G0dMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVAIXZ2xGcmFtZWJ1ZmZlclRleHR1cmVPRVMChd8MheEIheMKF2dsRnJhbWVidWZmZXJUZXh0dXJlT0VTBnRhcmdldAMOR0xfRlJBTUVCVUZGRVITR0xfRFJBV19GUkFNRUJVRkZFUhNHTF9SRUFEX0ZSQU1FQlVGRkVSheUMhecIhekKF2dsRnJhbWVidWZmZXJUZXh0dXJlT0VTCmF0dGFjaG1lbnQTE0dMX0RFUFRIX0FUVEFDSE1FTlQVR0xfU1RFTkNJTF9BVFRBQ0hNRU5UFEdMX0NPTE9SX0FUVEFDSE1FTlQwFEdMX0NPTE9SX0FUVEFDSE1FTlQxFUdMX0NPTE9SX0FUVEFDSE1FTlQxMBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTEVR0xfQ09MT1JfQVRUQUNITUVOVDEyFUdMX0NPTE9SX0FUVEFDSE1FTlQxMxVHTF9DT0xPUl9BVFRBQ0hNRU5UMTQVR0xfQ09MT1JfQVRUQUNITUVOVDE1FEdMX0NPTE9SX0FUVEFDSE1FTlQyFEdMX0NPTE9SX0FUVEFDSE1FTlQzFEdMX0NPTE9SX0FUVEFDSE1FTlQ0FEdMX0NPTE9SX0FUVEFDSE1FTlQ1FEdMX0NPTE9SX0FUVEFDSE1FTlQ2FEdMX0NPTE9SX0FUVEFDSE1FTlQ3FEdMX0NPTE9SX0FUVEFDSE1FTlQ4FEdMX0NPTE9SX0FUVEFDSE1FTlQ5G0dMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVAILZ2xGcm9udEZhY2UBhesMhe0Ihe8KC2dsRnJvbnRGYWNlC29yaWVudGF0aW9uAgZHTF9DQ1cFR0xfQ1cCFWdsR2VuUHJvZ3JhbVBpcGVsaW5lcwGF8QSF8waF9QiF9woVZ2xHZW5Qcm9ncmFtUGlwZWxpbmVzCXBpcGVsaW5lcwQBAgIQZ2xHZW5lcmF0ZU1pcG1hcAGF+QyF+wiF/QoQZ2xHZW5lcmF0ZU1pcG1hcAZ0YXJnZXQFDUdMX1RFWFRVUkVfMkQTR0xfVEVYVFVSRV9DVUJFX01BUBNHTF9URVhUVVJFXzJEX0FSUkFZDUdMX1RFWFRVUkVfM0QZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWQIRZ2xHZXRBY3RpdmVBdHRyaWIBhf8EhgEGhgMIhgUKEWdsR2V0QWN0aXZlQXR0cmliBG5hbWUEAQICEmdsR2V0QWN0aXZlVW5pZm9ybQGGBwSGCQaGCwiGDQoSZ2xHZXRBY3RpdmVVbmlmb3JtBG5hbWUEAQICG2dsR2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZQGGDwSGEQaGEwiGFQobZ2xHZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lBG5hbWUEAQICGWdsR2V0QWN0aXZlVW5pZm9ybUJsb2NraXYBhhcMhhkIhhsKGWdsR2V0QWN0aXZlVW5pZm9ybUJsb2NraXYOcGFyYW1ldGVyX25hbWUHIEdMX1VOSUZPUk1fQkxPQ0tfQUNUSVZFX1VOSUZPUk1TJ0dMX1VOSUZPUk1fQkxPQ0tfQUNUSVZFX1VOSUZPUk1fSU5ESUNFUxhHTF9VTklGT1JNX0JMT0NLX0JJTkRJTkcaR0xfVU5JRk9STV9CTE9DS19EQVRBX1NJWkUcR0xfVU5JRk9STV9CTE9DS19OQU1FX0xFTkdUSC5HTF9VTklGT1JNX0JMT0NLX1JFRkVSRU5DRURfQllfRlJBR01FTlRfU0hBREVSLEdMX1VOSUZPUk1fQkxPQ0tfUkVGRVJFTkNFRF9CWV9WRVJURVhfU0hBREVSAhVnbEdldEFjdGl2ZVVuaWZvcm1zaXYDhh0Ehh8GhiEIhiMKFWdsR2V0QWN0aXZlVW5pZm9ybXNpdg91bmlmb3JtX2luZGljZXMEAQCGJQyGJwiGKQoVZ2xHZXRBY3RpdmVVbmlmb3Jtc2l2DnBhcmFtZXRlcl9uYW1lCBdHTF9VTklGT1JNX0FSUkFZX1NUUklERRZHTF9VTklGT1JNX0JMT0NLX0lOREVYF0dMX1VOSUZPUk1fSVNfUk9XX01BSk9SGEdMX1VOSUZPUk1fTUFUUklYX1NUUklERRZHTF9VTklGT1JNX05BTUVfTEVOR1RIEUdMX1VOSUZPUk1fT0ZGU0VUD0dMX1VOSUZPUk1fU0laRQ9HTF9VTklGT1JNX1RZUEWGKwSGLQaGLwiGMQoVZ2xHZXRBY3RpdmVVbmlmb3Jtc2l2CnBhcmFtZXRlcnMEAQICD2dsR2V0Qm9vbGVhbmlfdgKGMwyGNQiGNwoPZ2xHZXRCb29sZWFuaV92BXBhcmFtgSoRR0xfQUNUSVZFX1RFWFRVUkUbR0xfQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFG0dMX0FMSUFTRURfUE9JTlRfU0laRV9SQU5HRQ1HTF9BTFBIQV9CSVRTF0dMX0FSUkFZX0JVRkZFUl9CSU5ESU5HIEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9CSU5ESU5HHUdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TSVpFHkdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TVEFSVAhHTF9CTEVORA5HTF9CTEVORF9DT0xPUhJHTF9CTEVORF9EU1RfQUxQSEEQR0xfQkxFTkRfRFNUX1JHQhdHTF9CTEVORF9FUVVBVElPTl9BTFBIQRVHTF9CTEVORF9FUVVBVElPTl9SR0ISR0xfQkxFTkRfU1JDX0FMUEhBEEdMX0JMRU5EX1NSQ19SR0IMR0xfQkxVRV9CSVRTFEdMX0NPTE9SX0NMRUFSX1ZBTFVFEkdMX0NPTE9SX1dSSVRFTUFTSx1HTF9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUxBHTF9DT05URVhUX0ZMQUdTGEdMX0NPTlRFWFRfUk9CVVNUX0FDQ0VTUxtHTF9DT1BZX1JFQURfQlVGRkVSX0JJTkRJTkccR0xfQ09QWV9XUklURV9CVUZGRVJfQklORElORwxHTF9DVUxMX0ZBQ0URR0xfQ1VMTF9GQUNFX01PREUSR0xfQ1VSUkVOVF9QUk9HUkFNGkdMX0RFQlVHX0dST1VQX1NUQUNLX0RFUFRIGEdMX0RFQlVHX0xPR0dFRF9NRVNTQUdFUyNHTF9ERUJVR19ORVhUX0xPR0dFRF9NRVNTQUdFX0xFTkdUSA1HTF9ERVBUSF9CSVRTFEdMX0RFUFRIX0NMRUFSX1ZBTFVFDUdMX0RFUFRIX0ZVTkMOR0xfREVQVEhfUkFOR0UNR0xfREVQVEhfVEVTVBJHTF9ERVBUSF9XUklURU1BU0sjR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSX0JJTkRJTkcJR0xfRElUSEVSDkdMX0RSQVdfQlVGRkVSD0dMX0RSQVdfQlVGRkVSMA9HTF9EUkFXX0JVRkZFUjEPR0xfRFJBV19CVUZGRVIyD0dMX0RSQVdfQlVGRkVSMw9HTF9EUkFXX0JVRkZFUjQPR0xfRFJBV19CVUZGRVI1D0dMX0RSQVdfQlVGRkVSNg9HTF9EUkFXX0JVRkZFUjcPR0xfRFJBV19CVUZGRVI4D0dMX0RSQVdfQlVGRkVSORBHTF9EUkFXX0JVRkZFUjEwEEdMX0RSQVdfQlVGRkVSMTEQR0xfRFJBV19CVUZGRVIxMhBHTF9EUkFXX0JVRkZFUjEzEEdMX0RSQVdfQlVGRkVSMTQQR0xfRFJBV19CVUZGRVIxNRtHTF9EUkFXX0ZSQU1FQlVGRkVSX0JJTkRJTkcfR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORyVHTF9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVF9CSVRTIkdMX0ZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlQNR0xfRlJPTlRfRkFDRRdHTF9HRU5FUkFURV9NSVBNQVBfSElOVA1HTF9HUkVFTl9CSVRTFUdMX0lNQUdFX0JJTkRJTkdfTkFNRRZHTF9JTUFHRV9CSU5ESU5HX0xFVkVMGEdMX0lNQUdFX0JJTkRJTkdfTEFZRVJFRBZHTF9JTUFHRV9CSU5ESU5HX0xBWUVSF0dMX0lNQUdFX0JJTkRJTkdfQUNDRVNTF0dMX0lNQUdFX0JJTkRJTkdfRk9STUFUI0dMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfRk9STUFUIUdMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfVFlQRRlHTF9MQVlFUl9QUk9WT0tJTkdfVkVSVEVYDUdMX0xJTkVfV0lEVEgqR0xfUFJJTUlUSVZFX1JFU1RBUlRfRk9SX1BBVENIRVNfU1VQUE9SVEVEEEdMX01BSk9SX1ZFUlNJT04WR0xfTUFYXzNEX1RFWFRVUkVfU0laRRtHTF9NQVhfQVJSQVlfVEVYVFVSRV9MQVlFUlMlR0xfTUFYX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9CSU5ESU5HUyFHTF9NQVhfQVRPTUlDX0NPVU5URVJfQlVGRkVSX1NJWkUmR0xfTUFYX0NPTUJJTkVEX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMYR0xfTUFYX0NPTE9SX0FUVEFDSE1FTlRTHEdMX01BWF9DT0xPUl9URVhUVVJFX1NBTVBMRVMcR0xfTUFYX0RFUFRIX1RFWFRVUkVfU0FNUExFUx9HTF9NQVhfQ09NQklORURfQVRPTUlDX0NPVU5URVJTEkdMX01BWF9JTUFHRV9VTklUUypHTF9NQVhfQ09NQklORURfQ09NUFVURV9VTklGT1JNX0NPTVBPTkVOVFMrR0xfTUFYX0NPTUJJTkVEX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UUytHTF9NQVhfQ09NQklORURfR0VPTUVUUllfVU5JRk9STV9DT01QT05FTlRTJUdMX01BWF9DT01CSU5FRF9TSEFERVJfU1RPUkFHRV9CTE9DS1MvR0xfTUFYX0NPTUJJTkVEX1RFU1NfQ09OVFJPTF9VTklGT1JNX0NPTVBPTkVOVFMyR0xfTUFYX0NPTUJJTkVEX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0NPTVBPTkVOVFMjR0xfTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMnR0xfTUFYX0NPTUJJTkVEX1NIQURFUl9PVVRQVVRfUkVTT1VSQ0VTHkdMX01BWF9DT01CSU5FRF9VTklGT1JNX0JMT0NLUylHTF9NQVhfQ09NQklORURfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUyVHTF9NQVhfQ09NUFVURV9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTHkdMX01BWF9DT01QVVRFX0FUT01JQ19DT1VOVEVSUx1HTF9NQVhfQ09NUFVURV9JTUFHRV9VTklGT1JNUx5HTF9NQVhfQ09NQklORURfSU1BR0VfVU5JRk9STVMkR0xfTUFYX0NPTVBVVEVfU0hBREVSX1NUT1JBR0VfQkxPQ0tTIkdMX01BWF9DT01QVVRFX1RFWFRVUkVfSU1BR0VfVU5JVFMhR0xfTUFYX0NPTVBVVEVfU0hBUkVEX01FTU9SWV9TSVpFHUdMX01BWF9DT01QVVRFX1VOSUZPUk1fQkxPQ0tTIUdMX01BWF9DT01QVVRFX1VOSUZPUk1fQ09NUE9ORU5UUx9HTF9NQVhfQ09NUFVURV9XT1JLX0dST1VQX0NPVU5UJUdMX01BWF9DT01QVVRFX1dPUktfR1JPVVBfSU5WT0NBVElPTlMeR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9TSVpFHEdMX01BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUeR0xfTUFYX0RFQlVHX0dST1VQX1NUQUNLX0RFUFRIHEdMX01BWF9ERUJVR19MT0dHRURfTUVTU0FHRVMbR0xfTUFYX0RFQlVHX01FU1NBR0VfTEVOR1RIE0dMX01BWF9EUkFXX0JVRkZFUlMUR0xfTUFYX0VMRU1FTlRfSU5ERVgXR0xfTUFYX0VMRU1FTlRTX0lORElDRVMYR0xfTUFYX0VMRU1FTlRTX1ZFUlRJQ0VTJkdMX01BWF9GUkFHTUVOVF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTH0dMX01BWF9GUkFHTUVOVF9BVE9NSUNfQ09VTlRFUlMeR0xfTUFYX0ZSQUdNRU5UX0lNQUdFX1VOSUZPUk1TIEdMX01BWF9GUkFHTUVOVF9JTlBVVF9DT01QT05FTlRTJEdMX01BWF9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVCVHTF9NQVhfRlJBR01FTlRfU0hBREVSX1NUT1JBR0VfQkxPQ0tTJEdMX01JTl9QUk9HUkFNX1RFWFRVUkVfR0FUSEVSX09GRlNFVCRHTF9NQVhfUFJPR1JBTV9URVhUVVJFX0dBVEhFUl9PRkZTRVQeR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQkxPQ0tTIkdMX01BWF9GUkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFMfR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUxlHTF9NQVhfRlJBTUVCVUZGRVJfSEVJR0hUGUdMX01BWF9GUkFNRUJVRkZFUl9MQVlFUlMaR0xfTUFYX0ZSQU1FQlVGRkVSX1NBTVBMRVMYR0xfTUFYX0ZSQU1FQlVGRkVSX1dJRFRIJkdMX01BWF9HRU9NRVRSWV9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTH0dMX01BWF9HRU9NRVRSWV9BVE9NSUNfQ09VTlRFUlMeR0xfTUFYX0dFT01FVFJZX0lNQUdFX1VOSUZPUk1TIEdMX01BWF9HRU9NRVRSWV9JTlBVVF9DT01QT05FTlRTIUdMX01BWF9HRU9NRVRSWV9PVVRQVVRfQ09NUE9ORU5UUx9HTF9NQVhfR0VPTUVUUllfT1VUUFVUX1ZFUlRJQ0VTIkdMX01BWF9HRU9NRVRSWV9TSEFERVJfSU5WT0NBVElPTlMlR0xfTUFYX0dFT01FVFJZX1NIQURFUl9TVE9SQUdFX0JMT0NLUyNHTF9NQVhfR0VPTUVUUllfVEVYVFVSRV9JTUFHRV9VTklUUydHTF9NQVhfR0VPTUVUUllfVE9UQUxfT1VUUFVUX0NPTVBPTkVOVFMeR0xfTUFYX0dFT01FVFJZX1VOSUZPUk1fQkxPQ0tTIkdMX01BWF9HRU9NRVRSWV9VTklGT1JNX0NPTVBPTkVOVFMWR0xfTUFYX0lOVEVHRVJfU0FNUExFUxNHTF9NQVhfTEFCRUxfTEVOR1RIG0dMX01BWF9QUk9HUkFNX1RFWEVMX09GRlNFVBhHTF9NQVhfUkVOREVSQlVGRkVSX1NJWkUYR0xfTUFYX1NBTVBMRV9NQVNLX1dPUkRTDkdMX01BWF9TQU1QTEVTGkdMX01BWF9TRVJWRVJfV0FJVF9USU1FT1VUIEdMX01BWF9TSEFERVJfU1RPUkFHRV9CTE9DS19TSVpFJUdMX01BWF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfQklORElOR1MqR0xfTUFYX1RFU1NfQ09OVFJPTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTI0dMX01BWF9URVNTX0NPTlRST0xfQVRPTUlDX0NPVU5URVJTIkdMX01BWF9URVNTX0NPTlRST0xfSU1BR0VfVU5JRk9STVMkR0xfTUFYX1RFU1NfQ09OVFJPTF9JTlBVVF9DT01QT05FTlRTJUdMX01BWF9URVNTX0NPTlRST0xfT1VUUFVUX0NPTVBPTkVOVFMpR0xfTUFYX1RFU1NfQ09OVFJPTF9TSEFERVJfU1RPUkFHRV9CTE9DS1MnR0xfTUFYX1RFU1NfQ09OVFJPTF9URVhUVVJFX0lNQUdFX1VOSVRTK0dMX01BWF9URVNTX0NPTlRST0xfVE9UQUxfT1VUUFVUX0NPTVBPTkVOVFMiR0xfTUFYX1RFU1NfQ09OVFJPTF9VTklGT1JNX0JMT0NLUyZHTF9NQVhfVEVTU19DT05UUk9MX1VOSUZPUk1fQ09NUE9ORU5UUy1HTF9NQVhfVEVTU19FVkFMVUFUSU9OX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMmR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9BVE9NSUNfQ09VTlRFUlMlR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9JTUFHRV9VTklGT1JNUydHTF9NQVhfVEVTU19FVkFMVUFUSU9OX0lOUFVUX0NPTVBPTkVOVFMoR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9PVVRQVVRfQ09NUE9ORU5UUyxHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1NIQURFUl9TVE9SQUdFX0JMT0NLUypHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1RFWFRVUkVfSU1BR0VfVU5JVFMlR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0JMT0NLUylHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1VOSUZPUk1fQ09NUE9ORU5UUxVHTF9NQVhfVEVTU19HRU5fTEVWRUwVR0xfTUFYX1BBVENIX1ZFUlRJQ0VTHEdMX01BWF9URVNTX1BBVENIX0NPTVBPTkVOVFMaR0xfTUFYX1RFWFRVUkVfQlVGRkVSX1NJWkUaR0xfTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMXR0xfTUFYX1RFWFRVUkVfTE9EX0JJQVMTR0xfTUFYX1RFWFRVUkVfU0laRTBHTF9NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX0lOVEVSTEVBVkVEX0NPTVBPTkVOVFMqR0xfTUFYX1RSQU5TRk9STV9GRUVEQkFDS19TRVBBUkFURV9BVFRSSUJTLUdMX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQ09NUE9ORU5UUxlHTF9NQVhfVU5JRk9STV9CTE9DS19TSVpFHkdMX01BWF9VTklGT1JNX0JVRkZFUl9CSU5ESU5HUxhHTF9NQVhfVU5JRk9STV9MT0NBVElPTlMZR0xfTUFYX1ZBUllJTkdfQ09NUE9ORU5UUxZHTF9NQVhfVkFSWUlOR19WRUNUT1JTHUdMX01BWF9WRVJURVhfQVRPTUlDX0NPVU5URVJTJEdMX01BWF9WRVJURVhfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx1HTF9NQVhfVkVSVEVYX0FUVFJJQl9CSU5ESU5HUxtHTF9NQVhfVkVSVEVYX0FUVFJJQl9TVFJJREUkR0xfTUFYX1ZFUlRFWF9BVFRSSUJfUkVMQVRJVkVfT0ZGU0VUFUdMX01BWF9WRVJURVhfQVRUUklCUxxHTF9NQVhfVkVSVEVYX0lNQUdFX1VOSUZPUk1TH0dMX01BWF9WRVJURVhfT1VUUFVUX0NPTVBPTkVOVFMjR0xfTUFYX1ZFUlRFWF9TSEFERVJfU1RPUkFHRV9CTE9DS1MhR0xfTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTHEdMX01BWF9WRVJURVhfVU5JRk9STV9CTE9DS1MgR0xfTUFYX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFMdR0xfTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMUR0xfTUFYX1ZJRVdQT1JUX0RJTVMkR0xfTUlOX0ZSQUdNRU5UX0lOVEVSUE9MQVRJT05fT0ZGU0VUG0dMX01JTl9QUk9HUkFNX1RFWEVMX09GRlNFVBtHTF9NSU5fU0FNUExFX1NIQURJTkdfVkFMVUUQR0xfTUlOT1JfVkVSU0lPTh9HTF9NVUxUSVNBTVBMRV9MSU5FX1dJRFRIX1JBTkdFJUdMX01VTFRJU0FNUExFX0xJTkVfV0lEVEhfR1JBTlVMQVJJVFkhR0xfTlVNX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTEUdMX05VTV9FWFRFTlNJT05THUdMX05VTV9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTHEdMX05VTV9TSEFERVJfQklOQVJZX0ZPUk1BVFMRR0xfUEFDS19BTElHTk1FTlQUR0xfUEFDS19JTUFHRV9IRUlHSFQSR0xfUEFDS19ST1dfTEVOR1RIE0dMX1BBQ0tfU0tJUF9JTUFHRVMTR0xfUEFDS19TS0lQX1BJWEVMUxFHTF9QQUNLX1NLSVBfUk9XUxFHTF9QQVRDSF9WRVJUSUNFUxxHTF9QSVhFTF9QQUNLX0JVRkZFUl9CSU5ESU5HHkdMX1BJWEVMX1VOUEFDS19CVUZGRVJfQklORElORxhHTF9QT0xZR09OX09GRlNFVF9GQUNUT1IWR0xfUE9MWUdPTl9PRkZTRVRfRklMTBdHTF9QT0xZR09OX09GRlNFVF9VTklUUxlHTF9QUklNSVRJVkVfQk9VTkRJTkdfQk9YIEdMX1BSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYGUdMX1BST0dSQU1fQklOQVJZX0ZPUk1BVFMbR0xfUFJPR1JBTV9QSVBFTElORV9CSU5ESU5HFUdMX1JBU1RFUklaRVJfRElTQ0FSRA5HTF9SRUFEX0JVRkZFUhtHTF9SRUFEX0ZSQU1FQlVGRkVSX0JJTkRJTkcLR0xfUkVEX0JJVFMXR0xfUkVOREVSQlVGRkVSX0JJTkRJTkceR0xfUkVTRVRfTk9USUZJQ0FUSU9OX1NUUkFURUdZG0dMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRRFHTF9TQU1QTEVfQlVGRkVSUxJHTF9TQU1QTEVfQ09WRVJBR0UZR0xfU0FNUExFX0NPVkVSQUdFX0lOVkVSVBhHTF9TQU1QTEVfQ09WRVJBR0VfVkFMVUURR0xfU0FNUExFX1NIQURJTkcSR0xfU0FNUExFUl9CSU5ESU5HCkdMX1NBTVBMRVMOR0xfU0NJU1NPUl9CT1gPR0xfU0NJU1NPUl9URVNUGEdMX1NIQURFUl9CSU5BUllfRk9STUFUUxJHTF9TSEFERVJfQ09NUElMRVIgR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX0JJTkRJTkcpR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX09GRlNFVF9BTElHTk1FTlQdR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX1NJWkUeR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX1NUQVJUFEdMX1NURU5DSUxfQkFDS19GQUlMFEdMX1NURU5DSUxfQkFDS19GVU5DH0dMX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZBSUwfR0xfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTUxNHTF9TVEVOQ0lMX0JBQ0tfUkVGGkdMX1NURU5DSUxfQkFDS19WQUxVRV9NQVNLGUdMX1NURU5DSUxfQkFDS19XUklURU1BU0sPR0xfU1RFTkNJTF9CSVRTFkdMX1NURU5DSUxfQ0xFQVJfVkFMVUUPR0xfU1RFTkNJTF9GQUlMD0dMX1NURU5DSUxfRlVOQxpHTF9TVEVOQ0lMX1BBU1NfREVQVEhfRkFJTBpHTF9TVEVOQ0lMX1BBU1NfREVQVEhfUEFTUw5HTF9TVEVOQ0lMX1JFRg9HTF9TVEVOQ0lMX1RFU1QVR0xfU1RFTkNJTF9WQUxVRV9NQVNLFEdMX1NURU5DSUxfV1JJVEVNQVNLEEdMX1NVQlBJWEVMX0JJVFMVR0xfVEVYVFVSRV9CSU5ESU5HXzJEH0dMX1RFWFRVUkVfQklORElOR19FWFRFUk5BTF9PRVMbR0xfVEVYVFVSRV9CSU5ESU5HXzJEX0FSUkFZIUdMX1RFWFRVUkVfQklORElOR18yRF9NVUxUSVNBTVBMRSdHTF9URVhUVVJFX0JJTkRJTkdfMkRfTVVMVElTQU1QTEVfQVJSQVkVR0xfVEVYVFVSRV9CSU5ESU5HXzNEGUdMX1RFWFRVUkVfQklORElOR19CVUZGRVIbR0xfVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQIUdMX1RFWFRVUkVfQklORElOR19DVUJFX01BUF9BUlJBWRlHTF9URVhUVVJFX0JVRkZFUl9CSU5ESU5HIkdMX1RFWFRVUkVfQlVGRkVSX09GRlNFVF9BTElHTk1FTlQcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0FDVElWRR1HTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQklORElORyRHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkchR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TSVpFIkdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU1RBUlQcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1BBVVNFRBlHTF9VTklGT1JNX0JVRkZFUl9CSU5ESU5HIkdMX1VOSUZPUk1fQlVGRkVSX09GRlNFVF9BTElHTk1FTlQWR0xfVU5JRk9STV9CVUZGRVJfU0laRRdHTF9VTklGT1JNX0JVRkZFUl9TVEFSVBNHTF9VTlBBQ0tfQUxJR05NRU5UFkdMX1VOUEFDS19JTUFHRV9IRUlHSFQUR0xfVU5QQUNLX1JPV19MRU5HVEgVR0xfVU5QQUNLX1NLSVBfSU1BR0VTFUdMX1VOUEFDS19TS0lQX1BJWEVMUxNHTF9VTlBBQ0tfU0tJUF9ST1dTF0dMX1ZFUlRFWF9BUlJBWV9CSU5ESU5HGUdMX1ZFUlRFWF9CSU5ESU5HX0RJVklTT1IYR0xfVkVSVEVYX0JJTkRJTkdfT0ZGU0VUGEdMX1ZFUlRFWF9CSU5ESU5HX1NUUklERQtHTF9WSUVXUE9SVCFHTF9NQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQTR0xfR1BVX0RJU0pPSU5UX0VYVIY5BIY7BoY9CIY/Cg9nbEdldEJvb2xlYW5pX3YGdmFsdWVzBAECAg1nbEdldEJvb2xlYW52AoZBDIZDCIZFCg1nbEdldEJvb2xlYW52BXBhcmFtgSoRR0xfQUNUSVZFX1RFWFRVUkUbR0xfQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFG0dMX0FMSUFTRURfUE9JTlRfU0laRV9SQU5HRQ1HTF9BTFBIQV9CSVRTF0dMX0FSUkFZX0JVRkZFUl9CSU5ESU5HIEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9CSU5ESU5HHUdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TSVpFHkdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TVEFSVAhHTF9CTEVORA5HTF9CTEVORF9DT0xPUhJHTF9CTEVORF9EU1RfQUxQSEEQR0xfQkxFTkRfRFNUX1JHQhdHTF9CTEVORF9FUVVBVElPTl9BTFBIQRVHTF9CTEVORF9FUVVBVElPTl9SR0ISR0xfQkxFTkRfU1JDX0FMUEhBEEdMX0JMRU5EX1NSQ19SR0IMR0xfQkxVRV9CSVRTFEdMX0NPTE9SX0NMRUFSX1ZBTFVFEkdMX0NPTE9SX1dSSVRFTUFTSx1HTF9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUxBHTF9DT05URVhUX0ZMQUdTGEdMX0NPTlRFWFRfUk9CVVNUX0FDQ0VTUxtHTF9DT1BZX1JFQURfQlVGRkVSX0JJTkRJTkccR0xfQ09QWV9XUklURV9CVUZGRVJfQklORElORwxHTF9DVUxMX0ZBQ0URR0xfQ1VMTF9GQUNFX01PREUSR0xfQ1VSUkVOVF9QUk9HUkFNGkdMX0RFQlVHX0dST1VQX1NUQUNLX0RFUFRIGEdMX0RFQlVHX0xPR0dFRF9NRVNTQUdFUyNHTF9ERUJVR19ORVhUX0xPR0dFRF9NRVNTQUdFX0xFTkdUSA1HTF9ERVBUSF9CSVRTFEdMX0RFUFRIX0NMRUFSX1ZBTFVFDUdMX0RFUFRIX0ZVTkMOR0xfREVQVEhfUkFOR0UNR0xfREVQVEhfVEVTVBJHTF9ERVBUSF9XUklURU1BU0sjR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSX0JJTkRJTkcJR0xfRElUSEVSDkdMX0RSQVdfQlVGRkVSD0dMX0RSQVdfQlVGRkVSMA9HTF9EUkFXX0JVRkZFUjEPR0xfRFJBV19CVUZGRVIyD0dMX0RSQVdfQlVGRkVSMw9HTF9EUkFXX0JVRkZFUjQPR0xfRFJBV19CVUZGRVI1D0dMX0RSQVdfQlVGRkVSNg9HTF9EUkFXX0JVRkZFUjcPR0xfRFJBV19CVUZGRVI4D0dMX0RSQVdfQlVGRkVSORBHTF9EUkFXX0JVRkZFUjEwEEdMX0RSQVdfQlVGRkVSMTEQR0xfRFJBV19CVUZGRVIxMhBHTF9EUkFXX0JVRkZFUjEzEEdMX0RSQVdfQlVGRkVSMTQQR0xfRFJBV19CVUZGRVIxNRtHTF9EUkFXX0ZSQU1FQlVGRkVSX0JJTkRJTkcfR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORyVHTF9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVF9CSVRTIkdMX0ZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlQNR0xfRlJPTlRfRkFDRRdHTF9HRU5FUkFURV9NSVBNQVBfSElOVA1HTF9HUkVFTl9CSVRTFUdMX0lNQUdFX0JJTkRJTkdfTkFNRRZHTF9JTUFHRV9CSU5ESU5HX0xFVkVMGEdMX0lNQUdFX0JJTkRJTkdfTEFZRVJFRBZHTF9JTUFHRV9CSU5ESU5HX0xBWUVSF0dMX0lNQUdFX0JJTkRJTkdfQUNDRVNTF0dMX0lNQUdFX0JJTkRJTkdfRk9STUFUI0dMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfRk9STUFUIUdMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfVFlQRRlHTF9MQVlFUl9QUk9WT0tJTkdfVkVSVEVYDUdMX0xJTkVfV0lEVEgqR0xfUFJJTUlUSVZFX1JFU1RBUlRfRk9SX1BBVENIRVNfU1VQUE9SVEVEEEdMX01BSk9SX1ZFUlNJT04WR0xfTUFYXzNEX1RFWFRVUkVfU0laRRtHTF9NQVhfQVJSQVlfVEVYVFVSRV9MQVlFUlMlR0xfTUFYX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9CSU5ESU5HUyFHTF9NQVhfQVRPTUlDX0NPVU5URVJfQlVGRkVSX1NJWkUmR0xfTUFYX0NPTUJJTkVEX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMYR0xfTUFYX0NPTE9SX0FUVEFDSE1FTlRTHEdMX01BWF9DT0xPUl9URVhUVVJFX1NBTVBMRVMcR0xfTUFYX0RFUFRIX1RFWFRVUkVfU0FNUExFUx9HTF9NQVhfQ09NQklORURfQVRPTUlDX0NPVU5URVJTEkdMX01BWF9JTUFHRV9VTklUUypHTF9NQVhfQ09NQklORURfQ09NUFVURV9VTklGT1JNX0NPTVBPTkVOVFMrR0xfTUFYX0NPTUJJTkVEX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UUytHTF9NQVhfQ09NQklORURfR0VPTUVUUllfVU5JRk9STV9DT01QT05FTlRTJUdMX01BWF9DT01CSU5FRF9TSEFERVJfU1RPUkFHRV9CTE9DS1MvR0xfTUFYX0NPTUJJTkVEX1RFU1NfQ09OVFJPTF9VTklGT1JNX0NPTVBPTkVOVFMyR0xfTUFYX0NPTUJJTkVEX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0NPTVBPTkVOVFMjR0xfTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMnR0xfTUFYX0NPTUJJTkVEX1NIQURFUl9PVVRQVVRfUkVTT1VSQ0VTHkdMX01BWF9DT01CSU5FRF9VTklGT1JNX0JMT0NLUylHTF9NQVhfQ09NQklORURfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUyVHTF9NQVhfQ09NUFVURV9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTHkdMX01BWF9DT01QVVRFX0FUT01JQ19DT1VOVEVSUx1HTF9NQVhfQ09NUFVURV9JTUFHRV9VTklGT1JNUx5HTF9NQVhfQ09NQklORURfSU1BR0VfVU5JRk9STVMkR0xfTUFYX0NPTVBVVEVfU0hBREVSX1NUT1JBR0VfQkxPQ0tTIkdMX01BWF9DT01QVVRFX1RFWFRVUkVfSU1BR0VfVU5JVFMhR0xfTUFYX0NPTVBVVEVfU0hBUkVEX01FTU9SWV9TSVpFHUdMX01BWF9DT01QVVRFX1VOSUZPUk1fQkxPQ0tTIUdMX01BWF9DT01QVVRFX1VOSUZPUk1fQ09NUE9ORU5UUx9HTF9NQVhfQ09NUFVURV9XT1JLX0dST1VQX0NPVU5UJUdMX01BWF9DT01QVVRFX1dPUktfR1JPVVBfSU5WT0NBVElPTlMeR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9TSVpFHEdMX01BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUeR0xfTUFYX0RFQlVHX0dST1VQX1NUQUNLX0RFUFRIHEdMX01BWF9ERUJVR19MT0dHRURfTUVTU0FHRVMbR0xfTUFYX0RFQlVHX01FU1NBR0VfTEVOR1RIE0dMX01BWF9EUkFXX0JVRkZFUlMUR0xfTUFYX0VMRU1FTlRfSU5ERVgXR0xfTUFYX0VMRU1FTlRTX0lORElDRVMYR0xfTUFYX0VMRU1FTlRTX1ZFUlRJQ0VTJkdMX01BWF9GUkFHTUVOVF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTH0dMX01BWF9GUkFHTUVOVF9BVE9NSUNfQ09VTlRFUlMeR0xfTUFYX0ZSQUdNRU5UX0lNQUdFX1VOSUZPUk1TIEdMX01BWF9GUkFHTUVOVF9JTlBVVF9DT01QT05FTlRTJEdMX01BWF9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVCVHTF9NQVhfRlJBR01FTlRfU0hBREVSX1NUT1JBR0VfQkxPQ0tTJEdMX01JTl9QUk9HUkFNX1RFWFRVUkVfR0FUSEVSX09GRlNFVCRHTF9NQVhfUFJPR1JBTV9URVhUVVJFX0dBVEhFUl9PRkZTRVQeR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQkxPQ0tTIkdMX01BWF9GUkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFMfR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUxlHTF9NQVhfRlJBTUVCVUZGRVJfSEVJR0hUGUdMX01BWF9GUkFNRUJVRkZFUl9MQVlFUlMaR0xfTUFYX0ZSQU1FQlVGRkVSX1NBTVBMRVMYR0xfTUFYX0ZSQU1FQlVGRkVSX1dJRFRIJkdMX01BWF9HRU9NRVRSWV9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTH0dMX01BWF9HRU9NRVRSWV9BVE9NSUNfQ09VTlRFUlMeR0xfTUFYX0dFT01FVFJZX0lNQUdFX1VOSUZPUk1TIEdMX01BWF9HRU9NRVRSWV9JTlBVVF9DT01QT05FTlRTIUdMX01BWF9HRU9NRVRSWV9PVVRQVVRfQ09NUE9ORU5UUx9HTF9NQVhfR0VPTUVUUllfT1VUUFVUX1ZFUlRJQ0VTIkdMX01BWF9HRU9NRVRSWV9TSEFERVJfSU5WT0NBVElPTlMlR0xfTUFYX0dFT01FVFJZX1NIQURFUl9TVE9SQUdFX0JMT0NLUyNHTF9NQVhfR0VPTUVUUllfVEVYVFVSRV9JTUFHRV9VTklUUydHTF9NQVhfR0VPTUVUUllfVE9UQUxfT1VUUFVUX0NPTVBPTkVOVFMeR0xfTUFYX0dFT01FVFJZX1VOSUZPUk1fQkxPQ0tTIkdMX01BWF9HRU9NRVRSWV9VTklGT1JNX0NPTVBPTkVOVFMWR0xfTUFYX0lOVEVHRVJfU0FNUExFUxNHTF9NQVhfTEFCRUxfTEVOR1RIG0dMX01BWF9QUk9HUkFNX1RFWEVMX09GRlNFVBhHTF9NQVhfUkVOREVSQlVGRkVSX1NJWkUYR0xfTUFYX1NBTVBMRV9NQVNLX1dPUkRTDkdMX01BWF9TQU1QTEVTGkdMX01BWF9TRVJWRVJfV0FJVF9USU1FT1VUIEdMX01BWF9TSEFERVJfU1RPUkFHRV9CTE9DS19TSVpFJUdMX01BWF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfQklORElOR1MqR0xfTUFYX1RFU1NfQ09OVFJPTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTI0dMX01BWF9URVNTX0NPTlRST0xfQVRPTUlDX0NPVU5URVJTIkdMX01BWF9URVNTX0NPTlRST0xfSU1BR0VfVU5JRk9STVMkR0xfTUFYX1RFU1NfQ09OVFJPTF9JTlBVVF9DT01QT05FTlRTJUdMX01BWF9URVNTX0NPTlRST0xfT1VUUFVUX0NPTVBPTkVOVFMpR0xfTUFYX1RFU1NfQ09OVFJPTF9TSEFERVJfU1RPUkFHRV9CTE9DS1MnR0xfTUFYX1RFU1NfQ09OVFJPTF9URVhUVVJFX0lNQUdFX1VOSVRTK0dMX01BWF9URVNTX0NPTlRST0xfVE9UQUxfT1VUUFVUX0NPTVBPTkVOVFMiR0xfTUFYX1RFU1NfQ09OVFJPTF9VTklGT1JNX0JMT0NLUyZHTF9NQVhfVEVTU19DT05UUk9MX1VOSUZPUk1fQ09NUE9ORU5UUy1HTF9NQVhfVEVTU19FVkFMVUFUSU9OX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMmR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9BVE9NSUNfQ09VTlRFUlMlR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9JTUFHRV9VTklGT1JNUydHTF9NQVhfVEVTU19FVkFMVUFUSU9OX0lOUFVUX0NPTVBPTkVOVFMoR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9PVVRQVVRfQ09NUE9ORU5UUyxHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1NIQURFUl9TVE9SQUdFX0JMT0NLUypHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1RFWFRVUkVfSU1BR0VfVU5JVFMlR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0JMT0NLUylHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1VOSUZPUk1fQ09NUE9ORU5UUxVHTF9NQVhfVEVTU19HRU5fTEVWRUwVR0xfTUFYX1BBVENIX1ZFUlRJQ0VTHEdMX01BWF9URVNTX1BBVENIX0NPTVBPTkVOVFMaR0xfTUFYX1RFWFRVUkVfQlVGRkVSX1NJWkUaR0xfTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMXR0xfTUFYX1RFWFRVUkVfTE9EX0JJQVMTR0xfTUFYX1RFWFRVUkVfU0laRTBHTF9NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX0lOVEVSTEVBVkVEX0NPTVBPTkVOVFMqR0xfTUFYX1RSQU5TRk9STV9GRUVEQkFDS19TRVBBUkFURV9BVFRSSUJTLUdMX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQ09NUE9ORU5UUxlHTF9NQVhfVU5JRk9STV9CTE9DS19TSVpFHkdMX01BWF9VTklGT1JNX0JVRkZFUl9CSU5ESU5HUxhHTF9NQVhfVU5JRk9STV9MT0NBVElPTlMZR0xfTUFYX1ZBUllJTkdfQ09NUE9ORU5UUxZHTF9NQVhfVkFSWUlOR19WRUNUT1JTHUdMX01BWF9WRVJURVhfQVRPTUlDX0NPVU5URVJTJEdMX01BWF9WRVJURVhfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx1HTF9NQVhfVkVSVEVYX0FUVFJJQl9CSU5ESU5HUxtHTF9NQVhfVkVSVEVYX0FUVFJJQl9TVFJJREUkR0xfTUFYX1ZFUlRFWF9BVFRSSUJfUkVMQVRJVkVfT0ZGU0VUFUdMX01BWF9WRVJURVhfQVRUUklCUxxHTF9NQVhfVkVSVEVYX0lNQUdFX1VOSUZPUk1TH0dMX01BWF9WRVJURVhfT1VUUFVUX0NPTVBPTkVOVFMjR0xfTUFYX1ZFUlRFWF9TSEFERVJfU1RPUkFHRV9CTE9DS1MhR0xfTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTHEdMX01BWF9WRVJURVhfVU5JRk9STV9CTE9DS1MgR0xfTUFYX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFMdR0xfTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMUR0xfTUFYX1ZJRVdQT1JUX0RJTVMkR0xfTUlOX0ZSQUdNRU5UX0lOVEVSUE9MQVRJT05fT0ZGU0VUG0dMX01JTl9QUk9HUkFNX1RFWEVMX09GRlNFVBtHTF9NSU5fU0FNUExFX1NIQURJTkdfVkFMVUUQR0xfTUlOT1JfVkVSU0lPTh9HTF9NVUxUSVNBTVBMRV9MSU5FX1dJRFRIX1JBTkdFJUdMX01VTFRJU0FNUExFX0xJTkVfV0lEVEhfR1JBTlVMQVJJVFkhR0xfTlVNX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTEUdMX05VTV9FWFRFTlNJT05THUdMX05VTV9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTHEdMX05VTV9TSEFERVJfQklOQVJZX0ZPUk1BVFMRR0xfUEFDS19BTElHTk1FTlQUR0xfUEFDS19JTUFHRV9IRUlHSFQSR0xfUEFDS19ST1dfTEVOR1RIE0dMX1BBQ0tfU0tJUF9JTUFHRVMTR0xfUEFDS19TS0lQX1BJWEVMUxFHTF9QQUNLX1NLSVBfUk9XUxFHTF9QQVRDSF9WRVJUSUNFUxxHTF9QSVhFTF9QQUNLX0JVRkZFUl9CSU5ESU5HHkdMX1BJWEVMX1VOUEFDS19CVUZGRVJfQklORElORxhHTF9QT0xZR09OX09GRlNFVF9GQUNUT1IWR0xfUE9MWUdPTl9PRkZTRVRfRklMTBdHTF9QT0xZR09OX09GRlNFVF9VTklUUxlHTF9QUklNSVRJVkVfQk9VTkRJTkdfQk9YIEdMX1BSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYGUdMX1BST0dSQU1fQklOQVJZX0ZPUk1BVFMbR0xfUFJPR1JBTV9QSVBFTElORV9CSU5ESU5HFUdMX1JBU1RFUklaRVJfRElTQ0FSRA5HTF9SRUFEX0JVRkZFUhtHTF9SRUFEX0ZSQU1FQlVGRkVSX0JJTkRJTkcLR0xfUkVEX0JJVFMXR0xfUkVOREVSQlVGRkVSX0JJTkRJTkceR0xfUkVTRVRfTk9USUZJQ0FUSU9OX1NUUkFURUdZG0dMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRRFHTF9TQU1QTEVfQlVGRkVSUxJHTF9TQU1QTEVfQ09WRVJBR0UZR0xfU0FNUExFX0NPVkVSQUdFX0lOVkVSVBhHTF9TQU1QTEVfQ09WRVJBR0VfVkFMVUURR0xfU0FNUExFX1NIQURJTkcSR0xfU0FNUExFUl9CSU5ESU5HCkdMX1NBTVBMRVMOR0xfU0NJU1NPUl9CT1gPR0xfU0NJU1NPUl9URVNUGEdMX1NIQURFUl9CSU5BUllfRk9STUFUUxJHTF9TSEFERVJfQ09NUElMRVIgR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX0JJTkRJTkcpR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX09GRlNFVF9BTElHTk1FTlQdR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX1NJWkUeR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX1NUQVJUFEdMX1NURU5DSUxfQkFDS19GQUlMFEdMX1NURU5DSUxfQkFDS19GVU5DH0dMX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZBSUwfR0xfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTUxNHTF9TVEVOQ0lMX0JBQ0tfUkVGGkdMX1NURU5DSUxfQkFDS19WQUxVRV9NQVNLGUdMX1NURU5DSUxfQkFDS19XUklURU1BU0sPR0xfU1RFTkNJTF9CSVRTFkdMX1NURU5DSUxfQ0xFQVJfVkFMVUUPR0xfU1RFTkNJTF9GQUlMD0dMX1NURU5DSUxfRlVOQxpHTF9TVEVOQ0lMX1BBU1NfREVQVEhfRkFJTBpHTF9TVEVOQ0lMX1BBU1NfREVQVEhfUEFTUw5HTF9TVEVOQ0lMX1JFRg9HTF9TVEVOQ0lMX1RFU1QVR0xfU1RFTkNJTF9WQUxVRV9NQVNLFEdMX1NURU5DSUxfV1JJVEVNQVNLEEdMX1NVQlBJWEVMX0JJVFMVR0xfVEVYVFVSRV9CSU5ESU5HXzJEH0dMX1RFWFRVUkVfQklORElOR19FWFRFUk5BTF9PRVMbR0xfVEVYVFVSRV9CSU5ESU5HXzJEX0FSUkFZIUdMX1RFWFRVUkVfQklORElOR18yRF9NVUxUSVNBTVBMRSdHTF9URVhUVVJFX0JJTkRJTkdfMkRfTVVMVElTQU1QTEVfQVJSQVkVR0xfVEVYVFVSRV9CSU5ESU5HXzNEGUdMX1RFWFRVUkVfQklORElOR19CVUZGRVIbR0xfVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQIUdMX1RFWFRVUkVfQklORElOR19DVUJFX01BUF9BUlJBWRlHTF9URVhUVVJFX0JVRkZFUl9CSU5ESU5HIkdMX1RFWFRVUkVfQlVGRkVSX09GRlNFVF9BTElHTk1FTlQcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0FDVElWRR1HTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQklORElORyRHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkchR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TSVpFIkdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU1RBUlQcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1BBVVNFRBlHTF9VTklGT1JNX0JVRkZFUl9CSU5ESU5HIkdMX1VOSUZPUk1fQlVGRkVSX09GRlNFVF9BTElHTk1FTlQWR0xfVU5JRk9STV9CVUZGRVJfU0laRRdHTF9VTklGT1JNX0JVRkZFUl9TVEFSVBNHTF9VTlBBQ0tfQUxJR05NRU5UFkdMX1VOUEFDS19JTUFHRV9IRUlHSFQUR0xfVU5QQUNLX1JPV19MRU5HVEgVR0xfVU5QQUNLX1NLSVBfSU1BR0VTFUdMX1VOUEFDS19TS0lQX1BJWEVMUxNHTF9VTlBBQ0tfU0tJUF9ST1dTF0dMX1ZFUlRFWF9BUlJBWV9CSU5ESU5HGUdMX1ZFUlRFWF9CSU5ESU5HX0RJVklTT1IYR0xfVkVSVEVYX0JJTkRJTkdfT0ZGU0VUGEdMX1ZFUlRFWF9CSU5ESU5HX1NUUklERQtHTF9WSUVXUE9SVCFHTF9NQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQTR0xfR1BVX0RJU0pPSU5UX0VYVIZHBIZJBoZLCIZNCg1nbEdldEJvb2xlYW52BnZhbHVlcwQBAgIYZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpNjR2AoZPDIZRCIZTChhnbEdldEJ1ZmZlclBhcmFtZXRlcmk2NHYGdGFyZ2V0DQ9HTF9BUlJBWV9CVUZGRVIXR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVITR0xfQ09QWV9SRUFEX0JVRkZFUhRHTF9DT1BZX1dSSVRFX0JVRkZFUhRHTF9QSVhFTF9QQUNLX0JVRkZFUhZHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSHEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIRR0xfVU5JRk9STV9CVUZGRVIYR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSG0dMX0RJU1BBVENIX0lORElSRUNUX0JVRkZFUhdHTF9EUkFXX0lORElSRUNUX0JVRkZFUhhHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVIRR0xfVEVYVFVSRV9CVUZGRVKGVQyGVwiGWQoYZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpNjR2CXBhcmFtZXRlcgYOR0xfQlVGRkVSX1NJWkUPR0xfQlVGRkVSX1VTQUdFFkdMX0JVRkZFUl9BQ0NFU1NfRkxBR1MQR0xfQlVGRkVSX01BUFBFRBRHTF9CVUZGRVJfTUFQX0xFTkdUSBRHTF9CVUZGRVJfTUFQX09GRlNFVAIWZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdgKGWwyGXQiGXwoWZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdgZ0YXJnZXQND0dMX0FSUkFZX0JVRkZFUhdHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUhNHTF9DT1BZX1JFQURfQlVGRkVSFEdMX0NPUFlfV1JJVEVfQlVGRkVSFEdMX1BJWEVMX1BBQ0tfQlVGRkVSFkdMX1BJWEVMX1VOUEFDS19CVUZGRVIcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUhFHTF9VTklGT1JNX0JVRkZFUhhHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVIbR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSF0dMX0RSQVdfSU5ESVJFQ1RfQlVGRkVSGEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUhFHTF9URVhUVVJFX0JVRkZFUoZhDIZjCIZlChZnbEdldEJ1ZmZlclBhcmFtZXRlcml2CXBhcmFtZXRlcgYOR0xfQlVGRkVSX1NJWkUPR0xfQlVGRkVSX1VTQUdFFkdMX0JVRkZFUl9BQ0NFU1NfRkxBR1MQR0xfQlVGRkVSX01BUFBFRBRHTF9CVUZGRVJfTUFQX0xFTkdUSBRHTF9CVUZGRVJfTUFQX09GRlNFVAITZ2xHZXRCdWZmZXJQb2ludGVydgOGZwyGaQiGawoTZ2xHZXRCdWZmZXJQb2ludGVydgZ0YXJnZXQND0dMX0FSUkFZX0JVRkZFUhNHTF9DT1BZX1JFQURfQlVGRkVSFEdMX0NPUFlfV1JJVEVfQlVGRkVSF0dMX0VMRU1FTlRfQVJSQVlfQlVGRkVSFEdMX1BJWEVMX1BBQ0tfQlVGRkVSFkdMX1BJWEVMX1VOUEFDS19CVUZGRVIcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUhFHTF9VTklGT1JNX0JVRkZFUhhHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVIbR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSF0dMX0RSQVdfSU5ESVJFQ1RfQlVGRkVSGEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUhFHTF9URVhUVVJFX0JVRkZFUoZtDIZvCIZxChNnbEdldEJ1ZmZlclBvaW50ZXJ2BXBuYW1lARVHTF9CVUZGRVJfTUFQX1BPSU5URVKGcwSGdQaGdwiGeQoTZ2xHZXRCdWZmZXJQb2ludGVydgZwYXJhbXMEAQICFmdsR2V0QnVmZmVyUG9pbnRlcnZPRVMDhnsMhn0Ihn8KFmdsR2V0QnVmZmVyUG9pbnRlcnZPRVMGdGFyZ2V0DQ9HTF9BUlJBWV9CVUZGRVITR0xfQ09QWV9SRUFEX0JVRkZFUhRHTF9DT1BZX1dSSVRFX0JVRkZFUhdHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUhRHTF9QSVhFTF9QQUNLX0JVRkZFUhZHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSHEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIRR0xfVU5JRk9STV9CVUZGRVIYR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSG0dMX0RJU1BBVENIX0lORElSRUNUX0JVRkZFUhdHTF9EUkFXX0lORElSRUNUX0JVRkZFUhhHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVIRR0xfVEVYVFVSRV9CVUZGRVKGgQyGgwiGhQoWZ2xHZXRCdWZmZXJQb2ludGVydk9FUwVwbmFtZQEVR0xfQlVGRkVSX01BUF9QT0lOVEVShocEhokGhosIho0KFmdsR2V0QnVmZmVyUG9pbnRlcnZPRVMGcGFyYW1zBAECAhRnbEdldERlYnVnTWVzc2FnZUxvZwaGjwSGkQaGkwiGlQoUZ2xHZXREZWJ1Z01lc3NhZ2VMb2cHc291cmNlcwQBAoaXBIaZBoabCIadChRnbEdldERlYnVnTWVzc2FnZUxvZwV0eXBlcwQBAoafBIahBoajCIalChRnbEdldERlYnVnTWVzc2FnZUxvZwNpZHMEAQKGpwSGqQaGqwiGrQoUZ2xHZXREZWJ1Z01lc3NhZ2VMb2cKc2V2ZXJpdGllcwQBAoavBIaxBoazCIa1ChRnbEdldERlYnVnTWVzc2FnZUxvZwdsZW5ndGhzBAEChrcEhrkGhrsIhr0KFGdsR2V0RGVidWdNZXNzYWdlTG9nCm1lc3NhZ2VMb2cEAQICF2dsR2V0RGVidWdNZXNzYWdlTG9nS0hSBoa/BIbBBobDCIbFChdnbEdldERlYnVnTWVzc2FnZUxvZ0tIUgdzb3VyY2VzBAEChscEhskGhssIhs0KF2dsR2V0RGVidWdNZXNzYWdlTG9nS0hSBXR5cGVzBAEChs8EhtEGhtMIhtUKF2dsR2V0RGVidWdNZXNzYWdlTG9nS0hSA2lkcwQBAobXBIbZBobbCIbdChdnbEdldERlYnVnTWVzc2FnZUxvZ0tIUgpzZXZlcml0aWVzBAECht8EhuEGhuMIhuUKF2dsR2V0RGVidWdNZXNzYWdlTG9nS0hSB2xlbmd0aHMEAQKG5wSG6QaG6wiG7QoXZ2xHZXREZWJ1Z01lc3NhZ2VMb2dLSFIKbWVzc2FnZUxvZwQBAgILZ2xHZXRGbG9hdHYChu8MhvEIhvMKC2dsR2V0RmxvYXR2BXBhcmFtgSoRR0xfQUNUSVZFX1RFWFRVUkUbR0xfQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFG0dMX0FMSUFTRURfUE9JTlRfU0laRV9SQU5HRQ1HTF9BTFBIQV9CSVRTF0dMX0FSUkFZX0JVRkZFUl9CSU5ESU5HIEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9CSU5ESU5HHUdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TSVpFHkdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TVEFSVAhHTF9CTEVORA5HTF9CTEVORF9DT0xPUhJHTF9CTEVORF9EU1RfQUxQSEEQR0xfQkxFTkRfRFNUX1JHQhdHTF9CTEVORF9FUVVBVElPTl9BTFBIQRVHTF9CTEVORF9FUVVBVElPTl9SR0ISR0xfQkxFTkRfU1JDX0FMUEhBEEdMX0JMRU5EX1NSQ19SR0IMR0xfQkxVRV9CSVRTFEdMX0NPTE9SX0NMRUFSX1ZBTFVFEkdMX0NPTE9SX1dSSVRFTUFTSx1HTF9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUxBHTF9DT05URVhUX0ZMQUdTGEdMX0NPTlRFWFRfUk9CVVNUX0FDQ0VTUxtHTF9DT1BZX1JFQURfQlVGRkVSX0JJTkRJTkccR0xfQ09QWV9XUklURV9CVUZGRVJfQklORElORwxHTF9DVUxMX0ZBQ0URR0xfQ1VMTF9GQUNFX01PREUSR0xfQ1VSUkVOVF9QUk9HUkFNGkdMX0RFQlVHX0dST1VQX1NUQUNLX0RFUFRIGEdMX0RFQlVHX0xPR0dFRF9NRVNTQUdFUyNHTF9ERUJVR19ORVhUX0xPR0dFRF9NRVNTQUdFX0xFTkdUSA1HTF9ERVBUSF9CSVRTFEdMX0RFUFRIX0NMRUFSX1ZBTFVFDUdMX0RFUFRIX0ZVTkMOR0xfREVQVEhfUkFOR0UNR0xfREVQVEhfVEVTVBJHTF9ERVBUSF9XUklURU1BU0sjR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSX0JJTkRJTkcJR0xfRElUSEVSDkdMX0RSQVdfQlVGRkVSD0dMX0RSQVdfQlVGRkVSMA9HTF9EUkFXX0JVRkZFUjEPR0xfRFJBV19CVUZGRVIyD0dMX0RSQVdfQlVGRkVSMw9HTF9EUkFXX0JVRkZFUjQPR0xfRFJBV19CVUZGRVI1D0dMX0RSQVdfQlVGRkVSNg9HTF9EUkFXX0JVRkZFUjcPR0xfRFJBV19CVUZGRVI4D0dMX0RSQVdfQlVGRkVSORBHTF9EUkFXX0JVRkZFUjEwEEdMX0RSQVdfQlVGRkVSMTEQR0xfRFJBV19CVUZGRVIxMhBHTF9EUkFXX0JVRkZFUjEzEEdMX0RSQVdfQlVGRkVSMTQQR0xfRFJBV19CVUZGRVIxNRtHTF9EUkFXX0ZSQU1FQlVGRkVSX0JJTkRJTkcfR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORyVHTF9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVF9CSVRTIkdMX0ZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlQNR0xfRlJPTlRfRkFDRRdHTF9HRU5FUkFURV9NSVBNQVBfSElOVA1HTF9HUkVFTl9CSVRTFUdMX0lNQUdFX0JJTkRJTkdfTkFNRRZHTF9JTUFHRV9CSU5ESU5HX0xFVkVMGEdMX0lNQUdFX0JJTkRJTkdfTEFZRVJFRBZHTF9JTUFHRV9CSU5ESU5HX0xBWUVSF0dMX0lNQUdFX0JJTkRJTkdfQUNDRVNTF0dMX0lNQUdFX0JJTkRJTkdfRk9STUFUI0dMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfRk9STUFUIUdMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfVFlQRRlHTF9MQVlFUl9QUk9WT0tJTkdfVkVSVEVYDUdMX0xJTkVfV0lEVEgqR0xfUFJJTUlUSVZFX1JFU1RBUlRfRk9SX1BBVENIRVNfU1VQUE9SVEVEEEdMX01BSk9SX1ZFUlNJT04WR0xfTUFYXzNEX1RFWFRVUkVfU0laRRtHTF9NQVhfQVJSQVlfVEVYVFVSRV9MQVlFUlMlR0xfTUFYX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9CSU5ESU5HUyFHTF9NQVhfQVRPTUlDX0NPVU5URVJfQlVGRkVSX1NJWkUmR0xfTUFYX0NPTUJJTkVEX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMYR0xfTUFYX0NPTE9SX0FUVEFDSE1FTlRTHEdMX01BWF9DT0xPUl9URVhUVVJFX1NBTVBMRVMcR0xfTUFYX0RFUFRIX1RFWFRVUkVfU0FNUExFUx9HTF9NQVhfQ09NQklORURfQVRPTUlDX0NPVU5URVJTEkdMX01BWF9JTUFHRV9VTklUUypHTF9NQVhfQ09NQklORURfQ09NUFVURV9VTklGT1JNX0NPTVBPTkVOVFMrR0xfTUFYX0NPTUJJTkVEX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UUytHTF9NQVhfQ09NQklORURfR0VPTUVUUllfVU5JRk9STV9DT01QT05FTlRTJUdMX01BWF9DT01CSU5FRF9TSEFERVJfU1RPUkFHRV9CTE9DS1MvR0xfTUFYX0NPTUJJTkVEX1RFU1NfQ09OVFJPTF9VTklGT1JNX0NPTVBPTkVOVFMyR0xfTUFYX0NPTUJJTkVEX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0NPTVBPTkVOVFMjR0xfTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMnR0xfTUFYX0NPTUJJTkVEX1NIQURFUl9PVVRQVVRfUkVTT1VSQ0VTHkdMX01BWF9DT01CSU5FRF9VTklGT1JNX0JMT0NLUylHTF9NQVhfQ09NQklORURfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUyVHTF9NQVhfQ09NUFVURV9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTHkdMX01BWF9DT01QVVRFX0FUT01JQ19DT1VOVEVSUx1HTF9NQVhfQ09NUFVURV9JTUFHRV9VTklGT1JNUx5HTF9NQVhfQ09NQklORURfSU1BR0VfVU5JRk9STVMkR0xfTUFYX0NPTVBVVEVfU0hBREVSX1NUT1JBR0VfQkxPQ0tTIkdMX01BWF9DT01QVVRFX1RFWFRVUkVfSU1BR0VfVU5JVFMhR0xfTUFYX0NPTVBVVEVfU0hBUkVEX01FTU9SWV9TSVpFHUdMX01BWF9DT01QVVRFX1VOSUZPUk1fQkxPQ0tTIUdMX01BWF9DT01QVVRFX1VOSUZPUk1fQ09NUE9ORU5UUx9HTF9NQVhfQ09NUFVURV9XT1JLX0dST1VQX0NPVU5UJUdMX01BWF9DT01QVVRFX1dPUktfR1JPVVBfSU5WT0NBVElPTlMeR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9TSVpFHEdMX01BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUeR0xfTUFYX0RFQlVHX0dST1VQX1NUQUNLX0RFUFRIHEdMX01BWF9ERUJVR19MT0dHRURfTUVTU0FHRVMbR0xfTUFYX0RFQlVHX01FU1NBR0VfTEVOR1RIE0dMX01BWF9EUkFXX0JVRkZFUlMUR0xfTUFYX0VMRU1FTlRfSU5ERVgXR0xfTUFYX0VMRU1FTlRTX0lORElDRVMYR0xfTUFYX0VMRU1FTlRTX1ZFUlRJQ0VTJkdMX01BWF9GUkFHTUVOVF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTH0dMX01BWF9GUkFHTUVOVF9BVE9NSUNfQ09VTlRFUlMeR0xfTUFYX0ZSQUdNRU5UX0lNQUdFX1VOSUZPUk1TIEdMX01BWF9GUkFHTUVOVF9JTlBVVF9DT01QT05FTlRTJEdMX01BWF9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVCVHTF9NQVhfRlJBR01FTlRfU0hBREVSX1NUT1JBR0VfQkxPQ0tTJEdMX01JTl9QUk9HUkFNX1RFWFRVUkVfR0FUSEVSX09GRlNFVCRHTF9NQVhfUFJPR1JBTV9URVhUVVJFX0dBVEhFUl9PRkZTRVQeR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQkxPQ0tTIkdMX01BWF9GUkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFMfR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUxlHTF9NQVhfRlJBTUVCVUZGRVJfSEVJR0hUGUdMX01BWF9GUkFNRUJVRkZFUl9MQVlFUlMaR0xfTUFYX0ZSQU1FQlVGRkVSX1NBTVBMRVMYR0xfTUFYX0ZSQU1FQlVGRkVSX1dJRFRIJkdMX01BWF9HRU9NRVRSWV9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTH0dMX01BWF9HRU9NRVRSWV9BVE9NSUNfQ09VTlRFUlMeR0xfTUFYX0dFT01FVFJZX0lNQUdFX1VOSUZPUk1TIEdMX01BWF9HRU9NRVRSWV9JTlBVVF9DT01QT05FTlRTIUdMX01BWF9HRU9NRVRSWV9PVVRQVVRfQ09NUE9ORU5UUx9HTF9NQVhfR0VPTUVUUllfT1VUUFVUX1ZFUlRJQ0VTIkdMX01BWF9HRU9NRVRSWV9TSEFERVJfSU5WT0NBVElPTlMlR0xfTUFYX0dFT01FVFJZX1NIQURFUl9TVE9SQUdFX0JMT0NLUyNHTF9NQVhfR0VPTUVUUllfVEVYVFVSRV9JTUFHRV9VTklUUydHTF9NQVhfR0VPTUVUUllfVE9UQUxfT1VUUFVUX0NPTVBPTkVOVFMeR0xfTUFYX0dFT01FVFJZX1VOSUZPUk1fQkxPQ0tTIkdMX01BWF9HRU9NRVRSWV9VTklGT1JNX0NPTVBPTkVOVFMWR0xfTUFYX0lOVEVHRVJfU0FNUExFUxNHTF9NQVhfTEFCRUxfTEVOR1RIG0dMX01BWF9QUk9HUkFNX1RFWEVMX09GRlNFVBhHTF9NQVhfUkVOREVSQlVGRkVSX1NJWkUYR0xfTUFYX1NBTVBMRV9NQVNLX1dPUkRTDkdMX01BWF9TQU1QTEVTGkdMX01BWF9TRVJWRVJfV0FJVF9USU1FT1VUIEdMX01BWF9TSEFERVJfU1RPUkFHRV9CTE9DS19TSVpFJUdMX01BWF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfQklORElOR1MqR0xfTUFYX1RFU1NfQ09OVFJPTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTI0dMX01BWF9URVNTX0NPTlRST0xfQVRPTUlDX0NPVU5URVJTIkdMX01BWF9URVNTX0NPTlRST0xfSU1BR0VfVU5JRk9STVMkR0xfTUFYX1RFU1NfQ09OVFJPTF9JTlBVVF9DT01QT05FTlRTJUdMX01BWF9URVNTX0NPTlRST0xfT1VUUFVUX0NPTVBPTkVOVFMpR0xfTUFYX1RFU1NfQ09OVFJPTF9TSEFERVJfU1RPUkFHRV9CTE9DS1MnR0xfTUFYX1RFU1NfQ09OVFJPTF9URVhUVVJFX0lNQUdFX1VOSVRTK0dMX01BWF9URVNTX0NPTlRST0xfVE9UQUxfT1VUUFVUX0NPTVBPTkVOVFMiR0xfTUFYX1RFU1NfQ09OVFJPTF9VTklGT1JNX0JMT0NLUyZHTF9NQVhfVEVTU19DT05UUk9MX1VOSUZPUk1fQ09NUE9ORU5UUy1HTF9NQVhfVEVTU19FVkFMVUFUSU9OX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMmR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9BVE9NSUNfQ09VTlRFUlMlR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9JTUFHRV9VTklGT1JNUydHTF9NQVhfVEVTU19FVkFMVUFUSU9OX0lOUFVUX0NPTVBPTkVOVFMoR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9PVVRQVVRfQ09NUE9ORU5UUyxHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1NIQURFUl9TVE9SQUdFX0JMT0NLUypHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1RFWFRVUkVfSU1BR0VfVU5JVFMlR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0JMT0NLUylHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1VOSUZPUk1fQ09NUE9ORU5UUxVHTF9NQVhfVEVTU19HRU5fTEVWRUwVR0xfTUFYX1BBVENIX1ZFUlRJQ0VTHEdMX01BWF9URVNTX1BBVENIX0NPTVBPTkVOVFMaR0xfTUFYX1RFWFRVUkVfQlVGRkVSX1NJWkUaR0xfTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMXR0xfTUFYX1RFWFRVUkVfTE9EX0JJQVMTR0xfTUFYX1RFWFRVUkVfU0laRTBHTF9NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX0lOVEVSTEVBVkVEX0NPTVBPTkVOVFMqR0xfTUFYX1RSQU5TRk9STV9GRUVEQkFDS19TRVBBUkFURV9BVFRSSUJTLUdMX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQ09NUE9ORU5UUxlHTF9NQVhfVU5JRk9STV9CTE9DS19TSVpFHkdMX01BWF9VTklGT1JNX0JVRkZFUl9CSU5ESU5HUxhHTF9NQVhfVU5JRk9STV9MT0NBVElPTlMZR0xfTUFYX1ZBUllJTkdfQ09NUE9ORU5UUxZHTF9NQVhfVkFSWUlOR19WRUNUT1JTHUdMX01BWF9WRVJURVhfQVRPTUlDX0NPVU5URVJTJEdMX01BWF9WRVJURVhfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx1HTF9NQVhfVkVSVEVYX0FUVFJJQl9CSU5ESU5HUxtHTF9NQVhfVkVSVEVYX0FUVFJJQl9TVFJJREUkR0xfTUFYX1ZFUlRFWF9BVFRSSUJfUkVMQVRJVkVfT0ZGU0VUFUdMX01BWF9WRVJURVhfQVRUUklCUxxHTF9NQVhfVkVSVEVYX0lNQUdFX1VOSUZPUk1TH0dMX01BWF9WRVJURVhfT1VUUFVUX0NPTVBPTkVOVFMjR0xfTUFYX1ZFUlRFWF9TSEFERVJfU1RPUkFHRV9CTE9DS1MhR0xfTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTHEdMX01BWF9WRVJURVhfVU5JRk9STV9CTE9DS1MgR0xfTUFYX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFMdR0xfTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMUR0xfTUFYX1ZJRVdQT1JUX0RJTVMkR0xfTUlOX0ZSQUdNRU5UX0lOVEVSUE9MQVRJT05fT0ZGU0VUG0dMX01JTl9QUk9HUkFNX1RFWEVMX09GRlNFVBtHTF9NSU5fU0FNUExFX1NIQURJTkdfVkFMVUUQR0xfTUlOT1JfVkVSU0lPTh9HTF9NVUxUSVNBTVBMRV9MSU5FX1dJRFRIX1JBTkdFJUdMX01VTFRJU0FNUExFX0xJTkVfV0lEVEhfR1JBTlVMQVJJVFkhR0xfTlVNX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTEUdMX05VTV9FWFRFTlNJT05THUdMX05VTV9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTHEdMX05VTV9TSEFERVJfQklOQVJZX0ZPUk1BVFMRR0xfUEFDS19BTElHTk1FTlQUR0xfUEFDS19JTUFHRV9IRUlHSFQSR0xfUEFDS19ST1dfTEVOR1RIE0dMX1BBQ0tfU0tJUF9JTUFHRVMTR0xfUEFDS19TS0lQX1BJWEVMUxFHTF9QQUNLX1NLSVBfUk9XUxFHTF9QQVRDSF9WRVJUSUNFUxxHTF9QSVhFTF9QQUNLX0JVRkZFUl9CSU5ESU5HHkdMX1BJWEVMX1VOUEFDS19CVUZGRVJfQklORElORxhHTF9QT0xZR09OX09GRlNFVF9GQUNUT1IWR0xfUE9MWUdPTl9PRkZTRVRfRklMTBdHTF9QT0xZR09OX09GRlNFVF9VTklUUxlHTF9QUklNSVRJVkVfQk9VTkRJTkdfQk9YIEdMX1BSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYGUdMX1BST0dSQU1fQklOQVJZX0ZPUk1BVFMbR0xfUFJPR1JBTV9QSVBFTElORV9CSU5ESU5HFUdMX1JBU1RFUklaRVJfRElTQ0FSRA5HTF9SRUFEX0JVRkZFUhtHTF9SRUFEX0ZSQU1FQlVGRkVSX0JJTkRJTkcLR0xfUkVEX0JJVFMXR0xfUkVOREVSQlVGRkVSX0JJTkRJTkceR0xfUkVTRVRfTk9USUZJQ0FUSU9OX1NUUkFURUdZG0dMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRRFHTF9TQU1QTEVfQlVGRkVSUxJHTF9TQU1QTEVfQ09WRVJBR0UZR0xfU0FNUExFX0NPVkVSQUdFX0lOVkVSVBhHTF9TQU1QTEVfQ09WRVJBR0VfVkFMVUURR0xfU0FNUExFX1NIQURJTkcSR0xfU0FNUExFUl9CSU5ESU5HCkdMX1NBTVBMRVMOR0xfU0NJU1NPUl9CT1gPR0xfU0NJU1NPUl9URVNUGEdMX1NIQURFUl9CSU5BUllfRk9STUFUUxJHTF9TSEFERVJfQ09NUElMRVIgR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX0JJTkRJTkcpR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX09GRlNFVF9BTElHTk1FTlQdR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX1NJWkUeR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX1NUQVJUFEdMX1NURU5DSUxfQkFDS19GQUlMFEdMX1NURU5DSUxfQkFDS19GVU5DH0dMX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZBSUwfR0xfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTUxNHTF9TVEVOQ0lMX0JBQ0tfUkVGGkdMX1NURU5DSUxfQkFDS19WQUxVRV9NQVNLGUdMX1NURU5DSUxfQkFDS19XUklURU1BU0sPR0xfU1RFTkNJTF9CSVRTFkdMX1NURU5DSUxfQ0xFQVJfVkFMVUUPR0xfU1RFTkNJTF9GQUlMD0dMX1NURU5DSUxfRlVOQxpHTF9TVEVOQ0lMX1BBU1NfREVQVEhfRkFJTBpHTF9TVEVOQ0lMX1BBU1NfREVQVEhfUEFTUw5HTF9TVEVOQ0lMX1JFRg9HTF9TVEVOQ0lMX1RFU1QVR0xfU1RFTkNJTF9WQUxVRV9NQVNLFEdMX1NURU5DSUxfV1JJVEVNQVNLEEdMX1NVQlBJWEVMX0JJVFMVR0xfVEVYVFVSRV9CSU5ESU5HXzJEH0dMX1RFWFRVUkVfQklORElOR19FWFRFUk5BTF9PRVMbR0xfVEVYVFVSRV9CSU5ESU5HXzJEX0FSUkFZIUdMX1RFWFRVUkVfQklORElOR18yRF9NVUxUSVNBTVBMRSdHTF9URVhUVVJFX0JJTkRJTkdfMkRfTVVMVElTQU1QTEVfQVJSQVkVR0xfVEVYVFVSRV9CSU5ESU5HXzNEGUdMX1RFWFRVUkVfQklORElOR19CVUZGRVIbR0xfVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQIUdMX1RFWFRVUkVfQklORElOR19DVUJFX01BUF9BUlJBWRlHTF9URVhUVVJFX0JVRkZFUl9CSU5ESU5HIkdMX1RFWFRVUkVfQlVGRkVSX09GRlNFVF9BTElHTk1FTlQcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0FDVElWRR1HTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQklORElORyRHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkchR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TSVpFIkdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU1RBUlQcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1BBVVNFRBlHTF9VTklGT1JNX0JVRkZFUl9CSU5ESU5HIkdMX1VOSUZPUk1fQlVGRkVSX09GRlNFVF9BTElHTk1FTlQWR0xfVU5JRk9STV9CVUZGRVJfU0laRRdHTF9VTklGT1JNX0JVRkZFUl9TVEFSVBNHTF9VTlBBQ0tfQUxJR05NRU5UFkdMX1VOUEFDS19JTUFHRV9IRUlHSFQUR0xfVU5QQUNLX1JPV19MRU5HVEgVR0xfVU5QQUNLX1NLSVBfSU1BR0VTFUdMX1VOUEFDS19TS0lQX1BJWEVMUxNHTF9VTlBBQ0tfU0tJUF9ST1dTF0dMX1ZFUlRFWF9BUlJBWV9CSU5ESU5HGUdMX1ZFUlRFWF9CSU5ESU5HX0RJVklTT1IYR0xfVkVSVEVYX0JJTkRJTkdfT0ZGU0VUGEdMX1ZFUlRFWF9CSU5ESU5HX1NUUklERQtHTF9WSUVXUE9SVCFHTF9NQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQTR0xfR1BVX0RJU0pPSU5UX0VYVIb1BIb3Bob5CIb7CgtnbEdldEZsb2F0dgZ2YWx1ZXMEAQICJWdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYDhv0Mhv8IhwEKJWdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYSZnJhbWVidWZmZXJfdGFyZ2V0Aw5HTF9GUkFNRUJVRkZFUhNHTF9EUkFXX0ZSQU1FQlVGRkVSE0dMX1JFQURfRlJBTUVCVUZGRVKHAwyHBQiHBwolZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdgphdHRhY2htZW50FhRHTF9DT0xPUl9BVFRBQ0hNRU5UMBNHTF9ERVBUSF9BVFRBQ0hNRU5UFUdMX1NURU5DSUxfQVRUQUNITUVOVAdHTF9CQUNLFEdMX0NPTE9SX0FUVEFDSE1FTlQxFUdMX0NPTE9SX0FUVEFDSE1FTlQxMBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTEVR0xfQ09MT1JfQVRUQUNITUVOVDEyFUdMX0NPTE9SX0FUVEFDSE1FTlQxMxVHTF9DT0xPUl9BVFRBQ0hNRU5UMTQVR0xfQ09MT1JfQVRUQUNITUVOVDE1FEdMX0NPTE9SX0FUVEFDSE1FTlQyFEdMX0NPTE9SX0FUVEFDSE1FTlQzFEdMX0NPTE9SX0FUVEFDSE1FTlQ0FEdMX0NPTE9SX0FUVEFDSE1FTlQ1FEdMX0NPTE9SX0FUVEFDSE1FTlQ2FEdMX0NPTE9SX0FUVEFDSE1FTlQ3FEdMX0NPTE9SX0FUVEFDSE1FTlQ4FEdMX0NPTE9SX0FUVEFDSE1FTlQ5CEdMX0RFUFRIG0dMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVApHTF9TVEVOQ0lMhwkMhwsIhw0KJWdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYJcGFyYW1ldGVyDiVHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FJUdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUvR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0UnR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMJEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQUxQSEFfU0laRSNHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0JMVUVfU0laRShHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5HKEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09NUE9ORU5UX1RZUEUkR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9ERVBUSF9TSVpFJEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfR1JFRU5fU0laRSJHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1JFRF9TSVpFJkdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfU1RFTkNJTF9TSVpFJ0dMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MQVlFUiFHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0xBWUVSRUQCG2dsR2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdgKHDwyHEQiHEwobZ2xHZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2BnRhcmdldAMOR0xfRlJBTUVCVUZGRVITR0xfRFJBV19GUkFNRUJVRkZFUhNHTF9SRUFEX0ZSQU1FQlVGRkVShxUMhxcIhxkKG2dsR2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdgVwbmFtZQUtR0xfRlJBTUVCVUZGRVJfREVGQVVMVF9GSVhFRF9TQU1QTEVfTE9DQVRJT05THUdMX0ZSQU1FQlVGRkVSX0RFRkFVTFRfSEVJR0hUHkdMX0ZSQU1FQlVGRkVSX0RFRkFVTFRfU0FNUExFUxxHTF9GUkFNRUJVRkZFUl9ERUZBVUxUX1dJRFRIHUdMX0ZSQU1FQlVGRkVSX0RFRkFVTFRfTEFZRVJTAhFnbEdldEludGVnZXI2NGlfdgKHGwyHHQiHHwoRZ2xHZXRJbnRlZ2VyNjRpX3YFcGFyYW2BKhFHTF9BQ1RJVkVfVEVYVFVSRRtHTF9BTElBU0VEX0xJTkVfV0lEVEhfUkFOR0UbR0xfQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFDUdMX0FMUEhBX0JJVFMXR0xfQVJSQVlfQlVGRkVSX0JJTkRJTkcgR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSX0JJTkRJTkcdR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSX1NJWkUeR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSX1NUQVJUCEdMX0JMRU5EDkdMX0JMRU5EX0NPTE9SEkdMX0JMRU5EX0RTVF9BTFBIQRBHTF9CTEVORF9EU1RfUkdCF0dMX0JMRU5EX0VRVUFUSU9OX0FMUEhBFUdMX0JMRU5EX0VRVUFUSU9OX1JHQhJHTF9CTEVORF9TUkNfQUxQSEEQR0xfQkxFTkRfU1JDX1JHQgxHTF9CTFVFX0JJVFMUR0xfQ09MT1JfQ0xFQVJfVkFMVUUSR0xfQ09MT1JfV1JJVEVNQVNLHUdMX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTEEdMX0NPTlRFWFRfRkxBR1MYR0xfQ09OVEVYVF9ST0JVU1RfQUNDRVNTG0dMX0NPUFlfUkVBRF9CVUZGRVJfQklORElORxxHTF9DT1BZX1dSSVRFX0JVRkZFUl9CSU5ESU5HDEdMX0NVTExfRkFDRRFHTF9DVUxMX0ZBQ0VfTU9ERRJHTF9DVVJSRU5UX1BST0dSQU0aR0xfREVCVUdfR1JPVVBfU1RBQ0tfREVQVEgYR0xfREVCVUdfTE9HR0VEX01FU1NBR0VTI0dMX0RFQlVHX05FWFRfTE9HR0VEX01FU1NBR0VfTEVOR1RIDUdMX0RFUFRIX0JJVFMUR0xfREVQVEhfQ0xFQVJfVkFMVUUNR0xfREVQVEhfRlVOQw5HTF9ERVBUSF9SQU5HRQ1HTF9ERVBUSF9URVNUEkdMX0RFUFRIX1dSSVRFTUFTSyNHTF9ESVNQQVRDSF9JTkRJUkVDVF9CVUZGRVJfQklORElORwlHTF9ESVRIRVIOR0xfRFJBV19CVUZGRVIPR0xfRFJBV19CVUZGRVIwD0dMX0RSQVdfQlVGRkVSMQ9HTF9EUkFXX0JVRkZFUjIPR0xfRFJBV19CVUZGRVIzD0dMX0RSQVdfQlVGRkVSNA9HTF9EUkFXX0JVRkZFUjUPR0xfRFJBV19CVUZGRVI2D0dMX0RSQVdfQlVGRkVSNw9HTF9EUkFXX0JVRkZFUjgPR0xfRFJBV19CVUZGRVI5EEdMX0RSQVdfQlVGRkVSMTAQR0xfRFJBV19CVUZGRVIxMRBHTF9EUkFXX0JVRkZFUjEyEEdMX0RSQVdfQlVGRkVSMTMQR0xfRFJBV19CVUZGRVIxNBBHTF9EUkFXX0JVRkZFUjE1G0dMX0RSQVdfRlJBTUVCVUZGRVJfQklORElORx9HTF9FTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HJUdMX0ZSQUdNRU5UX0lOVEVSUE9MQVRJT05fT0ZGU0VUX0JJVFMiR0xfRlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVA1HTF9GUk9OVF9GQUNFF0dMX0dFTkVSQVRFX01JUE1BUF9ISU5UDUdMX0dSRUVOX0JJVFMVR0xfSU1BR0VfQklORElOR19OQU1FFkdMX0lNQUdFX0JJTkRJTkdfTEVWRUwYR0xfSU1BR0VfQklORElOR19MQVlFUkVEFkdMX0lNQUdFX0JJTkRJTkdfTEFZRVIXR0xfSU1BR0VfQklORElOR19BQ0NFU1MXR0xfSU1BR0VfQklORElOR19GT1JNQVQjR0xfSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9GT1JNQVQhR0xfSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9UWVBFGUdMX0xBWUVSX1BST1ZPS0lOR19WRVJURVgNR0xfTElORV9XSURUSCpHTF9QUklNSVRJVkVfUkVTVEFSVF9GT1JfUEFUQ0hFU19TVVBQT1JURUQQR0xfTUFKT1JfVkVSU0lPThZHTF9NQVhfM0RfVEVYVFVSRV9TSVpFG0dMX01BWF9BUlJBWV9URVhUVVJFX0xBWUVSUyVHTF9NQVhfQVRPTUlDX0NPVU5URVJfQlVGRkVSX0JJTkRJTkdTIUdMX01BWF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfU0laRSZHTF9NQVhfQ09NQklORURfQVRPTUlDX0NPVU5URVJfQlVGRkVSUxhHTF9NQVhfQ09MT1JfQVRUQUNITUVOVFMcR0xfTUFYX0NPTE9SX1RFWFRVUkVfU0FNUExFUxxHTF9NQVhfREVQVEhfVEVYVFVSRV9TQU1QTEVTH0dMX01BWF9DT01CSU5FRF9BVE9NSUNfQ09VTlRFUlMSR0xfTUFYX0lNQUdFX1VOSVRTKkdMX01BWF9DT01CSU5FRF9DT01QVVRFX1VOSUZPUk1fQ09NUE9ORU5UUytHTF9NQVhfQ09NQklORURfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTK0dMX01BWF9DT01CSU5FRF9HRU9NRVRSWV9VTklGT1JNX0NPTVBPTkVOVFMlR0xfTUFYX0NPTUJJTkVEX1NIQURFUl9TVE9SQUdFX0JMT0NLUy9HTF9NQVhfQ09NQklORURfVEVTU19DT05UUk9MX1VOSUZPUk1fQ09NUE9ORU5UUzJHTF9NQVhfQ09NQklORURfVEVTU19FVkFMVUFUSU9OX1VOSUZPUk1fQ09NUE9ORU5UUyNHTF9NQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUydHTF9NQVhfQ09NQklORURfU0hBREVSX09VVFBVVF9SRVNPVVJDRVMeR0xfTUFYX0NPTUJJTkVEX1VOSUZPUk1fQkxPQ0tTKUdMX01BWF9DT01CSU5FRF9WRVJURVhfVU5JRk9STV9DT01QT05FTlRTJUdMX01BWF9DT01QVVRFX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMeR0xfTUFYX0NPTVBVVEVfQVRPTUlDX0NPVU5URVJTHUdMX01BWF9DT01QVVRFX0lNQUdFX1VOSUZPUk1THkdMX01BWF9DT01CSU5FRF9JTUFHRV9VTklGT1JNUyRHTF9NQVhfQ09NUFVURV9TSEFERVJfU1RPUkFHRV9CTE9DS1MiR0xfTUFYX0NPTVBVVEVfVEVYVFVSRV9JTUFHRV9VTklUUyFHTF9NQVhfQ09NUFVURV9TSEFSRURfTUVNT1JZX1NJWkUdR0xfTUFYX0NPTVBVVEVfVU5JRk9STV9CTE9DS1MhR0xfTUFYX0NPTVBVVEVfVU5JRk9STV9DT01QT05FTlRTH0dMX01BWF9DT01QVVRFX1dPUktfR1JPVVBfQ09VTlQlR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9JTlZPQ0FUSU9OUx5HTF9NQVhfQ09NUFVURV9XT1JLX0dST1VQX1NJWkUcR0xfTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRR5HTF9NQVhfREVCVUdfR1JPVVBfU1RBQ0tfREVQVEgcR0xfTUFYX0RFQlVHX0xPR0dFRF9NRVNTQUdFUxtHTF9NQVhfREVCVUdfTUVTU0FHRV9MRU5HVEgTR0xfTUFYX0RSQVdfQlVGRkVSUxRHTF9NQVhfRUxFTUVOVF9JTkRFWBdHTF9NQVhfRUxFTUVOVFNfSU5ESUNFUxhHTF9NQVhfRUxFTUVOVFNfVkVSVElDRVMmR0xfTUFYX0ZSQUdNRU5UX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMfR0xfTUFYX0ZSQUdNRU5UX0FUT01JQ19DT1VOVEVSUx5HTF9NQVhfRlJBR01FTlRfSU1BR0VfVU5JRk9STVMgR0xfTUFYX0ZSQUdNRU5UX0lOUFVUX0NPTVBPTkVOVFMkR0xfTUFYX0ZSQUdNRU5UX0lOVEVSUE9MQVRJT05fT0ZGU0VUJUdMX01BWF9GUkFHTUVOVF9TSEFERVJfU1RPUkFHRV9CTE9DS1MkR0xfTUlOX1BST0dSQU1fVEVYVFVSRV9HQVRIRVJfT0ZGU0VUJEdMX01BWF9QUk9HUkFNX1RFWFRVUkVfR0FUSEVSX09GRlNFVB5HTF9NQVhfRlJBR01FTlRfVU5JRk9STV9CTE9DS1MiR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UUx9HTF9NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTGUdMX01BWF9GUkFNRUJVRkZFUl9IRUlHSFQZR0xfTUFYX0ZSQU1FQlVGRkVSX0xBWUVSUxpHTF9NQVhfRlJBTUVCVUZGRVJfU0FNUExFUxhHTF9NQVhfRlJBTUVCVUZGRVJfV0lEVEgmR0xfTUFYX0dFT01FVFJZX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMfR0xfTUFYX0dFT01FVFJZX0FUT01JQ19DT1VOVEVSUx5HTF9NQVhfR0VPTUVUUllfSU1BR0VfVU5JRk9STVMgR0xfTUFYX0dFT01FVFJZX0lOUFVUX0NPTVBPTkVOVFMhR0xfTUFYX0dFT01FVFJZX09VVFBVVF9DT01QT05FTlRTH0dMX01BWF9HRU9NRVRSWV9PVVRQVVRfVkVSVElDRVMiR0xfTUFYX0dFT01FVFJZX1NIQURFUl9JTlZPQ0FUSU9OUyVHTF9NQVhfR0VPTUVUUllfU0hBREVSX1NUT1JBR0VfQkxPQ0tTI0dMX01BWF9HRU9NRVRSWV9URVhUVVJFX0lNQUdFX1VOSVRTJ0dMX01BWF9HRU9NRVRSWV9UT1RBTF9PVVRQVVRfQ09NUE9ORU5UUx5HTF9NQVhfR0VPTUVUUllfVU5JRk9STV9CTE9DS1MiR0xfTUFYX0dFT01FVFJZX1VOSUZPUk1fQ09NUE9ORU5UUxZHTF9NQVhfSU5URUdFUl9TQU1QTEVTE0dMX01BWF9MQUJFTF9MRU5HVEgbR0xfTUFYX1BST0dSQU1fVEVYRUxfT0ZGU0VUGEdMX01BWF9SRU5ERVJCVUZGRVJfU0laRRhHTF9NQVhfU0FNUExFX01BU0tfV09SRFMOR0xfTUFYX1NBTVBMRVMaR0xfTUFYX1NFUlZFUl9XQUlUX1RJTUVPVVQgR0xfTUFYX1NIQURFUl9TVE9SQUdFX0JMT0NLX1NJWkUlR0xfTUFYX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9CSU5ESU5HUypHTF9NQVhfVEVTU19DT05UUk9MX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMjR0xfTUFYX1RFU1NfQ09OVFJPTF9BVE9NSUNfQ09VTlRFUlMiR0xfTUFYX1RFU1NfQ09OVFJPTF9JTUFHRV9VTklGT1JNUyRHTF9NQVhfVEVTU19DT05UUk9MX0lOUFVUX0NPTVBPTkVOVFMlR0xfTUFYX1RFU1NfQ09OVFJPTF9PVVRQVVRfQ09NUE9ORU5UUylHTF9NQVhfVEVTU19DT05UUk9MX1NIQURFUl9TVE9SQUdFX0JMT0NLUydHTF9NQVhfVEVTU19DT05UUk9MX1RFWFRVUkVfSU1BR0VfVU5JVFMrR0xfTUFYX1RFU1NfQ09OVFJPTF9UT1RBTF9PVVRQVVRfQ09NUE9ORU5UUyJHTF9NQVhfVEVTU19DT05UUk9MX1VOSUZPUk1fQkxPQ0tTJkdMX01BWF9URVNTX0NPTlRST0xfVU5JRk9STV9DT01QT05FTlRTLUdMX01BWF9URVNTX0VWQUxVQVRJT05fQVRPTUlDX0NPVU5URVJfQlVGRkVSUyZHTF9NQVhfVEVTU19FVkFMVUFUSU9OX0FUT01JQ19DT1VOVEVSUyVHTF9NQVhfVEVTU19FVkFMVUFUSU9OX0lNQUdFX1VOSUZPUk1TJ0dMX01BWF9URVNTX0VWQUxVQVRJT05fSU5QVVRfQ09NUE9ORU5UUyhHTF9NQVhfVEVTU19FVkFMVUFUSU9OX09VVFBVVF9DT01QT05FTlRTLEdMX01BWF9URVNTX0VWQUxVQVRJT05fU0hBREVSX1NUT1JBR0VfQkxPQ0tTKkdMX01BWF9URVNTX0VWQUxVQVRJT05fVEVYVFVSRV9JTUFHRV9VTklUUyVHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1VOSUZPUk1fQkxPQ0tTKUdMX01BWF9URVNTX0VWQUxVQVRJT05fVU5JRk9STV9DT01QT05FTlRTFUdMX01BWF9URVNTX0dFTl9MRVZFTBVHTF9NQVhfUEFUQ0hfVkVSVElDRVMcR0xfTUFYX1RFU1NfUEFUQ0hfQ09NUE9ORU5UUxpHTF9NQVhfVEVYVFVSRV9CVUZGRVJfU0laRRpHTF9NQVhfVEVYVFVSRV9JTUFHRV9VTklUUxdHTF9NQVhfVEVYVFVSRV9MT0RfQklBUxNHTF9NQVhfVEVYVFVSRV9TSVpFMEdMX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfSU5URVJMRUFWRURfQ09NUE9ORU5UUypHTF9NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFSQVRFX0FUVFJJQlMtR0xfTUFYX1RSQU5TRk9STV9GRUVEQkFDS19TRVBBUkFURV9DT01QT05FTlRTGUdMX01BWF9VTklGT1JNX0JMT0NLX1NJWkUeR0xfTUFYX1VOSUZPUk1fQlVGRkVSX0JJTkRJTkdTGEdMX01BWF9VTklGT1JNX0xPQ0FUSU9OUxlHTF9NQVhfVkFSWUlOR19DT01QT05FTlRTFkdMX01BWF9WQVJZSU5HX1ZFQ1RPUlMdR0xfTUFYX1ZFUlRFWF9BVE9NSUNfQ09VTlRFUlMkR0xfTUFYX1ZFUlRFWF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTHUdMX01BWF9WRVJURVhfQVRUUklCX0JJTkRJTkdTG0dMX01BWF9WRVJURVhfQVRUUklCX1NUUklERSRHTF9NQVhfVkVSVEVYX0FUVFJJQl9SRUxBVElWRV9PRkZTRVQVR0xfTUFYX1ZFUlRFWF9BVFRSSUJTHEdMX01BWF9WRVJURVhfSU1BR0VfVU5JRk9STVMfR0xfTUFYX1ZFUlRFWF9PVVRQVVRfQ09NUE9ORU5UUyNHTF9NQVhfVkVSVEVYX1NIQURFUl9TVE9SQUdFX0JMT0NLUyFHTF9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFMcR0xfTUFYX1ZFUlRFWF9VTklGT1JNX0JMT0NLUyBHTF9NQVhfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUx1HTF9NQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUxRHTF9NQVhfVklFV1BPUlRfRElNUyRHTF9NSU5fRlJBR01FTlRfSU5URVJQT0xBVElPTl9PRkZTRVQbR0xfTUlOX1BST0dSQU1fVEVYRUxfT0ZGU0VUG0dMX01JTl9TQU1QTEVfU0hBRElOR19WQUxVRRBHTF9NSU5PUl9WRVJTSU9OH0dMX01VTFRJU0FNUExFX0xJTkVfV0lEVEhfUkFOR0UlR0xfTVVMVElTQU1QTEVfTElORV9XSURUSF9HUkFOVUxBUklUWSFHTF9OVU1fQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMRR0xfTlVNX0VYVEVOU0lPTlMdR0xfTlVNX1BST0dSQU1fQklOQVJZX0ZPUk1BVFMcR0xfTlVNX1NIQURFUl9CSU5BUllfRk9STUFUUxFHTF9QQUNLX0FMSUdOTUVOVBRHTF9QQUNLX0lNQUdFX0hFSUdIVBJHTF9QQUNLX1JPV19MRU5HVEgTR0xfUEFDS19TS0lQX0lNQUdFUxNHTF9QQUNLX1NLSVBfUElYRUxTEUdMX1BBQ0tfU0tJUF9ST1dTEUdMX1BBVENIX1ZFUlRJQ0VTHEdMX1BJWEVMX1BBQ0tfQlVGRkVSX0JJTkRJTkceR0xfUElYRUxfVU5QQUNLX0JVRkZFUl9CSU5ESU5HGEdMX1BPTFlHT05fT0ZGU0VUX0ZBQ1RPUhZHTF9QT0xZR09OX09GRlNFVF9GSUxMF0dMX1BPTFlHT05fT0ZGU0VUX1VOSVRTGUdMX1BSSU1JVElWRV9CT1VORElOR19CT1ggR0xfUFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgZR0xfUFJPR1JBTV9CSU5BUllfRk9STUFUUxtHTF9QUk9HUkFNX1BJUEVMSU5FX0JJTkRJTkcVR0xfUkFTVEVSSVpFUl9ESVNDQVJEDkdMX1JFQURfQlVGRkVSG0dMX1JFQURfRlJBTUVCVUZGRVJfQklORElORwtHTF9SRURfQklUUxdHTF9SRU5ERVJCVUZGRVJfQklORElORx5HTF9SRVNFVF9OT1RJRklDQVRJT05fU1RSQVRFR1kbR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFEUdMX1NBTVBMRV9CVUZGRVJTEkdMX1NBTVBMRV9DT1ZFUkFHRRlHTF9TQU1QTEVfQ09WRVJBR0VfSU5WRVJUGEdMX1NBTVBMRV9DT1ZFUkFHRV9WQUxVRRFHTF9TQU1QTEVfU0hBRElORxJHTF9TQU1QTEVSX0JJTkRJTkcKR0xfU0FNUExFUw5HTF9TQ0lTU09SX0JPWA9HTF9TQ0lTU09SX1RFU1QYR0xfU0hBREVSX0JJTkFSWV9GT1JNQVRTEkdMX1NIQURFUl9DT01QSUxFUiBHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfQklORElORylHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVB1HTF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfU0laRR5HTF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfU1RBUlQUR0xfU1RFTkNJTF9CQUNLX0ZBSUwUR0xfU1RFTkNJTF9CQUNLX0ZVTkMfR0xfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfRkFJTB9HTF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9QQVNTE0dMX1NURU5DSUxfQkFDS19SRUYaR0xfU1RFTkNJTF9CQUNLX1ZBTFVFX01BU0sZR0xfU1RFTkNJTF9CQUNLX1dSSVRFTUFTSw9HTF9TVEVOQ0lMX0JJVFMWR0xfU1RFTkNJTF9DTEVBUl9WQUxVRQ9HTF9TVEVOQ0lMX0ZBSUwPR0xfU1RFTkNJTF9GVU5DGkdMX1NURU5DSUxfUEFTU19ERVBUSF9GQUlMGkdMX1NURU5DSUxfUEFTU19ERVBUSF9QQVNTDkdMX1NURU5DSUxfUkVGD0dMX1NURU5DSUxfVEVTVBVHTF9TVEVOQ0lMX1ZBTFVFX01BU0sUR0xfU1RFTkNJTF9XUklURU1BU0sQR0xfU1VCUElYRUxfQklUUxVHTF9URVhUVVJFX0JJTkRJTkdfMkQfR0xfVEVYVFVSRV9CSU5ESU5HX0VYVEVSTkFMX09FUxtHTF9URVhUVVJFX0JJTkRJTkdfMkRfQVJSQVkhR0xfVEVYVFVSRV9CSU5ESU5HXzJEX01VTFRJU0FNUExFJ0dMX1RFWFRVUkVfQklORElOR18yRF9NVUxUSVNBTVBMRV9BUlJBWRVHTF9URVhUVVJFX0JJTkRJTkdfM0QZR0xfVEVYVFVSRV9CSU5ESU5HX0JVRkZFUhtHTF9URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVAhR0xfVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQX0FSUkFZGUdMX1RFWFRVUkVfQlVGRkVSX0JJTkRJTkciR0xfVEVYVFVSRV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVBxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQUNUSVZFHUdMX1RSQU5TRk9STV9GRUVEQkFDS19CSU5ESU5HJEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfQklORElORyFHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NJWkUiR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TVEFSVBxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfUEFVU0VEGUdMX1VOSUZPUk1fQlVGRkVSX0JJTkRJTkciR0xfVU5JRk9STV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVBZHTF9VTklGT1JNX0JVRkZFUl9TSVpFF0dMX1VOSUZPUk1fQlVGRkVSX1NUQVJUE0dMX1VOUEFDS19BTElHTk1FTlQWR0xfVU5QQUNLX0lNQUdFX0hFSUdIVBRHTF9VTlBBQ0tfUk9XX0xFTkdUSBVHTF9VTlBBQ0tfU0tJUF9JTUFHRVMVR0xfVU5QQUNLX1NLSVBfUElYRUxTE0dMX1VOUEFDS19TS0lQX1JPV1MXR0xfVkVSVEVYX0FSUkFZX0JJTkRJTkcZR0xfVkVSVEVYX0JJTkRJTkdfRElWSVNPUhhHTF9WRVJURVhfQklORElOR19PRkZTRVQYR0xfVkVSVEVYX0JJTkRJTkdfU1RSSURFC0dMX1ZJRVdQT1JUIUdMX01BWF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVBNHTF9HUFVfRElTSk9JTlRfRVhUhyEEhyMGhyUIhycKEWdsR2V0SW50ZWdlcjY0aV92BnZhbHVlcwQBAgIPZ2xHZXRJbnRlZ2VyNjR2AocpDIcrCIctCg9nbEdldEludGVnZXI2NHYFcGFyYW2BKhFHTF9BQ1RJVkVfVEVYVFVSRRtHTF9BTElBU0VEX0xJTkVfV0lEVEhfUkFOR0UbR0xfQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFDUdMX0FMUEhBX0JJVFMXR0xfQVJSQVlfQlVGRkVSX0JJTkRJTkcgR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSX0JJTkRJTkcdR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSX1NJWkUeR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSX1NUQVJUCEdMX0JMRU5EDkdMX0JMRU5EX0NPTE9SEkdMX0JMRU5EX0RTVF9BTFBIQRBHTF9CTEVORF9EU1RfUkdCF0dMX0JMRU5EX0VRVUFUSU9OX0FMUEhBFUdMX0JMRU5EX0VRVUFUSU9OX1JHQhJHTF9CTEVORF9TUkNfQUxQSEEQR0xfQkxFTkRfU1JDX1JHQgxHTF9CTFVFX0JJVFMUR0xfQ09MT1JfQ0xFQVJfVkFMVUUSR0xfQ09MT1JfV1JJVEVNQVNLHUdMX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTEEdMX0NPTlRFWFRfRkxBR1MYR0xfQ09OVEVYVF9ST0JVU1RfQUNDRVNTG0dMX0NPUFlfUkVBRF9CVUZGRVJfQklORElORxxHTF9DT1BZX1dSSVRFX0JVRkZFUl9CSU5ESU5HDEdMX0NVTExfRkFDRRFHTF9DVUxMX0ZBQ0VfTU9ERRJHTF9DVVJSRU5UX1BST0dSQU0aR0xfREVCVUdfR1JPVVBfU1RBQ0tfREVQVEgYR0xfREVCVUdfTE9HR0VEX01FU1NBR0VTI0dMX0RFQlVHX05FWFRfTE9HR0VEX01FU1NBR0VfTEVOR1RIDUdMX0RFUFRIX0JJVFMUR0xfREVQVEhfQ0xFQVJfVkFMVUUNR0xfREVQVEhfRlVOQw5HTF9ERVBUSF9SQU5HRQ1HTF9ERVBUSF9URVNUEkdMX0RFUFRIX1dSSVRFTUFTSyNHTF9ESVNQQVRDSF9JTkRJUkVDVF9CVUZGRVJfQklORElORwlHTF9ESVRIRVIOR0xfRFJBV19CVUZGRVIPR0xfRFJBV19CVUZGRVIwD0dMX0RSQVdfQlVGRkVSMQ9HTF9EUkFXX0JVRkZFUjIPR0xfRFJBV19CVUZGRVIzD0dMX0RSQVdfQlVGRkVSNA9HTF9EUkFXX0JVRkZFUjUPR0xfRFJBV19CVUZGRVI2D0dMX0RSQVdfQlVGRkVSNw9HTF9EUkFXX0JVRkZFUjgPR0xfRFJBV19CVUZGRVI5EEdMX0RSQVdfQlVGRkVSMTAQR0xfRFJBV19CVUZGRVIxMRBHTF9EUkFXX0JVRkZFUjEyEEdMX0RSQVdfQlVGRkVSMTMQR0xfRFJBV19CVUZGRVIxNBBHTF9EUkFXX0JVRkZFUjE1G0dMX0RSQVdfRlJBTUVCVUZGRVJfQklORElORx9HTF9FTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HJUdMX0ZSQUdNRU5UX0lOVEVSUE9MQVRJT05fT0ZGU0VUX0JJVFMiR0xfRlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVA1HTF9GUk9OVF9GQUNFF0dMX0dFTkVSQVRFX01JUE1BUF9ISU5UDUdMX0dSRUVOX0JJVFMVR0xfSU1BR0VfQklORElOR19OQU1FFkdMX0lNQUdFX0JJTkRJTkdfTEVWRUwYR0xfSU1BR0VfQklORElOR19MQVlFUkVEFkdMX0lNQUdFX0JJTkRJTkdfTEFZRVIXR0xfSU1BR0VfQklORElOR19BQ0NFU1MXR0xfSU1BR0VfQklORElOR19GT1JNQVQjR0xfSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9GT1JNQVQhR0xfSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9UWVBFGUdMX0xBWUVSX1BST1ZPS0lOR19WRVJURVgNR0xfTElORV9XSURUSCpHTF9QUklNSVRJVkVfUkVTVEFSVF9GT1JfUEFUQ0hFU19TVVBQT1JURUQQR0xfTUFKT1JfVkVSU0lPThZHTF9NQVhfM0RfVEVYVFVSRV9TSVpFG0dMX01BWF9BUlJBWV9URVhUVVJFX0xBWUVSUyVHTF9NQVhfQVRPTUlDX0NPVU5URVJfQlVGRkVSX0JJTkRJTkdTIUdMX01BWF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfU0laRSZHTF9NQVhfQ09NQklORURfQVRPTUlDX0NPVU5URVJfQlVGRkVSUxhHTF9NQVhfQ09MT1JfQVRUQUNITUVOVFMcR0xfTUFYX0NPTE9SX1RFWFRVUkVfU0FNUExFUxxHTF9NQVhfREVQVEhfVEVYVFVSRV9TQU1QTEVTH0dMX01BWF9DT01CSU5FRF9BVE9NSUNfQ09VTlRFUlMSR0xfTUFYX0lNQUdFX1VOSVRTKkdMX01BWF9DT01CSU5FRF9DT01QVVRFX1VOSUZPUk1fQ09NUE9ORU5UUytHTF9NQVhfQ09NQklORURfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTK0dMX01BWF9DT01CSU5FRF9HRU9NRVRSWV9VTklGT1JNX0NPTVBPTkVOVFMlR0xfTUFYX0NPTUJJTkVEX1NIQURFUl9TVE9SQUdFX0JMT0NLUy9HTF9NQVhfQ09NQklORURfVEVTU19DT05UUk9MX1VOSUZPUk1fQ09NUE9ORU5UUzJHTF9NQVhfQ09NQklORURfVEVTU19FVkFMVUFUSU9OX1VOSUZPUk1fQ09NUE9ORU5UUyNHTF9NQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUydHTF9NQVhfQ09NQklORURfU0hBREVSX09VVFBVVF9SRVNPVVJDRVMeR0xfTUFYX0NPTUJJTkVEX1VOSUZPUk1fQkxPQ0tTKUdMX01BWF9DT01CSU5FRF9WRVJURVhfVU5JRk9STV9DT01QT05FTlRTJUdMX01BWF9DT01QVVRFX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMeR0xfTUFYX0NPTVBVVEVfQVRPTUlDX0NPVU5URVJTHUdMX01BWF9DT01QVVRFX0lNQUdFX1VOSUZPUk1THkdMX01BWF9DT01CSU5FRF9JTUFHRV9VTklGT1JNUyRHTF9NQVhfQ09NUFVURV9TSEFERVJfU1RPUkFHRV9CTE9DS1MiR0xfTUFYX0NPTVBVVEVfVEVYVFVSRV9JTUFHRV9VTklUUyFHTF9NQVhfQ09NUFVURV9TSEFSRURfTUVNT1JZX1NJWkUdR0xfTUFYX0NPTVBVVEVfVU5JRk9STV9CTE9DS1MhR0xfTUFYX0NPTVBVVEVfVU5JRk9STV9DT01QT05FTlRTH0dMX01BWF9DT01QVVRFX1dPUktfR1JPVVBfQ09VTlQlR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9JTlZPQ0FUSU9OUx5HTF9NQVhfQ09NUFVURV9XT1JLX0dST1VQX1NJWkUcR0xfTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRR5HTF9NQVhfREVCVUdfR1JPVVBfU1RBQ0tfREVQVEgcR0xfTUFYX0RFQlVHX0xPR0dFRF9NRVNTQUdFUxtHTF9NQVhfREVCVUdfTUVTU0FHRV9MRU5HVEgTR0xfTUFYX0RSQVdfQlVGRkVSUxRHTF9NQVhfRUxFTUVOVF9JTkRFWBdHTF9NQVhfRUxFTUVOVFNfSU5ESUNFUxhHTF9NQVhfRUxFTUVOVFNfVkVSVElDRVMmR0xfTUFYX0ZSQUdNRU5UX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMfR0xfTUFYX0ZSQUdNRU5UX0FUT01JQ19DT1VOVEVSUx5HTF9NQVhfRlJBR01FTlRfSU1BR0VfVU5JRk9STVMgR0xfTUFYX0ZSQUdNRU5UX0lOUFVUX0NPTVBPTkVOVFMkR0xfTUFYX0ZSQUdNRU5UX0lOVEVSUE9MQVRJT05fT0ZGU0VUJUdMX01BWF9GUkFHTUVOVF9TSEFERVJfU1RPUkFHRV9CTE9DS1MkR0xfTUlOX1BST0dSQU1fVEVYVFVSRV9HQVRIRVJfT0ZGU0VUJEdMX01BWF9QUk9HUkFNX1RFWFRVUkVfR0FUSEVSX09GRlNFVB5HTF9NQVhfRlJBR01FTlRfVU5JRk9STV9CTE9DS1MiR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UUx9HTF9NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTGUdMX01BWF9GUkFNRUJVRkZFUl9IRUlHSFQZR0xfTUFYX0ZSQU1FQlVGRkVSX0xBWUVSUxpHTF9NQVhfRlJBTUVCVUZGRVJfU0FNUExFUxhHTF9NQVhfRlJBTUVCVUZGRVJfV0lEVEgmR0xfTUFYX0dFT01FVFJZX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMfR0xfTUFYX0dFT01FVFJZX0FUT01JQ19DT1VOVEVSUx5HTF9NQVhfR0VPTUVUUllfSU1BR0VfVU5JRk9STVMgR0xfTUFYX0dFT01FVFJZX0lOUFVUX0NPTVBPTkVOVFMhR0xfTUFYX0dFT01FVFJZX09VVFBVVF9DT01QT05FTlRTH0dMX01BWF9HRU9NRVRSWV9PVVRQVVRfVkVSVElDRVMiR0xfTUFYX0dFT01FVFJZX1NIQURFUl9JTlZPQ0FUSU9OUyVHTF9NQVhfR0VPTUVUUllfU0hBREVSX1NUT1JBR0VfQkxPQ0tTI0dMX01BWF9HRU9NRVRSWV9URVhUVVJFX0lNQUdFX1VOSVRTJ0dMX01BWF9HRU9NRVRSWV9UT1RBTF9PVVRQVVRfQ09NUE9ORU5UUx5HTF9NQVhfR0VPTUVUUllfVU5JRk9STV9CTE9DS1MiR0xfTUFYX0dFT01FVFJZX1VOSUZPUk1fQ09NUE9ORU5UUxZHTF9NQVhfSU5URUdFUl9TQU1QTEVTE0dMX01BWF9MQUJFTF9MRU5HVEgbR0xfTUFYX1BST0dSQU1fVEVYRUxfT0ZGU0VUGEdMX01BWF9SRU5ERVJCVUZGRVJfU0laRRhHTF9NQVhfU0FNUExFX01BU0tfV09SRFMOR0xfTUFYX1NBTVBMRVMaR0xfTUFYX1NFUlZFUl9XQUlUX1RJTUVPVVQgR0xfTUFYX1NIQURFUl9TVE9SQUdFX0JMT0NLX1NJWkUlR0xfTUFYX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9CSU5ESU5HUypHTF9NQVhfVEVTU19DT05UUk9MX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMjR0xfTUFYX1RFU1NfQ09OVFJPTF9BVE9NSUNfQ09VTlRFUlMiR0xfTUFYX1RFU1NfQ09OVFJPTF9JTUFHRV9VTklGT1JNUyRHTF9NQVhfVEVTU19DT05UUk9MX0lOUFVUX0NPTVBPTkVOVFMlR0xfTUFYX1RFU1NfQ09OVFJPTF9PVVRQVVRfQ09NUE9ORU5UUylHTF9NQVhfVEVTU19DT05UUk9MX1NIQURFUl9TVE9SQUdFX0JMT0NLUydHTF9NQVhfVEVTU19DT05UUk9MX1RFWFRVUkVfSU1BR0VfVU5JVFMrR0xfTUFYX1RFU1NfQ09OVFJPTF9UT1RBTF9PVVRQVVRfQ09NUE9ORU5UUyJHTF9NQVhfVEVTU19DT05UUk9MX1VOSUZPUk1fQkxPQ0tTJkdMX01BWF9URVNTX0NPTlRST0xfVU5JRk9STV9DT01QT05FTlRTLUdMX01BWF9URVNTX0VWQUxVQVRJT05fQVRPTUlDX0NPVU5URVJfQlVGRkVSUyZHTF9NQVhfVEVTU19FVkFMVUFUSU9OX0FUT01JQ19DT1VOVEVSUyVHTF9NQVhfVEVTU19FVkFMVUFUSU9OX0lNQUdFX1VOSUZPUk1TJ0dMX01BWF9URVNTX0VWQUxVQVRJT05fSU5QVVRfQ09NUE9ORU5UUyhHTF9NQVhfVEVTU19FVkFMVUFUSU9OX09VVFBVVF9DT01QT05FTlRTLEdMX01BWF9URVNTX0VWQUxVQVRJT05fU0hBREVSX1NUT1JBR0VfQkxPQ0tTKkdMX01BWF9URVNTX0VWQUxVQVRJT05fVEVYVFVSRV9JTUFHRV9VTklUUyVHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1VOSUZPUk1fQkxPQ0tTKUdMX01BWF9URVNTX0VWQUxVQVRJT05fVU5JRk9STV9DT01QT05FTlRTFUdMX01BWF9URVNTX0dFTl9MRVZFTBVHTF9NQVhfUEFUQ0hfVkVSVElDRVMcR0xfTUFYX1RFU1NfUEFUQ0hfQ09NUE9ORU5UUxpHTF9NQVhfVEVYVFVSRV9CVUZGRVJfU0laRRpHTF9NQVhfVEVYVFVSRV9JTUFHRV9VTklUUxdHTF9NQVhfVEVYVFVSRV9MT0RfQklBUxNHTF9NQVhfVEVYVFVSRV9TSVpFMEdMX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfSU5URVJMRUFWRURfQ09NUE9ORU5UUypHTF9NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFSQVRFX0FUVFJJQlMtR0xfTUFYX1RSQU5TRk9STV9GRUVEQkFDS19TRVBBUkFURV9DT01QT05FTlRTGUdMX01BWF9VTklGT1JNX0JMT0NLX1NJWkUeR0xfTUFYX1VOSUZPUk1fQlVGRkVSX0JJTkRJTkdTGEdMX01BWF9VTklGT1JNX0xPQ0FUSU9OUxlHTF9NQVhfVkFSWUlOR19DT01QT05FTlRTFkdMX01BWF9WQVJZSU5HX1ZFQ1RPUlMdR0xfTUFYX1ZFUlRFWF9BVE9NSUNfQ09VTlRFUlMkR0xfTUFYX1ZFUlRFWF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTHUdMX01BWF9WRVJURVhfQVRUUklCX0JJTkRJTkdTG0dMX01BWF9WRVJURVhfQVRUUklCX1NUUklERSRHTF9NQVhfVkVSVEVYX0FUVFJJQl9SRUxBVElWRV9PRkZTRVQVR0xfTUFYX1ZFUlRFWF9BVFRSSUJTHEdMX01BWF9WRVJURVhfSU1BR0VfVU5JRk9STVMfR0xfTUFYX1ZFUlRFWF9PVVRQVVRfQ09NUE9ORU5UUyNHTF9NQVhfVkVSVEVYX1NIQURFUl9TVE9SQUdFX0JMT0NLUyFHTF9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFMcR0xfTUFYX1ZFUlRFWF9VTklGT1JNX0JMT0NLUyBHTF9NQVhfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUx1HTF9NQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUxRHTF9NQVhfVklFV1BPUlRfRElNUyRHTF9NSU5fRlJBR01FTlRfSU5URVJQT0xBVElPTl9PRkZTRVQbR0xfTUlOX1BST0dSQU1fVEVYRUxfT0ZGU0VUG0dMX01JTl9TQU1QTEVfU0hBRElOR19WQUxVRRBHTF9NSU5PUl9WRVJTSU9OH0dMX01VTFRJU0FNUExFX0xJTkVfV0lEVEhfUkFOR0UlR0xfTVVMVElTQU1QTEVfTElORV9XSURUSF9HUkFOVUxBUklUWSFHTF9OVU1fQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMRR0xfTlVNX0VYVEVOU0lPTlMdR0xfTlVNX1BST0dSQU1fQklOQVJZX0ZPUk1BVFMcR0xfTlVNX1NIQURFUl9CSU5BUllfRk9STUFUUxFHTF9QQUNLX0FMSUdOTUVOVBRHTF9QQUNLX0lNQUdFX0hFSUdIVBJHTF9QQUNLX1JPV19MRU5HVEgTR0xfUEFDS19TS0lQX0lNQUdFUxNHTF9QQUNLX1NLSVBfUElYRUxTEUdMX1BBQ0tfU0tJUF9ST1dTEUdMX1BBVENIX1ZFUlRJQ0VTHEdMX1BJWEVMX1BBQ0tfQlVGRkVSX0JJTkRJTkceR0xfUElYRUxfVU5QQUNLX0JVRkZFUl9CSU5ESU5HGEdMX1BPTFlHT05fT0ZGU0VUX0ZBQ1RPUhZHTF9QT0xZR09OX09GRlNFVF9GSUxMF0dMX1BPTFlHT05fT0ZGU0VUX1VOSVRTGUdMX1BSSU1JVElWRV9CT1VORElOR19CT1ggR0xfUFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgZR0xfUFJPR1JBTV9CSU5BUllfRk9STUFUUxtHTF9QUk9HUkFNX1BJUEVMSU5FX0JJTkRJTkcVR0xfUkFTVEVSSVpFUl9ESVNDQVJEDkdMX1JFQURfQlVGRkVSG0dMX1JFQURfRlJBTUVCVUZGRVJfQklORElORwtHTF9SRURfQklUUxdHTF9SRU5ERVJCVUZGRVJfQklORElORx5HTF9SRVNFVF9OT1RJRklDQVRJT05fU1RSQVRFR1kbR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFEUdMX1NBTVBMRV9CVUZGRVJTEkdMX1NBTVBMRV9DT1ZFUkFHRRlHTF9TQU1QTEVfQ09WRVJBR0VfSU5WRVJUGEdMX1NBTVBMRV9DT1ZFUkFHRV9WQUxVRRFHTF9TQU1QTEVfU0hBRElORxJHTF9TQU1QTEVSX0JJTkRJTkcKR0xfU0FNUExFUw5HTF9TQ0lTU09SX0JPWA9HTF9TQ0lTU09SX1RFU1QYR0xfU0hBREVSX0JJTkFSWV9GT1JNQVRTEkdMX1NIQURFUl9DT01QSUxFUiBHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfQklORElORylHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVB1HTF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfU0laRR5HTF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfU1RBUlQUR0xfU1RFTkNJTF9CQUNLX0ZBSUwUR0xfU1RFTkNJTF9CQUNLX0ZVTkMfR0xfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfRkFJTB9HTF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9QQVNTE0dMX1NURU5DSUxfQkFDS19SRUYaR0xfU1RFTkNJTF9CQUNLX1ZBTFVFX01BU0sZR0xfU1RFTkNJTF9CQUNLX1dSSVRFTUFTSw9HTF9TVEVOQ0lMX0JJVFMWR0xfU1RFTkNJTF9DTEVBUl9WQUxVRQ9HTF9TVEVOQ0lMX0ZBSUwPR0xfU1RFTkNJTF9GVU5DGkdMX1NURU5DSUxfUEFTU19ERVBUSF9GQUlMGkdMX1NURU5DSUxfUEFTU19ERVBUSF9QQVNTDkdMX1NURU5DSUxfUkVGD0dMX1NURU5DSUxfVEVTVBVHTF9TVEVOQ0lMX1ZBTFVFX01BU0sUR0xfU1RFTkNJTF9XUklURU1BU0sQR0xfU1VCUElYRUxfQklUUxVHTF9URVhUVVJFX0JJTkRJTkdfMkQfR0xfVEVYVFVSRV9CSU5ESU5HX0VYVEVSTkFMX09FUxtHTF9URVhUVVJFX0JJTkRJTkdfMkRfQVJSQVkhR0xfVEVYVFVSRV9CSU5ESU5HXzJEX01VTFRJU0FNUExFJ0dMX1RFWFRVUkVfQklORElOR18yRF9NVUxUSVNBTVBMRV9BUlJBWRVHTF9URVhUVVJFX0JJTkRJTkdfM0QZR0xfVEVYVFVSRV9CSU5ESU5HX0JVRkZFUhtHTF9URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVAhR0xfVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQX0FSUkFZGUdMX1RFWFRVUkVfQlVGRkVSX0JJTkRJTkciR0xfVEVYVFVSRV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVBxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQUNUSVZFHUdMX1RSQU5TRk9STV9GRUVEQkFDS19CSU5ESU5HJEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfQklORElORyFHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NJWkUiR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TVEFSVBxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfUEFVU0VEGUdMX1VOSUZPUk1fQlVGRkVSX0JJTkRJTkciR0xfVU5JRk9STV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVBZHTF9VTklGT1JNX0JVRkZFUl9TSVpFF0dMX1VOSUZPUk1fQlVGRkVSX1NUQVJUE0dMX1VOUEFDS19BTElHTk1FTlQWR0xfVU5QQUNLX0lNQUdFX0hFSUdIVBRHTF9VTlBBQ0tfUk9XX0xFTkdUSBVHTF9VTlBBQ0tfU0tJUF9JTUFHRVMVR0xfVU5QQUNLX1NLSVBfUElYRUxTE0dMX1VOUEFDS19TS0lQX1JPV1MXR0xfVkVSVEVYX0FSUkFZX0JJTkRJTkcZR0xfVkVSVEVYX0JJTkRJTkdfRElWSVNPUhhHTF9WRVJURVhfQklORElOR19PRkZTRVQYR0xfVkVSVEVYX0JJTkRJTkdfU1RSSURFC0dMX1ZJRVdQT1JUIUdMX01BWF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVBNHTF9HUFVfRElTSk9JTlRfRVhUhy8EhzEGhzMIhzUKD2dsR2V0SW50ZWdlcjY0dgZ2YWx1ZXMEAQICFGdsR2V0SW50ZWdlcjY0dkFQUExFAoc3DIc5CIc7ChRnbEdldEludGVnZXI2NHZBUFBMRQVwbmFtZYEqEUdMX0FDVElWRV9URVhUVVJFG0dMX0FMSUFTRURfTElORV9XSURUSF9SQU5HRRtHTF9BTElBU0VEX1BPSU5UX1NJWkVfUkFOR0UNR0xfQUxQSEFfQklUUxdHTF9BUlJBWV9CVUZGRVJfQklORElORyBHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfQklORElORx1HTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfU0laRR5HTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfU1RBUlQIR0xfQkxFTkQOR0xfQkxFTkRfQ09MT1ISR0xfQkxFTkRfRFNUX0FMUEhBEEdMX0JMRU5EX0RTVF9SR0IXR0xfQkxFTkRfRVFVQVRJT05fQUxQSEEVR0xfQkxFTkRfRVFVQVRJT05fUkdCEkdMX0JMRU5EX1NSQ19BTFBIQRBHTF9CTEVORF9TUkNfUkdCDEdMX0JMVUVfQklUUxRHTF9DT0xPUl9DTEVBUl9WQUxVRRJHTF9DT0xPUl9XUklURU1BU0sdR0xfQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMQR0xfQ09OVEVYVF9GTEFHUxhHTF9DT05URVhUX1JPQlVTVF9BQ0NFU1MbR0xfQ09QWV9SRUFEX0JVRkZFUl9CSU5ESU5HHEdMX0NPUFlfV1JJVEVfQlVGRkVSX0JJTkRJTkcMR0xfQ1VMTF9GQUNFEUdMX0NVTExfRkFDRV9NT0RFEkdMX0NVUlJFTlRfUFJPR1JBTRpHTF9ERUJVR19HUk9VUF9TVEFDS19ERVBUSBhHTF9ERUJVR19MT0dHRURfTUVTU0FHRVMjR0xfREVCVUdfTkVYVF9MT0dHRURfTUVTU0FHRV9MRU5HVEgNR0xfREVQVEhfQklUUxRHTF9ERVBUSF9DTEVBUl9WQUxVRQ1HTF9ERVBUSF9GVU5DDkdMX0RFUFRIX1JBTkdFDUdMX0RFUFRIX1RFU1QSR0xfREVQVEhfV1JJVEVNQVNLI0dMX0RJU1BBVENIX0lORElSRUNUX0JVRkZFUl9CSU5ESU5HCUdMX0RJVEhFUg5HTF9EUkFXX0JVRkZFUg9HTF9EUkFXX0JVRkZFUjAPR0xfRFJBV19CVUZGRVIxD0dMX0RSQVdfQlVGRkVSMg9HTF9EUkFXX0JVRkZFUjMPR0xfRFJBV19CVUZGRVI0D0dMX0RSQVdfQlVGRkVSNQ9HTF9EUkFXX0JVRkZFUjYPR0xfRFJBV19CVUZGRVI3D0dMX0RSQVdfQlVGRkVSOA9HTF9EUkFXX0JVRkZFUjkQR0xfRFJBV19CVUZGRVIxMBBHTF9EUkFXX0JVRkZFUjExEEdMX0RSQVdfQlVGRkVSMTIQR0xfRFJBV19CVUZGRVIxMxBHTF9EUkFXX0JVRkZFUjE0EEdMX0RSQVdfQlVGRkVSMTUbR0xfRFJBV19GUkFNRUJVRkZFUl9CSU5ESU5HH0dMX0VMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkclR0xfRlJBR01FTlRfSU5URVJQT0xBVElPTl9PRkZTRVRfQklUUyJHTF9GUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UDUdMX0ZST05UX0ZBQ0UXR0xfR0VORVJBVEVfTUlQTUFQX0hJTlQNR0xfR1JFRU5fQklUUxVHTF9JTUFHRV9CSU5ESU5HX05BTUUWR0xfSU1BR0VfQklORElOR19MRVZFTBhHTF9JTUFHRV9CSU5ESU5HX0xBWUVSRUQWR0xfSU1BR0VfQklORElOR19MQVlFUhdHTF9JTUFHRV9CSU5ESU5HX0FDQ0VTUxdHTF9JTUFHRV9CSU5ESU5HX0ZPUk1BVCNHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX0ZPUk1BVCFHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX1RZUEUZR0xfTEFZRVJfUFJPVk9LSU5HX1ZFUlRFWA1HTF9MSU5FX1dJRFRIKkdMX1BSSU1JVElWRV9SRVNUQVJUX0ZPUl9QQVRDSEVTX1NVUFBPUlRFRBBHTF9NQUpPUl9WRVJTSU9OFkdMX01BWF8zRF9URVhUVVJFX1NJWkUbR0xfTUFYX0FSUkFZX1RFWFRVUkVfTEFZRVJTJUdMX01BWF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfQklORElOR1MhR0xfTUFYX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TSVpFJkdMX01BWF9DT01CSU5FRF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTGEdMX01BWF9DT0xPUl9BVFRBQ0hNRU5UUxxHTF9NQVhfQ09MT1JfVEVYVFVSRV9TQU1QTEVTHEdMX01BWF9ERVBUSF9URVhUVVJFX1NBTVBMRVMfR0xfTUFYX0NPTUJJTkVEX0FUT01JQ19DT1VOVEVSUxJHTF9NQVhfSU1BR0VfVU5JVFMqR0xfTUFYX0NPTUJJTkVEX0NPTVBVVEVfVU5JRk9STV9DT01QT05FTlRTK0dMX01BWF9DT01CSU5FRF9GUkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFMrR0xfTUFYX0NPTUJJTkVEX0dFT01FVFJZX1VOSUZPUk1fQ09NUE9ORU5UUyVHTF9NQVhfQ09NQklORURfU0hBREVSX1NUT1JBR0VfQkxPQ0tTL0dMX01BWF9DT01CSU5FRF9URVNTX0NPTlRST0xfVU5JRk9STV9DT01QT05FTlRTMkdMX01BWF9DT01CSU5FRF9URVNTX0VWQUxVQVRJT05fVU5JRk9STV9DT01QT05FTlRTI0dMX01BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTJ0dMX01BWF9DT01CSU5FRF9TSEFERVJfT1VUUFVUX1JFU09VUkNFUx5HTF9NQVhfQ09NQklORURfVU5JRk9STV9CTE9DS1MpR0xfTUFYX0NPTUJJTkVEX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFMlR0xfTUFYX0NPTVBVVEVfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx5HTF9NQVhfQ09NUFVURV9BVE9NSUNfQ09VTlRFUlMdR0xfTUFYX0NPTVBVVEVfSU1BR0VfVU5JRk9STVMeR0xfTUFYX0NPTUJJTkVEX0lNQUdFX1VOSUZPUk1TJEdMX01BWF9DT01QVVRFX1NIQURFUl9TVE9SQUdFX0JMT0NLUyJHTF9NQVhfQ09NUFVURV9URVhUVVJFX0lNQUdFX1VOSVRTIUdMX01BWF9DT01QVVRFX1NIQVJFRF9NRU1PUllfU0laRR1HTF9NQVhfQ09NUFVURV9VTklGT1JNX0JMT0NLUyFHTF9NQVhfQ09NUFVURV9VTklGT1JNX0NPTVBPTkVOVFMfR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9DT1VOVCVHTF9NQVhfQ09NUFVURV9XT1JLX0dST1VQX0lOVk9DQVRJT05THkdMX01BWF9DT01QVVRFX1dPUktfR1JPVVBfU0laRRxHTF9NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFHkdMX01BWF9ERUJVR19HUk9VUF9TVEFDS19ERVBUSBxHTF9NQVhfREVCVUdfTE9HR0VEX01FU1NBR0VTG0dMX01BWF9ERUJVR19NRVNTQUdFX0xFTkdUSBNHTF9NQVhfRFJBV19CVUZGRVJTFEdMX01BWF9FTEVNRU5UX0lOREVYF0dMX01BWF9FTEVNRU5UU19JTkRJQ0VTGEdMX01BWF9FTEVNRU5UU19WRVJUSUNFUyZHTF9NQVhfRlJBR01FTlRfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx9HTF9NQVhfRlJBR01FTlRfQVRPTUlDX0NPVU5URVJTHkdMX01BWF9GUkFHTUVOVF9JTUFHRV9VTklGT1JNUyBHTF9NQVhfRlJBR01FTlRfSU5QVVRfQ09NUE9ORU5UUyRHTF9NQVhfRlJBR01FTlRfSU5URVJQT0xBVElPTl9PRkZTRVQlR0xfTUFYX0ZSQUdNRU5UX1NIQURFUl9TVE9SQUdFX0JMT0NLUyRHTF9NSU5fUFJPR1JBTV9URVhUVVJFX0dBVEhFUl9PRkZTRVQkR0xfTUFYX1BST0dSQU1fVEVYVFVSRV9HQVRIRVJfT0ZGU0VUHkdMX01BWF9GUkFHTUVOVF9VTklGT1JNX0JMT0NLUyJHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTH0dMX01BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMZR0xfTUFYX0ZSQU1FQlVGRkVSX0hFSUdIVBlHTF9NQVhfRlJBTUVCVUZGRVJfTEFZRVJTGkdMX01BWF9GUkFNRUJVRkZFUl9TQU1QTEVTGEdMX01BWF9GUkFNRUJVRkZFUl9XSURUSCZHTF9NQVhfR0VPTUVUUllfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx9HTF9NQVhfR0VPTUVUUllfQVRPTUlDX0NPVU5URVJTHkdMX01BWF9HRU9NRVRSWV9JTUFHRV9VTklGT1JNUyBHTF9NQVhfR0VPTUVUUllfSU5QVVRfQ09NUE9ORU5UUyFHTF9NQVhfR0VPTUVUUllfT1VUUFVUX0NPTVBPTkVOVFMfR0xfTUFYX0dFT01FVFJZX09VVFBVVF9WRVJUSUNFUyJHTF9NQVhfR0VPTUVUUllfU0hBREVSX0lOVk9DQVRJT05TJUdMX01BWF9HRU9NRVRSWV9TSEFERVJfU1RPUkFHRV9CTE9DS1MjR0xfTUFYX0dFT01FVFJZX1RFWFRVUkVfSU1BR0VfVU5JVFMnR0xfTUFYX0dFT01FVFJZX1RPVEFMX09VVFBVVF9DT01QT05FTlRTHkdMX01BWF9HRU9NRVRSWV9VTklGT1JNX0JMT0NLUyJHTF9NQVhfR0VPTUVUUllfVU5JRk9STV9DT01QT05FTlRTFkdMX01BWF9JTlRFR0VSX1NBTVBMRVMTR0xfTUFYX0xBQkVMX0xFTkdUSBtHTF9NQVhfUFJPR1JBTV9URVhFTF9PRkZTRVQYR0xfTUFYX1JFTkRFUkJVRkZFUl9TSVpFGEdMX01BWF9TQU1QTEVfTUFTS19XT1JEUw5HTF9NQVhfU0FNUExFUxpHTF9NQVhfU0VSVkVSX1dBSVRfVElNRU9VVCBHTF9NQVhfU0hBREVSX1NUT1JBR0VfQkxPQ0tfU0laRSVHTF9NQVhfU0hBREVSX1NUT1JBR0VfQlVGRkVSX0JJTkRJTkdTKkdMX01BWF9URVNTX0NPTlRST0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSUyNHTF9NQVhfVEVTU19DT05UUk9MX0FUT01JQ19DT1VOVEVSUyJHTF9NQVhfVEVTU19DT05UUk9MX0lNQUdFX1VOSUZPUk1TJEdMX01BWF9URVNTX0NPTlRST0xfSU5QVVRfQ09NUE9ORU5UUyVHTF9NQVhfVEVTU19DT05UUk9MX09VVFBVVF9DT01QT05FTlRTKUdMX01BWF9URVNTX0NPTlRST0xfU0hBREVSX1NUT1JBR0VfQkxPQ0tTJ0dMX01BWF9URVNTX0NPTlRST0xfVEVYVFVSRV9JTUFHRV9VTklUUytHTF9NQVhfVEVTU19DT05UUk9MX1RPVEFMX09VVFBVVF9DT01QT05FTlRTIkdMX01BWF9URVNTX0NPTlRST0xfVU5JRk9STV9CTE9DS1MmR0xfTUFYX1RFU1NfQ09OVFJPTF9VTklGT1JNX0NPTVBPTkVOVFMtR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTJkdMX01BWF9URVNTX0VWQUxVQVRJT05fQVRPTUlDX0NPVU5URVJTJUdMX01BWF9URVNTX0VWQUxVQVRJT05fSU1BR0VfVU5JRk9STVMnR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9JTlBVVF9DT01QT05FTlRTKEdMX01BWF9URVNTX0VWQUxVQVRJT05fT1VUUFVUX0NPTVBPTkVOVFMsR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9TSEFERVJfU1RPUkFHRV9CTE9DS1MqR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9URVhUVVJFX0lNQUdFX1VOSVRTJUdMX01BWF9URVNTX0VWQUxVQVRJT05fVU5JRk9STV9CTE9DS1MpR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0NPTVBPTkVOVFMVR0xfTUFYX1RFU1NfR0VOX0xFVkVMFUdMX01BWF9QQVRDSF9WRVJUSUNFUxxHTF9NQVhfVEVTU19QQVRDSF9DT01QT05FTlRTGkdMX01BWF9URVhUVVJFX0JVRkZFUl9TSVpFGkdMX01BWF9URVhUVVJFX0lNQUdFX1VOSVRTF0dMX01BWF9URVhUVVJFX0xPRF9CSUFTE0dMX01BWF9URVhUVVJFX1NJWkUwR0xfTUFYX1RSQU5TRk9STV9GRUVEQkFDS19JTlRFUkxFQVZFRF9DT01QT05FTlRTKkdMX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQVRUUklCUy1HTF9NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFSQVRFX0NPTVBPTkVOVFMZR0xfTUFYX1VOSUZPUk1fQkxPQ0tfU0laRR5HTF9NQVhfVU5JRk9STV9CVUZGRVJfQklORElOR1MYR0xfTUFYX1VOSUZPUk1fTE9DQVRJT05TGUdMX01BWF9WQVJZSU5HX0NPTVBPTkVOVFMWR0xfTUFYX1ZBUllJTkdfVkVDVE9SUx1HTF9NQVhfVkVSVEVYX0FUT01JQ19DT1VOVEVSUyRHTF9NQVhfVkVSVEVYX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMdR0xfTUFYX1ZFUlRFWF9BVFRSSUJfQklORElOR1MbR0xfTUFYX1ZFUlRFWF9BVFRSSUJfU1RSSURFJEdMX01BWF9WRVJURVhfQVRUUklCX1JFTEFUSVZFX09GRlNFVBVHTF9NQVhfVkVSVEVYX0FUVFJJQlMcR0xfTUFYX1ZFUlRFWF9JTUFHRV9VTklGT1JNUx9HTF9NQVhfVkVSVEVYX09VVFBVVF9DT01QT05FTlRTI0dMX01BWF9WRVJURVhfU0hBREVSX1NUT1JBR0VfQkxPQ0tTIUdMX01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUxxHTF9NQVhfVkVSVEVYX1VOSUZPUk1fQkxPQ0tTIEdMX01BWF9WRVJURVhfVU5JRk9STV9DT01QT05FTlRTHUdMX01BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTFEdMX01BWF9WSUVXUE9SVF9ESU1TJEdMX01JTl9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVBtHTF9NSU5fUFJPR1JBTV9URVhFTF9PRkZTRVQbR0xfTUlOX1NBTVBMRV9TSEFESU5HX1ZBTFVFEEdMX01JTk9SX1ZFUlNJT04fR0xfTVVMVElTQU1QTEVfTElORV9XSURUSF9SQU5HRSVHTF9NVUxUSVNBTVBMRV9MSU5FX1dJRFRIX0dSQU5VTEFSSVRZIUdMX05VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUxFHTF9OVU1fRVhURU5TSU9OUx1HTF9OVU1fUFJPR1JBTV9CSU5BUllfRk9STUFUUxxHTF9OVU1fU0hBREVSX0JJTkFSWV9GT1JNQVRTEUdMX1BBQ0tfQUxJR05NRU5UFEdMX1BBQ0tfSU1BR0VfSEVJR0hUEkdMX1BBQ0tfUk9XX0xFTkdUSBNHTF9QQUNLX1NLSVBfSU1BR0VTE0dMX1BBQ0tfU0tJUF9QSVhFTFMRR0xfUEFDS19TS0lQX1JPV1MRR0xfUEFUQ0hfVkVSVElDRVMcR0xfUElYRUxfUEFDS19CVUZGRVJfQklORElORx5HTF9QSVhFTF9VTlBBQ0tfQlVGRkVSX0JJTkRJTkcYR0xfUE9MWUdPTl9PRkZTRVRfRkFDVE9SFkdMX1BPTFlHT05fT0ZGU0VUX0ZJTEwXR0xfUE9MWUdPTl9PRkZTRVRfVU5JVFMZR0xfUFJJTUlUSVZFX0JPVU5ESU5HX0JPWCBHTF9QUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWBlHTF9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTG0dMX1BST0dSQU1fUElQRUxJTkVfQklORElORxVHTF9SQVNURVJJWkVSX0RJU0NBUkQOR0xfUkVBRF9CVUZGRVIbR0xfUkVBRF9GUkFNRUJVRkZFUl9CSU5ESU5HC0dMX1JFRF9CSVRTF0dMX1JFTkRFUkJVRkZFUl9CSU5ESU5HHkdMX1JFU0VUX05PVElGSUNBVElPTl9TVFJBVEVHWRtHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0URR0xfU0FNUExFX0JVRkZFUlMSR0xfU0FNUExFX0NPVkVSQUdFGUdMX1NBTVBMRV9DT1ZFUkFHRV9JTlZFUlQYR0xfU0FNUExFX0NPVkVSQUdFX1ZBTFVFEUdMX1NBTVBMRV9TSEFESU5HEkdMX1NBTVBMRVJfQklORElORwpHTF9TQU1QTEVTDkdMX1NDSVNTT1JfQk9YD0dMX1NDSVNTT1JfVEVTVBhHTF9TSEFERVJfQklOQVJZX0ZPUk1BVFMSR0xfU0hBREVSX0NPTVBJTEVSIEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9CSU5ESU5HKUdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UHUdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9TSVpFHkdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9TVEFSVBRHTF9TVEVOQ0lMX0JBQ0tfRkFJTBRHTF9TVEVOQ0lMX0JBQ0tfRlVOQx9HTF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMH0dMX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1MTR0xfU1RFTkNJTF9CQUNLX1JFRhpHTF9TVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTSxlHTF9TVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLD0dMX1NURU5DSUxfQklUUxZHTF9TVEVOQ0lMX0NMRUFSX1ZBTFVFD0dMX1NURU5DSUxfRkFJTA9HTF9TVEVOQ0lMX0ZVTkMaR0xfU1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUwaR0xfU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1MOR0xfU1RFTkNJTF9SRUYPR0xfU1RFTkNJTF9URVNUFUdMX1NURU5DSUxfVkFMVUVfTUFTSxRHTF9TVEVOQ0lMX1dSSVRFTUFTSxBHTF9TVUJQSVhFTF9CSVRTFUdMX1RFWFRVUkVfQklORElOR18yRB9HTF9URVhUVVJFX0JJTkRJTkdfRVhURVJOQUxfT0VTG0dMX1RFWFRVUkVfQklORElOR18yRF9BUlJBWSFHTF9URVhUVVJFX0JJTkRJTkdfMkRfTVVMVElTQU1QTEUnR0xfVEVYVFVSRV9CSU5ESU5HXzJEX01VTFRJU0FNUExFX0FSUkFZFUdMX1RFWFRVUkVfQklORElOR18zRBlHTF9URVhUVVJFX0JJTkRJTkdfQlVGRkVSG0dMX1RFWFRVUkVfQklORElOR19DVUJFX01BUCFHTF9URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVBfQVJSQVkZR0xfVEVYVFVSRV9CVUZGRVJfQklORElORyJHTF9URVhUVVJFX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UHEdMX1RSQU5TRk9STV9GRUVEQkFDS19BQ1RJVkUdR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JJTkRJTkckR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9CSU5ESU5HIUdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU0laRSJHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NUQVJUHEdMX1RSQU5TRk9STV9GRUVEQkFDS19QQVVTRUQZR0xfVU5JRk9STV9CVUZGRVJfQklORElORyJHTF9VTklGT1JNX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UFkdMX1VOSUZPUk1fQlVGRkVSX1NJWkUXR0xfVU5JRk9STV9CVUZGRVJfU1RBUlQTR0xfVU5QQUNLX0FMSUdOTUVOVBZHTF9VTlBBQ0tfSU1BR0VfSEVJR0hUFEdMX1VOUEFDS19ST1dfTEVOR1RIFUdMX1VOUEFDS19TS0lQX0lNQUdFUxVHTF9VTlBBQ0tfU0tJUF9QSVhFTFMTR0xfVU5QQUNLX1NLSVBfUk9XUxdHTF9WRVJURVhfQVJSQVlfQklORElORxlHTF9WRVJURVhfQklORElOR19ESVZJU09SGEdMX1ZFUlRFWF9CSU5ESU5HX09GRlNFVBhHTF9WRVJURVhfQklORElOR19TVFJJREULR0xfVklFV1BPUlQhR0xfTUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUE0dMX0dQVV9ESVNKT0lOVF9FWFSHPQSHPwaHQQiHQwoUZ2xHZXRJbnRlZ2VyNjR2QVBQTEUGcGFyYW1zBAECAg9nbEdldEludGVnZXJpX3YCh0UMh0cIh0kKD2dsR2V0SW50ZWdlcmlfdgVwYXJhbYEqEUdMX0FDVElWRV9URVhUVVJFG0dMX0FMSUFTRURfTElORV9XSURUSF9SQU5HRRtHTF9BTElBU0VEX1BPSU5UX1NJWkVfUkFOR0UNR0xfQUxQSEFfQklUUxdHTF9BUlJBWV9CVUZGRVJfQklORElORyBHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfQklORElORx1HTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfU0laRR5HTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfU1RBUlQIR0xfQkxFTkQOR0xfQkxFTkRfQ09MT1ISR0xfQkxFTkRfRFNUX0FMUEhBEEdMX0JMRU5EX0RTVF9SR0IXR0xfQkxFTkRfRVFVQVRJT05fQUxQSEEVR0xfQkxFTkRfRVFVQVRJT05fUkdCEkdMX0JMRU5EX1NSQ19BTFBIQRBHTF9CTEVORF9TUkNfUkdCDEdMX0JMVUVfQklUUxRHTF9DT0xPUl9DTEVBUl9WQUxVRRJHTF9DT0xPUl9XUklURU1BU0sdR0xfQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMQR0xfQ09OVEVYVF9GTEFHUxhHTF9DT05URVhUX1JPQlVTVF9BQ0NFU1MbR0xfQ09QWV9SRUFEX0JVRkZFUl9CSU5ESU5HHEdMX0NPUFlfV1JJVEVfQlVGRkVSX0JJTkRJTkcMR0xfQ1VMTF9GQUNFEUdMX0NVTExfRkFDRV9NT0RFEkdMX0NVUlJFTlRfUFJPR1JBTRpHTF9ERUJVR19HUk9VUF9TVEFDS19ERVBUSBhHTF9ERUJVR19MT0dHRURfTUVTU0FHRVMjR0xfREVCVUdfTkVYVF9MT0dHRURfTUVTU0FHRV9MRU5HVEgNR0xfREVQVEhfQklUUxRHTF9ERVBUSF9DTEVBUl9WQUxVRQ1HTF9ERVBUSF9GVU5DDkdMX0RFUFRIX1JBTkdFDUdMX0RFUFRIX1RFU1QSR0xfREVQVEhfV1JJVEVNQVNLI0dMX0RJU1BBVENIX0lORElSRUNUX0JVRkZFUl9CSU5ESU5HCUdMX0RJVEhFUg5HTF9EUkFXX0JVRkZFUg9HTF9EUkFXX0JVRkZFUjAPR0xfRFJBV19CVUZGRVIxD0dMX0RSQVdfQlVGRkVSMg9HTF9EUkFXX0JVRkZFUjMPR0xfRFJBV19CVUZGRVI0D0dMX0RSQVdfQlVGRkVSNQ9HTF9EUkFXX0JVRkZFUjYPR0xfRFJBV19CVUZGRVI3D0dMX0RSQVdfQlVGRkVSOA9HTF9EUkFXX0JVRkZFUjkQR0xfRFJBV19CVUZGRVIxMBBHTF9EUkFXX0JVRkZFUjExEEdMX0RSQVdfQlVGRkVSMTIQR0xfRFJBV19CVUZGRVIxMxBHTF9EUkFXX0JVRkZFUjE0EEdMX0RSQVdfQlVGRkVSMTUbR0xfRFJBV19GUkFNRUJVRkZFUl9CSU5ESU5HH0dMX0VMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkclR0xfRlJBR01FTlRfSU5URVJQT0xBVElPTl9PRkZTRVRfQklUUyJHTF9GUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UDUdMX0ZST05UX0ZBQ0UXR0xfR0VORVJBVEVfTUlQTUFQX0hJTlQNR0xfR1JFRU5fQklUUxVHTF9JTUFHRV9CSU5ESU5HX05BTUUWR0xfSU1BR0VfQklORElOR19MRVZFTBhHTF9JTUFHRV9CSU5ESU5HX0xBWUVSRUQWR0xfSU1BR0VfQklORElOR19MQVlFUhdHTF9JTUFHRV9CSU5ESU5HX0FDQ0VTUxdHTF9JTUFHRV9CSU5ESU5HX0ZPUk1BVCNHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX0ZPUk1BVCFHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX1RZUEUZR0xfTEFZRVJfUFJPVk9LSU5HX1ZFUlRFWA1HTF9MSU5FX1dJRFRIKkdMX1BSSU1JVElWRV9SRVNUQVJUX0ZPUl9QQVRDSEVTX1NVUFBPUlRFRBBHTF9NQUpPUl9WRVJTSU9OFkdMX01BWF8zRF9URVhUVVJFX1NJWkUbR0xfTUFYX0FSUkFZX1RFWFRVUkVfTEFZRVJTJUdMX01BWF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfQklORElOR1MhR0xfTUFYX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TSVpFJkdMX01BWF9DT01CSU5FRF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTGEdMX01BWF9DT0xPUl9BVFRBQ0hNRU5UUxxHTF9NQVhfQ09MT1JfVEVYVFVSRV9TQU1QTEVTHEdMX01BWF9ERVBUSF9URVhUVVJFX1NBTVBMRVMfR0xfTUFYX0NPTUJJTkVEX0FUT01JQ19DT1VOVEVSUxJHTF9NQVhfSU1BR0VfVU5JVFMqR0xfTUFYX0NPTUJJTkVEX0NPTVBVVEVfVU5JRk9STV9DT01QT05FTlRTK0dMX01BWF9DT01CSU5FRF9GUkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFMrR0xfTUFYX0NPTUJJTkVEX0dFT01FVFJZX1VOSUZPUk1fQ09NUE9ORU5UUyVHTF9NQVhfQ09NQklORURfU0hBREVSX1NUT1JBR0VfQkxPQ0tTL0dMX01BWF9DT01CSU5FRF9URVNTX0NPTlRST0xfVU5JRk9STV9DT01QT05FTlRTMkdMX01BWF9DT01CSU5FRF9URVNTX0VWQUxVQVRJT05fVU5JRk9STV9DT01QT05FTlRTI0dMX01BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTJ0dMX01BWF9DT01CSU5FRF9TSEFERVJfT1VUUFVUX1JFU09VUkNFUx5HTF9NQVhfQ09NQklORURfVU5JRk9STV9CTE9DS1MpR0xfTUFYX0NPTUJJTkVEX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFMlR0xfTUFYX0NPTVBVVEVfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx5HTF9NQVhfQ09NUFVURV9BVE9NSUNfQ09VTlRFUlMdR0xfTUFYX0NPTVBVVEVfSU1BR0VfVU5JRk9STVMeR0xfTUFYX0NPTUJJTkVEX0lNQUdFX1VOSUZPUk1TJEdMX01BWF9DT01QVVRFX1NIQURFUl9TVE9SQUdFX0JMT0NLUyJHTF9NQVhfQ09NUFVURV9URVhUVVJFX0lNQUdFX1VOSVRTIUdMX01BWF9DT01QVVRFX1NIQVJFRF9NRU1PUllfU0laRR1HTF9NQVhfQ09NUFVURV9VTklGT1JNX0JMT0NLUyFHTF9NQVhfQ09NUFVURV9VTklGT1JNX0NPTVBPTkVOVFMfR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9DT1VOVCVHTF9NQVhfQ09NUFVURV9XT1JLX0dST1VQX0lOVk9DQVRJT05THkdMX01BWF9DT01QVVRFX1dPUktfR1JPVVBfU0laRRxHTF9NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFHkdMX01BWF9ERUJVR19HUk9VUF9TVEFDS19ERVBUSBxHTF9NQVhfREVCVUdfTE9HR0VEX01FU1NBR0VTG0dMX01BWF9ERUJVR19NRVNTQUdFX0xFTkdUSBNHTF9NQVhfRFJBV19CVUZGRVJTFEdMX01BWF9FTEVNRU5UX0lOREVYF0dMX01BWF9FTEVNRU5UU19JTkRJQ0VTGEdMX01BWF9FTEVNRU5UU19WRVJUSUNFUyZHTF9NQVhfRlJBR01FTlRfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx9HTF9NQVhfRlJBR01FTlRfQVRPTUlDX0NPVU5URVJTHkdMX01BWF9GUkFHTUVOVF9JTUFHRV9VTklGT1JNUyBHTF9NQVhfRlJBR01FTlRfSU5QVVRfQ09NUE9ORU5UUyRHTF9NQVhfRlJBR01FTlRfSU5URVJQT0xBVElPTl9PRkZTRVQlR0xfTUFYX0ZSQUdNRU5UX1NIQURFUl9TVE9SQUdFX0JMT0NLUyRHTF9NSU5fUFJPR1JBTV9URVhUVVJFX0dBVEhFUl9PRkZTRVQkR0xfTUFYX1BST0dSQU1fVEVYVFVSRV9HQVRIRVJfT0ZGU0VUHkdMX01BWF9GUkFHTUVOVF9VTklGT1JNX0JMT0NLUyJHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTH0dMX01BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMZR0xfTUFYX0ZSQU1FQlVGRkVSX0hFSUdIVBlHTF9NQVhfRlJBTUVCVUZGRVJfTEFZRVJTGkdMX01BWF9GUkFNRUJVRkZFUl9TQU1QTEVTGEdMX01BWF9GUkFNRUJVRkZFUl9XSURUSCZHTF9NQVhfR0VPTUVUUllfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx9HTF9NQVhfR0VPTUVUUllfQVRPTUlDX0NPVU5URVJTHkdMX01BWF9HRU9NRVRSWV9JTUFHRV9VTklGT1JNUyBHTF9NQVhfR0VPTUVUUllfSU5QVVRfQ09NUE9ORU5UUyFHTF9NQVhfR0VPTUVUUllfT1VUUFVUX0NPTVBPTkVOVFMfR0xfTUFYX0dFT01FVFJZX09VVFBVVF9WRVJUSUNFUyJHTF9NQVhfR0VPTUVUUllfU0hBREVSX0lOVk9DQVRJT05TJUdMX01BWF9HRU9NRVRSWV9TSEFERVJfU1RPUkFHRV9CTE9DS1MjR0xfTUFYX0dFT01FVFJZX1RFWFRVUkVfSU1BR0VfVU5JVFMnR0xfTUFYX0dFT01FVFJZX1RPVEFMX09VVFBVVF9DT01QT05FTlRTHkdMX01BWF9HRU9NRVRSWV9VTklGT1JNX0JMT0NLUyJHTF9NQVhfR0VPTUVUUllfVU5JRk9STV9DT01QT05FTlRTFkdMX01BWF9JTlRFR0VSX1NBTVBMRVMTR0xfTUFYX0xBQkVMX0xFTkdUSBtHTF9NQVhfUFJPR1JBTV9URVhFTF9PRkZTRVQYR0xfTUFYX1JFTkRFUkJVRkZFUl9TSVpFGEdMX01BWF9TQU1QTEVfTUFTS19XT1JEUw5HTF9NQVhfU0FNUExFUxpHTF9NQVhfU0VSVkVSX1dBSVRfVElNRU9VVCBHTF9NQVhfU0hBREVSX1NUT1JBR0VfQkxPQ0tfU0laRSVHTF9NQVhfU0hBREVSX1NUT1JBR0VfQlVGRkVSX0JJTkRJTkdTKkdMX01BWF9URVNTX0NPTlRST0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSUyNHTF9NQVhfVEVTU19DT05UUk9MX0FUT01JQ19DT1VOVEVSUyJHTF9NQVhfVEVTU19DT05UUk9MX0lNQUdFX1VOSUZPUk1TJEdMX01BWF9URVNTX0NPTlRST0xfSU5QVVRfQ09NUE9ORU5UUyVHTF9NQVhfVEVTU19DT05UUk9MX09VVFBVVF9DT01QT05FTlRTKUdMX01BWF9URVNTX0NPTlRST0xfU0hBREVSX1NUT1JBR0VfQkxPQ0tTJ0dMX01BWF9URVNTX0NPTlRST0xfVEVYVFVSRV9JTUFHRV9VTklUUytHTF9NQVhfVEVTU19DT05UUk9MX1RPVEFMX09VVFBVVF9DT01QT05FTlRTIkdMX01BWF9URVNTX0NPTlRST0xfVU5JRk9STV9CTE9DS1MmR0xfTUFYX1RFU1NfQ09OVFJPTF9VTklGT1JNX0NPTVBPTkVOVFMtR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTJkdMX01BWF9URVNTX0VWQUxVQVRJT05fQVRPTUlDX0NPVU5URVJTJUdMX01BWF9URVNTX0VWQUxVQVRJT05fSU1BR0VfVU5JRk9STVMnR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9JTlBVVF9DT01QT05FTlRTKEdMX01BWF9URVNTX0VWQUxVQVRJT05fT1VUUFVUX0NPTVBPTkVOVFMsR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9TSEFERVJfU1RPUkFHRV9CTE9DS1MqR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9URVhUVVJFX0lNQUdFX1VOSVRTJUdMX01BWF9URVNTX0VWQUxVQVRJT05fVU5JRk9STV9CTE9DS1MpR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0NPTVBPTkVOVFMVR0xfTUFYX1RFU1NfR0VOX0xFVkVMFUdMX01BWF9QQVRDSF9WRVJUSUNFUxxHTF9NQVhfVEVTU19QQVRDSF9DT01QT05FTlRTGkdMX01BWF9URVhUVVJFX0JVRkZFUl9TSVpFGkdMX01BWF9URVhUVVJFX0lNQUdFX1VOSVRTF0dMX01BWF9URVhUVVJFX0xPRF9CSUFTE0dMX01BWF9URVhUVVJFX1NJWkUwR0xfTUFYX1RSQU5TRk9STV9GRUVEQkFDS19JTlRFUkxFQVZFRF9DT01QT05FTlRTKkdMX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQVRUUklCUy1HTF9NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFSQVRFX0NPTVBPTkVOVFMZR0xfTUFYX1VOSUZPUk1fQkxPQ0tfU0laRR5HTF9NQVhfVU5JRk9STV9CVUZGRVJfQklORElOR1MYR0xfTUFYX1VOSUZPUk1fTE9DQVRJT05TGUdMX01BWF9WQVJZSU5HX0NPTVBPTkVOVFMWR0xfTUFYX1ZBUllJTkdfVkVDVE9SUx1HTF9NQVhfVkVSVEVYX0FUT01JQ19DT1VOVEVSUyRHTF9NQVhfVkVSVEVYX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMdR0xfTUFYX1ZFUlRFWF9BVFRSSUJfQklORElOR1MbR0xfTUFYX1ZFUlRFWF9BVFRSSUJfU1RSSURFJEdMX01BWF9WRVJURVhfQVRUUklCX1JFTEFUSVZFX09GRlNFVBVHTF9NQVhfVkVSVEVYX0FUVFJJQlMcR0xfTUFYX1ZFUlRFWF9JTUFHRV9VTklGT1JNUx9HTF9NQVhfVkVSVEVYX09VVFBVVF9DT01QT05FTlRTI0dMX01BWF9WRVJURVhfU0hBREVSX1NUT1JBR0VfQkxPQ0tTIUdMX01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUxxHTF9NQVhfVkVSVEVYX1VOSUZPUk1fQkxPQ0tTIEdMX01BWF9WRVJURVhfVU5JRk9STV9DT01QT05FTlRTHUdMX01BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTFEdMX01BWF9WSUVXUE9SVF9ESU1TJEdMX01JTl9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVBtHTF9NSU5fUFJPR1JBTV9URVhFTF9PRkZTRVQbR0xfTUlOX1NBTVBMRV9TSEFESU5HX1ZBTFVFEEdMX01JTk9SX1ZFUlNJT04fR0xfTVVMVElTQU1QTEVfTElORV9XSURUSF9SQU5HRSVHTF9NVUxUSVNBTVBMRV9MSU5FX1dJRFRIX0dSQU5VTEFSSVRZIUdMX05VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUxFHTF9OVU1fRVhURU5TSU9OUx1HTF9OVU1fUFJPR1JBTV9CSU5BUllfRk9STUFUUxxHTF9OVU1fU0hBREVSX0JJTkFSWV9GT1JNQVRTEUdMX1BBQ0tfQUxJR05NRU5UFEdMX1BBQ0tfSU1BR0VfSEVJR0hUEkdMX1BBQ0tfUk9XX0xFTkdUSBNHTF9QQUNLX1NLSVBfSU1BR0VTE0dMX1BBQ0tfU0tJUF9QSVhFTFMRR0xfUEFDS19TS0lQX1JPV1MRR0xfUEFUQ0hfVkVSVElDRVMcR0xfUElYRUxfUEFDS19CVUZGRVJfQklORElORx5HTF9QSVhFTF9VTlBBQ0tfQlVGRkVSX0JJTkRJTkcYR0xfUE9MWUdPTl9PRkZTRVRfRkFDVE9SFkdMX1BPTFlHT05fT0ZGU0VUX0ZJTEwXR0xfUE9MWUdPTl9PRkZTRVRfVU5JVFMZR0xfUFJJTUlUSVZFX0JPVU5ESU5HX0JPWCBHTF9QUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWBlHTF9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTG0dMX1BST0dSQU1fUElQRUxJTkVfQklORElORxVHTF9SQVNURVJJWkVSX0RJU0NBUkQOR0xfUkVBRF9CVUZGRVIbR0xfUkVBRF9GUkFNRUJVRkZFUl9CSU5ESU5HC0dMX1JFRF9CSVRTF0dMX1JFTkRFUkJVRkZFUl9CSU5ESU5HHkdMX1JFU0VUX05PVElGSUNBVElPTl9TVFJBVEVHWRtHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0URR0xfU0FNUExFX0JVRkZFUlMSR0xfU0FNUExFX0NPVkVSQUdFGUdMX1NBTVBMRV9DT1ZFUkFHRV9JTlZFUlQYR0xfU0FNUExFX0NPVkVSQUdFX1ZBTFVFEUdMX1NBTVBMRV9TSEFESU5HEkdMX1NBTVBMRVJfQklORElORwpHTF9TQU1QTEVTDkdMX1NDSVNTT1JfQk9YD0dMX1NDSVNTT1JfVEVTVBhHTF9TSEFERVJfQklOQVJZX0ZPUk1BVFMSR0xfU0hBREVSX0NPTVBJTEVSIEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9CSU5ESU5HKUdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UHUdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9TSVpFHkdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9TVEFSVBRHTF9TVEVOQ0lMX0JBQ0tfRkFJTBRHTF9TVEVOQ0lMX0JBQ0tfRlVOQx9HTF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMH0dMX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1MTR0xfU1RFTkNJTF9CQUNLX1JFRhpHTF9TVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTSxlHTF9TVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLD0dMX1NURU5DSUxfQklUUxZHTF9TVEVOQ0lMX0NMRUFSX1ZBTFVFD0dMX1NURU5DSUxfRkFJTA9HTF9TVEVOQ0lMX0ZVTkMaR0xfU1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUwaR0xfU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1MOR0xfU1RFTkNJTF9SRUYPR0xfU1RFTkNJTF9URVNUFUdMX1NURU5DSUxfVkFMVUVfTUFTSxRHTF9TVEVOQ0lMX1dSSVRFTUFTSxBHTF9TVUJQSVhFTF9CSVRTFUdMX1RFWFRVUkVfQklORElOR18yRB9HTF9URVhUVVJFX0JJTkRJTkdfRVhURVJOQUxfT0VTG0dMX1RFWFRVUkVfQklORElOR18yRF9BUlJBWSFHTF9URVhUVVJFX0JJTkRJTkdfMkRfTVVMVElTQU1QTEUnR0xfVEVYVFVSRV9CSU5ESU5HXzJEX01VTFRJU0FNUExFX0FSUkFZFUdMX1RFWFRVUkVfQklORElOR18zRBlHTF9URVhUVVJFX0JJTkRJTkdfQlVGRkVSG0dMX1RFWFRVUkVfQklORElOR19DVUJFX01BUCFHTF9URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVBfQVJSQVkZR0xfVEVYVFVSRV9CVUZGRVJfQklORElORyJHTF9URVhUVVJFX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UHEdMX1RSQU5TRk9STV9GRUVEQkFDS19BQ1RJVkUdR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JJTkRJTkckR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9CSU5ESU5HIUdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU0laRSJHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NUQVJUHEdMX1RSQU5TRk9STV9GRUVEQkFDS19QQVVTRUQZR0xfVU5JRk9STV9CVUZGRVJfQklORElORyJHTF9VTklGT1JNX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UFkdMX1VOSUZPUk1fQlVGRkVSX1NJWkUXR0xfVU5JRk9STV9CVUZGRVJfU1RBUlQTR0xfVU5QQUNLX0FMSUdOTUVOVBZHTF9VTlBBQ0tfSU1BR0VfSEVJR0hUFEdMX1VOUEFDS19ST1dfTEVOR1RIFUdMX1VOUEFDS19TS0lQX0lNQUdFUxVHTF9VTlBBQ0tfU0tJUF9QSVhFTFMTR0xfVU5QQUNLX1NLSVBfUk9XUxdHTF9WRVJURVhfQVJSQVlfQklORElORxlHTF9WRVJURVhfQklORElOR19ESVZJU09SGEdMX1ZFUlRFWF9CSU5ESU5HX09GRlNFVBhHTF9WRVJURVhfQklORElOR19TVFJJREULR0xfVklFV1BPUlQhR0xfTUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUE0dMX0dQVV9ESVNKT0lOVF9FWFSHSwSHTQaHTwiHUQoPZ2xHZXRJbnRlZ2VyaV92BnZhbHVlcwQBAgINZ2xHZXRJbnRlZ2VydgKHUwyHVQiHVwoNZ2xHZXRJbnRlZ2VydgVwYXJhbYEqEUdMX0FDVElWRV9URVhUVVJFG0dMX0FMSUFTRURfTElORV9XSURUSF9SQU5HRRtHTF9BTElBU0VEX1BPSU5UX1NJWkVfUkFOR0UNR0xfQUxQSEFfQklUUxdHTF9BUlJBWV9CVUZGRVJfQklORElORyBHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfQklORElORx1HTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfU0laRR5HTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfU1RBUlQIR0xfQkxFTkQOR0xfQkxFTkRfQ09MT1ISR0xfQkxFTkRfRFNUX0FMUEhBEEdMX0JMRU5EX0RTVF9SR0IXR0xfQkxFTkRfRVFVQVRJT05fQUxQSEEVR0xfQkxFTkRfRVFVQVRJT05fUkdCEkdMX0JMRU5EX1NSQ19BTFBIQRBHTF9CTEVORF9TUkNfUkdCDEdMX0JMVUVfQklUUxRHTF9DT0xPUl9DTEVBUl9WQUxVRRJHTF9DT0xPUl9XUklURU1BU0sdR0xfQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMQR0xfQ09OVEVYVF9GTEFHUxhHTF9DT05URVhUX1JPQlVTVF9BQ0NFU1MbR0xfQ09QWV9SRUFEX0JVRkZFUl9CSU5ESU5HHEdMX0NPUFlfV1JJVEVfQlVGRkVSX0JJTkRJTkcMR0xfQ1VMTF9GQUNFEUdMX0NVTExfRkFDRV9NT0RFEkdMX0NVUlJFTlRfUFJPR1JBTRpHTF9ERUJVR19HUk9VUF9TVEFDS19ERVBUSBhHTF9ERUJVR19MT0dHRURfTUVTU0FHRVMjR0xfREVCVUdfTkVYVF9MT0dHRURfTUVTU0FHRV9MRU5HVEgNR0xfREVQVEhfQklUUxRHTF9ERVBUSF9DTEVBUl9WQUxVRQ1HTF9ERVBUSF9GVU5DDkdMX0RFUFRIX1JBTkdFDUdMX0RFUFRIX1RFU1QSR0xfREVQVEhfV1JJVEVNQVNLI0dMX0RJU1BBVENIX0lORElSRUNUX0JVRkZFUl9CSU5ESU5HCUdMX0RJVEhFUg5HTF9EUkFXX0JVRkZFUg9HTF9EUkFXX0JVRkZFUjAPR0xfRFJBV19CVUZGRVIxD0dMX0RSQVdfQlVGRkVSMg9HTF9EUkFXX0JVRkZFUjMPR0xfRFJBV19CVUZGRVI0D0dMX0RSQVdfQlVGRkVSNQ9HTF9EUkFXX0JVRkZFUjYPR0xfRFJBV19CVUZGRVI3D0dMX0RSQVdfQlVGRkVSOA9HTF9EUkFXX0JVRkZFUjkQR0xfRFJBV19CVUZGRVIxMBBHTF9EUkFXX0JVRkZFUjExEEdMX0RSQVdfQlVGRkVSMTIQR0xfRFJBV19CVUZGRVIxMxBHTF9EUkFXX0JVRkZFUjE0EEdMX0RSQVdfQlVGRkVSMTUbR0xfRFJBV19GUkFNRUJVRkZFUl9CSU5ESU5HH0dMX0VMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkclR0xfRlJBR01FTlRfSU5URVJQT0xBVElPTl9PRkZTRVRfQklUUyJHTF9GUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UDUdMX0ZST05UX0ZBQ0UXR0xfR0VORVJBVEVfTUlQTUFQX0hJTlQNR0xfR1JFRU5fQklUUxVHTF9JTUFHRV9CSU5ESU5HX05BTUUWR0xfSU1BR0VfQklORElOR19MRVZFTBhHTF9JTUFHRV9CSU5ESU5HX0xBWUVSRUQWR0xfSU1BR0VfQklORElOR19MQVlFUhdHTF9JTUFHRV9CSU5ESU5HX0FDQ0VTUxdHTF9JTUFHRV9CSU5ESU5HX0ZPUk1BVCNHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX0ZPUk1BVCFHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX1RZUEUZR0xfTEFZRVJfUFJPVk9LSU5HX1ZFUlRFWA1HTF9MSU5FX1dJRFRIKkdMX1BSSU1JVElWRV9SRVNUQVJUX0ZPUl9QQVRDSEVTX1NVUFBPUlRFRBBHTF9NQUpPUl9WRVJTSU9OFkdMX01BWF8zRF9URVhUVVJFX1NJWkUbR0xfTUFYX0FSUkFZX1RFWFRVUkVfTEFZRVJTJUdMX01BWF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfQklORElOR1MhR0xfTUFYX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TSVpFJkdMX01BWF9DT01CSU5FRF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTGEdMX01BWF9DT0xPUl9BVFRBQ0hNRU5UUxxHTF9NQVhfQ09MT1JfVEVYVFVSRV9TQU1QTEVTHEdMX01BWF9ERVBUSF9URVhUVVJFX1NBTVBMRVMfR0xfTUFYX0NPTUJJTkVEX0FUT01JQ19DT1VOVEVSUxJHTF9NQVhfSU1BR0VfVU5JVFMqR0xfTUFYX0NPTUJJTkVEX0NPTVBVVEVfVU5JRk9STV9DT01QT05FTlRTK0dMX01BWF9DT01CSU5FRF9GUkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFMrR0xfTUFYX0NPTUJJTkVEX0dFT01FVFJZX1VOSUZPUk1fQ09NUE9ORU5UUyVHTF9NQVhfQ09NQklORURfU0hBREVSX1NUT1JBR0VfQkxPQ0tTL0dMX01BWF9DT01CSU5FRF9URVNTX0NPTlRST0xfVU5JRk9STV9DT01QT05FTlRTMkdMX01BWF9DT01CSU5FRF9URVNTX0VWQUxVQVRJT05fVU5JRk9STV9DT01QT05FTlRTI0dMX01BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTJ0dMX01BWF9DT01CSU5FRF9TSEFERVJfT1VUUFVUX1JFU09VUkNFUx5HTF9NQVhfQ09NQklORURfVU5JRk9STV9CTE9DS1MpR0xfTUFYX0NPTUJJTkVEX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFMlR0xfTUFYX0NPTVBVVEVfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx5HTF9NQVhfQ09NUFVURV9BVE9NSUNfQ09VTlRFUlMdR0xfTUFYX0NPTVBVVEVfSU1BR0VfVU5JRk9STVMeR0xfTUFYX0NPTUJJTkVEX0lNQUdFX1VOSUZPUk1TJEdMX01BWF9DT01QVVRFX1NIQURFUl9TVE9SQUdFX0JMT0NLUyJHTF9NQVhfQ09NUFVURV9URVhUVVJFX0lNQUdFX1VOSVRTIUdMX01BWF9DT01QVVRFX1NIQVJFRF9NRU1PUllfU0laRR1HTF9NQVhfQ09NUFVURV9VTklGT1JNX0JMT0NLUyFHTF9NQVhfQ09NUFVURV9VTklGT1JNX0NPTVBPTkVOVFMfR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9DT1VOVCVHTF9NQVhfQ09NUFVURV9XT1JLX0dST1VQX0lOVk9DQVRJT05THkdMX01BWF9DT01QVVRFX1dPUktfR1JPVVBfU0laRRxHTF9NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFHkdMX01BWF9ERUJVR19HUk9VUF9TVEFDS19ERVBUSBxHTF9NQVhfREVCVUdfTE9HR0VEX01FU1NBR0VTG0dMX01BWF9ERUJVR19NRVNTQUdFX0xFTkdUSBNHTF9NQVhfRFJBV19CVUZGRVJTFEdMX01BWF9FTEVNRU5UX0lOREVYF0dMX01BWF9FTEVNRU5UU19JTkRJQ0VTGEdMX01BWF9FTEVNRU5UU19WRVJUSUNFUyZHTF9NQVhfRlJBR01FTlRfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx9HTF9NQVhfRlJBR01FTlRfQVRPTUlDX0NPVU5URVJTHkdMX01BWF9GUkFHTUVOVF9JTUFHRV9VTklGT1JNUyBHTF9NQVhfRlJBR01FTlRfSU5QVVRfQ09NUE9ORU5UUyRHTF9NQVhfRlJBR01FTlRfSU5URVJQT0xBVElPTl9PRkZTRVQlR0xfTUFYX0ZSQUdNRU5UX1NIQURFUl9TVE9SQUdFX0JMT0NLUyRHTF9NSU5fUFJPR1JBTV9URVhUVVJFX0dBVEhFUl9PRkZTRVQkR0xfTUFYX1BST0dSQU1fVEVYVFVSRV9HQVRIRVJfT0ZGU0VUHkdMX01BWF9GUkFHTUVOVF9VTklGT1JNX0JMT0NLUyJHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTH0dMX01BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMZR0xfTUFYX0ZSQU1FQlVGRkVSX0hFSUdIVBlHTF9NQVhfRlJBTUVCVUZGRVJfTEFZRVJTGkdMX01BWF9GUkFNRUJVRkZFUl9TQU1QTEVTGEdMX01BWF9GUkFNRUJVRkZFUl9XSURUSCZHTF9NQVhfR0VPTUVUUllfQVRPTUlDX0NPVU5URVJfQlVGRkVSUx9HTF9NQVhfR0VPTUVUUllfQVRPTUlDX0NPVU5URVJTHkdMX01BWF9HRU9NRVRSWV9JTUFHRV9VTklGT1JNUyBHTF9NQVhfR0VPTUVUUllfSU5QVVRfQ09NUE9ORU5UUyFHTF9NQVhfR0VPTUVUUllfT1VUUFVUX0NPTVBPTkVOVFMfR0xfTUFYX0dFT01FVFJZX09VVFBVVF9WRVJUSUNFUyJHTF9NQVhfR0VPTUVUUllfU0hBREVSX0lOVk9DQVRJT05TJUdMX01BWF9HRU9NRVRSWV9TSEFERVJfU1RPUkFHRV9CTE9DS1MjR0xfTUFYX0dFT01FVFJZX1RFWFRVUkVfSU1BR0VfVU5JVFMnR0xfTUFYX0dFT01FVFJZX1RPVEFMX09VVFBVVF9DT01QT05FTlRTHkdMX01BWF9HRU9NRVRSWV9VTklGT1JNX0JMT0NLUyJHTF9NQVhfR0VPTUVUUllfVU5JRk9STV9DT01QT05FTlRTFkdMX01BWF9JTlRFR0VSX1NBTVBMRVMTR0xfTUFYX0xBQkVMX0xFTkdUSBtHTF9NQVhfUFJPR1JBTV9URVhFTF9PRkZTRVQYR0xfTUFYX1JFTkRFUkJVRkZFUl9TSVpFGEdMX01BWF9TQU1QTEVfTUFTS19XT1JEUw5HTF9NQVhfU0FNUExFUxpHTF9NQVhfU0VSVkVSX1dBSVRfVElNRU9VVCBHTF9NQVhfU0hBREVSX1NUT1JBR0VfQkxPQ0tfU0laRSVHTF9NQVhfU0hBREVSX1NUT1JBR0VfQlVGRkVSX0JJTkRJTkdTKkdMX01BWF9URVNTX0NPTlRST0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSUyNHTF9NQVhfVEVTU19DT05UUk9MX0FUT01JQ19DT1VOVEVSUyJHTF9NQVhfVEVTU19DT05UUk9MX0lNQUdFX1VOSUZPUk1TJEdMX01BWF9URVNTX0NPTlRST0xfSU5QVVRfQ09NUE9ORU5UUyVHTF9NQVhfVEVTU19DT05UUk9MX09VVFBVVF9DT01QT05FTlRTKUdMX01BWF9URVNTX0NPTlRST0xfU0hBREVSX1NUT1JBR0VfQkxPQ0tTJ0dMX01BWF9URVNTX0NPTlRST0xfVEVYVFVSRV9JTUFHRV9VTklUUytHTF9NQVhfVEVTU19DT05UUk9MX1RPVEFMX09VVFBVVF9DT01QT05FTlRTIkdMX01BWF9URVNTX0NPTlRST0xfVU5JRk9STV9CTE9DS1MmR0xfTUFYX1RFU1NfQ09OVFJPTF9VTklGT1JNX0NPTVBPTkVOVFMtR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTJkdMX01BWF9URVNTX0VWQUxVQVRJT05fQVRPTUlDX0NPVU5URVJTJUdMX01BWF9URVNTX0VWQUxVQVRJT05fSU1BR0VfVU5JRk9STVMnR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9JTlBVVF9DT01QT05FTlRTKEdMX01BWF9URVNTX0VWQUxVQVRJT05fT1VUUFVUX0NPTVBPTkVOVFMsR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9TSEFERVJfU1RPUkFHRV9CTE9DS1MqR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9URVhUVVJFX0lNQUdFX1VOSVRTJUdMX01BWF9URVNTX0VWQUxVQVRJT05fVU5JRk9STV9CTE9DS1MpR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0NPTVBPTkVOVFMVR0xfTUFYX1RFU1NfR0VOX0xFVkVMFUdMX01BWF9QQVRDSF9WRVJUSUNFUxxHTF9NQVhfVEVTU19QQVRDSF9DT01QT05FTlRTGkdMX01BWF9URVhUVVJFX0JVRkZFUl9TSVpFGkdMX01BWF9URVhUVVJFX0lNQUdFX1VOSVRTF0dMX01BWF9URVhUVVJFX0xPRF9CSUFTE0dMX01BWF9URVhUVVJFX1NJWkUwR0xfTUFYX1RSQU5TRk9STV9GRUVEQkFDS19JTlRFUkxFQVZFRF9DT01QT05FTlRTKkdMX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQVRUUklCUy1HTF9NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFSQVRFX0NPTVBPTkVOVFMZR0xfTUFYX1VOSUZPUk1fQkxPQ0tfU0laRR5HTF9NQVhfVU5JRk9STV9CVUZGRVJfQklORElOR1MYR0xfTUFYX1VOSUZPUk1fTE9DQVRJT05TGUdMX01BWF9WQVJZSU5HX0NPTVBPTkVOVFMWR0xfTUFYX1ZBUllJTkdfVkVDVE9SUx1HTF9NQVhfVkVSVEVYX0FUT01JQ19DT1VOVEVSUyRHTF9NQVhfVkVSVEVYX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMdR0xfTUFYX1ZFUlRFWF9BVFRSSUJfQklORElOR1MbR0xfTUFYX1ZFUlRFWF9BVFRSSUJfU1RSSURFJEdMX01BWF9WRVJURVhfQVRUUklCX1JFTEFUSVZFX09GRlNFVBVHTF9NQVhfVkVSVEVYX0FUVFJJQlMcR0xfTUFYX1ZFUlRFWF9JTUFHRV9VTklGT1JNUx9HTF9NQVhfVkVSVEVYX09VVFBVVF9DT01QT05FTlRTI0dMX01BWF9WRVJURVhfU0hBREVSX1NUT1JBR0VfQkxPQ0tTIUdMX01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUxxHTF9NQVhfVkVSVEVYX1VOSUZPUk1fQkxPQ0tTIEdMX01BWF9WRVJURVhfVU5JRk9STV9DT01QT05FTlRTHUdMX01BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTFEdMX01BWF9WSUVXUE9SVF9ESU1TJEdMX01JTl9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVBtHTF9NSU5fUFJPR1JBTV9URVhFTF9PRkZTRVQbR0xfTUlOX1NBTVBMRV9TSEFESU5HX1ZBTFVFEEdMX01JTk9SX1ZFUlNJT04fR0xfTVVMVElTQU1QTEVfTElORV9XSURUSF9SQU5HRSVHTF9NVUxUSVNBTVBMRV9MSU5FX1dJRFRIX0dSQU5VTEFSSVRZIUdMX05VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUxFHTF9OVU1fRVhURU5TSU9OUx1HTF9OVU1fUFJPR1JBTV9CSU5BUllfRk9STUFUUxxHTF9OVU1fU0hBREVSX0JJTkFSWV9GT1JNQVRTEUdMX1BBQ0tfQUxJR05NRU5UFEdMX1BBQ0tfSU1BR0VfSEVJR0hUEkdMX1BBQ0tfUk9XX0xFTkdUSBNHTF9QQUNLX1NLSVBfSU1BR0VTE0dMX1BBQ0tfU0tJUF9QSVhFTFMRR0xfUEFDS19TS0lQX1JPV1MRR0xfUEFUQ0hfVkVSVElDRVMcR0xfUElYRUxfUEFDS19CVUZGRVJfQklORElORx5HTF9QSVhFTF9VTlBBQ0tfQlVGRkVSX0JJTkRJTkcYR0xfUE9MWUdPTl9PRkZTRVRfRkFDVE9SFkdMX1BPTFlHT05fT0ZGU0VUX0ZJTEwXR0xfUE9MWUdPTl9PRkZTRVRfVU5JVFMZR0xfUFJJTUlUSVZFX0JPVU5ESU5HX0JPWCBHTF9QUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWBlHTF9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTG0dMX1BST0dSQU1fUElQRUxJTkVfQklORElORxVHTF9SQVNURVJJWkVSX0RJU0NBUkQOR0xfUkVBRF9CVUZGRVIbR0xfUkVBRF9GUkFNRUJVRkZFUl9CSU5ESU5HC0dMX1JFRF9CSVRTF0dMX1JFTkRFUkJVRkZFUl9CSU5ESU5HHkdMX1JFU0VUX05PVElGSUNBVElPTl9TVFJBVEVHWRtHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0URR0xfU0FNUExFX0JVRkZFUlMSR0xfU0FNUExFX0NPVkVSQUdFGUdMX1NBTVBMRV9DT1ZFUkFHRV9JTlZFUlQYR0xfU0FNUExFX0NPVkVSQUdFX1ZBTFVFEUdMX1NBTVBMRV9TSEFESU5HEkdMX1NBTVBMRVJfQklORElORwpHTF9TQU1QTEVTDkdMX1NDSVNTT1JfQk9YD0dMX1NDSVNTT1JfVEVTVBhHTF9TSEFERVJfQklOQVJZX0ZPUk1BVFMSR0xfU0hBREVSX0NPTVBJTEVSIEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9CSU5ESU5HKUdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UHUdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9TSVpFHkdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9TVEFSVBRHTF9TVEVOQ0lMX0JBQ0tfRkFJTBRHTF9TVEVOQ0lMX0JBQ0tfRlVOQx9HTF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMH0dMX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1MTR0xfU1RFTkNJTF9CQUNLX1JFRhpHTF9TVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTSxlHTF9TVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLD0dMX1NURU5DSUxfQklUUxZHTF9TVEVOQ0lMX0NMRUFSX1ZBTFVFD0dMX1NURU5DSUxfRkFJTA9HTF9TVEVOQ0lMX0ZVTkMaR0xfU1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUwaR0xfU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1MOR0xfU1RFTkNJTF9SRUYPR0xfU1RFTkNJTF9URVNUFUdMX1NURU5DSUxfVkFMVUVfTUFTSxRHTF9TVEVOQ0lMX1dSSVRFTUFTSxBHTF9TVUJQSVhFTF9CSVRTFUdMX1RFWFRVUkVfQklORElOR18yRB9HTF9URVhUVVJFX0JJTkRJTkdfRVhURVJOQUxfT0VTG0dMX1RFWFRVUkVfQklORElOR18yRF9BUlJBWSFHTF9URVhUVVJFX0JJTkRJTkdfMkRfTVVMVElTQU1QTEUnR0xfVEVYVFVSRV9CSU5ESU5HXzJEX01VTFRJU0FNUExFX0FSUkFZFUdMX1RFWFRVUkVfQklORElOR18zRBlHTF9URVhUVVJFX0JJTkRJTkdfQlVGRkVSG0dMX1RFWFRVUkVfQklORElOR19DVUJFX01BUCFHTF9URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVBfQVJSQVkZR0xfVEVYVFVSRV9CVUZGRVJfQklORElORyJHTF9URVhUVVJFX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UHEdMX1RSQU5TRk9STV9GRUVEQkFDS19BQ1RJVkUdR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JJTkRJTkckR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9CSU5ESU5HIUdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU0laRSJHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NUQVJUHEdMX1RSQU5TRk9STV9GRUVEQkFDS19QQVVTRUQZR0xfVU5JRk9STV9CVUZGRVJfQklORElORyJHTF9VTklGT1JNX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UFkdMX1VOSUZPUk1fQlVGRkVSX1NJWkUXR0xfVU5JRk9STV9CVUZGRVJfU1RBUlQTR0xfVU5QQUNLX0FMSUdOTUVOVBZHTF9VTlBBQ0tfSU1BR0VfSEVJR0hUFEdMX1VOUEFDS19ST1dfTEVOR1RIFUdMX1VOUEFDS19TS0lQX0lNQUdFUxVHTF9VTlBBQ0tfU0tJUF9QSVhFTFMTR0xfVU5QQUNLX1NLSVBfUk9XUxdHTF9WRVJURVhfQVJSQVlfQklORElORxlHTF9WRVJURVhfQklORElOR19ESVZJU09SGEdMX1ZFUlRFWF9CSU5ESU5HX09GRlNFVBhHTF9WRVJURVhfQklORElOR19TVFJJREULR0xfVklFV1BPUlQhR0xfTUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUE0dMX0dQVV9ESVNKT0lOVF9FWFSHWQSHWwaHXQiHXwoNZ2xHZXRJbnRlZ2VydgZ2YWx1ZXMEAQICFWdsR2V0SW50ZXJuYWxmb3JtYXRpdgOHYQyHYwiHZQoVZ2xHZXRJbnRlcm5hbGZvcm1hdGl2BnRhcmdldAMPR0xfUkVOREVSQlVGRkVSGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWYdnDIdpCIdrChVnbEdldEludGVybmFsZm9ybWF0aXYOaW50ZXJuYWxmb3JtYXQ3E0dMX0RFUFRIMjRfU1RFTkNJTDgUR0xfREVQVEgzMkZfU1RFTkNJTDgUR0xfREVQVEhfQ09NUE9ORU5UMTYUR0xfREVQVEhfQ09NUE9ORU5UMjQVR0xfREVQVEhfQ09NUE9ORU5UMzJGEUdMX1IxMUZfRzExRl9CMTBGB0dMX1IxNkYHR0xfUjE2SQhHTF9SMTZVSQdHTF9SMzJGB0dMX1IzMkkIR0xfUjMyVUkFR0xfUjgGR0xfUjhJB0dMX1I4VUkLR0xfUjhfU05PUk0IR0xfUkcxNkYIR0xfUkcxNkkJR0xfUkcxNlVJCEdMX1JHMzJGCEdMX1JHMzJJCUdMX1JHMzJVSQZHTF9SRzgHR0xfUkc4SQhHTF9SRzhVSQxHTF9SRzhfU05PUk0LR0xfUkdCMTBfQTINR0xfUkdCMTBfQTJVSQlHTF9SR0IxNkYJR0xfUkdCMTZJCkdMX1JHQjE2VUkJR0xfUkdCMzJGCUdMX1JHQjMySQpHTF9SR0IzMlVJCUdMX1JHQjU2NQpHTF9SR0I1X0ExB0dMX1JHQjgIR0xfUkdCOEkJR0xfUkdCOFVJDUdMX1JHQjhfU05PUk0KR0xfUkdCOV9FNQpHTF9SR0JBMTZGCkdMX1JHQkExNkkLR0xfUkdCQTE2VUkKR0xfUkdCQTMyRgpHTF9SR0JBMzJJC0dMX1JHQkEzMlVJCEdMX1JHQkE0CEdMX1JHQkE4CUdMX1JHQkE4SQpHTF9SR0JBOFVJDkdMX1JHQkE4X1NOT1JNCEdMX1NSR0I4D0dMX1NSR0I4X0FMUEhBOBFHTF9TVEVOQ0lMX0lOREVYOIdtDIdvCIdxChVnbEdldEludGVybmFsZm9ybWF0aXYFcG5hbWUCFEdMX05VTV9TQU1QTEVfQ09VTlRTCkdMX1NBTVBMRVMCEmdsR2V0TXVsdGlzYW1wbGVmdgKHcwyHdQiHdwoSZ2xHZXRNdWx0aXNhbXBsZWZ2BXBuYW1lARJHTF9TQU1QTEVfUE9TSVRJT06HeQSHewaHfQiHfwoSZ2xHZXRNdWx0aXNhbXBsZWZ2A3ZhbAQBAAIQZ2xHZXRPYmplY3RMYWJlbAKHgQyHgwiHhQoQZ2xHZXRPYmplY3RMYWJlbAppZGVudGlmaWVyCwlHTF9CVUZGRVIOR0xfRlJBTUVCVUZGRVIKR0xfUFJPR1JBTRNHTF9QUk9HUkFNX1BJUEVMSU5FCEdMX1FVRVJZD0dMX1JFTkRFUkJVRkZFUgpHTF9TQU1QTEVSCUdMX1NIQURFUgpHTF9URVhUVVJFFUdMX1RSQU5TRk9STV9GRUVEQkFDSw9HTF9WRVJURVhfQVJSQVmHhwSHiQaHiwiHjQoQZ2xHZXRPYmplY3RMYWJlbAVsYWJlbAQBAgITZ2xHZXRPYmplY3RMYWJlbEVYVAKHjwyHkQiHkwoTZ2xHZXRPYmplY3RMYWJlbEVYVAR0eXBlCwpHTF9URVhUVVJFDkdMX0ZSQU1FQlVGRkVSD0dMX1JFTkRFUkJVRkZFUhRHTF9CVUZGRVJfT0JKRUNUX0VYVBRHTF9TSEFERVJfT0JKRUNUX0VYVBVHTF9QUk9HUkFNX09CSkVDVF9FWFQaR0xfVkVSVEVYX0FSUkFZX09CSkVDVF9FWFQTR0xfUVVFUllfT0JKRUNUX0VYVApHTF9TQU1QTEVSFUdMX1RSQU5TRk9STV9GRUVEQkFDSx5HTF9QUk9HUkFNX1BJUEVMSU5FX09CSkVDVF9FWFSHlQSHlwaHmQiHmwoTZ2xHZXRPYmplY3RMYWJlbEVYVAVsYWJlbAQBAgITZ2xHZXRPYmplY3RMYWJlbEtIUgKHnQyHnwiHoQoTZ2xHZXRPYmplY3RMYWJlbEtIUgppZGVudGlmaWVyCwlHTF9CVUZGRVIOR0xfRlJBTUVCVUZGRVIKR0xfUFJPR1JBTRNHTF9QUk9HUkFNX1BJUEVMSU5FCEdMX1FVRVJZD0dMX1JFTkRFUkJVRkZFUgpHTF9TQU1QTEVSCUdMX1NIQURFUgpHTF9URVhUVVJFFUdMX1RSQU5TRk9STV9GRUVEQkFDSw9HTF9WRVJURVhfQVJSQVmHowSHpQaHpwiHqQoTZ2xHZXRPYmplY3RMYWJlbEtIUgVsYWJlbAQBAgITZ2xHZXRPYmplY3RQdHJMYWJlbAGHqwSHrQaHrwiHsQoTZ2xHZXRPYmplY3RQdHJMYWJlbAVsYWJlbAQBAgIWZ2xHZXRPYmplY3RQdHJMYWJlbEtIUgGHswSHtQaHtwiHuQoWZ2xHZXRPYmplY3RQdHJMYWJlbEtIUgVsYWJlbAQBAgINZ2xHZXRQb2ludGVydgKHuwyHvQiHvwoNZ2xHZXRQb2ludGVydgVwbmFtZQIaR0xfREVCVUdfQ0FMTEJBQ0tfRlVOQ1RJT04cR0xfREVCVUdfQ0FMTEJBQ0tfVVNFUl9QQVJBTYfBBIfDBofFCIfHCg1nbEdldFBvaW50ZXJ2BnBhcmFtcwQBAgIQZ2xHZXRQb2ludGVydktIUgKHyQyHywiHzQoQZ2xHZXRQb2ludGVydktIUgVwbmFtZQIaR0xfREVCVUdfQ0FMTEJBQ0tfRlVOQ1RJT04cR0xfREVCVUdfQ0FMTEJBQ0tfVVNFUl9QQVJBTYfPBIfRBofTCIfVChBnbEdldFBvaW50ZXJ2S0hSBnBhcmFtcwQBAgISZ2xHZXRQcm9ncmFtQmluYXJ5AYfXBIfZBofbCIfdChJnbEdldFByb2dyYW1CaW5hcnkGYmluYXJ5BAECAhVnbEdldFByb2dyYW1CaW5hcnlPRVMBh98Eh+EGh+MIh+UKFWdsR2V0UHJvZ3JhbUJpbmFyeU9FUwZiaW5hcnkEAQICE2dsR2V0UHJvZ3JhbUluZm9Mb2cBh+cEh+kGh+sIh+0KE2dsR2V0UHJvZ3JhbUluZm9Mb2cEaW5mbwQBAgIXZ2xHZXRQcm9ncmFtSW50ZXJmYWNlaXYCh+8Mh/EIh/MKF2dsR2V0UHJvZ3JhbUludGVyZmFjZWl2EHByb2dyYW1JbnRlcmZhY2UJGEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUhJHTF9CVUZGRVJfVkFSSUFCTEUQR0xfUFJPR1JBTV9JTlBVVBFHTF9QUk9HUkFNX09VVFBVVBdHTF9TSEFERVJfU1RPUkFHRV9CTE9DSxxHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSHUdMX1RSQU5TRk9STV9GRUVEQkFDS19WQVJZSU5HCkdMX1VOSUZPUk0QR0xfVU5JRk9STV9CTE9DS4f1DIf3CIf5ChdnbEdldFByb2dyYW1JbnRlcmZhY2VpdgVwbmFtZQMTR0xfQUNUSVZFX1JFU09VUkNFUxJHTF9NQVhfTkFNRV9MRU5HVEgbR0xfTUFYX05VTV9BQ1RJVkVfVkFSSUFCTEVTAhtnbEdldFByb2dyYW1QaXBlbGluZUluZm9Mb2cBh/sEh/0Gh/8IiAEKG2dsR2V0UHJvZ3JhbVBpcGVsaW5lSW5mb0xvZwdpbmZvTG9nBAECAhZnbEdldFByb2dyYW1QaXBlbGluZWl2AYgDDIgFCIgHChZnbEdldFByb2dyYW1QaXBlbGluZWl2BXBuYW1lCRFHTF9BQ1RJVkVfUFJPR1JBTRFHTF9DT01QVVRFX1NIQURFUhJHTF9GUkFHTUVOVF9TSEFERVISR0xfSU5GT19MT0dfTEVOR1RIEkdMX1ZBTElEQVRFX1NUQVRVUxBHTF9WRVJURVhfU0hBREVSEkdMX0dFT01FVFJZX1NIQURFUhZHTF9URVNTX0NPTlRST0xfU0hBREVSGUdMX1RFU1NfRVZBTFVBVElPTl9TSEFERVICGWdsR2V0UHJvZ3JhbVJlc291cmNlSW5kZXgBiAkMiAsIiA0KGWdsR2V0UHJvZ3JhbVJlc291cmNlSW5kZXgQcHJvZ3JhbUludGVyZmFjZQcSR0xfQlVGRkVSX1ZBUklBQkxFEEdMX1BST0dSQU1fSU5QVVQRR0xfUFJPR1JBTV9PVVRQVVQXR0xfU0hBREVSX1NUT1JBR0VfQkxPQ0sdR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1ZBUllJTkcKR0xfVU5JRk9STRBHTF9VTklGT1JNX0JMT0NLAhxnbEdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uAYgPDIgRCIgTChxnbEdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uEHByb2dyYW1JbnRlcmZhY2UEEEdMX1BST0dSQU1fSU5QVVQRR0xfUFJPR1JBTV9PVVRQVVQcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUgpHTF9VTklGT1JNAhhnbEdldFByb2dyYW1SZXNvdXJjZU5hbWUCiBUMiBcIiBkKGGdsR2V0UHJvZ3JhbVJlc291cmNlTmFtZRBwcm9ncmFtSW50ZXJmYWNlBxJHTF9CVUZGRVJfVkFSSUFCTEUQR0xfUFJPR1JBTV9JTlBVVBFHTF9QUk9HUkFNX09VVFBVVBdHTF9TSEFERVJfU1RPUkFHRV9CTE9DSx1HTF9UUkFOU0ZPUk1fRkVFREJBQ0tfVkFSWUlORwpHTF9VTklGT1JNEEdMX1VOSUZPUk1fQkxPQ0uIGwSIHQaIHwiIIQoYZ2xHZXRQcm9ncmFtUmVzb3VyY2VOYW1lBG5hbWUEAQICFmdsR2V0UHJvZ3JhbVJlc291cmNlaXYDiCMMiCUIiCcKFmdsR2V0UHJvZ3JhbVJlc291cmNlaXYQcHJvZ3JhbUludGVyZmFjZQkYR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSEkdMX0JVRkZFUl9WQVJJQUJMRRBHTF9QUk9HUkFNX0lOUFVUEUdMX1BST0dSQU1fT1VUUFVUF0dMX1NIQURFUl9TVE9SQUdFX0JMT0NLHEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIdR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1ZBUllJTkcKR0xfVU5JRk9STRBHTF9VTklGT1JNX0JMT0NLiCkEiCsGiC0IiC8KFmdsR2V0UHJvZ3JhbVJlc291cmNlaXYFcHJvcHMEAQCIMQSIMwaINQiINwoWZ2xHZXRQcm9ncmFtUmVzb3VyY2VpdgZwYXJhbXMEAQICDmdsR2V0UHJvZ3JhbWl2AYg5DIg7CIg9Cg5nbEdldFByb2dyYW1pdglwYXJhbWV0ZXIcFEdMX0FDVElWRV9BVFRSSUJVVEVTHkdMX0FDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSBJHTF9BQ1RJVkVfVU5JRk9STVMcR0xfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSBNHTF9BVFRBQ0hFRF9TSEFERVJTEEdMX0RFTEVURV9TVEFUVVMSR0xfSU5GT19MT0dfTEVOR1RIDkdMX0xJTktfU1RBVFVTEkdMX1ZBTElEQVRFX1NUQVRVUxhHTF9BQ1RJVkVfVU5JRk9STV9CTE9DS1MnR0xfQUNUSVZFX1VOSUZPUk1fQkxPQ0tfTUFYX05BTUVfTEVOR1RIIkdMX1BST0dSQU1fQklOQVJZX1JFVFJJRVZBQkxFX0hJTlQhR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9NT0RFHkdMX1RSQU5TRk9STV9GRUVEQkFDS19WQVJZSU5HUyhHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfVkFSWUlOR19NQVhfTEVOR1RIGEdMX1BST0dSQU1fQklOQVJZX0xFTkdUSCBHTF9BQ1RJVkVfQVRPTUlDX0NPVU5URVJfQlVGRkVSUxpHTF9DT01QVVRFX1dPUktfR1JPVVBfU0laRRRHTF9QUk9HUkFNX1NFUEFSQUJMRRZHTF9HRU9NRVRSWV9JTlBVVF9UWVBFF0dMX0dFT01FVFJZX09VVFBVVF9UWVBFGEdMX0dFT01FVFJZX1ZFUlRJQ0VTX09VVB5HTF9HRU9NRVRSWV9TSEFERVJfSU5WT0NBVElPTlMfR0xfVEVTU19DT05UUk9MX09VVFBVVF9WRVJUSUNFUxBHTF9URVNTX0dFTl9NT0RFFkdMX1RFU1NfR0VOX1BPSU5UX01PREUTR0xfVEVTU19HRU5fU1BBQ0lORxhHTF9URVNTX0dFTl9WRVJURVhfT1JERVICE2dsR2V0UXVlcnlPYmplY3R1aXYBiD8MiEEIiEMKE2dsR2V0UXVlcnlPYmplY3R1aXYJcGFyYW1ldGVyAg9HTF9RVUVSWV9SRVNVTFQZR0xfUVVFUllfUkVTVUxUX0FWQUlMQUJMRQIMZ2xHZXRRdWVyeWl2AohFDIhHCIhJCgxnbEdldFF1ZXJ5aXYGdGFyZ2V0BRVHTF9BTllfU0FNUExFU19QQVNTRUQiR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRShHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfUFJJTUlUSVZFU19XUklUVEVOF0dMX1BSSU1JVElWRVNfR0VORVJBVEVEEEdMX1RJTUVTVEFNUF9FWFSISwyITQiITwoMZ2xHZXRRdWVyeWl2CXBhcmFtZXRlcgIQR0xfQ1VSUkVOVF9RVUVSWRlHTF9RVUVSWV9DT1VOVEVSX0JJVFNfRVhUAhxnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2AohRDIhTCIhVChxnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2BnRhcmdldAEPR0xfUkVOREVSQlVGRkVSiFcMiFkIiFsKHGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYJcGFyYW1ldGVyChpHTF9SRU5ERVJCVUZGRVJfQUxQSEFfU0laRRlHTF9SRU5ERVJCVUZGRVJfQkxVRV9TSVpFGkdMX1JFTkRFUkJVRkZFUl9ERVBUSF9TSVpFGkdMX1JFTkRFUkJVRkZFUl9HUkVFTl9TSVpFFkdMX1JFTkRFUkJVRkZFUl9IRUlHSFQfR0xfUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVBhHTF9SRU5ERVJCVUZGRVJfUkVEX1NJWkUcR0xfUkVOREVSQlVGRkVSX1NURU5DSUxfU0laRRVHTF9SRU5ERVJCVUZGRVJfV0lEVEgXR0xfUkVOREVSQlVGRkVSX1NBTVBMRVMCGGdsR2V0U2FtcGxlclBhcmFtZXRlcklpdgGIXQyIXwiIYQoYZ2xHZXRTYW1wbGVyUGFyYW1ldGVySWl2BXBuYW1lCxdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRVHTF9URVhUVVJFX01JTl9GSUxURVIVR0xfVEVYVFVSRV9NQUdfRklMVEVSEkdMX1RFWFRVUkVfTUlOX0xPRBJHTF9URVhUVVJFX01BWF9MT0QRR0xfVEVYVFVSRV9XUkFQX1IRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1IdR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQCG2dsR2V0U2FtcGxlclBhcmFtZXRlcklpdkVYVAGIYwyIZQiIZwobZ2xHZXRTYW1wbGVyUGFyYW1ldGVySWl2RVhUBXBuYW1lCxdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRVHTF9URVhUVVJFX01JTl9GSUxURVIVR0xfVEVYVFVSRV9NQUdfRklMVEVSEkdMX1RFWFRVUkVfTUlOX0xPRBJHTF9URVhUVVJFX01BWF9MT0QRR0xfVEVYVFVSRV9XUkFQX1IRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1IdR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQCG2dsR2V0U2FtcGxlclBhcmFtZXRlcklpdk9FUwGIaQyIawiIbQobZ2xHZXRTYW1wbGVyUGFyYW1ldGVySWl2T0VTBXBuYW1lCxdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRVHTF9URVhUVVJFX01JTl9GSUxURVIVR0xfVEVYVFVSRV9NQUdfRklMVEVSEkdMX1RFWFRVUkVfTUlOX0xPRBJHTF9URVhUVVJFX01BWF9MT0QRR0xfVEVYVFVSRV9XUkFQX1IRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1IdR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQCGWdsR2V0U2FtcGxlclBhcmFtZXRlckl1aXYBiG8MiHEIiHMKGWdsR2V0U2FtcGxlclBhcmFtZXRlckl1aXYFcG5hbWULF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhVHTF9URVhUVVJFX01BR19GSUxURVISR0xfVEVYVFVSRV9NSU5fTE9EEkdMX1RFWFRVUkVfTUFYX0xPRBFHTF9URVhUVVJFX1dSQVBfUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUh1HTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVAIcZ2xHZXRTYW1wbGVyUGFyYW1ldGVySXVpdkVYVAGIdQyIdwiIeQocZ2xHZXRTYW1wbGVyUGFyYW1ldGVySXVpdkVYVAVwbmFtZQsXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUVR0xfVEVYVFVSRV9NSU5fRklMVEVSFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhJHTF9URVhUVVJFX01JTl9MT0QSR0xfVEVYVFVSRV9NQVhfTE9EEUdMX1RFWFRVUkVfV1JBUF9SEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SHUdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUAhxnbEdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2T0VTAYh7DIh9CIh/ChxnbEdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2T0VTBXBuYW1lCxdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRVHTF9URVhUVVJFX01JTl9GSUxURVIVR0xfVEVYVFVSRV9NQUdfRklMVEVSEkdMX1RFWFRVUkVfTUlOX0xPRBJHTF9URVhUVVJFX01BWF9MT0QRR0xfVEVYVFVSRV9XUkFQX1IRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1IdR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQCF2dsR2V0U2FtcGxlclBhcmFtZXRlcmZ2AYiBDIiDCIiFChdnbEdldFNhbXBsZXJQYXJhbWV0ZXJmdgVwbmFtZQsXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUVR0xfVEVYVFVSRV9NSU5fRklMVEVSFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhJHTF9URVhUVVJFX01JTl9MT0QSR0xfVEVYVFVSRV9NQVhfTE9EEUdMX1RFWFRVUkVfV1JBUF9SEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SHUdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUAhdnbEdldFNhbXBsZXJQYXJhbWV0ZXJpdgGIhwyIiQiIiwoXZ2xHZXRTYW1wbGVyUGFyYW1ldGVyaXYFcG5hbWULF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhVHTF9URVhUVVJFX01BR19GSUxURVISR0xfVEVYVFVSRV9NSU5fTE9EEkdMX1RFWFRVUkVfTUFYX0xPRBFHTF9URVhUVVJFX1dSQVBfUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUh1HTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVAISZ2xHZXRTaGFkZXJJbmZvTG9nAYiNBIiPBoiRCIiTChJnbEdldFNoYWRlckluZm9Mb2cEaW5mbwQBAgIaZ2xHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQDiJUMiJcIiJkKGmdsR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0C3NoYWRlcl90eXBlAhJHTF9GUkFHTUVOVF9TSEFERVIQR0xfVkVSVEVYX1NIQURFUoibDIidCIifChpnbEdldFNoYWRlclByZWNpc2lvbkZvcm1hdA5wcmVjaXNpb25fdHlwZQYNR0xfSElHSF9GTE9BVAtHTF9ISUdIX0lOVAxHTF9MT1dfRkxPQVQKR0xfTE9XX0lOVA9HTF9NRURJVU1fRkxPQVQNR0xfTUVESVVNX0lOVIihBIijBoilCIinChpnbEdldFNoYWRlclByZWNpc2lvbkZvcm1hdAVyYW5nZQQBAgIRZ2xHZXRTaGFkZXJTb3VyY2UBiKkEiKsGiK0IiK8KEWdsR2V0U2hhZGVyU291cmNlBnNvdXJjZQQBAgINZ2xHZXRTaGFkZXJpdgGIsQyIswiItQoNZ2xHZXRTaGFkZXJpdglwYXJhbWV0ZXIFEUdMX0NPTVBJTEVfU1RBVFVTEEdMX0RFTEVURV9TVEFUVVMSR0xfSU5GT19MT0dfTEVOR1RIF0dMX1NIQURFUl9TT1VSQ0VfTEVOR1RIDkdMX1NIQURFUl9UWVBFAgtnbEdldFN0cmluZwGItwyIuQiIuwoLZ2xHZXRTdHJpbmcFcGFyYW0FDUdMX0VYVEVOU0lPTlMLR0xfUkVOREVSRVIbR0xfU0hBRElOR19MQU5HVUFHRV9WRVJTSU9OCUdMX1ZFTkRPUgpHTF9WRVJTSU9OAgxnbEdldFN0cmluZ2kBiL0MiL8IiMEKDGdsR2V0U3RyaW5naQRuYW1lAQ1HTF9FWFRFTlNJT05TAgtnbEdldFN5bmNpdgGIwwyIxQiIxwoLZ2xHZXRTeW5jaXYFcG5hbWUEDkdMX09CSkVDVF9UWVBFEUdMX1NZTkNfQ09ORElUSU9ODUdMX1NZTkNfRkxBR1MOR0xfU1lOQ19TVEFUVVMCEGdsR2V0U3luY2l2QVBQTEUBiMkMiMsIiM0KEGdsR2V0U3luY2l2QVBQTEUFcG5hbWUEDkdMX09CSkVDVF9UWVBFEUdMX1NZTkNfQ09ORElUSU9ODUdMX1NZTkNfRkxBR1MOR0xfU1lOQ19TVEFUVVMCGGdsR2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdgKIzwyI0QiI0woYZ2xHZXRUZXhMZXZlbFBhcmFtZXRlcmZ2BnRhcmdldA0NR0xfVEVYVFVSRV8yRBNHTF9URVhUVVJFXzJEX0FSUkFZGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUNR0xfVEVYVFVSRV8zRB5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1geR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWh5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1geR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWh9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZEUdMX1RFWFRVUkVfQlVGRkVSGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVmI1QyI1wiI2QoYZ2xHZXRUZXhMZXZlbFBhcmFtZXRlcmZ2BXBuYW1lFhVHTF9URVhUVVJFX0FMUEhBX1NJWkUVR0xfVEVYVFVSRV9BTFBIQV9UWVBFFEdMX1RFWFRVUkVfQkxVRV9TSVpFFEdMX1RFWFRVUkVfQkxVRV9UWVBFFUdMX1RFWFRVUkVfQ09NUFJFU1NFRBBHTF9URVhUVVJFX0RFUFRIFUdMX1RFWFRVUkVfREVQVEhfU0laRRVHTF9URVhUVVJFX0RFUFRIX1RZUEUhR0xfVEVYVFVSRV9GSVhFRF9TQU1QTEVfTE9DQVRJT05TFUdMX1RFWFRVUkVfR1JFRU5fU0laRRVHTF9URVhUVVJFX0dSRUVOX1RZUEURR0xfVEVYVFVSRV9IRUlHSFQaR0xfVEVYVFVSRV9JTlRFUk5BTF9GT1JNQVQTR0xfVEVYVFVSRV9SRURfU0laRRNHTF9URVhUVVJFX1JFRF9UWVBFEkdMX1RFWFRVUkVfU0FNUExFUxZHTF9URVhUVVJFX1NIQVJFRF9TSVpFF0dMX1RFWFRVUkVfU1RFTkNJTF9TSVpFEEdMX1RFWFRVUkVfV0lEVEgkR0xfVEVYVFVSRV9CVUZGRVJfREFUQV9TVE9SRV9CSU5ESU5HGEdMX1RFWFRVUkVfQlVGRkVSX09GRlNFVBZHTF9URVhUVVJFX0JVRkZFUl9TSVpFAhhnbEdldFRleExldmVsUGFyYW1ldGVyaXYCiNsMiN0IiN8KGGdsR2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdgZ0YXJnZXQNDUdMX1RFWFRVUkVfMkQTR0xfVEVYVFVSRV8yRF9BUlJBWRlHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFDUdMX1RFWFRVUkVfM0QeR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWR5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1oeR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWR5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ofR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWRFHTF9URVhUVVJFX0JVRkZFUhlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZiOEMiOMIiOUKGGdsR2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdgVwbmFtZRYVR0xfVEVYVFVSRV9BTFBIQV9TSVpFFUdMX1RFWFRVUkVfQUxQSEFfVFlQRRRHTF9URVhUVVJFX0JMVUVfU0laRRRHTF9URVhUVVJFX0JMVUVfVFlQRRVHTF9URVhUVVJFX0NPTVBSRVNTRUQQR0xfVEVYVFVSRV9ERVBUSBVHTF9URVhUVVJFX0RFUFRIX1NJWkUVR0xfVEVYVFVSRV9ERVBUSF9UWVBFIUdMX1RFWFRVUkVfRklYRURfU0FNUExFX0xPQ0FUSU9OUxVHTF9URVhUVVJFX0dSRUVOX1NJWkUVR0xfVEVYVFVSRV9HUkVFTl9UWVBFEUdMX1RFWFRVUkVfSEVJR0hUGkdMX1RFWFRVUkVfSU5URVJOQUxfRk9STUFUE0dMX1RFWFRVUkVfUkVEX1NJWkUTR0xfVEVYVFVSRV9SRURfVFlQRRJHTF9URVhUVVJFX1NBTVBMRVMWR0xfVEVYVFVSRV9TSEFSRURfU0laRRdHTF9URVhUVVJFX1NURU5DSUxfU0laRRBHTF9URVhUVVJFX1dJRFRIJEdMX1RFWFRVUkVfQlVGRkVSX0RBVEFfU1RPUkVfQklORElORxhHTF9URVhUVVJFX0JVRkZFUl9PRkZTRVQWR0xfVEVYVFVSRV9CVUZGRVJfU0laRQIUZ2xHZXRUZXhQYXJhbWV0ZXJJaXYCiOcMiOkIiOsKFGdsR2V0VGV4UGFyYW1ldGVySWl2BnRhcmdldAkNR0xfVEVYVFVSRV8yRBNHTF9URVhUVVJFX0NVQkVfTUFQE0dMX1RFWFRVUkVfMkRfQVJSQVkNR0xfVEVYVFVSRV8zRBlHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFH0dMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVkZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWRdHTF9URVhUVVJFX0VYVEVSTkFMX09FUxFHTF9URVhUVVJFX0JVRkZFUojtDIjvCIjxChRnbEdldFRleFBhcmFtZXRlcklpdgVwbmFtZRUVR0xfVEVYVFVSRV9NQUdfRklMVEVSFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBVHTF9URVhUVVJFX0JBU0VfTEVWRUwXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUbR0xfVEVYVFVSRV9JTU1VVEFCTEVfRk9STUFUFEdMX1RFWFRVUkVfTUFYX0xFVkVMEkdMX1RFWFRVUkVfTUFYX0xPRBJHTF9URVhUVVJFX01JTl9MT0QUR0xfVEVYVFVSRV9TV0laWkxFX0EUR0xfVEVYVFVSRV9TV0laWkxFX0IUR0xfVEVYVFVSRV9TV0laWkxFX0cUR0xfVEVYVFVSRV9TV0laWkxFX1IRR0xfVEVYVFVSRV9XUkFQX1IdR0xfREVQVEhfU1RFTkNJTF9URVhUVVJFX01PREUiR0xfSU1BR0VfRk9STUFUX0NPTVBBVElCSUxJVFlfVFlQRRtHTF9URVhUVVJFX0lNTVVUQUJMRV9MRVZFTFMXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1IdR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQCF2dsR2V0VGV4UGFyYW1ldGVySWl2RVhUAojzDIj1CIj3ChdnbEdldFRleFBhcmFtZXRlcklpdkVYVAZ0YXJnZXQJDUdMX1RFWFRVUkVfMkQTR0xfVEVYVFVSRV9DVUJFX01BUBNHTF9URVhUVVJFXzJEX0FSUkFZDUdMX1RFWFRVUkVfM0QZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVkXR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMRR0xfVEVYVFVSRV9CVUZGRVKI+QyI+wiI/QoXZ2xHZXRUZXhQYXJhbWV0ZXJJaXZFWFQFcG5hbWUVFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhVHTF9URVhUVVJFX01JTl9GSUxURVIRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QVR0xfVEVYVFVSRV9CQVNFX0xFVkVMF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFG0dMX1RFWFRVUkVfSU1NVVRBQkxFX0ZPUk1BVBRHTF9URVhUVVJFX01BWF9MRVZFTBJHTF9URVhUVVJFX01BWF9MT0QSR0xfVEVYVFVSRV9NSU5fTE9EFEdMX1RFWFRVUkVfU1dJWlpMRV9BFEdMX1RFWFRVUkVfU1dJWlpMRV9CFEdMX1RFWFRVUkVfU1dJWlpMRV9HFEdMX1RFWFRVUkVfU1dJWlpMRV9SEUdMX1RFWFRVUkVfV1JBUF9SHUdMX0RFUFRIX1NURU5DSUxfVEVYVFVSRV9NT0RFIkdMX0lNQUdFX0ZPUk1BVF9DT01QQVRJQklMSVRZX1RZUEUbR0xfVEVYVFVSRV9JTU1VVEFCTEVfTEVWRUxTF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SHUdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUAhdnbEdldFRleFBhcmFtZXRlcklpdk9FUwKI/wyJAQiJAwoXZ2xHZXRUZXhQYXJhbWV0ZXJJaXZPRVMGdGFyZ2V0CQ1HTF9URVhUVVJFXzJEE0dMX1RFWFRVUkVfQ1VCRV9NQVATR0xfVEVYVFVSRV8yRF9BUlJBWQ1HTF9URVhUVVJFXzNEGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWRlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZF0dMX1RFWFRVUkVfRVhURVJOQUxfT0VTEUdMX1RFWFRVUkVfQlVGRkVSiQUMiQcIiQkKF2dsR2V0VGV4UGFyYW1ldGVySWl2T0VTBXBuYW1lFRVHTF9URVhUVVJFX01BR19GSUxURVIVR0xfVEVYVFVSRV9NSU5fRklMVEVSEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UFUdMX1RFWFRVUkVfQkFTRV9MRVZFTBdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRtHTF9URVhUVVJFX0lNTVVUQUJMRV9GT1JNQVQUR0xfVEVYVFVSRV9NQVhfTEVWRUwSR0xfVEVYVFVSRV9NQVhfTE9EEkdMX1RFWFRVUkVfTUlOX0xPRBRHTF9URVhUVVJFX1NXSVpaTEVfQRRHTF9URVhUVVJFX1NXSVpaTEVfQhRHTF9URVhUVVJFX1NXSVpaTEVfRxRHTF9URVhUVVJFX1NXSVpaTEVfUhFHTF9URVhUVVJFX1dSQVBfUh1HTF9ERVBUSF9TVEVOQ0lMX1RFWFRVUkVfTU9ERSJHTF9JTUFHRV9GT1JNQVRfQ09NUEFUSUJJTElUWV9UWVBFG0dMX1RFWFRVUkVfSU1NVVRBQkxFX0xFVkVMUxdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUh1HTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVAIVZ2xHZXRUZXhQYXJhbWV0ZXJJdWl2AokLDIkNCIkPChVnbEdldFRleFBhcmFtZXRlckl1aXYGdGFyZ2V0CQ1HTF9URVhUVVJFXzJEE0dMX1RFWFRVUkVfQ1VCRV9NQVATR0xfVEVYVFVSRV8yRF9BUlJBWQ1HTF9URVhUVVJFXzNEGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWRlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZF0dMX1RFWFRVUkVfRVhURVJOQUxfT0VTEUdMX1RFWFRVUkVfQlVGRkVSiREMiRMIiRUKFWdsR2V0VGV4UGFyYW1ldGVySXVpdgVwbmFtZRUVR0xfVEVYVFVSRV9NQUdfRklMVEVSFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBVHTF9URVhUVVJFX0JBU0VfTEVWRUwXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUbR0xfVEVYVFVSRV9JTU1VVEFCTEVfRk9STUFUFEdMX1RFWFRVUkVfTUFYX0xFVkVMEkdMX1RFWFRVUkVfTUFYX0xPRBJHTF9URVhUVVJFX01JTl9MT0QUR0xfVEVYVFVSRV9TV0laWkxFX0EUR0xfVEVYVFVSRV9TV0laWkxFX0IUR0xfVEVYVFVSRV9TV0laWkxFX0cUR0xfVEVYVFVSRV9TV0laWkxFX1IRR0xfVEVYVFVSRV9XUkFQX1IdR0xfREVQVEhfU1RFTkNJTF9URVhUVVJFX01PREUiR0xfSU1BR0VfRk9STUFUX0NPTVBBVElCSUxJVFlfVFlQRRtHTF9URVhUVVJFX0lNTVVUQUJMRV9MRVZFTFMXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1IdR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQCGGdsR2V0VGV4UGFyYW1ldGVySXVpdkVYVAKJFwyJGQiJGwoYZ2xHZXRUZXhQYXJhbWV0ZXJJdWl2RVhUBnRhcmdldAkNR0xfVEVYVFVSRV8yRBNHTF9URVhUVVJFX0NVQkVfTUFQE0dMX1RFWFRVUkVfMkRfQVJSQVkNR0xfVEVYVFVSRV8zRBlHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFH0dMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVkZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWRdHTF9URVhUVVJFX0VYVEVSTkFMX09FUxFHTF9URVhUVVJFX0JVRkZFUokdDIkfCIkhChhnbEdldFRleFBhcmFtZXRlckl1aXZFWFQFcG5hbWUVFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhVHTF9URVhUVVJFX01JTl9GSUxURVIRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QVR0xfVEVYVFVSRV9CQVNFX0xFVkVMF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFG0dMX1RFWFRVUkVfSU1NVVRBQkxFX0ZPUk1BVBRHTF9URVhUVVJFX01BWF9MRVZFTBJHTF9URVhUVVJFX01BWF9MT0QSR0xfVEVYVFVSRV9NSU5fTE9EFEdMX1RFWFRVUkVfU1dJWlpMRV9BFEdMX1RFWFRVUkVfU1dJWlpMRV9CFEdMX1RFWFRVUkVfU1dJWlpMRV9HFEdMX1RFWFRVUkVfU1dJWlpMRV9SEUdMX1RFWFRVUkVfV1JBUF9SHUdMX0RFUFRIX1NURU5DSUxfVEVYVFVSRV9NT0RFIkdMX0lNQUdFX0ZPUk1BVF9DT01QQVRJQklMSVRZX1RZUEUbR0xfVEVYVFVSRV9JTU1VVEFCTEVfTEVWRUxTF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SHUdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUAhhnbEdldFRleFBhcmFtZXRlckl1aXZPRVMCiSMMiSUIiScKGGdsR2V0VGV4UGFyYW1ldGVySXVpdk9FUwZ0YXJnZXQJDUdMX1RFWFRVUkVfMkQTR0xfVEVYVFVSRV9DVUJFX01BUBNHTF9URVhUVVJFXzJEX0FSUkFZDUdMX1RFWFRVUkVfM0QZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVkXR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMRR0xfVEVYVFVSRV9CVUZGRVKJKQyJKwiJLQoYZ2xHZXRUZXhQYXJhbWV0ZXJJdWl2T0VTBXBuYW1lFRVHTF9URVhUVVJFX01BR19GSUxURVIVR0xfVEVYVFVSRV9NSU5fRklMVEVSEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UFUdMX1RFWFRVUkVfQkFTRV9MRVZFTBdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRtHTF9URVhUVVJFX0lNTVVUQUJMRV9GT1JNQVQUR0xfVEVYVFVSRV9NQVhfTEVWRUwSR0xfVEVYVFVSRV9NQVhfTE9EEkdMX1RFWFRVUkVfTUlOX0xPRBRHTF9URVhUVVJFX1NXSVpaTEVfQRRHTF9URVhUVVJFX1NXSVpaTEVfQhRHTF9URVhUVVJFX1NXSVpaTEVfRxRHTF9URVhUVVJFX1NXSVpaTEVfUhFHTF9URVhUVVJFX1dSQVBfUh1HTF9ERVBUSF9TVEVOQ0lMX1RFWFRVUkVfTU9ERSJHTF9JTUFHRV9GT1JNQVRfQ09NUEFUSUJJTElUWV9UWVBFG0dMX1RFWFRVUkVfSU1NVVRBQkxFX0xFVkVMUxdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUh1HTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVAITZ2xHZXRUZXhQYXJhbWV0ZXJmdgKJLwyJMQiJMwoTZ2xHZXRUZXhQYXJhbWV0ZXJmdgZ0YXJnZXQJDUdMX1RFWFRVUkVfMkQTR0xfVEVYVFVSRV9DVUJFX01BUBNHTF9URVhUVVJFXzJEX0FSUkFZDUdMX1RFWFRVUkVfM0QZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVkXR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMRR0xfVEVYVFVSRV9CVUZGRVKJNQyJNwiJOQoTZ2xHZXRUZXhQYXJhbWV0ZXJmdglwYXJhbWV0ZXIVFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhVHTF9URVhUVVJFX01JTl9GSUxURVIRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QVR0xfVEVYVFVSRV9CQVNFX0xFVkVMF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFG0dMX1RFWFRVUkVfSU1NVVRBQkxFX0ZPUk1BVBRHTF9URVhUVVJFX01BWF9MRVZFTBJHTF9URVhUVVJFX01BWF9MT0QSR0xfVEVYVFVSRV9NSU5fTE9EFEdMX1RFWFRVUkVfU1dJWlpMRV9BFEdMX1RFWFRVUkVfU1dJWlpMRV9CFEdMX1RFWFRVUkVfU1dJWlpMRV9HFEdMX1RFWFRVUkVfU1dJWlpMRV9SEUdMX1RFWFRVUkVfV1JBUF9SHUdMX0RFUFRIX1NURU5DSUxfVEVYVFVSRV9NT0RFIkdMX0lNQUdFX0ZPUk1BVF9DT01QQVRJQklMSVRZX1RZUEUbR0xfVEVYVFVSRV9JTU1VVEFCTEVfTEVWRUxTF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SHUdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUAhNnbEdldFRleFBhcmFtZXRlcml2Aok7DIk9CIk/ChNnbEdldFRleFBhcmFtZXRlcml2BnRhcmdldAkNR0xfVEVYVFVSRV8yRBNHTF9URVhUVVJFX0NVQkVfTUFQE0dMX1RFWFRVUkVfMkRfQVJSQVkNR0xfVEVYVFVSRV8zRBlHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFH0dMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVkZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWRdHTF9URVhUVVJFX0VYVEVSTkFMX09FUxFHTF9URVhUVVJFX0JVRkZFUolBDIlDCIlFChNnbEdldFRleFBhcmFtZXRlcml2CXBhcmFtZXRlchUVR0xfVEVYVFVSRV9NQUdfRklMVEVSFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBVHTF9URVhUVVJFX0JBU0VfTEVWRUwXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUbR0xfVEVYVFVSRV9JTU1VVEFCTEVfRk9STUFUFEdMX1RFWFRVUkVfTUFYX0xFVkVMEkdMX1RFWFRVUkVfTUFYX0xPRBJHTF9URVhUVVJFX01JTl9MT0QUR0xfVEVYVFVSRV9TV0laWkxFX0EUR0xfVEVYVFVSRV9TV0laWkxFX0IUR0xfVEVYVFVSRV9TV0laWkxFX0cUR0xfVEVYVFVSRV9TV0laWkxFX1IRR0xfVEVYVFVSRV9XUkFQX1IdR0xfREVQVEhfU1RFTkNJTF9URVhUVVJFX01PREUiR0xfSU1BR0VfRk9STUFUX0NPTVBBVElCSUxJVFlfVFlQRRtHTF9URVhUVVJFX0lNTVVUQUJMRV9MRVZFTFMXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1IdR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQCHWdsR2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nAYlHBIlJBolLCIlNCh1nbEdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZwRuYW1lBAECAhNnbEdldFVuaWZvcm1JbmRpY2VzAYlPBIlRBolTCIlVChNnbEdldFVuaWZvcm1JbmRpY2VzDnVuaWZvcm1JbmRpY2VzBAECAg5nbEdldFVuaWZvcm1mdgGJVwSJWQaJWwiJXQoOZ2xHZXRVbmlmb3JtZnYGdmFsdWVzBAECAg5nbEdldFVuaWZvcm1pdgGJXwSJYQaJYwiJZQoOZ2xHZXRVbmlmb3JtaXYGdmFsdWVzBAECAg9nbEdldFVuaWZvcm11aXYBiWcEiWkGiWsIiW0KD2dsR2V0VW5pZm9ybXVpdgZ2YWx1ZXMEAQICFGdsR2V0VmVydGV4QXR0cmliSWl2AolvDIlxCIlzChRnbEdldFZlcnRleEF0dHJpYklpdgVwbmFtZQsYR0xfQ1VSUkVOVF9WRVJURVhfQVRUUklCHkdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRBtHTF9WRVJURVhfQVRUUklCX0FSUkFZX1NJWkUbR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFIUdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfTk9STUFMSVpFRB1HTF9WRVJURVhfQVRUUklCX0FSUkFZX1NUUklERSVHTF9WRVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5HHkdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfRElWSVNPUh5HTF9WRVJURVhfQVRUUklCX0FSUkFZX0lOVEVHRVIYR0xfVkVSVEVYX0FUVFJJQl9CSU5ESU5HIEdMX1ZFUlRFWF9BVFRSSUJfUkVMQVRJVkVfT0ZGU0VUiXUEiXcGiXkIiXsKFGdsR2V0VmVydGV4QXR0cmliSWl2BnBhcmFtcwQBAgIVZ2xHZXRWZXJ0ZXhBdHRyaWJJdWl2Aol9DIl/CImBChVnbEdldFZlcnRleEF0dHJpYkl1aXYFcG5hbWULGEdMX0NVUlJFTlRfVkVSVEVYX0FUVFJJQh5HTF9WRVJURVhfQVRUUklCX0FSUkFZX0VOQUJMRUQbR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9TSVpFG0dMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRSFHTF9WRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTElaRUQdR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREUlR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElORx5HTF9WRVJURVhfQVRUUklCX0FSUkFZX0RJVklTT1IeR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9JTlRFR0VSGEdMX1ZFUlRFWF9BVFRSSUJfQklORElORyBHTF9WRVJURVhfQVRUUklCX1JFTEFUSVZFX09GRlNFVImDBImFBomHCImJChVnbEdldFZlcnRleEF0dHJpYkl1aXYGcGFyYW1zBAECAhlnbEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2AYmLDImNCImPChlnbEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2BXBuYW1lAR5HTF9WRVJURVhfQVRUUklCX0FSUkFZX1BPSU5URVICE2dsR2V0VmVydGV4QXR0cmliZnYCiZEMiZMIiZUKE2dsR2V0VmVydGV4QXR0cmliZnYFcG5hbWULGEdMX0NVUlJFTlRfVkVSVEVYX0FUVFJJQh5HTF9WRVJURVhfQVRUUklCX0FSUkFZX0VOQUJMRUQbR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9TSVpFG0dMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRSFHTF9WRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTElaRUQdR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREUlR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElORx5HTF9WRVJURVhfQVRUUklCX0FSUkFZX0RJVklTT1IeR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9JTlRFR0VSGEdMX1ZFUlRFWF9BVFRSSUJfQklORElORyBHTF9WRVJURVhfQVRUUklCX1JFTEFUSVZFX09GRlNFVImXBImZBombCImdChNnbEdldFZlcnRleEF0dHJpYmZ2BnBhcmFtcwQBAgITZ2xHZXRWZXJ0ZXhBdHRyaWJpdgKJnwyJoQiJowoTZ2xHZXRWZXJ0ZXhBdHRyaWJpdgVwbmFtZQsYR0xfQ1VSUkVOVF9WRVJURVhfQVRUUklCHkdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRBtHTF9WRVJURVhfQVRUUklCX0FSUkFZX1NJWkUbR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFIUdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfTk9STUFMSVpFRB1HTF9WRVJURVhfQVRUUklCX0FSUkFZX1NUUklERSVHTF9WRVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5HHkdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfRElWSVNPUh5HTF9WRVJURVhfQVRUUklCX0FSUkFZX0lOVEVHRVIYR0xfVkVSVEVYX0FUVFJJQl9CSU5ESU5HIEdMX1ZFUlRFWF9BVFRSSUJfUkVMQVRJVkVfT0ZGU0VUiaUEiacGiakIiasKE2dsR2V0VmVydGV4QXR0cmliaXYGcGFyYW1zBAECAg9nbEdldG5Vbmlmb3JtZnYBia0Eia8GibEIibMKD2dsR2V0blVuaWZvcm1mdgZ2YWx1ZXMEAQICEmdsR2V0blVuaWZvcm1mdktIUgGJtQSJtwaJuQiJuwoSZ2xHZXRuVW5pZm9ybWZ2S0hSBnBhcmFtcwQBAgIPZ2xHZXRuVW5pZm9ybWl2AYm9BIm/BonBCInDCg9nbEdldG5Vbmlmb3JtaXYGdmFsdWVzBAECAhJnbEdldG5Vbmlmb3JtaXZLSFIBicUEiccGickIicsKEmdsR2V0blVuaWZvcm1pdktIUgZwYXJhbXMEAQICEGdsR2V0blVuaWZvcm11aXYBic0Eic8GidEIidMKEGdsR2V0blVuaWZvcm11aXYGdmFsdWVzBAECAhNnbEdldG5Vbmlmb3JtdWl2S0hSAYnVBInXBonZCInbChNnbEdldG5Vbmlmb3JtdWl2S0hSBnBhcmFtcwQBAgIGZ2xIaW50AondDInfCInhCgZnbEhpbnQGdGFyZ2V0AhdHTF9HRU5FUkFURV9NSVBNQVBfSElOVCJHTF9GUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UieMMieUIiecKBmdsSGludARtb2RlAwxHTF9ET05UX0NBUkUKR0xfRkFTVEVTVAlHTF9OSUNFU1QCFmdsSW5zZXJ0RXZlbnRNYXJrZXJFWFQBiekEiesGie0Iie8KFmdsSW5zZXJ0RXZlbnRNYXJrZXJFWFQGbWFya2VyBAEAAhdnbEludmFsaWRhdGVGcmFtZWJ1ZmZlcgKJ8QyJ8wiJ9QoXZ2xJbnZhbGlkYXRlRnJhbWVidWZmZXIGdGFyZ2V0Aw5HTF9GUkFNRUJVRkZFUhNHTF9EUkFXX0ZSQU1FQlVGRkVSE0dMX1JFQURfRlJBTUVCVUZGRVKJ9wyJ+QaJ+waJ/QiJ/woXZ2xJbnZhbGlkYXRlRnJhbWVidWZmZXILYXR0YWNobWVudHMEAhYIR0xfQ09MT1IIR0xfREVQVEgKR0xfU1RFTkNJTBRHTF9DT0xPUl9BVFRBQ0hNRU5UMBRHTF9DT0xPUl9BVFRBQ0hNRU5UMRVHTF9DT0xPUl9BVFRBQ0hNRU5UMTAVR0xfQ09MT1JfQVRUQUNITUVOVDExFUdMX0NPTE9SX0FUVEFDSE1FTlQxMhVHTF9DT0xPUl9BVFRBQ0hNRU5UMTMVR0xfQ09MT1JfQVRUQUNITUVOVDE0FUdMX0NPTE9SX0FUVEFDSE1FTlQxNRRHTF9DT0xPUl9BVFRBQ0hNRU5UMhRHTF9DT0xPUl9BVFRBQ0hNRU5UMxRHTF9DT0xPUl9BVFRBQ0hNRU5UNBRHTF9DT0xPUl9BVFRBQ0hNRU5UNRRHTF9DT0xPUl9BVFRBQ0hNRU5UNhRHTF9DT0xPUl9BVFRBQ0hNRU5UNxRHTF9DT0xPUl9BVFRBQ0hNRU5UOBRHTF9DT0xPUl9BVFRBQ0hNRU5UORNHTF9ERVBUSF9BVFRBQ0hNRU5UG0dMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVBVHTF9TVEVOQ0lMX0FUVEFDSE1FTlQCGmdsSW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyAooBDIoDCIoFChpnbEludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcgZ0YXJnZXQBDkdMX0ZSQU1FQlVGRkVSigcEigkGigsIig0KGmdsSW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyC2F0dGFjaG1lbnRzBAEAAgtnbElzRW5hYmxlZAGKDwyKEQiKEwoLZ2xJc0VuYWJsZWQKY2FwYWJpbGl0eRAIR0xfQkxFTkQMR0xfQ1VMTF9GQUNFDUdMX0RFUFRIX1RFU1QJR0xfRElUSEVSFkdMX1BPTFlHT05fT0ZGU0VUX0ZJTEwbR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFEkdMX1NBTVBMRV9DT1ZFUkFHRQ9HTF9TQ0lTU09SX1RFU1QPR0xfU1RFTkNJTF9URVNUIEdMX1BSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYFUdMX1JBU1RFUklaRVJfRElTQ0FSRA5HTF9TQU1QTEVfTUFTSw9HTF9ERUJVR19PVVRQVVQbR0xfREVCVUdfT1VUUFVUX1NZTkNIUk9OT1VTEkdMX0FMUEhBX1RFU1RfUUNPTRdHTF9GUkFNRUJVRkZFUl9TUkdCX0VYVAIMZ2xJc0VuYWJsZWRpAYoVDIoXCIoZCgxnbElzRW5hYmxlZGkKY2FwYWJpbGl0eRAIR0xfQkxFTkQMR0xfQ1VMTF9GQUNFDUdMX0RFUFRIX1RFU1QJR0xfRElUSEVSFkdMX1BPTFlHT05fT0ZGU0VUX0ZJTEwbR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFEkdMX1NBTVBMRV9DT1ZFUkFHRQ9HTF9TQ0lTU09SX1RFU1QPR0xfU1RFTkNJTF9URVNUIEdMX1BSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYFUdMX1JBU1RFUklaRVJfRElTQ0FSRA5HTF9TQU1QTEVfTUFTSw9HTF9ERUJVR19PVVRQVVQbR0xfREVCVUdfT1VUUFVUX1NZTkNIUk9OT1VTEkdMX0FMUEhBX1RFU1RfUUNPTRdHTF9GUkFNRUJVRkZFUl9TUkdCX0VYVAIPZ2xJc0VuYWJsZWRpRVhUAYobDIodCIofCg9nbElzRW5hYmxlZGlFWFQGdGFyZ2V0EAhHTF9CTEVORAxHTF9DVUxMX0ZBQ0UNR0xfREVQVEhfVEVTVAlHTF9ESVRIRVIWR0xfUE9MWUdPTl9PRkZTRVRfRklMTBtHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0USR0xfU0FNUExFX0NPVkVSQUdFD0dMX1NDSVNTT1JfVEVTVA9HTF9TVEVOQ0lMX1RFU1QgR0xfUFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgVR0xfUkFTVEVSSVpFUl9ESVNDQVJEDkdMX1NBTVBMRV9NQVNLD0dMX0RFQlVHX09VVFBVVBtHTF9ERUJVR19PVVRQVVRfU1lOQ0hST05PVVMSR0xfQUxQSEFfVEVTVF9RQ09NF0dMX0ZSQU1FQlVGRkVSX1NSR0JfRVhUAg5nbElzRW5hYmxlZGlOVgGKIQyKIwiKJQoOZ2xJc0VuYWJsZWRpTlYGdGFyZ2V0EAhHTF9CTEVORAxHTF9DVUxMX0ZBQ0UNR0xfREVQVEhfVEVTVAlHTF9ESVRIRVIWR0xfUE9MWUdPTl9PRkZTRVRfRklMTBtHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0USR0xfU0FNUExFX0NPVkVSQUdFD0dMX1NDSVNTT1JfVEVTVA9HTF9TVEVOQ0lMX1RFU1QgR0xfUFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgVR0xfUkFTVEVSSVpFUl9ESVNDQVJEDkdMX1NBTVBMRV9NQVNLD0dMX0RFQlVHX09VVFBVVBtHTF9ERUJVR19PVVRQVVRfU1lOQ0hST05PVVMSR0xfQUxQSEFfVEVTVF9RQ09NF0dMX0ZSQU1FQlVGRkVSX1NSR0JfRVhUAg9nbElzRW5hYmxlZGlPRVMBiicMiikIiisKD2dsSXNFbmFibGVkaU9FUwZ0YXJnZXQQCEdMX0JMRU5EDEdMX0NVTExfRkFDRQ1HTF9ERVBUSF9URVNUCUdMX0RJVEhFUhZHTF9QT0xZR09OX09GRlNFVF9GSUxMG0dMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRRJHTF9TQU1QTEVfQ09WRVJBR0UPR0xfU0NJU1NPUl9URVNUD0dMX1NURU5DSUxfVEVTVCBHTF9QUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWBVHTF9SQVNURVJJWkVSX0RJU0NBUkQOR0xfU0FNUExFX01BU0sPR0xfREVCVUdfT1VUUFVUG0dMX0RFQlVHX09VVFBVVF9TWU5DSFJPTk9VUxJHTF9BTFBIQV9URVNUX1FDT00XR0xfRlJBTUVCVUZGRVJfU1JHQl9FWFQCEGdsTGFiZWxPYmplY3RFWFQBii0Mii8IijEKEGdsTGFiZWxPYmplY3RFWFQEdHlwZQsKR0xfVEVYVFVSRQ5HTF9GUkFNRUJVRkZFUg9HTF9SRU5ERVJCVUZGRVIUR0xfQlVGRkVSX09CSkVDVF9FWFQUR0xfU0hBREVSX09CSkVDVF9FWFQVR0xfUFJPR1JBTV9PQkpFQ1RfRVhUGkdMX1ZFUlRFWF9BUlJBWV9PQkpFQ1RfRVhUE0dMX1FVRVJZX09CSkVDVF9FWFQKR0xfU0FNUExFUhVHTF9UUkFOU0ZPUk1fRkVFREJBQ0seR0xfUFJPR1JBTV9QSVBFTElORV9PQkpFQ1RfRVhUAgtnbE1hcEJ1ZmZlcgOKMwyKNQiKNwoLZ2xNYXBCdWZmZXIGdGFyZ2V0DQ9HTF9BUlJBWV9CVUZGRVIXR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVITR0xfQ09QWV9SRUFEX0JVRkZFUhRHTF9DT1BZX1dSSVRFX0JVRkZFUhRHTF9QSVhFTF9QQUNLX0JVRkZFUhZHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSHEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIRR0xfVU5JRk9STV9CVUZGRVIYR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSG0dMX0RJU1BBVENIX0lORElSRUNUX0JVRkZFUhdHTF9EUkFXX0lORElSRUNUX0JVRkZFUhhHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVIRR0xfVEVYVFVSRV9CVUZGRVKKOQyKOwiKPQoLZ2xNYXBCdWZmZXIGYWNjZXNzAwxHTF9SRUFEX09OTFkNR0xfV1JJVEVfT05MWQ1HTF9SRUFEX1dSSVRFij8EikEGikMIikUKC2dsTWFwQnVmZmVyBnJlc3VsdAQCAgACDmdsTWFwQnVmZmVyT0VTA4pHDIpJCIpLCg5nbE1hcEJ1ZmZlck9FUwZ0YXJnZXQND0dMX0FSUkFZX0JVRkZFUhdHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUhNHTF9DT1BZX1JFQURfQlVGRkVSFEdMX0NPUFlfV1JJVEVfQlVGRkVSFEdMX1BJWEVMX1BBQ0tfQlVGRkVSFkdMX1BJWEVMX1VOUEFDS19CVUZGRVIcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUhFHTF9VTklGT1JNX0JVRkZFUhhHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVIbR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSF0dMX0RSQVdfSU5ESVJFQ1RfQlVGRkVSGEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUhFHTF9URVhUVVJFX0JVRkZFUopNDIpPCIpRCg5nbE1hcEJ1ZmZlck9FUwZhY2Nlc3MDDEdMX1JFQURfT05MWQ1HTF9XUklURV9PTkxZDUdMX1JFQURfV1JJVEWKUwSKVQaKVwiKWQoOZ2xNYXBCdWZmZXJPRVMGcmVzdWx0BAICAAIQZ2xNYXBCdWZmZXJSYW5nZQOKWwyKXQiKXwoQZ2xNYXBCdWZmZXJSYW5nZQZ0YXJnZXQND0dMX0FSUkFZX0JVRkZFUhdHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUhNHTF9DT1BZX1JFQURfQlVGRkVSFEdMX0NPUFlfV1JJVEVfQlVGRkVSFEdMX1BJWEVMX1BBQ0tfQlVGRkVSFkdMX1BJWEVMX1VOUEFDS19CVUZGRVIcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUhFHTF9VTklGT1JNX0JVRkZFUhhHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVIbR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSF0dMX0RSQVdfSU5ESVJFQ1RfQlVGRkVSGEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUhFHTF9URVhUVVJFX0JVRkZFUophDIpjCIplChBnbE1hcEJ1ZmZlclJhbmdlBmFjY2VzcwEPR0xfTUFQX1JFQURfQklUimcEimkGimsIim0KEGdsTWFwQnVmZmVyUmFuZ2UGcmVzdWx0BAICAAITZ2xNYXBCdWZmZXJSYW5nZUVYVAOKbwyKcQiKcwoTZ2xNYXBCdWZmZXJSYW5nZUVYVAZ0YXJnZXQND0dMX0FSUkFZX0JVRkZFUhdHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUhNHTF9DT1BZX1JFQURfQlVGRkVSFEdMX0NPUFlfV1JJVEVfQlVGRkVSFEdMX1BJWEVMX1BBQ0tfQlVGRkVSFkdMX1BJWEVMX1VOUEFDS19CVUZGRVIcR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUhFHTF9VTklGT1JNX0JVRkZFUhhHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVIbR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSF0dMX0RSQVdfSU5ESVJFQ1RfQlVGRkVSGEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUhFHTF9URVhUVVJFX0JVRkZFUop1DIp3CIp5ChNnbE1hcEJ1ZmZlclJhbmdlRVhUBmFjY2VzcwEPR0xfTUFQX1JFQURfQklUinsEin0Gin8IioEKE2dsTWFwQnVmZmVyUmFuZ2VFWFQGcmVzdWx0BAICAAIPZ2xNZW1vcnlCYXJyaWVyAYqDDIqFCIqHCg9nbE1lbW9yeUJhcnJpZXIIYmFycmllcnMOE0dMX0FMTF9CQVJSSUVSX0JJVFMdR0xfQVRPTUlDX0NPVU5URVJfQkFSUklFUl9CSVQcR0xfQlVGRkVSX1VQREFURV9CQVJSSUVSX0JJVBZHTF9DT01NQU5EX0JBUlJJRVJfQklUHEdMX0VMRU1FTlRfQVJSQVlfQkFSUklFUl9CSVQaR0xfRlJBTUVCVUZGRVJfQkFSUklFUl9CSVQbR0xfUElYRUxfQlVGRkVSX0JBUlJJRVJfQklUIkdMX1NIQURFUl9JTUFHRV9BQ0NFU1NfQkFSUklFUl9CSVQdR0xfU0hBREVSX1NUT1JBR0VfQkFSUklFUl9CSVQcR0xfVEVYVFVSRV9GRVRDSF9CQVJSSUVSX0JJVB1HTF9URVhUVVJFX1VQREFURV9CQVJSSUVSX0JJVCFHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQkFSUklFUl9CSVQWR0xfVU5JRk9STV9CQVJSSUVSX0JJVCJHTF9WRVJURVhfQVRUUklCX0FSUkFZX0JBUlJJRVJfQklUAhdnbE1lbW9yeUJhcnJpZXJCeVJlZ2lvbgGKiQyKiwiKjQoXZ2xNZW1vcnlCYXJyaWVyQnlSZWdpb24IYmFycmllcnMOE0dMX0FMTF9CQVJSSUVSX0JJVFMdR0xfQVRPTUlDX0NPVU5URVJfQkFSUklFUl9CSVQcR0xfQlVGRkVSX1VQREFURV9CQVJSSUVSX0JJVBZHTF9DT01NQU5EX0JBUlJJRVJfQklUHEdMX0VMRU1FTlRfQVJSQVlfQkFSUklFUl9CSVQaR0xfRlJBTUVCVUZGRVJfQkFSUklFUl9CSVQbR0xfUElYRUxfQlVGRkVSX0JBUlJJRVJfQklUIkdMX1NIQURFUl9JTUFHRV9BQ0NFU1NfQkFSUklFUl9CSVQdR0xfU0hBREVSX1NUT1JBR0VfQkFSUklFUl9CSVQcR0xfVEVYVFVSRV9GRVRDSF9CQVJSSUVSX0JJVB1HTF9URVhUVVJFX1VQREFURV9CQVJSSUVSX0JJVCFHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQkFSUklFUl9CSVQWR0xfVU5JRk9STV9CQVJSSUVSX0JJVCJHTF9WRVJURVhfQVRUUklCX0FSUkFZX0JBUlJJRVJfQklUAg1nbE9iamVjdExhYmVsAYqPDIqRCIqTCg1nbE9iamVjdExhYmVsCmlkZW50aWZpZXILCkdMX1RFWFRVUkUOR0xfRlJBTUVCVUZGRVIPR0xfUkVOREVSQlVGRkVSCUdMX0JVRkZFUglHTF9TSEFERVIKR0xfUFJPR1JBTQ9HTF9WRVJURVhfQVJSQVkIR0xfUVVFUlkKR0xfU0FNUExFUhVHTF9UUkFOU0ZPUk1fRkVFREJBQ0sTR0xfUFJPR1JBTV9QSVBFTElORQIQZ2xPYmplY3RMYWJlbEtIUgGKlQyKlwiKmQoQZ2xPYmplY3RMYWJlbEtIUgppZGVudGlmaWVyCwpHTF9URVhUVVJFDkdMX0ZSQU1FQlVGRkVSD0dMX1JFTkRFUkJVRkZFUglHTF9CVUZGRVIJR0xfU0hBREVSCkdMX1BST0dSQU0PR0xfVkVSVEVYX0FSUkFZCEdMX1FVRVJZCkdMX1NBTVBMRVIVR0xfVFJBTlNGT1JNX0ZFRURCQUNLE0dMX1BST0dSQU1fUElQRUxJTkUCEGdsT2JqZWN0UHRyTGFiZWwBipsEip0Gip8IiqEKEGdsT2JqZWN0UHRyTGFiZWwFbGFiZWwEAQACE2dsT2JqZWN0UHRyTGFiZWxLSFIBiqMEiqUGiqcIiqkKE2dsT2JqZWN0UHRyTGFiZWxLSFIFbGFiZWwEAQACEWdsUGF0Y2hQYXJhbWV0ZXJpAYqrDIqtCIqvChFnbFBhdGNoUGFyYW1ldGVyaQVwbmFtZQERR0xfUEFUQ0hfVkVSVElDRVMCFGdsUGF0Y2hQYXJhbWV0ZXJpRVhUAYqxDIqzCIq1ChRnbFBhdGNoUGFyYW1ldGVyaUVYVAVwbmFtZQERR0xfUEFUQ0hfVkVSVElDRVMCFGdsUGF0Y2hQYXJhbWV0ZXJpT0VTAYq3DIq5CIq7ChRnbFBhdGNoUGFyYW1ldGVyaU9FUwVwbmFtZQERR0xfUEFUQ0hfVkVSVElDRVMCDWdsUGl4ZWxTdG9yZWkBir0Mir8IisEKDWdsUGl4ZWxTdG9yZWkJcGFyYW1ldGVyDBFHTF9QQUNLX0FMSUdOTUVOVBRHTF9QQUNLX0lNQUdFX0hFSUdIVBJHTF9QQUNLX1JPV19MRU5HVEgTR0xfUEFDS19TS0lQX0lNQUdFUxNHTF9QQUNLX1NLSVBfUElYRUxTEUdMX1BBQ0tfU0tJUF9ST1dTE0dMX1VOUEFDS19BTElHTk1FTlQWR0xfVU5QQUNLX0lNQUdFX0hFSUdIVBRHTF9VTlBBQ0tfUk9XX0xFTkdUSBVHTF9VTlBBQ0tfU0tJUF9JTUFHRVMVR0xfVU5QQUNLX1NLSVBfUElYRUxTE0dMX1VOUEFDS19TS0lQX1JPV1MCD2dsUHJvZ3JhbUJpbmFyeQKKwwyKxQiKxwoPZ2xQcm9ncmFtQmluYXJ5DGJpbmFyeUZvcm1hdAESR0xfWjQwMF9CSU5BUllfQU1EiskEissGis0Iis8KD2dsUHJvZ3JhbUJpbmFyeQZiaW5hcnkEAQACEmdsUHJvZ3JhbUJpbmFyeU9FUwKK0QyK0wiK1QoSZ2xQcm9ncmFtQmluYXJ5T0VTDWJpbmFyeV9mb3JtYXQBEkdMX1o0MDBfQklOQVJZX0FNRIrXBIrZBorbCIrdChJnbFByb2dyYW1CaW5hcnlPRVMGYmluYXJ5BAEAAhNnbFByb2dyYW1QYXJhbWV0ZXJpAYrfDIrhCIrjChNnbFByb2dyYW1QYXJhbWV0ZXJpBXBuYW1lAiJHTF9QUk9HUkFNX0JJTkFSWV9SRVRSSUVWQUJMRV9ISU5UFEdMX1BST0dSQU1fU0VQQVJBQkxFAhZnbFByb2dyYW1QYXJhbWV0ZXJpRVhUAYrlDIrnCIrpChZnbFByb2dyYW1QYXJhbWV0ZXJpRVhUBXBuYW1lAiJHTF9QUk9HUkFNX0JJTkFSWV9SRVRSSUVWQUJMRV9ISU5UFEdMX1BST0dSQU1fU0VQQVJBQkxFAhJnbFByb2dyYW1Vbmlmb3JtMWYAAhVnbFByb2dyYW1Vbmlmb3JtMWZFWFQAAhNnbFByb2dyYW1Vbmlmb3JtMWZ2AYrrBIrtBorvCIrxChNnbFByb2dyYW1Vbmlmb3JtMWZ2BnZhbHVlcwQCAgACFmdsUHJvZ3JhbVVuaWZvcm0xZnZFWFQBivMEivUGivcIivkKFmdsUHJvZ3JhbVVuaWZvcm0xZnZFWFQFdmFsdWUEAgIAAhJnbFByb2dyYW1Vbmlmb3JtMWkAAhVnbFByb2dyYW1Vbmlmb3JtMWlFWFQAAhNnbFByb2dyYW1Vbmlmb3JtMWl2AYr7BIr9Bor/CIsBChNnbFByb2dyYW1Vbmlmb3JtMWl2BnZhbHVlcwQCAgACFmdsUHJvZ3JhbVVuaWZvcm0xaXZFWFQBiwMEiwUGiwcIiwkKFmdsUHJvZ3JhbVVuaWZvcm0xaXZFWFQFdmFsdWUEAgIAAhNnbFByb2dyYW1Vbmlmb3JtMXVpAAIWZ2xQcm9ncmFtVW5pZm9ybTF1aUVYVAACFGdsUHJvZ3JhbVVuaWZvcm0xdWl2AYsLBIsNBosPCIsRChRnbFByb2dyYW1Vbmlmb3JtMXVpdgZ2YWx1ZXMEAgIAAhdnbFByb2dyYW1Vbmlmb3JtMXVpdkVYVAGLEwSLFQaLFwiLGQoXZ2xQcm9ncmFtVW5pZm9ybTF1aXZFWFQFdmFsdWUEAgIAAhJnbFByb2dyYW1Vbmlmb3JtMmYAAhVnbFByb2dyYW1Vbmlmb3JtMmZFWFQAAhNnbFByb2dyYW1Vbmlmb3JtMmZ2AYsbBIsdBosfCIshChNnbFByb2dyYW1Vbmlmb3JtMmZ2BnZhbHVlcwQCAgACFmdsUHJvZ3JhbVVuaWZvcm0yZnZFWFQBiyMEiyUGiycIiykKFmdsUHJvZ3JhbVVuaWZvcm0yZnZFWFQFdmFsdWUEAgIAAhJnbFByb2dyYW1Vbmlmb3JtMmkAAhVnbFByb2dyYW1Vbmlmb3JtMmlFWFQAAhNnbFByb2dyYW1Vbmlmb3JtMml2AYsrBIstBosvCIsxChNnbFByb2dyYW1Vbmlmb3JtMml2BnZhbHVlcwQCAgACFmdsUHJvZ3JhbVVuaWZvcm0yaXZFWFQBizMEizUGizcIizkKFmdsUHJvZ3JhbVVuaWZvcm0yaXZFWFQFdmFsdWUEAgIAAhNnbFByb2dyYW1Vbmlmb3JtMnVpAAIWZ2xQcm9ncmFtVW5pZm9ybTJ1aUVYVAACFGdsUHJvZ3JhbVVuaWZvcm0ydWl2AYs7BIs9Bos/CItBChRnbFByb2dyYW1Vbmlmb3JtMnVpdgZ2YWx1ZXMEAgIAAhdnbFByb2dyYW1Vbmlmb3JtMnVpdkVYVAGLQwSLRQaLRwiLSQoXZ2xQcm9ncmFtVW5pZm9ybTJ1aXZFWFQFdmFsdWUEAgIAAhJnbFByb2dyYW1Vbmlmb3JtM2YAAhVnbFByb2dyYW1Vbmlmb3JtM2ZFWFQAAhNnbFByb2dyYW1Vbmlmb3JtM2Z2AYtLBItNBotPCItRChNnbFByb2dyYW1Vbmlmb3JtM2Z2BnZhbHVlcwQCAgACFmdsUHJvZ3JhbVVuaWZvcm0zZnZFWFQBi1MEi1UGi1cIi1kKFmdsUHJvZ3JhbVVuaWZvcm0zZnZFWFQFdmFsdWUEAgIAAhJnbFByb2dyYW1Vbmlmb3JtM2kAAhVnbFByb2dyYW1Vbmlmb3JtM2lFWFQAAhNnbFByb2dyYW1Vbmlmb3JtM2l2AYtbBItdBotfCIthChNnbFByb2dyYW1Vbmlmb3JtM2l2BnZhbHVlcwQCAgACFmdsUHJvZ3JhbVVuaWZvcm0zaXZFWFQBi2MEi2UGi2cIi2kKFmdsUHJvZ3JhbVVuaWZvcm0zaXZFWFQFdmFsdWUEAgIAAhNnbFByb2dyYW1Vbmlmb3JtM3VpAAIWZ2xQcm9ncmFtVW5pZm9ybTN1aUVYVAACFGdsUHJvZ3JhbVVuaWZvcm0zdWl2AYtrBIttBotvCItxChRnbFByb2dyYW1Vbmlmb3JtM3VpdgZ2YWx1ZXMEAgIAAhdnbFByb2dyYW1Vbmlmb3JtM3VpdkVYVAGLcwSLdQaLdwiLeQoXZ2xQcm9ncmFtVW5pZm9ybTN1aXZFWFQFdmFsdWUEAgIAAhJnbFByb2dyYW1Vbmlmb3JtNGYAAhVnbFByb2dyYW1Vbmlmb3JtNGZFWFQAAhNnbFByb2dyYW1Vbmlmb3JtNGZ2AYt7BIt9Bot/CIuBChNnbFByb2dyYW1Vbmlmb3JtNGZ2BnZhbHVlcwQCAgACFmdsUHJvZ3JhbVVuaWZvcm00ZnZFWFQBi4MEi4UGi4cIi4kKFmdsUHJvZ3JhbVVuaWZvcm00ZnZFWFQFdmFsdWUEAgIAAhJnbFByb2dyYW1Vbmlmb3JtNGkAAhVnbFByb2dyYW1Vbmlmb3JtNGlFWFQAAhNnbFByb2dyYW1Vbmlmb3JtNGl2AYuLBIuNBouPCIuRChNnbFByb2dyYW1Vbmlmb3JtNGl2BnZhbHVlcwQCAgACFmdsUHJvZ3JhbVVuaWZvcm00aXZFWFQBi5MEi5UGi5cIi5kKFmdsUHJvZ3JhbVVuaWZvcm00aXZFWFQFdmFsdWUEAgIAAhNnbFByb2dyYW1Vbmlmb3JtNHVpAAIWZ2xQcm9ncmFtVW5pZm9ybTR1aUVYVAACFGdsUHJvZ3JhbVVuaWZvcm00dWl2AYubBIudBoufCIuhChRnbFByb2dyYW1Vbmlmb3JtNHVpdgZ2YWx1ZXMEAgIAAhdnbFByb2dyYW1Vbmlmb3JtNHVpdkVYVAGLowSLpQaLpwiLqQoXZ2xQcm9ncmFtVW5pZm9ybTR1aXZFWFQFdmFsdWUEAgIAAhlnbFByb2dyYW1Vbmlmb3JtTWF0cml4MmZ2AYurBIutBouvCIuxChlnbFByb2dyYW1Vbmlmb3JtTWF0cml4MmZ2BnZhbHVlcwQCAgACHGdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgyZnZFWFQBi7MEi7UGi7cIi7kKHGdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgyZnZFWFQFdmFsdWUEAgIAAhtnbFByb2dyYW1Vbmlmb3JtTWF0cml4MngzZnYBi7sEi70Gi78Ii8EKG2dsUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNmdgZ2YWx1ZXMEAgIAAh5nbFByb2dyYW1Vbmlmb3JtTWF0cml4MngzZnZFWFQBi8MEi8UGi8cIi8kKHmdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNmdkVYVAV2YWx1ZQQCAgACG2dsUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDRmdgGLywSLzQaLzwiL0QobZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4NGZ2BnZhbHVlcwQCAgACHmdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDRmdkVYVAGL0wSL1QaL1wiL2QoeZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4NGZ2RVhUBXZhbHVlBAICAAIZZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDNmdgGL2wSL3QaL3wiL4QoZZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDNmdgZ2YWx1ZXMEAgIAAhxnbFByb2dyYW1Vbmlmb3JtTWF0cml4M2Z2RVhUAYvjBIvlBovnCIvpChxnbFByb2dyYW1Vbmlmb3JtTWF0cml4M2Z2RVhUBXZhbHVlBAICAAIbZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDN4MmZ2AYvrBIvtBovvCIvxChtnbFByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZnYGdmFsdWVzBAICAAIeZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDN4MmZ2RVhUAYvzBIv1Bov3CIv5Ch5nbFByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZnZFWFQFdmFsdWUEAgIAAhtnbFByb2dyYW1Vbmlmb3JtTWF0cml4M3g0ZnYBi/sEi/0Gi/8IjAEKG2dsUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRmdgZ2YWx1ZXMEAgIAAh5nbFByb2dyYW1Vbmlmb3JtTWF0cml4M3g0ZnZFWFQBjAMEjAUGjAcIjAkKHmdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRmdkVYVAV2YWx1ZQQCAgACGWdsUHJvZ3JhbVVuaWZvcm1NYXRyaXg0ZnYBjAsEjA0GjA8IjBEKGWdsUHJvZ3JhbVVuaWZvcm1NYXRyaXg0ZnYGdmFsdWVzBAICAAIcZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDRmdkVYVAGMEwSMFQaMFwiMGQocZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDRmdkVYVAV2YWx1ZQQCAgACG2dsUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDJmdgGMGwSMHQaMHwiMIQobZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDR4MmZ2BnZhbHVlcwQCAgACHmdsUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDJmdkVYVAGMIwSMJQaMJwiMKQoeZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDR4MmZ2RVhUBXZhbHVlBAICAAIbZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDR4M2Z2AYwrBIwtBowvCIwxChtnbFByb2dyYW1Vbmlmb3JtTWF0cml4NHgzZnYGdmFsdWVzBAICAAIeZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDR4M2Z2RVhUAYwzBIw1Bow3CIw5Ch5nbFByb2dyYW1Vbmlmb3JtTWF0cml4NHgzZnZFWFQFdmFsdWUEAgIAAhBnbFB1c2hEZWJ1Z0dyb3VwAow7DIw9CIw/ChBnbFB1c2hEZWJ1Z0dyb3VwBnNvdXJjZQIbR0xfREVCVUdfU09VUkNFX0FQUExJQ0FUSU9OG0dMX0RFQlVHX1NPVVJDRV9USElSRF9QQVJUWYxBBIxDBoxFCIxHChBnbFB1c2hEZWJ1Z0dyb3VwB21lc3NhZ2UEAQACE2dsUHVzaERlYnVnR3JvdXBLSFICjEkMjEsIjE0KE2dsUHVzaERlYnVnR3JvdXBLSFIGc291cmNlAhtHTF9ERUJVR19TT1VSQ0VfQVBQTElDQVRJT04bR0xfREVCVUdfU09VUkNFX1RISVJEX1BBUlRZjE8EjFEGjFMIjFUKE2dsUHVzaERlYnVnR3JvdXBLSFIHbWVzc2FnZQQBAAIUZ2xQdXNoR3JvdXBNYXJrZXJFWFQBjFcEjFkGjFsIjF0KFGdsUHVzaEdyb3VwTWFya2VyRVhUBm1hcmtlcgQBAAIMZ2xSZWFkQnVmZmVyAYxfDIxhCIxjCgxnbFJlYWRCdWZmZXIDc3JjEgdHTF9CQUNLFEdMX0NPTE9SX0FUVEFDSE1FTlQwFEdMX0NPTE9SX0FUVEFDSE1FTlQxFUdMX0NPTE9SX0FUVEFDSE1FTlQxMBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTEVR0xfQ09MT1JfQVRUQUNITUVOVDEyFUdMX0NPTE9SX0FUVEFDSE1FTlQxMxVHTF9DT0xPUl9BVFRBQ0hNRU5UMTQVR0xfQ09MT1JfQVRUQUNITUVOVDE1FEdMX0NPTE9SX0FUVEFDSE1FTlQyFEdMX0NPTE9SX0FUVEFDSE1FTlQzFEdMX0NPTE9SX0FUVEFDSE1FTlQ0FEdMX0NPTE9SX0FUVEFDSE1FTlQ1FEdMX0NPTE9SX0FUVEFDSE1FTlQ2FEdMX0NPTE9SX0FUVEFDSE1FTlQ3FEdMX0NPTE9SX0FUVEFDSE1FTlQ4FEdMX0NPTE9SX0FUVEFDSE1FTlQ5B0dMX05PTkUCDGdsUmVhZFBpeGVscwOMZQyMZwiMaQoMZ2xSZWFkUGl4ZWxzBmZvcm1hdA8IR0xfQUxQSEEGR0xfUkdCB0dMX1JHQkEGR0xfUkVEDkdMX1JFRF9JTlRFR0VSBUdMX1JHDUdMX1JHX0lOVEVHRVIOR0xfUkdCX0lOVEVHRVISR0xfTFVNSU5BTkNFX0FMUEhBDEdMX0xVTUlOQU5DRQ9HTF9SR0JBX0lOVEVHRVISR0xfREVQVEhfQ09NUE9ORU5UEEdMX0RFUFRIX1NURU5DSUwQR0xfU1RFTkNJTF9JTkRFWAtHTF9CR1JBX0VYVIxrDIxtCIxvCgxnbFJlYWRQaXhlbHMEdHlwZTgXR0xfVU5TSUdORURfU0hPUlRfNV82XzUZR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNBlHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xEEdMX1VOU0lHTkVEX0JZVEUIR0xfRkxPQVQGR0xfSU5UD0dMX1VOU0lHTkVEX0lOVB5HTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYfR0xfVU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFVhtHTF9VTlNJR05FRF9JTlRfNV85XzlfOV9SRVYHR0xfQllURRFHTF9VTlNJR05FRF9TSE9SVAhHTF9TSE9SVA1HTF9IQUxGX0ZMT0FUEUdMX0hBTEZfRkxPQVRfT0VTFEdMX1VOU0lHTkVEX0lOVF8yNF84IUdMX0ZMT0FUXzMyX1VOU0lHTkVEX0lOVF8yNF84X1JFVhVHTF9DT01QUkVTU0VEX1IxMV9FQUMcR0xfQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQxdHTF9DT01QUkVTU0VEX1JHQjhfRVRDMhhHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzIrR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMixHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMhZHTF9DT01QUkVTU0VEX1JHMTFfRUFDHUdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDHEdMX0NPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4OCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OBxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NRxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NhxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTAdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTIlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMhBHTF9FVEMxX1JHQjhfT0VTjHEEjHMGjHUIjHcKDGdsUmVhZFBpeGVscwRkYXRhBAECAg1nbFJlYWRuUGl4ZWxzA4x5DIx7CIx9Cg1nbFJlYWRuUGl4ZWxzBmZvcm1hdA8IR0xfQUxQSEEGR0xfUkdCB0dMX1JHQkEGR0xfUkVEDkdMX1JFRF9JTlRFR0VSBUdMX1JHDUdMX1JHX0lOVEVHRVIOR0xfUkdCX0lOVEVHRVISR0xfTFVNSU5BTkNFX0FMUEhBDEdMX0xVTUlOQU5DRQ9HTF9SR0JBX0lOVEVHRVISR0xfREVQVEhfQ09NUE9ORU5UEEdMX0RFUFRIX1NURU5DSUwQR0xfU1RFTkNJTF9JTkRFWAtHTF9CR1JBX0VYVIx/DIyBCIyDCg1nbFJlYWRuUGl4ZWxzBHR5cGU4F0dMX1VOU0lHTkVEX1NIT1JUXzVfNl81GUdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQZR0xfVU5TSUdORURfU0hPUlRfNV81XzVfMRBHTF9VTlNJR05FRF9CWVRFCEdMX0ZMT0FUBkdMX0lOVA9HTF9VTlNJR05FRF9JTlQeR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWH0dMX1VOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVYbR0xfVU5TSUdORURfSU5UXzVfOV85XzlfUkVWB0dMX0JZVEURR0xfVU5TSUdORURfU0hPUlQIR0xfU0hPUlQNR0xfSEFMRl9GTE9BVBFHTF9IQUxGX0ZMT0FUX09FUxRHTF9VTlNJR05FRF9JTlRfMjRfOCFHTF9GTE9BVF8zMl9VTlNJR05FRF9JTlRfMjRfOF9SRVYVR0xfQ09NUFJFU1NFRF9SMTFfRUFDHEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMXR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIYR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyK0dMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIsR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIWR0xfQ09NUFJFU1NFRF9SRzExX0VBQx1HTF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQxxHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDG0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzR4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDgjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDgcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NSRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDUcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NiRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDYcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OCRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDgdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTAlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTIQR0xfRVRDMV9SR0I4X09FU4yFBIyHBoyJCIyLCg1nbFJlYWRuUGl4ZWxzBGRhdGEEAQICEGdsUmVhZG5QaXhlbHNFWFQDjI0MjI8IjJEKEGdsUmVhZG5QaXhlbHNFWFQGZm9ybWF0DwhHTF9BTFBIQQZHTF9SR0IHR0xfUkdCQQZHTF9SRUQOR0xfUkVEX0lOVEVHRVIFR0xfUkcNR0xfUkdfSU5URUdFUg5HTF9SR0JfSU5URUdFUhJHTF9MVU1JTkFOQ0VfQUxQSEEMR0xfTFVNSU5BTkNFD0dMX1JHQkFfSU5URUdFUhJHTF9ERVBUSF9DT01QT05FTlQQR0xfREVQVEhfU1RFTkNJTBBHTF9TVEVOQ0lMX0lOREVYC0dMX0JHUkFfRVhUjJMMjJUIjJcKEGdsUmVhZG5QaXhlbHNFWFQEdHlwZTgXR0xfVU5TSUdORURfU0hPUlRfNV82XzUZR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNBlHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xEEdMX1VOU0lHTkVEX0JZVEUIR0xfRkxPQVQGR0xfSU5UD0dMX1VOU0lHTkVEX0lOVB5HTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYfR0xfVU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFVhtHTF9VTlNJR05FRF9JTlRfNV85XzlfOV9SRVYHR0xfQllURRFHTF9VTlNJR05FRF9TSE9SVAhHTF9TSE9SVA1HTF9IQUxGX0ZMT0FUEUdMX0hBTEZfRkxPQVRfT0VTFEdMX1VOU0lHTkVEX0lOVF8yNF84IUdMX0ZMT0FUXzMyX1VOU0lHTkVEX0lOVF8yNF84X1JFVhVHTF9DT01QUkVTU0VEX1IxMV9FQUMcR0xfQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQxdHTF9DT01QUkVTU0VEX1JHQjhfRVRDMhhHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzIrR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMixHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMhZHTF9DT01QUkVTU0VEX1JHMTFfRUFDHUdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDHEdMX0NPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4OCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OBxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NRxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NhxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTAdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTIlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMhBHTF9FVEMxX1JHQjhfT0VTjJkEjJsGjJ0IjJ8KEGdsUmVhZG5QaXhlbHNFWFQEZGF0YQQBAgIQZ2xSZWFkblBpeGVsc0tIUgOMoQyMowiMpQoQZ2xSZWFkblBpeGVsc0tIUgZmb3JtYXQPCEdMX0FMUEhBBkdMX1JHQgdHTF9SR0JBBkdMX1JFRA5HTF9SRURfSU5URUdFUgVHTF9SRw1HTF9SR19JTlRFR0VSDkdMX1JHQl9JTlRFR0VSEkdMX0xVTUlOQU5DRV9BTFBIQQxHTF9MVU1JTkFOQ0UPR0xfUkdCQV9JTlRFR0VSEkdMX0RFUFRIX0NPTVBPTkVOVBBHTF9ERVBUSF9TVEVOQ0lMEEdMX1NURU5DSUxfSU5ERVgLR0xfQkdSQV9FWFSMpwyMqQiMqwoQZ2xSZWFkblBpeGVsc0tIUgR0eXBlOBdHTF9VTlNJR05FRF9TSE9SVF81XzZfNRlHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80GUdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzEQR0xfVU5TSUdORURfQllURQhHTF9GTE9BVAZHTF9JTlQPR0xfVU5TSUdORURfSU5UHkdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVh9HTF9VTlNJR05FRF9JTlRfMTBGXzExRl8xMUZfUkVWG0dMX1VOU0lHTkVEX0lOVF81XzlfOV85X1JFVgdHTF9CWVRFEUdMX1VOU0lHTkVEX1NIT1JUCEdMX1NIT1JUDUdMX0hBTEZfRkxPQVQRR0xfSEFMRl9GTE9BVF9PRVMUR0xfVU5TSUdORURfSU5UXzI0XzghR0xfRkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWFUdMX0NPTVBSRVNTRURfUjExX0VBQxxHTF9DT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDF0dMX0NPTVBSRVNTRURfUkdCOF9FVEMyGEdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMitHTF9DT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyLEdMX0NPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyFkdMX0NPTVBSRVNTRURfUkcxMV9FQUMdR0xfQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUMcR0xfQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQyNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQxtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg4I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDUkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDYkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDgkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4HUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTAdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTAlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMiVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyEEdMX0VUQzFfUkdCOF9PRVOMrQSMrwaMsQiMswoQZ2xSZWFkblBpeGVsc0tIUgRkYXRhBAECAhVnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UCjLUMjLcIjLkKFWdsUmVuZGVyYnVmZmVyU3RvcmFnZQZ0YXJnZXQBD0dMX1JFTkRFUkJVRkZFUoy7DIy9CIy/ChVnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UOaW50ZXJuYWxmb3JtYXQlFEdMX0RFUFRIX0NPTVBPTkVOVDE2CUdMX1JHQjU2NQpHTF9SR0I1X0ExCEdMX1JHQkE0EUdMX1NURU5DSUxfSU5ERVg4E0dMX0RFUFRIMjRfU1RFTkNJTDgUR0xfREVQVEgzMkZfU1RFTkNJTDgUR0xfREVQVEhfQ09NUE9ORU5UMjQVR0xfREVQVEhfQ09NUE9ORU5UMzJGB0dMX1IxNkkIR0xfUjE2VUkHR0xfUjMySQhHTF9SMzJVSQVHTF9SOAZHTF9SOEkHR0xfUjhVSQhHTF9SRzE2SQlHTF9SRzE2VUkIR0xfUkczMkkJR0xfUkczMlVJBkdMX1JHOAdHTF9SRzhJCEdMX1JHOFVJC0dMX1JHQjEwX0EyDUdMX1JHQjEwX0EyVUkHR0xfUkdCOApHTF9SR0JBMTZJC0dMX1JHQkExNlVJCkdMX1JHQkEzMkkLR0xfUkdCQTMyVUkIR0xfUkdCQTgJR0xfUkdCQThJCkdMX1JHQkE4VUkPR0xfU1JHQjhfQUxQSEE4BkdMX1IxNgdHTF9SRzE2CUdMX1JHQkExNgIgZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUCjMEMjMMIjMUKIGdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlBnRhcmdldAEPR0xfUkVOREVSQlVGRkVSjMcMjMkIjMsKIGdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlDmludGVybmFsZm9ybWF0JRRHTF9ERVBUSF9DT01QT05FTlQxNglHTF9SR0I1NjUKR0xfUkdCNV9BMQhHTF9SR0JBNBFHTF9TVEVOQ0lMX0lOREVYOBNHTF9ERVBUSDI0X1NURU5DSUw4FEdMX0RFUFRIMzJGX1NURU5DSUw4FEdMX0RFUFRIX0NPTVBPTkVOVDI0FUdMX0RFUFRIX0NPTVBPTkVOVDMyRgdHTF9SMTZJCEdMX1IxNlVJB0dMX1IzMkkIR0xfUjMyVUkFR0xfUjgGR0xfUjhJB0dMX1I4VUkIR0xfUkcxNkkJR0xfUkcxNlVJCEdMX1JHMzJJCUdMX1JHMzJVSQZHTF9SRzgHR0xfUkc4SQhHTF9SRzhVSQtHTF9SR0IxMF9BMg1HTF9SR0IxMF9BMlVJB0dMX1JHQjgKR0xfUkdCQTE2SQtHTF9SR0JBMTZVSQpHTF9SR0JBMzJJC0dMX1JHQkEzMlVJCEdMX1JHQkE4CUdMX1JHQkE4SQpHTF9SR0JBOFVJD0dMX1NSR0I4X0FMUEhBOAZHTF9SMTYHR0xfUkcxNglHTF9SR0JBMTYCI2dsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlRVhUAozNDIzPCIzRCiNnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUVYVAZ0YXJnZXQBD0dMX1JFTkRFUkJVRkZFUozTDIzVCIzXCiNnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUVYVA5pbnRlcm5hbGZvcm1hdCUUR0xfREVQVEhfQ09NUE9ORU5UMTYJR0xfUkdCNTY1CkdMX1JHQjVfQTEIR0xfUkdCQTQRR0xfU1RFTkNJTF9JTkRFWDgTR0xfREVQVEgyNF9TVEVOQ0lMOBRHTF9ERVBUSDMyRl9TVEVOQ0lMOBRHTF9ERVBUSF9DT01QT05FTlQyNBVHTF9ERVBUSF9DT01QT05FTlQzMkYHR0xfUjE2SQhHTF9SMTZVSQdHTF9SMzJJCEdMX1IzMlVJBUdMX1I4BkdMX1I4SQdHTF9SOFVJCEdMX1JHMTZJCUdMX1JHMTZVSQhHTF9SRzMySQlHTF9SRzMyVUkGR0xfUkc4B0dMX1JHOEkIR0xfUkc4VUkLR0xfUkdCMTBfQTINR0xfUkdCMTBfQTJVSQdHTF9SR0I4CkdMX1JHQkExNkkLR0xfUkdCQTE2VUkKR0xfUkdCQTMySQtHTF9SR0JBMzJVSQhHTF9SR0JBOAlHTF9SR0JBOEkKR0xfUkdCQThVSQ9HTF9TUkdCOF9BTFBIQTgGR0xfUjE2B0dMX1JHMTYJR0xfUkdCQTE2AiJnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZU5WAozZDIzbCIzdCiJnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZU5WBnRhcmdldAEPR0xfUkVOREVSQlVGRkVSjN8MjOEIjOMKImdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlTlYOaW50ZXJuYWxmb3JtYXQlFEdMX0RFUFRIX0NPTVBPTkVOVDE2CUdMX1JHQjU2NQpHTF9SR0I1X0ExCEdMX1JHQkE0EUdMX1NURU5DSUxfSU5ERVg4E0dMX0RFUFRIMjRfU1RFTkNJTDgUR0xfREVQVEgzMkZfU1RFTkNJTDgUR0xfREVQVEhfQ09NUE9ORU5UMjQVR0xfREVQVEhfQ09NUE9ORU5UMzJGB0dMX1IxNkkIR0xfUjE2VUkHR0xfUjMySQhHTF9SMzJVSQVHTF9SOAZHTF9SOEkHR0xfUjhVSQhHTF9SRzE2SQlHTF9SRzE2VUkIR0xfUkczMkkJR0xfUkczMlVJBkdMX1JHOAdHTF9SRzhJCEdMX1JHOFVJC0dMX1JHQjEwX0EyDUdMX1JHQjEwX0EyVUkHR0xfUkdCOApHTF9SR0JBMTZJC0dMX1JHQkExNlVJCkdMX1JHQkEzMkkLR0xfUkdCQTMyVUkIR0xfUkdCQTgJR0xfUkdCQThJCkdMX1JHQkE4VUkPR0xfU1JHQjhfQUxQSEE4BkdMX1IxNgdHTF9SRzE2CUdMX1JHQkExNgIVZ2xTYW1wbGVyUGFyYW1ldGVySWl2AYzlDIznCIzpChVnbFNhbXBsZXJQYXJhbWV0ZXJJaXYFcG5hbWULF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhVHTF9URVhUVVJFX01BR19GSUxURVISR0xfVEVYVFVSRV9NSU5fTE9EEkdMX1RFWFRVUkVfTUFYX0xPRBFHTF9URVhUVVJFX1dSQVBfUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUh1HTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVAIYZ2xTYW1wbGVyUGFyYW1ldGVySWl2RVhUAYzrDIztCIzvChhnbFNhbXBsZXJQYXJhbWV0ZXJJaXZFWFQFcG5hbWULF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhVHTF9URVhUVVJFX01BR19GSUxURVISR0xfVEVYVFVSRV9NSU5fTE9EEkdMX1RFWFRVUkVfTUFYX0xPRBFHTF9URVhUVVJFX1dSQVBfUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUh1HTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVAIYZ2xTYW1wbGVyUGFyYW1ldGVySWl2T0VTAYzxDIzzCIz1ChhnbFNhbXBsZXJQYXJhbWV0ZXJJaXZPRVMFcG5hbWULF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhVHTF9URVhUVVJFX01BR19GSUxURVISR0xfVEVYVFVSRV9NSU5fTE9EEkdMX1RFWFRVUkVfTUFYX0xPRBFHTF9URVhUVVJFX1dSQVBfUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUh1HTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVAIWZ2xTYW1wbGVyUGFyYW1ldGVySXVpdgGM9wyM+QiM+woWZ2xTYW1wbGVyUGFyYW1ldGVySXVpdgVwbmFtZQsXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUVR0xfVEVYVFVSRV9NSU5fRklMVEVSFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhJHTF9URVhUVVJFX01JTl9MT0QSR0xfVEVYVFVSRV9NQVhfTE9EEUdMX1RFWFRVUkVfV1JBUF9SEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SHUdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUAhlnbFNhbXBsZXJQYXJhbWV0ZXJJdWl2RVhUAYz9DIz/CI0BChlnbFNhbXBsZXJQYXJhbWV0ZXJJdWl2RVhUBXBuYW1lCxdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRVHTF9URVhUVVJFX01JTl9GSUxURVIVR0xfVEVYVFVSRV9NQUdfRklMVEVSEkdMX1RFWFRVUkVfTUlOX0xPRBJHTF9URVhUVVJFX01BWF9MT0QRR0xfVEVYVFVSRV9XUkFQX1IRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1IdR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQCGWdsU2FtcGxlclBhcmFtZXRlckl1aXZPRVMBjQMMjQUIjQcKGWdsU2FtcGxlclBhcmFtZXRlckl1aXZPRVMFcG5hbWULF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhVHTF9URVhUVVJFX01BR19GSUxURVISR0xfVEVYVFVSRV9NSU5fTE9EEkdMX1RFWFRVUkVfTUFYX0xPRBFHTF9URVhUVVJFX1dSQVBfUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUh1HTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVAITZ2xTYW1wbGVyUGFyYW1ldGVyZgGNCQyNCwiNDQoTZ2xTYW1wbGVyUGFyYW1ldGVyZgVwbmFtZQsXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUVR0xfVEVYVFVSRV9NSU5fRklMVEVSFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhJHTF9URVhUVVJFX01JTl9MT0QSR0xfVEVYVFVSRV9NQVhfTE9EEUdMX1RFWFRVUkVfV1JBUF9SEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SHUdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUAhRnbFNhbXBsZXJQYXJhbWV0ZXJmdgGNDwyNEQiNEwoUZ2xTYW1wbGVyUGFyYW1ldGVyZnYFcG5hbWULF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhVHTF9URVhUVVJFX01BR19GSUxURVISR0xfVEVYVFVSRV9NSU5fTE9EEkdMX1RFWFRVUkVfTUFYX0xPRBFHTF9URVhUVVJFX1dSQVBfUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUh1HTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVAITZ2xTYW1wbGVyUGFyYW1ldGVyaQGNFQyNFwiNGQoTZ2xTYW1wbGVyUGFyYW1ldGVyaQVwbmFtZQsXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUVR0xfVEVYVFVSRV9NSU5fRklMVEVSFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhJHTF9URVhUVVJFX01JTl9MT0QSR0xfVEVYVFVSRV9NQVhfTE9EEUdMX1RFWFRVUkVfV1JBUF9SEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SHUdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUAhRnbFNhbXBsZXJQYXJhbWV0ZXJpdgGNGwyNHQiNHwoUZ2xTYW1wbGVyUGFyYW1ldGVyaXYFcG5hbWULF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhVHTF9URVhUVVJFX01BR19GSUxURVISR0xfVEVYVFVSRV9NSU5fTE9EEkdMX1RFWFRVUkVfTUFYX0xPRBFHTF9URVhUVVJFX1dSQVBfUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUh1HTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVAIOZ2xTaGFkZXJCaW5hcnkCjSEEjSMGjSUIjScKDmdsU2hhZGVyQmluYXJ5B3NoYWRlcnMEAQCNKQSNKwaNLQiNLwoOZ2xTaGFkZXJCaW5hcnkGYmluYXJ5BAEAAg1nbFN0ZW5jaWxGdW5jAY0xDI0zCI01Cg1nbFN0ZW5jaWxGdW5jBGZ1bmMICUdMX0FMV0FZUwhHTF9FUVVBTAlHTF9HRVFVQUwKR0xfR1JFQVRFUglHTF9MRVFVQUwHR0xfTEVTUwhHTF9ORVZFUgtHTF9OT1RFUVVBTAIVZ2xTdGVuY2lsRnVuY1NlcGFyYXRlAo03DI05CI07ChVnbFN0ZW5jaWxGdW5jU2VwYXJhdGUEZmFjZQMHR0xfQkFDSwhHTF9GUk9OVBFHTF9GUk9OVF9BTkRfQkFDS409DI0/CI1BChVnbFN0ZW5jaWxGdW5jU2VwYXJhdGUIZnVuY3Rpb24ICUdMX0FMV0FZUwhHTF9FUVVBTAlHTF9HRVFVQUwKR0xfR1JFQVRFUglHTF9MRVFVQUwHR0xfTEVTUwhHTF9ORVZFUgtHTF9OT1RFUVVBTAIVZ2xTdGVuY2lsTWFza1NlcGFyYXRlAY1DDI1FCI1HChVnbFN0ZW5jaWxNYXNrU2VwYXJhdGUEZmFjZQMHR0xfQkFDSwhHTF9GUk9OVBFHTF9GUk9OVF9BTkRfQkFDSwILZ2xTdGVuY2lsT3ADjUkMjUsIjU0KC2dsU3RlbmNpbE9wBGZhaWwIB0dMX0RFQ1IMR0xfREVDUl9XUkFQB0dMX0lOQ1IMR0xfSU5DUl9XUkFQCUdMX0lOVkVSVAdHTF9LRUVQCkdMX1JFUExBQ0UHR0xfWkVST41PDI1RCI1TCgtnbFN0ZW5jaWxPcAV6ZmFpbAgHR0xfREVDUgxHTF9ERUNSX1dSQVAHR0xfSU5DUgxHTF9JTkNSX1dSQVAJR0xfSU5WRVJUB0dMX0tFRVAKR0xfUkVQTEFDRQdHTF9aRVJPjVUMjVcIjVkKC2dsU3RlbmNpbE9wBXpwYXNzCAdHTF9ERUNSDEdMX0RFQ1JfV1JBUAdHTF9JTkNSDEdMX0lOQ1JfV1JBUAlHTF9JTlZFUlQHR0xfS0VFUApHTF9SRVBMQUNFB0dMX1pFUk8CE2dsU3RlbmNpbE9wU2VwYXJhdGUEjVsMjV0IjV8KE2dsU3RlbmNpbE9wU2VwYXJhdGUEZmFjZQMHR0xfQkFDSwhHTF9GUk9OVBFHTF9GUk9OVF9BTkRfQkFDS41hDI1jCI1lChNnbFN0ZW5jaWxPcFNlcGFyYXRlDHN0ZW5jaWxfZmFpbAgHR0xfREVDUgxHTF9ERUNSX1dSQVAHR0xfSU5DUgxHTF9JTkNSX1dSQVAJR0xfSU5WRVJUB0dMX0tFRVAKR0xfUkVQTEFDRQdHTF9aRVJPjWcMjWkIjWsKE2dsU3RlbmNpbE9wU2VwYXJhdGUXc3RlbmNpbF9wYXNzX2RlcHRoX2ZhaWwIB0dMX0RFQ1IMR0xfREVDUl9XUkFQB0dMX0lOQ1IMR0xfSU5DUl9XUkFQCUdMX0lOVkVSVAdHTF9LRUVQCkdMX1JFUExBQ0UHR0xfWkVST41tDI1vCI1xChNnbFN0ZW5jaWxPcFNlcGFyYXRlF3N0ZW5jaWxfcGFzc19kZXB0aF9wYXNzCAdHTF9ERUNSDEdMX0RFQ1JfV1JBUAdHTF9JTkNSDEdMX0lOQ1JfV1JBUAlHTF9JTlZFUlQHR0xfS0VFUApHTF9SRVBMQUNFB0dMX1pFUk8CC2dsVGV4QnVmZmVyAo1zDI11CI13CgtnbFRleEJ1ZmZlcgZ0YXJnZXQBEUdMX1RFWFRVUkVfQlVGRkVSjXkMjXsIjX0KC2dsVGV4QnVmZmVyDmludGVybmFsZm9ybWF0IQZHTF9SMTYHR0xfUjE2RgdHTF9SMTZJCEdMX1IxNlVJB0dMX1IzMkYHR0xfUjMySQhHTF9SMzJVSQVHTF9SOAZHTF9SOEkHR0xfUjhVSQdHTF9SRzE2CEdMX1JHMTZGCEdMX1JHMTZJCUdMX1JHMTZVSQhHTF9SRzMyRghHTF9SRzMySQlHTF9SRzMyVUkGR0xfUkc4B0dMX1JHOEkIR0xfUkc4VUkJR0xfUkdCMzJGCUdMX1JHQjMySQpHTF9SR0IzMlVJCUdMX1JHQkExNgpHTF9SR0JBMTZGCkdMX1JHQkExNkkLR0xfUkdCQTE2VUkKR0xfUkdCQTMyRgpHTF9SR0JBMzJJC0dMX1JHQkEzMlVJCEdMX1JHQkE4CUdMX1JHQkE4SQpHTF9SR0JBOFVJAg5nbFRleEJ1ZmZlckVYVAKNfwyNgQiNgwoOZ2xUZXhCdWZmZXJFWFQGdGFyZ2V0ARFHTF9URVhUVVJFX0JVRkZFUo2FDI2HCI2JCg5nbFRleEJ1ZmZlckVYVA5pbnRlcm5hbGZvcm1hdCEGR0xfUjE2B0dMX1IxNkYHR0xfUjE2SQhHTF9SMTZVSQdHTF9SMzJGB0dMX1IzMkkIR0xfUjMyVUkFR0xfUjgGR0xfUjhJB0dMX1I4VUkHR0xfUkcxNghHTF9SRzE2RghHTF9SRzE2SQlHTF9SRzE2VUkIR0xfUkczMkYIR0xfUkczMkkJR0xfUkczMlVJBkdMX1JHOAdHTF9SRzhJCEdMX1JHOFVJCUdMX1JHQjMyRglHTF9SR0IzMkkKR0xfUkdCMzJVSQlHTF9SR0JBMTYKR0xfUkdCQTE2RgpHTF9SR0JBMTZJC0dMX1JHQkExNlVJCkdMX1JHQkEzMkYKR0xfUkdCQTMySQtHTF9SR0JBMzJVSQhHTF9SR0JBOAlHTF9SR0JBOEkKR0xfUkdCQThVSQIOZ2xUZXhCdWZmZXJPRVMCjYsMjY0IjY8KDmdsVGV4QnVmZmVyT0VTBnRhcmdldAERR0xfVEVYVFVSRV9CVUZGRVKNkQyNkwiNlQoOZ2xUZXhCdWZmZXJPRVMOaW50ZXJuYWxmb3JtYXQhBkdMX1IxNgdHTF9SMTZGB0dMX1IxNkkIR0xfUjE2VUkHR0xfUjMyRgdHTF9SMzJJCEdMX1IzMlVJBUdMX1I4BkdMX1I4SQdHTF9SOFVJB0dMX1JHMTYIR0xfUkcxNkYIR0xfUkcxNkkJR0xfUkcxNlVJCEdMX1JHMzJGCEdMX1JHMzJJCUdMX1JHMzJVSQZHTF9SRzgHR0xfUkc4SQhHTF9SRzhVSQlHTF9SR0IzMkYJR0xfUkdCMzJJCkdMX1JHQjMyVUkJR0xfUkdCQTE2CkdMX1JHQkExNkYKR0xfUkdCQTE2SQtHTF9SR0JBMTZVSQpHTF9SR0JBMzJGCkdMX1JHQkEzMkkLR0xfUkdCQTMyVUkIR0xfUkdCQTgJR0xfUkdCQThJCkdMX1JHQkE4VUkCEGdsVGV4QnVmZmVyUmFuZ2UCjZcMjZkIjZsKEGdsVGV4QnVmZmVyUmFuZ2UGdGFyZ2V0ARFHTF9URVhUVVJFX0JVRkZFUo2dDI2fCI2hChBnbFRleEJ1ZmZlclJhbmdlDmludGVybmFsZm9ybWF0IQZHTF9SMTYHR0xfUjE2RgdHTF9SMTZJCEdMX1IxNlVJB0dMX1IzMkYHR0xfUjMySQhHTF9SMzJVSQVHTF9SOAZHTF9SOEkHR0xfUjhVSQdHTF9SRzE2CEdMX1JHMTZGCEdMX1JHMTZJCUdMX1JHMTZVSQhHTF9SRzMyRghHTF9SRzMySQlHTF9SRzMyVUkGR0xfUkc4B0dMX1JHOEkIR0xfUkc4VUkJR0xfUkdCMzJGCUdMX1JHQjMySQpHTF9SR0IzMlVJCUdMX1JHQkExNgpHTF9SR0JBMTZGCkdMX1JHQkExNkkLR0xfUkdCQTE2VUkKR0xfUkdCQTMyRgpHTF9SR0JBMzJJC0dMX1JHQkEzMlVJCEdMX1JHQkE4CUdMX1JHQkE4SQpHTF9SR0JBOFVJAhNnbFRleEJ1ZmZlclJhbmdlRVhUAo2jDI2lCI2nChNnbFRleEJ1ZmZlclJhbmdlRVhUBnRhcmdldAERR0xfVEVYVFVSRV9CVUZGRVKNqQyNqwiNrQoTZ2xUZXhCdWZmZXJSYW5nZUVYVA5pbnRlcm5hbGZvcm1hdCEGR0xfUjE2B0dMX1IxNkYHR0xfUjE2SQhHTF9SMTZVSQdHTF9SMzJGB0dMX1IzMkkIR0xfUjMyVUkFR0xfUjgGR0xfUjhJB0dMX1I4VUkHR0xfUkcxNghHTF9SRzE2RghHTF9SRzE2SQlHTF9SRzE2VUkIR0xfUkczMkYIR0xfUkczMkkJR0xfUkczMlVJBkdMX1JHOAdHTF9SRzhJCEdMX1JHOFVJCUdMX1JHQjMyRglHTF9SR0IzMkkKR0xfUkdCMzJVSQlHTF9SR0JBMTYKR0xfUkdCQTE2RgpHTF9SR0JBMTZJC0dMX1JHQkExNlVJCkdMX1JHQkEzMkYKR0xfUkdCQTMySQtHTF9SR0JBMzJVSQhHTF9SR0JBOAlHTF9SR0JBOEkKR0xfUkdCQThVSQITZ2xUZXhCdWZmZXJSYW5nZU9FUwKNrwyNsQiNswoTZ2xUZXhCdWZmZXJSYW5nZU9FUwZ0YXJnZXQBEUdMX1RFWFRVUkVfQlVGRkVSjbUMjbcIjbkKE2dsVGV4QnVmZmVyUmFuZ2VPRVMOaW50ZXJuYWxmb3JtYXQhBkdMX1IxNgdHTF9SMTZGB0dMX1IxNkkIR0xfUjE2VUkHR0xfUjMyRgdHTF9SMzJJCEdMX1IzMlVJBUdMX1I4BkdMX1I4SQdHTF9SOFVJB0dMX1JHMTYIR0xfUkcxNkYIR0xfUkcxNkkJR0xfUkcxNlVJCEdMX1JHMzJGCEdMX1JHMzJJCUdMX1JHMzJVSQZHTF9SRzgHR0xfUkc4SQhHTF9SRzhVSQlHTF9SR0IzMkYJR0xfUkdCMzJJCkdMX1JHQjMyVUkJR0xfUkdCQTE2CkdMX1JHQkExNkYKR0xfUkdCQTE2SQtHTF9SR0JBMTZVSQpHTF9SR0JBMzJGCkdMX1JHQkEzMkkLR0xfUkdCQTMyVUkIR0xfUkdCQTgJR0xfUkdCQThJCkdMX1JHQkE4VUkCDGdsVGV4SW1hZ2UyRAWNuwyNvQiNvwoMZ2xUZXhJbWFnZTJEBnRhcmdldAcNR0xfVEVYVFVSRV8yRB5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1geR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWh5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1geR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWo3BDI3DCI3FCgxnbFRleEltYWdlMkQOaW50ZXJuYWxmb3JtYXRBBkdMX1JHQgdHTF9SR0JBEkdMX0xVTUlOQU5DRV9BTFBIQQxHTF9MVU1JTkFOQ0UIR0xfQUxQSEEFR0xfUjgLR0xfUjhfU05PUk0HR0xfUjE2RgdHTF9SMzJGB0dMX1I4VUkGR0xfUjhJCEdMX1IxNlVJB0dMX1IxNkkIR0xfUjMyVUkHR0xfUjMySQZHTF9SRzgMR0xfUkc4X1NOT1JNCEdMX1JHMTZGCEdMX1JHMzJGCEdMX1JHOFVJB0dMX1JHOEkJR0xfUkcxNlVJCEdMX1JHMTZJCUdMX1JHMzJVSQhHTF9SRzMySQdHTF9SR0I4CEdMX1NSR0I4CUdMX1JHQjU2NQ1HTF9SR0I4X1NOT1JNEUdMX1IxMUZfRzExRl9CMTBGCkdMX1JHQjlfRTUJR0xfUkdCMTZGCUdMX1JHQjMyRglHTF9SR0I4VUkIR0xfUkdCOEkKR0xfUkdCMTZVSQlHTF9SR0IxNkkKR0xfUkdCMzJVSQlHTF9SR0IzMkkIR0xfUkdCQTgPR0xfU1JHQjhfQUxQSEE4DkdMX1JHQkE4X1NOT1JNCkdMX1JHQjVfQTEIR0xfUkdCQTQLR0xfUkdCMTBfQTIKR0xfUkdCQTE2RgpHTF9SR0JBMzJGCkdMX1JHQkE4VUkJR0xfUkdCQThJDUdMX1JHQjEwX0EyVUkLR0xfUkdCQTE2VUkKR0xfUkdCQTE2SQpHTF9SR0JBMzJJC0dMX1JHQkEzMlVJFEdMX0RFUFRIX0NPTVBPTkVOVDE2FEdMX0RFUFRIX0NPTVBPTkVOVDI0FUdMX0RFUFRIX0NPTVBPTkVOVDMyRhNHTF9ERVBUSDI0X1NURU5DSUw4FEdMX0RFUFRIMzJGX1NURU5DSUw4EUdMX1NURU5DSUxfSU5ERVg4EkdMX0RFUFRIX0NPTVBPTkVOVBBHTF9ERVBUSF9TVEVOQ0lMCkdMX1JFRF9FWFQJR0xfUkdfRVhUC0dMX0JHUkFfRVhUjccMjckIjcsKDGdsVGV4SW1hZ2UyRAZmb3JtYXQPCEdMX0FMUEhBDEdMX0xVTUlOQU5DRRJHTF9MVU1JTkFOQ0VfQUxQSEEGR0xfUkdCB0dMX1JHQkESR0xfREVQVEhfQ09NUE9ORU5UEEdMX0RFUFRIX1NURU5DSUwGR0xfUkVEDkdMX1JFRF9JTlRFR0VSBUdMX1JHD0dMX1JHQkFfSU5URUdFUg5HTF9SR0JfSU5URUdFUg1HTF9SR19JTlRFR0VSEEdMX1NURU5DSUxfSU5ERVgLR0xfQkdSQV9FWFSNzQyNzwiN0QoMZ2xUZXhJbWFnZTJEBHR5cGU4EEdMX1VOU0lHTkVEX0JZVEUZR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNBlHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xF0dMX1VOU0lHTkVEX1NIT1JUXzVfNl81EUdMX0hBTEZfRkxPQVRfT0VTB0dMX0JZVEUIR0xfRkxPQVQhR0xfRkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWDUdMX0hBTEZfRkxPQVQGR0xfSU5UCEdMX1NIT1JUD0dMX1VOU0lHTkVEX0lOVB9HTF9VTlNJR05FRF9JTlRfMTBGXzExRl8xMUZfUkVWFEdMX1VOU0lHTkVEX0lOVF8yNF84HkdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVhtHTF9VTlNJR05FRF9JTlRfNV85XzlfOV9SRVYRR0xfVU5TSUdORURfU0hPUlQVR0xfQ09NUFJFU1NFRF9SMTFfRUFDHEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMXR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIYR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyK0dMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIsR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIWR0xfQ09NUFJFU1NFRF9SRzExX0VBQx1HTF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQxxHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDG0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzR4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDgjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDgcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NSRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDUcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NiRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDYcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OCRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDgdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTAlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTIQR0xfRVRDMV9SR0I4X09FU43TBI3VBo3XCI3ZCgxnbFRleEltYWdlMkQEZGF0YQQBAAIMZ2xUZXhJbWFnZTNEBY3bDI3dCI3fCgxnbFRleEltYWdlM0QGdGFyZ2V0AxNHTF9URVhUVVJFXzJEX0FSUkFZDUdMX1RFWFRVUkVfM0QZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWY3hDI3jCI3lCgxnbFRleEltYWdlM0QOaW50ZXJuYWxmb3JtYXRBBkdMX1JHQgdHTF9SR0JBEkdMX0xVTUlOQU5DRV9BTFBIQQxHTF9MVU1JTkFOQ0UIR0xfQUxQSEEFR0xfUjgLR0xfUjhfU05PUk0HR0xfUjE2RgdHTF9SMzJGB0dMX1I4VUkGR0xfUjhJCEdMX1IxNlVJB0dMX1IxNkkIR0xfUjMyVUkHR0xfUjMySQZHTF9SRzgMR0xfUkc4X1NOT1JNCEdMX1JHMTZGCEdMX1JHMzJGCEdMX1JHOFVJB0dMX1JHOEkJR0xfUkcxNlVJCEdMX1JHMTZJCUdMX1JHMzJVSQhHTF9SRzMySQdHTF9SR0I4CEdMX1NSR0I4CUdMX1JHQjU2NQ1HTF9SR0I4X1NOT1JNEUdMX1IxMUZfRzExRl9CMTBGCkdMX1JHQjlfRTUJR0xfUkdCMTZGCUdMX1JHQjMyRglHTF9SR0I4VUkIR0xfUkdCOEkKR0xfUkdCMTZVSQlHTF9SR0IxNkkKR0xfUkdCMzJVSQlHTF9SR0IzMkkIR0xfUkdCQTgPR0xfU1JHQjhfQUxQSEE4DkdMX1JHQkE4X1NOT1JNCkdMX1JHQjVfQTEIR0xfUkdCQTQLR0xfUkdCMTBfQTIKR0xfUkdCQTE2RgpHTF9SR0JBMzJGCkdMX1JHQkE4VUkJR0xfUkdCQThJDUdMX1JHQjEwX0EyVUkLR0xfUkdCQTE2VUkKR0xfUkdCQTE2SQpHTF9SR0JBMzJJC0dMX1JHQkEzMlVJFEdMX0RFUFRIX0NPTVBPTkVOVDE2FEdMX0RFUFRIX0NPTVBPTkVOVDI0FUdMX0RFUFRIX0NPTVBPTkVOVDMyRhNHTF9ERVBUSDI0X1NURU5DSUw4FEdMX0RFUFRIMzJGX1NURU5DSUw4EUdMX1NURU5DSUxfSU5ERVg4EkdMX0RFUFRIX0NPTVBPTkVOVBBHTF9ERVBUSF9TVEVOQ0lMCkdMX1JFRF9FWFQJR0xfUkdfRVhUC0dMX0JHUkFfRVhUjecMjekIjesKDGdsVGV4SW1hZ2UzRAZmb3JtYXQPCEdMX0FMUEhBEkdMX0RFUFRIX0NPTVBPTkVOVBBHTF9ERVBUSF9TVEVOQ0lMDEdMX0xVTUlOQU5DRRJHTF9MVU1JTkFOQ0VfQUxQSEEGR0xfUkVEDkdMX1JFRF9JTlRFR0VSBUdMX1JHBkdMX1JHQgdHTF9SR0JBD0dMX1JHQkFfSU5URUdFUg5HTF9SR0JfSU5URUdFUg1HTF9SR19JTlRFR0VSEEdMX1NURU5DSUxfSU5ERVgLR0xfQkdSQV9FWFSN7QyN7wiN8QoMZ2xUZXhJbWFnZTNEBHR5cGU4EUdMX0hBTEZfRkxPQVRfT0VTB0dMX0JZVEUIR0xfRkxPQVQhR0xfRkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWDUdMX0hBTEZfRkxPQVQGR0xfSU5UCEdMX1NIT1JUEEdMX1VOU0lHTkVEX0JZVEUPR0xfVU5TSUdORURfSU5UH0dMX1VOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVYUR0xfVU5TSUdORURfSU5UXzI0XzgeR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWG0dMX1VOU0lHTkVEX0lOVF81XzlfOV85X1JFVhFHTF9VTlNJR05FRF9TSE9SVBlHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80GUdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzEXR0xfVU5TSUdORURfU0hPUlRfNV82XzUVR0xfQ09NUFJFU1NFRF9SMTFfRUFDHEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMXR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIYR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyK0dMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIsR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIWR0xfQ09NUFJFU1NFRF9SRzExX0VBQx1HTF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQxxHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDG0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzR4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDgjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDgcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NSRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDUcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NiRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDYcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OCRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDgdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTAlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTIQR0xfRVRDMV9SR0I4X09FU43zBI31Bo33CI35CgxnbFRleEltYWdlM0QEZGF0YQQBAAIPZ2xUZXhJbWFnZTNET0VTBY37DI39CI3/Cg9nbFRleEltYWdlM0RPRVMGdGFyZ2V0AxNHTF9URVhUVVJFXzJEX0FSUkFZDUdMX1RFWFRVUkVfM0QZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWY4BDI4DCI4FCg9nbFRleEltYWdlM0RPRVMOaW50ZXJuYWxmb3JtYXRBBkdMX1JHQgdHTF9SR0JBEkdMX0xVTUlOQU5DRV9BTFBIQQxHTF9MVU1JTkFOQ0UIR0xfQUxQSEEFR0xfUjgLR0xfUjhfU05PUk0HR0xfUjE2RgdHTF9SMzJGB0dMX1I4VUkGR0xfUjhJCEdMX1IxNlVJB0dMX1IxNkkIR0xfUjMyVUkHR0xfUjMySQZHTF9SRzgMR0xfUkc4X1NOT1JNCEdMX1JHMTZGCEdMX1JHMzJGCEdMX1JHOFVJB0dMX1JHOEkJR0xfUkcxNlVJCEdMX1JHMTZJCUdMX1JHMzJVSQhHTF9SRzMySQdHTF9SR0I4CEdMX1NSR0I4CUdMX1JHQjU2NQ1HTF9SR0I4X1NOT1JNEUdMX1IxMUZfRzExRl9CMTBGCkdMX1JHQjlfRTUJR0xfUkdCMTZGCUdMX1JHQjMyRglHTF9SR0I4VUkIR0xfUkdCOEkKR0xfUkdCMTZVSQlHTF9SR0IxNkkKR0xfUkdCMzJVSQlHTF9SR0IzMkkIR0xfUkdCQTgPR0xfU1JHQjhfQUxQSEE4DkdMX1JHQkE4X1NOT1JNCkdMX1JHQjVfQTEIR0xfUkdCQTQLR0xfUkdCMTBfQTIKR0xfUkdCQTE2RgpHTF9SR0JBMzJGCkdMX1JHQkE4VUkJR0xfUkdCQThJDUdMX1JHQjEwX0EyVUkLR0xfUkdCQTE2VUkKR0xfUkdCQTE2SQpHTF9SR0JBMzJJC0dMX1JHQkEzMlVJFEdMX0RFUFRIX0NPTVBPTkVOVDE2FEdMX0RFUFRIX0NPTVBPTkVOVDI0FUdMX0RFUFRIX0NPTVBPTkVOVDMyRhNHTF9ERVBUSDI0X1NURU5DSUw4FEdMX0RFUFRIMzJGX1NURU5DSUw4EUdMX1NURU5DSUxfSU5ERVg4EkdMX0RFUFRIX0NPTVBPTkVOVBBHTF9ERVBUSF9TVEVOQ0lMCkdMX1JFRF9FWFQJR0xfUkdfRVhUC0dMX0JHUkFfRVhUjgcMjgkIjgsKD2dsVGV4SW1hZ2UzRE9FUwZmb3JtYXQPCEdMX0FMUEhBEkdMX0RFUFRIX0NPTVBPTkVOVBBHTF9ERVBUSF9TVEVOQ0lMDEdMX0xVTUlOQU5DRRJHTF9MVU1JTkFOQ0VfQUxQSEEGR0xfUkVEDkdMX1JFRF9JTlRFR0VSBUdMX1JHBkdMX1JHQgdHTF9SR0JBD0dMX1JHQkFfSU5URUdFUg5HTF9SR0JfSU5URUdFUg1HTF9SR19JTlRFR0VSEEdMX1NURU5DSUxfSU5ERVgLR0xfQkdSQV9FWFSODQyODwiOEQoPZ2xUZXhJbWFnZTNET0VTBHR5cGU4EUdMX0hBTEZfRkxPQVRfT0VTB0dMX0JZVEUIR0xfRkxPQVQhR0xfRkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWDUdMX0hBTEZfRkxPQVQGR0xfSU5UCEdMX1NIT1JUEEdMX1VOU0lHTkVEX0JZVEUPR0xfVU5TSUdORURfSU5UH0dMX1VOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVYUR0xfVU5TSUdORURfSU5UXzI0XzgeR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWG0dMX1VOU0lHTkVEX0lOVF81XzlfOV85X1JFVhFHTF9VTlNJR05FRF9TSE9SVBlHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80GUdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzEXR0xfVU5TSUdORURfU0hPUlRfNV82XzUVR0xfQ09NUFJFU1NFRF9SMTFfRUFDHEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMXR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIYR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyK0dMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIsR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIWR0xfQ09NUFJFU1NFRF9SRzExX0VBQx1HTF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQxxHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDG0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzR4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDgjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDgcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NSRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDUcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NiRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDYcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OCRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDgdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTAlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTIQR0xfRVRDMV9SR0I4X09FU44TBI4VBo4XCI4ZCg9nbFRleEltYWdlM0RPRVMGcGl4ZWxzBAEAAhFnbFRleFBhcmFtZXRlcklpdgOOGwyOHQiOHwoRZ2xUZXhQYXJhbWV0ZXJJaXYGdGFyZ2V0CRFHTF9URVhUVVJFX0JVRkZFUg1HTF9URVhUVVJFXzJEF0dMX1RFWFRVUkVfRVhURVJOQUxfT0VTE0dMX1RFWFRVUkVfMkRfQVJSQVkZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZDUdMX1RFWFRVUkVfM0QTR0xfVEVYVFVSRV9DVUJFX01BUBlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZjiEMjiMIjiUKEWdsVGV4UGFyYW1ldGVySWl2BXBuYW1lExVHTF9URVhUVVJFX01BR19GSUxURVIVR0xfVEVYVFVSRV9NSU5fRklMVEVSEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UFUdMX1RFWFRVUkVfQkFTRV9MRVZFTBdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRRHTF9URVhUVVJFX01BWF9MRVZFTBJHTF9URVhUVVJFX01BWF9MT0QSR0xfVEVYVFVSRV9NSU5fTE9EFEdMX1RFWFRVUkVfU1dJWlpMRV9BFEdMX1RFWFRVUkVfU1dJWlpMRV9CFEdMX1RFWFRVUkVfU1dJWlpMRV9HFEdMX1RFWFRVUkVfU1dJWlpMRV9SEUdMX1RFWFRVUkVfV1JBUF9SHUdMX0RFUFRIX1NURU5DSUxfVEVYVFVSRV9NT0RFF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SHUdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUGkdMX1RFWFRVUkVfU1JHQl9ERUNPREVfRVhUjicMjikGjisGji0Iji8KEWdsVGV4UGFyYW1ldGVySWl2BnBhcmFtcwQCEApHTF9ORUFSRVNUCUdMX0xJTkVBUhlHTF9ORUFSRVNUX01JUE1BUF9ORUFSRVNUGEdMX0xJTkVBUl9NSVBNQVBfTkVBUkVTVBhHTF9ORUFSRVNUX01JUE1BUF9MSU5FQVIXR0xfTElORUFSX01JUE1BUF9MSU5FQVIQR0xfQ0xBTVBfVE9fRURHRQlHTF9SRVBFQVQSR0xfTUlSUk9SRURfUkVQRUFUEkdMX0NMQU1QX1RPX0JPUkRFUgZHTF9SRUQIR0xfR1JFRU4HR0xfQkxVRQhHTF9BTFBIQQdHTF9aRVJPBkdMX09ORQIUZ2xUZXhQYXJhbWV0ZXJJaXZFWFQDjjEMjjMIjjUKFGdsVGV4UGFyYW1ldGVySWl2RVhUBnRhcmdldAkRR0xfVEVYVFVSRV9CVUZGRVINR0xfVEVYVFVSRV8yRBdHTF9URVhUVVJFX0VYVEVSTkFMX09FUxNHTF9URVhUVVJFXzJEX0FSUkFZGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWQ1HTF9URVhUVVJFXzNEE0dMX1RFWFRVUkVfQ1VCRV9NQVAZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWY43DI45CI47ChRnbFRleFBhcmFtZXRlcklpdkVYVAVwbmFtZRMVR0xfVEVYVFVSRV9NQUdfRklMVEVSFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBVHTF9URVhUVVJFX0JBU0VfTEVWRUwXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUUR0xfVEVYVFVSRV9NQVhfTEVWRUwSR0xfVEVYVFVSRV9NQVhfTE9EEkdMX1RFWFRVUkVfTUlOX0xPRBRHTF9URVhUVVJFX1NXSVpaTEVfQRRHTF9URVhUVVJFX1NXSVpaTEVfQhRHTF9URVhUVVJFX1NXSVpaTEVfRxRHTF9URVhUVVJFX1NXSVpaTEVfUhFHTF9URVhUVVJFX1dSQVBfUh1HTF9ERVBUSF9TVEVOQ0lMX1RFWFRVUkVfTU9ERRdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUh1HTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVBpHTF9URVhUVVJFX1NSR0JfREVDT0RFX0VYVI49DI4/Bo5BBo5DCI5FChRnbFRleFBhcmFtZXRlcklpdkVYVAZwYXJhbXMEAhAKR0xfTkVBUkVTVAlHTF9MSU5FQVIZR0xfTkVBUkVTVF9NSVBNQVBfTkVBUkVTVBhHTF9MSU5FQVJfTUlQTUFQX05FQVJFU1QYR0xfTkVBUkVTVF9NSVBNQVBfTElORUFSF0dMX0xJTkVBUl9NSVBNQVBfTElORUFSEEdMX0NMQU1QX1RPX0VER0UJR0xfUkVQRUFUEkdMX01JUlJPUkVEX1JFUEVBVBJHTF9DTEFNUF9UT19CT1JERVIGR0xfUkVECEdMX0dSRUVOB0dMX0JMVUUIR0xfQUxQSEEHR0xfWkVSTwZHTF9PTkUCFGdsVGV4UGFyYW1ldGVySWl2T0VTA45HDI5JCI5LChRnbFRleFBhcmFtZXRlcklpdk9FUwZ0YXJnZXQJEUdMX1RFWFRVUkVfQlVGRkVSDUdMX1RFWFRVUkVfMkQXR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMTR0xfVEVYVFVSRV8yRF9BUlJBWRlHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFH0dMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVkNR0xfVEVYVFVSRV8zRBNHTF9URVhUVVJFX0NVQkVfTUFQGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVmOTQyOTwiOUQoUZ2xUZXhQYXJhbWV0ZXJJaXZPRVMFcG5hbWUTFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhVHTF9URVhUVVJFX01JTl9GSUxURVIRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QVR0xfVEVYVFVSRV9CQVNFX0xFVkVMF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFFEdMX1RFWFRVUkVfTUFYX0xFVkVMEkdMX1RFWFRVUkVfTUFYX0xPRBJHTF9URVhUVVJFX01JTl9MT0QUR0xfVEVYVFVSRV9TV0laWkxFX0EUR0xfVEVYVFVSRV9TV0laWkxFX0IUR0xfVEVYVFVSRV9TV0laWkxFX0cUR0xfVEVYVFVSRV9TV0laWkxFX1IRR0xfVEVYVFVSRV9XUkFQX1IdR0xfREVQVEhfU1RFTkNJTF9URVhUVVJFX01PREUXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1IdR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQaR0xfVEVYVFVSRV9TUkdCX0RFQ09ERV9FWFSOUwyOVQaOVwaOWQiOWwoUZ2xUZXhQYXJhbWV0ZXJJaXZPRVMGcGFyYW1zBAIQCkdMX05FQVJFU1QJR0xfTElORUFSGUdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1QYR0xfTElORUFSX01JUE1BUF9ORUFSRVNUGEdMX05FQVJFU1RfTUlQTUFQX0xJTkVBUhdHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUhBHTF9DTEFNUF9UT19FREdFCUdMX1JFUEVBVBJHTF9NSVJST1JFRF9SRVBFQVQSR0xfQ0xBTVBfVE9fQk9SREVSBkdMX1JFRAhHTF9HUkVFTgdHTF9CTFVFCEdMX0FMUEhBB0dMX1pFUk8GR0xfT05FAhJnbFRleFBhcmFtZXRlckl1aXYDjl0Mjl8IjmEKEmdsVGV4UGFyYW1ldGVySXVpdgZ0YXJnZXQJEUdMX1RFWFRVUkVfQlVGRkVSDUdMX1RFWFRVUkVfMkQXR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMTR0xfVEVYVFVSRV8yRF9BUlJBWRlHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFH0dMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVkNR0xfVEVYVFVSRV8zRBNHTF9URVhUVVJFX0NVQkVfTUFQGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVmOYwyOZQiOZwoSZ2xUZXhQYXJhbWV0ZXJJdWl2BXBuYW1lExVHTF9URVhUVVJFX01BR19GSUxURVIVR0xfVEVYVFVSRV9NSU5fRklMVEVSEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UFUdMX1RFWFRVUkVfQkFTRV9MRVZFTBdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRRHTF9URVhUVVJFX01BWF9MRVZFTBJHTF9URVhUVVJFX01BWF9MT0QSR0xfVEVYVFVSRV9NSU5fTE9EFEdMX1RFWFRVUkVfU1dJWlpMRV9BFEdMX1RFWFRVUkVfU1dJWlpMRV9CFEdMX1RFWFRVUkVfU1dJWlpMRV9HFEdMX1RFWFRVUkVfU1dJWlpMRV9SEUdMX1RFWFRVUkVfV1JBUF9SHUdMX0RFUFRIX1NURU5DSUxfVEVYVFVSRV9NT0RFF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SHUdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUGkdMX1RFWFRVUkVfU1JHQl9ERUNPREVfRVhUjmkMjmsGjm0Gjm8IjnEKEmdsVGV4UGFyYW1ldGVySXVpdgZwYXJhbXMEAhAKR0xfTkVBUkVTVAlHTF9MSU5FQVIZR0xfTkVBUkVTVF9NSVBNQVBfTkVBUkVTVBhHTF9MSU5FQVJfTUlQTUFQX05FQVJFU1QYR0xfTkVBUkVTVF9NSVBNQVBfTElORUFSF0dMX0xJTkVBUl9NSVBNQVBfTElORUFSEEdMX0NMQU1QX1RPX0VER0UJR0xfUkVQRUFUEkdMX01JUlJPUkVEX1JFUEVBVBJHTF9DTEFNUF9UT19CT1JERVIGR0xfUkVECEdMX0dSRUVOB0dMX0JMVUUIR0xfQUxQSEEHR0xfWkVSTwZHTF9PTkUCFWdsVGV4UGFyYW1ldGVySXVpdkVYVAOOcwyOdQiOdwoVZ2xUZXhQYXJhbWV0ZXJJdWl2RVhUBnRhcmdldAkRR0xfVEVYVFVSRV9CVUZGRVINR0xfVEVYVFVSRV8yRBdHTF9URVhUVVJFX0VYVEVSTkFMX09FUxNHTF9URVhUVVJFXzJEX0FSUkFZGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWQ1HTF9URVhUVVJFXzNEE0dMX1RFWFRVUkVfQ1VCRV9NQVAZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWY55DI57CI59ChVnbFRleFBhcmFtZXRlckl1aXZFWFQFcG5hbWUTFUdMX1RFWFRVUkVfTUFHX0ZJTFRFUhVHTF9URVhUVVJFX01JTl9GSUxURVIRR0xfVEVYVFVSRV9XUkFQX1MRR0xfVEVYVFVSRV9XUkFQX1QVR0xfVEVYVFVSRV9CQVNFX0xFVkVMF0dMX1RFWFRVUkVfQ09NUEFSRV9GVU5DF0dMX1RFWFRVUkVfQ09NUEFSRV9NT0RFFEdMX1RFWFRVUkVfTUFYX0xFVkVMEkdMX1RFWFRVUkVfTUFYX0xPRBJHTF9URVhUVVJFX01JTl9MT0QUR0xfVEVYVFVSRV9TV0laWkxFX0EUR0xfVEVYVFVSRV9TV0laWkxFX0IUR0xfVEVYVFVSRV9TV0laWkxFX0cUR0xfVEVYVFVSRV9TV0laWkxFX1IRR0xfVEVYVFVSRV9XUkFQX1IdR0xfREVQVEhfU1RFTkNJTF9URVhUVVJFX01PREUXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1IdR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQaR0xfVEVYVFVSRV9TUkdCX0RFQ09ERV9FWFSOfwyOgQaOgwaOhQiOhwoVZ2xUZXhQYXJhbWV0ZXJJdWl2RVhUBnBhcmFtcwQCEApHTF9ORUFSRVNUCUdMX0xJTkVBUhlHTF9ORUFSRVNUX01JUE1BUF9ORUFSRVNUGEdMX0xJTkVBUl9NSVBNQVBfTkVBUkVTVBhHTF9ORUFSRVNUX01JUE1BUF9MSU5FQVIXR0xfTElORUFSX01JUE1BUF9MSU5FQVIQR0xfQ0xBTVBfVE9fRURHRQlHTF9SRVBFQVQSR0xfTUlSUk9SRURfUkVQRUFUEkdMX0NMQU1QX1RPX0JPUkRFUgZHTF9SRUQIR0xfR1JFRU4HR0xfQkxVRQhHTF9BTFBIQQdHTF9aRVJPBkdMX09ORQIVZ2xUZXhQYXJhbWV0ZXJJdWl2T0VTA46JDI6LCI6NChVnbFRleFBhcmFtZXRlckl1aXZPRVMGdGFyZ2V0CRFHTF9URVhUVVJFX0JVRkZFUg1HTF9URVhUVVJFXzJEF0dMX1RFWFRVUkVfRVhURVJOQUxfT0VTE0dMX1RFWFRVUkVfMkRfQVJSQVkZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZDUdMX1RFWFRVUkVfM0QTR0xfVEVYVFVSRV9DVUJFX01BUBlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZjo8MjpEIjpMKFWdsVGV4UGFyYW1ldGVySXVpdk9FUwVwbmFtZRMVR0xfVEVYVFVSRV9NQUdfRklMVEVSFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBVHTF9URVhUVVJFX0JBU0VfTEVWRUwXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUUR0xfVEVYVFVSRV9NQVhfTEVWRUwSR0xfVEVYVFVSRV9NQVhfTE9EEkdMX1RFWFRVUkVfTUlOX0xPRBRHTF9URVhUVVJFX1NXSVpaTEVfQRRHTF9URVhUVVJFX1NXSVpaTEVfQhRHTF9URVhUVVJFX1NXSVpaTEVfRxRHTF9URVhUVVJFX1NXSVpaTEVfUhFHTF9URVhUVVJFX1dSQVBfUh1HTF9ERVBUSF9TVEVOQ0lMX1RFWFRVUkVfTU9ERRdHTF9URVhUVVJFX0JPUkRFUl9DT0xPUh1HTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVBpHTF9URVhUVVJFX1NSR0JfREVDT0RFX0VYVI6VDI6XBo6ZBo6bCI6dChVnbFRleFBhcmFtZXRlckl1aXZPRVMGcGFyYW1zBAIQCkdMX05FQVJFU1QJR0xfTElORUFSGUdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1QYR0xfTElORUFSX01JUE1BUF9ORUFSRVNUGEdMX05FQVJFU1RfTUlQTUFQX0xJTkVBUhdHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUhBHTF9DTEFNUF9UT19FREdFCUdMX1JFUEVBVBJHTF9NSVJST1JFRF9SRVBFQVQSR0xfQ0xBTVBfVE9fQk9SREVSBkdMX1JFRAhHTF9HUkVFTgdHTF9CTFVFCEdMX0FMUEhBB0dMX1pFUk8GR0xfT05FAg9nbFRleFBhcmFtZXRlcmYDjp8MjqEIjqMKD2dsVGV4UGFyYW1ldGVyZgZ0YXJnZXQJEUdMX1RFWFRVUkVfQlVGRkVSDUdMX1RFWFRVUkVfMkQXR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMTR0xfVEVYVFVSRV8yRF9BUlJBWRlHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFH0dMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVkNR0xfVEVYVFVSRV8zRBNHTF9URVhUVVJFX0NVQkVfTUFQGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVmOpQyOpwiOqQoPZ2xUZXhQYXJhbWV0ZXJmCXBhcmFtZXRlchMXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1IVR0xfVEVYVFVSRV9NQUdfRklMVEVSFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBVHTF9URVhUVVJFX0JBU0VfTEVWRUwXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUUR0xfVEVYVFVSRV9NQVhfTEVWRUwSR0xfVEVYVFVSRV9NQVhfTE9EEkdMX1RFWFRVUkVfTUlOX0xPRBRHTF9URVhUVVJFX1NXSVpaTEVfQRRHTF9URVhUVVJFX1NXSVpaTEVfQhRHTF9URVhUVVJFX1NXSVpaTEVfRxRHTF9URVhUVVJFX1NXSVpaTEVfUhFHTF9URVhUVVJFX1dSQVBfUh1HTF9ERVBUSF9TVEVOQ0lMX1RFWFRVUkVfTU9ERR1HTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVBpHTF9URVhUVVJFX1NSR0JfREVDT0RFX0VYVI6rDI6tCI6vCg9nbFRleFBhcmFtZXRlcmYFdmFsdWUQCkdMX05FQVJFU1QJR0xfTElORUFSGUdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1QYR0xfTElORUFSX01JUE1BUF9ORUFSRVNUGEdMX05FQVJFU1RfTUlQTUFQX0xJTkVBUhdHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUhBHTF9DTEFNUF9UT19FREdFCUdMX1JFUEVBVBJHTF9NSVJST1JFRF9SRVBFQVQSR0xfQ0xBTVBfVE9fQk9SREVSBkdMX1JFRAhHTF9HUkVFTgdHTF9CTFVFCEdMX0FMUEhBB0dMX1pFUk8GR0xfT05FAhBnbFRleFBhcmFtZXRlcmZ2A46xDI6zCI61ChBnbFRleFBhcmFtZXRlcmZ2BnRhcmdldAkRR0xfVEVYVFVSRV9CVUZGRVINR0xfVEVYVFVSRV8yRBdHTF9URVhUVVJFX0VYVEVSTkFMX09FUxNHTF9URVhUVVJFXzJEX0FSUkFZGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWQ1HTF9URVhUVVJFXzNEE0dMX1RFWFRVUkVfQ1VCRV9NQVAZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWY63DI65CI67ChBnbFRleFBhcmFtZXRlcmZ2BXBuYW1lExVHTF9URVhUVVJFX01BR19GSUxURVIVR0xfVEVYVFVSRV9NSU5fRklMVEVSEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UFUdMX1RFWFRVUkVfQkFTRV9MRVZFTBdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRRHTF9URVhUVVJFX01BWF9MRVZFTBJHTF9URVhUVVJFX01BWF9MT0QSR0xfVEVYVFVSRV9NSU5fTE9EFEdMX1RFWFRVUkVfU1dJWlpMRV9BFEdMX1RFWFRVUkVfU1dJWlpMRV9CFEdMX1RFWFRVUkVfU1dJWlpMRV9HFEdMX1RFWFRVUkVfU1dJWlpMRV9SEUdMX1RFWFRVUkVfV1JBUF9SHUdMX0RFUFRIX1NURU5DSUxfVEVYVFVSRV9NT0RFF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SHUdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUGkdMX1RFWFRVUkVfU1JHQl9ERUNPREVfRVhUjr0Mjr8GjsEGjsMIjsUKEGdsVGV4UGFyYW1ldGVyZnYGcGFyYW1zBAIQCkdMX05FQVJFU1QJR0xfTElORUFSGUdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1QYR0xfTElORUFSX01JUE1BUF9ORUFSRVNUGEdMX05FQVJFU1RfTUlQTUFQX0xJTkVBUhdHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUhBHTF9DTEFNUF9UT19FREdFCUdMX1JFUEVBVBJHTF9NSVJST1JFRF9SRVBFQVQSR0xfQ0xBTVBfVE9fQk9SREVSBkdMX1JFRAhHTF9HUkVFTgdHTF9CTFVFCEdMX0FMUEhBB0dMX1pFUk8GR0xfT05FAg9nbFRleFBhcmFtZXRlcmkDjscMjskIjssKD2dsVGV4UGFyYW1ldGVyaQZ0YXJnZXQJEUdMX1RFWFRVUkVfQlVGRkVSDUdMX1RFWFRVUkVfMkQXR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMTR0xfVEVYVFVSRV8yRF9BUlJBWRlHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFH0dMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVkNR0xfVEVYVFVSRV8zRBNHTF9URVhUVVJFX0NVQkVfTUFQGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVmOzQyOzwiO0QoPZ2xUZXhQYXJhbWV0ZXJpCXBhcmFtZXRlchMXR0xfVEVYVFVSRV9CT1JERVJfQ09MT1IVR0xfVEVYVFVSRV9NQUdfRklMVEVSFUdMX1RFWFRVUkVfTUlOX0ZJTFRFUhFHTF9URVhUVVJFX1dSQVBfUxFHTF9URVhUVVJFX1dSQVBfVBVHTF9URVhUVVJFX0JBU0VfTEVWRUwXR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMXR0xfVEVYVFVSRV9DT01QQVJFX01PREUUR0xfVEVYVFVSRV9NQVhfTEVWRUwSR0xfVEVYVFVSRV9NQVhfTE9EEkdMX1RFWFRVUkVfTUlOX0xPRBRHTF9URVhUVVJFX1NXSVpaTEVfQRRHTF9URVhUVVJFX1NXSVpaTEVfQhRHTF9URVhUVVJFX1NXSVpaTEVfRxRHTF9URVhUVVJFX1NXSVpaTEVfUhFHTF9URVhUVVJFX1dSQVBfUh1HTF9ERVBUSF9TVEVOQ0lMX1RFWFRVUkVfTU9ERR1HTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVBpHTF9URVhUVVJFX1NSR0JfREVDT0RFX0VYVI7TDI7VCI7XCg9nbFRleFBhcmFtZXRlcmkFdmFsdWUQCkdMX05FQVJFU1QJR0xfTElORUFSGUdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1QYR0xfTElORUFSX01JUE1BUF9ORUFSRVNUGEdMX05FQVJFU1RfTUlQTUFQX0xJTkVBUhdHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUhBHTF9DTEFNUF9UT19FREdFCUdMX1JFUEVBVBJHTF9NSVJST1JFRF9SRVBFQVQSR0xfQ0xBTVBfVE9fQk9SREVSBkdMX1JFRAhHTF9HUkVFTgdHTF9CTFVFCEdMX0FMUEhBB0dMX1pFUk8GR0xfT05FAhBnbFRleFBhcmFtZXRlcml2A47ZDI7bCI7dChBnbFRleFBhcmFtZXRlcml2BnRhcmdldAkRR0xfVEVYVFVSRV9CVUZGRVINR0xfVEVYVFVSRV8yRBdHTF9URVhUVVJFX0VYVEVSTkFMX09FUxNHTF9URVhUVVJFXzJEX0FSUkFZGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWQ1HTF9URVhUVVJFXzNEE0dMX1RFWFRVUkVfQ1VCRV9NQVAZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWY7fDI7hCI7jChBnbFRleFBhcmFtZXRlcml2BXBuYW1lExVHTF9URVhUVVJFX01BR19GSUxURVIVR0xfVEVYVFVSRV9NSU5fRklMVEVSEUdMX1RFWFRVUkVfV1JBUF9TEUdMX1RFWFRVUkVfV1JBUF9UFUdMX1RFWFRVUkVfQkFTRV9MRVZFTBdHTF9URVhUVVJFX0NPTVBBUkVfRlVOQxdHTF9URVhUVVJFX0NPTVBBUkVfTU9ERRRHTF9URVhUVVJFX01BWF9MRVZFTBJHTF9URVhUVVJFX01BWF9MT0QSR0xfVEVYVFVSRV9NSU5fTE9EFEdMX1RFWFRVUkVfU1dJWlpMRV9BFEdMX1RFWFRVUkVfU1dJWlpMRV9CFEdMX1RFWFRVUkVfU1dJWlpMRV9HFEdMX1RFWFRVUkVfU1dJWlpMRV9SEUdMX1RFWFRVUkVfV1JBUF9SHUdMX0RFUFRIX1NURU5DSUxfVEVYVFVSRV9NT0RFF0dMX1RFWFRVUkVfQk9SREVSX0NPTE9SHUdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUGkdMX1RFWFRVUkVfU1JHQl9ERUNPREVfRVhUjuUMjucGjukGjusIju0KEGdsVGV4UGFyYW1ldGVyaXYGcGFyYW1zBAIQCkdMX05FQVJFU1QJR0xfTElORUFSGUdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1QYR0xfTElORUFSX01JUE1BUF9ORUFSRVNUGEdMX05FQVJFU1RfTUlQTUFQX0xJTkVBUhdHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUhBHTF9DTEFNUF9UT19FREdFCUdMX1JFUEVBVBJHTF9NSVJST1JFRF9SRVBFQVQSR0xfQ0xBTVBfVE9fQk9SREVSBkdMX1JFRAhHTF9HUkVFTgdHTF9CTFVFCEdMX0FMUEhBB0dMX1pFUk8GR0xfT05FAg5nbFRleFN0b3JhZ2UyRAKO7wyO8QiO8woOZ2xUZXhTdG9yYWdlMkQGdGFyZ2V0Ag1HTF9URVhUVVJFXzJEE0dMX1RFWFRVUkVfQ1VCRV9NQVCO9QyO9wiO+QoOZ2xUZXhTdG9yYWdlMkQOaW50ZXJuYWxmb3JtYXRoFUdMX0NPTVBSRVNTRURfUjExX0VBQxZHTF9DT01QUkVTU0VEX1JHMTFfRUFDF0dMX0NPTVBSRVNTRURfUkdCOF9FVEMyK0dMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIcR0xfQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQxxHTF9DT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDHUdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDGEdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMixHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMhNHTF9ERVBUSDI0X1NURU5DSUw4FEdMX0RFUFRIMzJGX1NURU5DSUw4FEdMX0RFUFRIX0NPTVBPTkVOVDE2FEdMX0RFUFRIX0NPTVBPTkVOVDI0FUdMX0RFUFRIX0NPTVBPTkVOVDMyRhFHTF9SMTFGX0cxMUZfQjEwRgdHTF9SMTZGB0dMX1IxNkkIR0xfUjE2VUkHR0xfUjMyRgdHTF9SMzJJCEdMX1IzMlVJBUdMX1I4BkdMX1I4SQdHTF9SOFVJC0dMX1I4X1NOT1JNCEdMX1JHMTZGCEdMX1JHMTZJCUdMX1JHMTZVSQhHTF9SRzMyRghHTF9SRzMySQlHTF9SRzMyVUkGR0xfUkc4B0dMX1JHOEkIR0xfUkc4VUkMR0xfUkc4X1NOT1JNC0dMX1JHQjEwX0EyDUdMX1JHQjEwX0EyVUkJR0xfUkdCMTZGCUdMX1JHQjE2SQpHTF9SR0IxNlVJCUdMX1JHQjMyRglHTF9SR0IzMkkKR0xfUkdCMzJVSQlHTF9SR0I1NjUKR0xfUkdCNV9BMQdHTF9SR0I4CEdMX1JHQjhJCUdMX1JHQjhVSQ1HTF9SR0I4X1NOT1JNCkdMX1JHQjlfRTUKR0xfUkdCQTE2RgpHTF9SR0JBMTZJC0dMX1JHQkExNlVJCkdMX1JHQkEzMkYKR0xfUkdCQTMySQtHTF9SR0JBMzJVSQhHTF9SR0JBNAhHTF9SR0JBOAlHTF9SR0JBOEkKR0xfUkdCQThVSQ5HTF9SR0JBOF9TTk9STQhHTF9TUkdCOA9HTF9TUkdCOF9BTFBIQTgGR0xfUjE2DEdMX1IxNl9TTk9STQdHTF9SRzE2DUdMX1JHMTZfU05PUk0IR0xfUkdCMTYOR0xfUkdCMTZfU05PUk0JR0xfUkdCQTE2D0dMX1JHQkExNl9TTk9STR1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMBxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDYcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg4JUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTAkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NiRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDglR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4EUdMX1NURU5DSUxfSU5ERVg4DUdMX0FMUEhBOF9FWFQQR0xfRVRDMV9SR0I4X09FUwtHTF9CR1JBX0VYVAIRZ2xUZXhTdG9yYWdlMkRFWFQCjvsMjv0Ijv8KEWdsVGV4U3RvcmFnZTJERVhUBnRhcmdldAINR0xfVEVYVFVSRV8yRBNHTF9URVhUVVJFX0NVQkVfTUFQjwEMjwMIjwUKEWdsVGV4U3RvcmFnZTJERVhUDmludGVybmFsZm9ybWF0aBVHTF9DT01QUkVTU0VEX1IxMV9FQUMWR0xfQ09NUFJFU1NFRF9SRzExX0VBQxdHTF9DT01QUkVTU0VEX1JHQjhfRVRDMitHTF9DT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyHEdMX0NPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMcR0xfQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQx1HTF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQyNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQxhHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzIsR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzITR0xfREVQVEgyNF9TVEVOQ0lMOBRHTF9ERVBUSDMyRl9TVEVOQ0lMOBRHTF9ERVBUSF9DT01QT05FTlQxNhRHTF9ERVBUSF9DT01QT05FTlQyNBVHTF9ERVBUSF9DT01QT05FTlQzMkYRR0xfUjExRl9HMTFGX0IxMEYHR0xfUjE2RgdHTF9SMTZJCEdMX1IxNlVJB0dMX1IzMkYHR0xfUjMySQhHTF9SMzJVSQVHTF9SOAZHTF9SOEkHR0xfUjhVSQtHTF9SOF9TTk9STQhHTF9SRzE2RghHTF9SRzE2SQlHTF9SRzE2VUkIR0xfUkczMkYIR0xfUkczMkkJR0xfUkczMlVJBkdMX1JHOAdHTF9SRzhJCEdMX1JHOFVJDEdMX1JHOF9TTk9STQtHTF9SR0IxMF9BMg1HTF9SR0IxMF9BMlVJCUdMX1JHQjE2RglHTF9SR0IxNkkKR0xfUkdCMTZVSQlHTF9SR0IzMkYJR0xfUkdCMzJJCkdMX1JHQjMyVUkJR0xfUkdCNTY1CkdMX1JHQjVfQTEHR0xfUkdCOAhHTF9SR0I4SQlHTF9SR0I4VUkNR0xfUkdCOF9TTk9STQpHTF9SR0I5X0U1CkdMX1JHQkExNkYKR0xfUkdCQTE2SQtHTF9SR0JBMTZVSQpHTF9SR0JBMzJGCkdMX1JHQkEzMkkLR0xfUkdCQTMyVUkIR0xfUkdCQTQIR0xfUkdCQTgJR0xfUkdCQThJCkdMX1JHQkE4VUkOR0xfUkdCQThfU05PUk0IR0xfU1JHQjgPR0xfU1JHQjhfQUxQSEE4BkdMX1IxNgxHTF9SMTZfU05PUk0HR0xfUkcxNg1HTF9SRzE2X1NOT1JNCEdMX1JHQjE2DkdMX1JHQjE2X1NOT1JNCUdMX1JHQkExNg9HTF9SR0JBMTZfU05PUk0dR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTAcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NRxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDgdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTAdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTIbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4OCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwJEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NSRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDYkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4JUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTAlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OBFHTF9TVEVOQ0lMX0lOREVYOA1HTF9BTFBIQThfRVhUEEdMX0VUQzFfUkdCOF9PRVMLR0xfQkdSQV9FWFQCGWdsVGV4U3RvcmFnZTJETXVsdGlzYW1wbGUCjwcMjwkIjwsKGWdsVGV4U3RvcmFnZTJETXVsdGlzYW1wbGUGdGFyZ2V0ARlHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFjw0Mjw8IjxEKGWdsVGV4U3RvcmFnZTJETXVsdGlzYW1wbGUOaW50ZXJuYWxmb3JtYXQ3E0dMX0RFUFRIMjRfU1RFTkNJTDgUR0xfREVQVEgzMkZfU1RFTkNJTDgUR0xfREVQVEhfQ09NUE9ORU5UMTYUR0xfREVQVEhfQ09NUE9ORU5UMjQVR0xfREVQVEhfQ09NUE9ORU5UMzJGEUdMX1IxMUZfRzExRl9CMTBGB0dMX1IxNkYHR0xfUjE2SQhHTF9SMTZVSQdHTF9SMzJGB0dMX1IzMkkIR0xfUjMyVUkFR0xfUjgGR0xfUjhJB0dMX1I4VUkLR0xfUjhfU05PUk0IR0xfUkcxNkYIR0xfUkcxNkkJR0xfUkcxNlVJCEdMX1JHMzJGCEdMX1JHMzJJCUdMX1JHMzJVSQZHTF9SRzgHR0xfUkc4SQhHTF9SRzhVSQxHTF9SRzhfU05PUk0LR0xfUkdCMTBfQTINR0xfUkdCMTBfQTJVSQlHTF9SR0IxNkYJR0xfUkdCMTZJCkdMX1JHQjE2VUkJR0xfUkdCMzJGCUdMX1JHQjMySQpHTF9SR0IzMlVJCUdMX1JHQjU2NQpHTF9SR0I1X0ExB0dMX1JHQjgIR0xfUkdCOEkJR0xfUkdCOFVJDUdMX1JHQjhfU05PUk0KR0xfUkdCOV9FNQpHTF9SR0JBMTZGCkdMX1JHQkExNkkLR0xfUkdCQTE2VUkKR0xfUkdCQTMyRgpHTF9SR0JBMzJJC0dMX1JHQkEzMlVJCEdMX1JHQkE0CEdMX1JHQkE4CUdMX1JHQkE4SQpHTF9SR0JBOFVJDkdMX1JHQkE4X1NOT1JNCEdMX1NSR0I4D0dMX1NSR0I4X0FMUEhBOBFHTF9TVEVOQ0lMX0lOREVYOAIOZ2xUZXhTdG9yYWdlM0QCjxMMjxUIjxcKDmdsVGV4U3RvcmFnZTNEBnRhcmdldAMTR0xfVEVYVFVSRV8yRF9BUlJBWQ1HTF9URVhUVVJFXzNEGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVmPGQyPGwiPHQoOZ2xUZXhTdG9yYWdlM0QOaW50ZXJuYWxmb3JtYXRdFUdMX0NPTVBSRVNTRURfUjExX0VBQxZHTF9DT01QUkVTU0VEX1JHMTFfRUFDF0dMX0NPTVBSRVNTRURfUkdCOF9FVEMyK0dMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIcR0xfQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQxxHTF9DT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDHUdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDGEdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMixHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMhNHTF9ERVBUSDI0X1NURU5DSUw4FEdMX0RFUFRIMzJGX1NURU5DSUw4FEdMX0RFUFRIX0NPTVBPTkVOVDE2FEdMX0RFUFRIX0NPTVBPTkVOVDI0FUdMX0RFUFRIX0NPTVBPTkVOVDMyRhFHTF9SMTFGX0cxMUZfQjEwRgdHTF9SMTZGB0dMX1IxNkkIR0xfUjE2VUkHR0xfUjMyRgdHTF9SMzJJCEdMX1IzMlVJBUdMX1I4BkdMX1I4SQdHTF9SOFVJC0dMX1I4X1NOT1JNCEdMX1JHMTZGCEdMX1JHMTZJCUdMX1JHMTZVSQhHTF9SRzMyRghHTF9SRzMySQlHTF9SRzMyVUkGR0xfUkc4B0dMX1JHOEkIR0xfUkc4VUkMR0xfUkc4X1NOT1JNC0dMX1JHQjEwX0EyDUdMX1JHQjEwX0EyVUkJR0xfUkdCMTZGCUdMX1JHQjE2SQpHTF9SR0IxNlVJCUdMX1JHQjMyRglHTF9SR0IzMkkKR0xfUkdCMzJVSQlHTF9SR0I1NjUKR0xfUkdCNV9BMQdHTF9SR0I4CEdMX1JHQjhJCUdMX1JHQjhVSQ1HTF9SR0I4X1NOT1JNCkdMX1JHQjlfRTUKR0xfUkdCQTE2RgpHTF9SR0JBMTZJC0dMX1JHQkExNlVJCkdMX1JHQkEzMkYKR0xfUkdCQTMySQtHTF9SR0JBMzJVSQhHTF9SR0JBNAhHTF9SR0JBOAlHTF9SR0JBOEkKR0xfUkdCQThVSQ5HTF9SR0JBOF9TTk9STQhHTF9TUkdCOA9HTF9TUkdCOF9BTFBIQTgdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTAcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NRxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDgdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTAdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTIbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4OCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwJEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NSRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDYkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4JUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTAlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OBFHTF9TVEVOQ0lMX0lOREVYOAIRZ2xUZXhTdG9yYWdlM0RFWFQCjx8MjyEIjyMKEWdsVGV4U3RvcmFnZTNERVhUBnRhcmdldAMTR0xfVEVYVFVSRV8yRF9BUlJBWQ1HTF9URVhUVVJFXzNEGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVmPJQyPJwiPKQoRZ2xUZXhTdG9yYWdlM0RFWFQOaW50ZXJuYWxmb3JtYXRdFUdMX0NPTVBSRVNTRURfUjExX0VBQxZHTF9DT01QUkVTU0VEX1JHMTFfRUFDF0dMX0NPTVBSRVNTRURfUkdCOF9FVEMyK0dMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIcR0xfQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQxxHTF9DT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDHUdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDGEdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMixHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMhNHTF9ERVBUSDI0X1NURU5DSUw4FEdMX0RFUFRIMzJGX1NURU5DSUw4FEdMX0RFUFRIX0NPTVBPTkVOVDE2FEdMX0RFUFRIX0NPTVBPTkVOVDI0FUdMX0RFUFRIX0NPTVBPTkVOVDMyRhFHTF9SMTFGX0cxMUZfQjEwRgdHTF9SMTZGB0dMX1IxNkkIR0xfUjE2VUkHR0xfUjMyRgdHTF9SMzJJCEdMX1IzMlVJBUdMX1I4BkdMX1I4SQdHTF9SOFVJC0dMX1I4X1NOT1JNCEdMX1JHMTZGCEdMX1JHMTZJCUdMX1JHMTZVSQhHTF9SRzMyRghHTF9SRzMySQlHTF9SRzMyVUkGR0xfUkc4B0dMX1JHOEkIR0xfUkc4VUkMR0xfUkc4X1NOT1JNC0dMX1JHQjEwX0EyDUdMX1JHQjEwX0EyVUkJR0xfUkdCMTZGCUdMX1JHQjE2SQpHTF9SR0IxNlVJCUdMX1JHQjMyRglHTF9SR0IzMkkKR0xfUkdCMzJVSQlHTF9SR0I1NjUKR0xfUkdCNV9BMQdHTF9SR0I4CEdMX1JHQjhJCUdMX1JHQjhVSQ1HTF9SR0I4X1NOT1JNCkdMX1JHQjlfRTUKR0xfUkdCQTE2RgpHTF9SR0JBMTZJC0dMX1JHQkExNlVJCkdMX1JHQkEzMkYKR0xfUkdCQTMySQtHTF9SR0JBMzJVSQhHTF9SR0JBNAhHTF9SR0JBOAlHTF9SR0JBOEkKR0xfUkdCQThVSQ5HTF9SR0JBOF9TTk9STQhHTF9TUkdCOA9HTF9TUkdCOF9BTFBIQTgdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTAcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NRxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDgdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTAdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTIbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4OCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwJEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NSRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDYkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4JUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTAlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OBFHTF9TVEVOQ0lMX0lOREVYOAIZZ2xUZXhTdG9yYWdlM0RNdWx0aXNhbXBsZQKPKwyPLQiPLwoZZ2xUZXhTdG9yYWdlM0RNdWx0aXNhbXBsZQZ0YXJnZXQBH0dMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVmPMQyPMwiPNQoZZ2xUZXhTdG9yYWdlM0RNdWx0aXNhbXBsZQ5pbnRlcm5hbGZvcm1hdDcTR0xfREVQVEgyNF9TVEVOQ0lMOBRHTF9ERVBUSDMyRl9TVEVOQ0lMOBRHTF9ERVBUSF9DT01QT05FTlQxNhRHTF9ERVBUSF9DT01QT05FTlQyNBVHTF9ERVBUSF9DT01QT05FTlQzMkYRR0xfUjExRl9HMTFGX0IxMEYHR0xfUjE2RgdHTF9SMTZJCEdMX1IxNlVJB0dMX1IzMkYHR0xfUjMySQhHTF9SMzJVSQVHTF9SOAZHTF9SOEkHR0xfUjhVSQtHTF9SOF9TTk9STQhHTF9SRzE2RghHTF9SRzE2SQlHTF9SRzE2VUkIR0xfUkczMkYIR0xfUkczMkkJR0xfUkczMlVJBkdMX1JHOAdHTF9SRzhJCEdMX1JHOFVJDEdMX1JHOF9TTk9STQtHTF9SR0IxMF9BMg1HTF9SR0IxMF9BMlVJCUdMX1JHQjE2RglHTF9SR0IxNkkKR0xfUkdCMTZVSQlHTF9SR0IzMkYJR0xfUkdCMzJJCkdMX1JHQjMyVUkJR0xfUkdCNTY1CkdMX1JHQjVfQTEHR0xfUkdCOAhHTF9SR0I4SQlHTF9SR0I4VUkNR0xfUkdCOF9TTk9STQpHTF9SR0I5X0U1CkdMX1JHQkExNkYKR0xfUkdCQTE2SQtHTF9SR0JBMTZVSQpHTF9SR0JBMzJGCkdMX1JHQkEzMkkLR0xfUkdCQTMyVUkIR0xfUkdCQTQIR0xfUkdCQTgJR0xfUkdCQThJCkdMX1JHQkE4VUkOR0xfUkdCQThfU05PUk0IR0xfU1JHQjgPR0xfU1JHQjhfQUxQSEE4EUdMX1NURU5DSUxfSU5ERVg4AhxnbFRleFN0b3JhZ2UzRE11bHRpc2FtcGxlT0VTAo83DI85CI87ChxnbFRleFN0b3JhZ2UzRE11bHRpc2FtcGxlT0VTBnRhcmdldAEfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWY89DI8/CI9BChxnbFRleFN0b3JhZ2UzRE11bHRpc2FtcGxlT0VTDmludGVybmFsZm9ybWF0NxNHTF9ERVBUSDI0X1NURU5DSUw4FEdMX0RFUFRIMzJGX1NURU5DSUw4FEdMX0RFUFRIX0NPTVBPTkVOVDE2FEdMX0RFUFRIX0NPTVBPTkVOVDI0FUdMX0RFUFRIX0NPTVBPTkVOVDMyRhFHTF9SMTFGX0cxMUZfQjEwRgdHTF9SMTZGB0dMX1IxNkkIR0xfUjE2VUkHR0xfUjMyRgdHTF9SMzJJCEdMX1IzMlVJBUdMX1I4BkdMX1I4SQdHTF9SOFVJC0dMX1I4X1NOT1JNCEdMX1JHMTZGCEdMX1JHMTZJCUdMX1JHMTZVSQhHTF9SRzMyRghHTF9SRzMySQlHTF9SRzMyVUkGR0xfUkc4B0dMX1JHOEkIR0xfUkc4VUkMR0xfUkc4X1NOT1JNC0dMX1JHQjEwX0EyDUdMX1JHQjEwX0EyVUkJR0xfUkdCMTZGCUdMX1JHQjE2SQpHTF9SR0IxNlVJCUdMX1JHQjMyRglHTF9SR0IzMkkKR0xfUkdCMzJVSQlHTF9SR0I1NjUKR0xfUkdCNV9BMQdHTF9SR0I4CEdMX1JHQjhJCUdMX1JHQjhVSQ1HTF9SR0I4X1NOT1JNCkdMX1JHQjlfRTUKR0xfUkdCQTE2RgpHTF9SR0JBMTZJC0dMX1JHQkExNlVJCkdMX1JHQkEzMkYKR0xfUkdCQTMySQtHTF9SR0JBMzJVSQhHTF9SR0JBNAhHTF9SR0JBOAlHTF9SR0JBOEkKR0xfUkdCQThVSQ5HTF9SR0JBOF9TTk9STQhHTF9TUkdCOA9HTF9TUkdCOF9BTFBIQTgRR0xfU1RFTkNJTF9JTkRFWDgCD2dsVGV4U3ViSW1hZ2UyRAOPQwyPRQiPRwoPZ2xUZXhTdWJJbWFnZTJEBnRhcmdldAcNR0xfVEVYVFVSRV8yRB5HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1geR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZHkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWh5HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1geR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZHkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWo9JDI9LCI9NCg9nbFRleFN1YkltYWdlMkQGZm9ybWF0DwhHTF9BTFBIQQxHTF9MVU1JTkFOQ0USR0xfTFVNSU5BTkNFX0FMUEhBBkdMX1JHQgdHTF9SR0JBEkdMX0RFUFRIX0NPTVBPTkVOVBBHTF9ERVBUSF9TVEVOQ0lMBkdMX1JFRA5HTF9SRURfSU5URUdFUgVHTF9SRw9HTF9SR0JBX0lOVEVHRVIOR0xfUkdCX0lOVEVHRVINR0xfUkdfSU5URUdFUhBHTF9TVEVOQ0lMX0lOREVYC0dMX0JHUkFfRVhUj08Mj1EIj1MKD2dsVGV4U3ViSW1hZ2UyRAR0eXBlOBBHTF9VTlNJR05FRF9CWVRFGUdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQZR0xfVU5TSUdORURfU0hPUlRfNV81XzVfMRdHTF9VTlNJR05FRF9TSE9SVF81XzZfNRFHTF9IQUxGX0ZMT0FUX09FUwdHTF9CWVRFCEdMX0ZMT0FUIUdMX0ZMT0FUXzMyX1VOU0lHTkVEX0lOVF8yNF84X1JFVg1HTF9IQUxGX0ZMT0FUBkdMX0lOVAhHTF9TSE9SVA9HTF9VTlNJR05FRF9JTlQfR0xfVU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFVhRHTF9VTlNJR05FRF9JTlRfMjRfOB5HTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYbR0xfVU5TSUdORURfSU5UXzVfOV85XzlfUkVWEUdMX1VOU0lHTkVEX1NIT1JUFUdMX0NPTVBSRVNTRURfUjExX0VBQxxHTF9DT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDF0dMX0NPTVBSRVNTRURfUkdCOF9FVEMyGEdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMitHTF9DT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyLEdMX0NPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyFkdMX0NPTVBSRVNTRURfUkcxMV9FQUMdR0xfQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUMcR0xfQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQyNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQxtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg4I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDUkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDYkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2HEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDgkR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4HUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTAdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTAlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMiVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyEEdMX0VUQzFfUkdCOF9PRVMCD2dsVGV4U3ViSW1hZ2UzRASPVQyPVwiPWQoPZ2xUZXhTdWJJbWFnZTNEBnRhcmdldAMTR0xfVEVYVFVSRV8yRF9BUlJBWQ1HTF9URVhUVVJFXzNEGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVmPWwyPXQiPXwoPZ2xUZXhTdWJJbWFnZTNEBmZvcm1hdA8IR0xfQUxQSEESR0xfREVQVEhfQ09NUE9ORU5UEEdMX0RFUFRIX1NURU5DSUwMR0xfTFVNSU5BTkNFEkdMX0xVTUlOQU5DRV9BTFBIQQZHTF9SRUQOR0xfUkVEX0lOVEVHRVIFR0xfUkcGR0xfUkdCB0dMX1JHQkEPR0xfUkdCQV9JTlRFR0VSDkdMX1JHQl9JTlRFR0VSDUdMX1JHX0lOVEVHRVIQR0xfU1RFTkNJTF9JTkRFWAtHTF9CR1JBX0VYVI9hDI9jCI9lCg9nbFRleFN1YkltYWdlM0QEdHlwZTgRR0xfSEFMRl9GTE9BVF9PRVMHR0xfQllURQhHTF9GTE9BVCFHTF9GTE9BVF8zMl9VTlNJR05FRF9JTlRfMjRfOF9SRVYNR0xfSEFMRl9GTE9BVAZHTF9JTlQIR0xfU0hPUlQQR0xfVU5TSUdORURfQllURQ9HTF9VTlNJR05FRF9JTlQfR0xfVU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFVhRHTF9VTlNJR05FRF9JTlRfMjRfOB5HTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYbR0xfVU5TSUdORURfSU5UXzVfOV85XzlfUkVWEUdMX1VOU0lHTkVEX1NIT1JUGUdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQZR0xfVU5TSUdORURfU0hPUlRfNV81XzVfMRdHTF9VTlNJR05FRF9TSE9SVF81XzZfNRVHTF9DT01QUkVTU0VEX1IxMV9FQUMcR0xfQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQxdHTF9DT01QUkVTU0VEX1JHQjhfRVRDMhhHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzIrR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMixHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMhZHTF9DT01QUkVTU0VEX1JHMTFfRUFDHUdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDHEdMX0NPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDUjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDUbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4OCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OBxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NRxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NhxHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4JEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTAdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTIlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMhBHTF9FVEMxX1JHQjhfT0VTj2cEj2kGj2sIj20KD2dsVGV4U3ViSW1hZ2UzRARkYXRhBAEAAhJnbFRleFN1YkltYWdlM0RPRVMEj28Mj3EIj3MKEmdsVGV4U3ViSW1hZ2UzRE9FUwZ0YXJnZXQDE0dMX1RFWFRVUkVfMkRfQVJSQVkNR0xfVEVYVFVSRV8zRBlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZj3UMj3cIj3kKEmdsVGV4U3ViSW1hZ2UzRE9FUwZmb3JtYXQPCEdMX0FMUEhBEkdMX0RFUFRIX0NPTVBPTkVOVBBHTF9ERVBUSF9TVEVOQ0lMDEdMX0xVTUlOQU5DRRJHTF9MVU1JTkFOQ0VfQUxQSEEGR0xfUkVEDkdMX1JFRF9JTlRFR0VSBUdMX1JHBkdMX1JHQgdHTF9SR0JBD0dMX1JHQkFfSU5URUdFUg5HTF9SR0JfSU5URUdFUg1HTF9SR19JTlRFR0VSEEdMX1NURU5DSUxfSU5ERVgLR0xfQkdSQV9FWFSPewyPfQiPfwoSZ2xUZXhTdWJJbWFnZTNET0VTBHR5cGU4EUdMX0hBTEZfRkxPQVRfT0VTB0dMX0JZVEUIR0xfRkxPQVQhR0xfRkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWDUdMX0hBTEZfRkxPQVQGR0xfSU5UCEdMX1NIT1JUEEdMX1VOU0lHTkVEX0JZVEUPR0xfVU5TSUdORURfSU5UH0dMX1VOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVYUR0xfVU5TSUdORURfSU5UXzI0XzgeR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWG0dMX1VOU0lHTkVEX0lOVF81XzlfOV85X1JFVhFHTF9VTlNJR05FRF9TSE9SVBlHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80GUdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzEXR0xfVU5TSUdORURfU0hPUlRfNV82XzUVR0xfQ09NUFJFU1NFRF9SMTFfRUFDHEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMXR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIYR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyK0dMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIsR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIWR0xfQ09NUFJFU1NFRF9SRzExX0VBQx1HTF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQxxHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDI0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDG0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzR4NCNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NBtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDQjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDQbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NSNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NRtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDYjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDYbR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg1I0dMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1G0dMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NiNHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NhtHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDgjR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDgcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NSRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDUcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NiRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDYcR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OCRHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDgdR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTAlR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMB1HTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMCVHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwHUdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyJUdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTIQR0xfRVRDMV9SR0I4X09FU4+BBI+DBo+FCI+HChJnbFRleFN1YkltYWdlM0RPRVMGcGl4ZWxzBAEAAhtnbFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MBj4kMj4sIj40KG2dsVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncwpidWZmZXJNb2RlAhZHTF9JTlRFUkxFQVZFRF9BVFRSSUJTE0dMX1NFUEFSQVRFX0FUVFJJQlMCC2dsVW5pZm9ybTFmAAIMZ2xVbmlmb3JtMWZ2AY+PBI+RBo+TCI+VCgxnbFVuaWZvcm0xZnYGdmFsdWVzBAICAAILZ2xVbmlmb3JtMWkAAgxnbFVuaWZvcm0xaXYBj5cEj5kGj5sIj50KDGdsVW5pZm9ybTFpdgZ2YWx1ZXMEAgIAAgxnbFVuaWZvcm0xdWkAAg1nbFVuaWZvcm0xdWl2AY+fBI+hBo+jCI+lCg1nbFVuaWZvcm0xdWl2BnZhbHVlcwQCAgACC2dsVW5pZm9ybTJmAAIMZ2xVbmlmb3JtMmZ2AY+nBI+pBo+rCI+tCgxnbFVuaWZvcm0yZnYGdmFsdWVzBAICAAILZ2xVbmlmb3JtMmkAAgxnbFVuaWZvcm0yaXYBj68Ej7EGj7MIj7UKDGdsVW5pZm9ybTJpdgZ2YWx1ZXMEAgIAAgxnbFVuaWZvcm0ydWkAAg1nbFVuaWZvcm0ydWl2AY+3BI+5Bo+7CI+9Cg1nbFVuaWZvcm0ydWl2BnZhbHVlcwQCAgACC2dsVW5pZm9ybTNmAAIMZ2xVbmlmb3JtM2Z2AY+/BI/BBo/DCI/FCgxnbFVuaWZvcm0zZnYGdmFsdWVzBAICAAILZ2xVbmlmb3JtM2kAAgxnbFVuaWZvcm0zaXYBj8cEj8kGj8sIj80KDGdsVW5pZm9ybTNpdgZ2YWx1ZXMEAgIAAgxnbFVuaWZvcm0zdWkAAg1nbFVuaWZvcm0zdWl2AY/PBI/RBo/TCI/VCg1nbFVuaWZvcm0zdWl2BnZhbHVlcwQCAgACC2dsVW5pZm9ybTRmAAIMZ2xVbmlmb3JtNGZ2AY/XBI/ZBo/bCI/dCgxnbFVuaWZvcm00ZnYGdmFsdWVzBAICAAILZ2xVbmlmb3JtNGkAAgxnbFVuaWZvcm00aXYBj98Ej+EGj+MIj+UKDGdsVW5pZm9ybTRpdgZ2YWx1ZXMEAgIAAgxnbFVuaWZvcm00dWkAAg1nbFVuaWZvcm00dWl2AY/nBI/pBo/rCI/tCg1nbFVuaWZvcm00dWl2BnZhbHVlcwQCAgACEmdsVW5pZm9ybU1hdHJpeDJmdgGP7wSP8QaP8wiP9QoSZ2xVbmlmb3JtTWF0cml4MmZ2BnZhbHVlcwQCAgACFGdsVW5pZm9ybU1hdHJpeDJ4M2Z2AY/3BI/5Bo/7CI/9ChRnbFVuaWZvcm1NYXRyaXgyeDNmdgZ2YWx1ZXMEAgIAAhZnbFVuaWZvcm1NYXRyaXgyeDNmdk5WAY//BJABBpADCJAFChZnbFVuaWZvcm1NYXRyaXgyeDNmdk5WBXZhbHVlBAICAAIUZ2xVbmlmb3JtTWF0cml4Mng0ZnYBkAcEkAkGkAsIkA0KFGdsVW5pZm9ybU1hdHJpeDJ4NGZ2BnZhbHVlcwQCAgACFmdsVW5pZm9ybU1hdHJpeDJ4NGZ2TlYBkA8EkBEGkBMIkBUKFmdsVW5pZm9ybU1hdHJpeDJ4NGZ2TlYFdmFsdWUEAgIAAhJnbFVuaWZvcm1NYXRyaXgzZnYBkBcEkBkGkBsIkB0KEmdsVW5pZm9ybU1hdHJpeDNmdgZ2YWx1ZXMEAgIAAhRnbFVuaWZvcm1NYXRyaXgzeDJmdgGQHwSQIQaQIwiQJQoUZ2xVbmlmb3JtTWF0cml4M3gyZnYGdmFsdWVzBAICAAIWZ2xVbmlmb3JtTWF0cml4M3gyZnZOVgGQJwSQKQaQKwiQLQoWZ2xVbmlmb3JtTWF0cml4M3gyZnZOVgV2YWx1ZQQCAgACFGdsVW5pZm9ybU1hdHJpeDN4NGZ2AZAvBJAxBpAzCJA1ChRnbFVuaWZvcm1NYXRyaXgzeDRmdgZ2YWx1ZXMEAgIAAhZnbFVuaWZvcm1NYXRyaXgzeDRmdk5WAZA3BJA5BpA7CJA9ChZnbFVuaWZvcm1NYXRyaXgzeDRmdk5WBXZhbHVlBAICAAISZ2xVbmlmb3JtTWF0cml4NGZ2AZA/BJBBBpBDCJBFChJnbFVuaWZvcm1NYXRyaXg0ZnYGdmFsdWVzBAICAAIUZ2xVbmlmb3JtTWF0cml4NHgyZnYBkEcEkEkGkEsIkE0KFGdsVW5pZm9ybU1hdHJpeDR4MmZ2BnZhbHVlcwQCAgACFmdsVW5pZm9ybU1hdHJpeDR4MmZ2TlYBkE8EkFEGkFMIkFUKFmdsVW5pZm9ybU1hdHJpeDR4MmZ2TlYFdmFsdWUEAgIAAhRnbFVuaWZvcm1NYXRyaXg0eDNmdgGQVwSQWQaQWwiQXQoUZ2xVbmlmb3JtTWF0cml4NHgzZnYGdmFsdWVzBAICAAIWZ2xVbmlmb3JtTWF0cml4NHgzZnZOVgGQXwSQYQaQYwiQZQoWZ2xVbmlmb3JtTWF0cml4NHgzZnZOVgV2YWx1ZQQCAgACDWdsVW5tYXBCdWZmZXIBkGcMkGkIkGsKDWdsVW5tYXBCdWZmZXIGdGFyZ2V0DQ9HTF9BUlJBWV9CVUZGRVIXR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVITR0xfQ09QWV9SRUFEX0JVRkZFUhRHTF9DT1BZX1dSSVRFX0JVRkZFUhRHTF9QSVhFTF9QQUNLX0JVRkZFUhZHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSHEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIRR0xfVU5JRk9STV9CVUZGRVIYR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSG0dMX0RJU1BBVENIX0lORElSRUNUX0JVRkZFUhdHTF9EUkFXX0lORElSRUNUX0JVRkZFUhhHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVIRR0xfVEVYVFVSRV9CVUZGRVICEGdsVW5tYXBCdWZmZXJPRVMBkG0MkG8IkHEKEGdsVW5tYXBCdWZmZXJPRVMGdGFyZ2V0DQ9HTF9BUlJBWV9CVUZGRVIXR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVITR0xfQ09QWV9SRUFEX0JVRkZFUhRHTF9DT1BZX1dSSVRFX0JVRkZFUhRHTF9QSVhFTF9QQUNLX0JVRkZFUhZHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSHEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIRR0xfVU5JRk9STV9CVUZGRVIYR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSG0dMX0RJU1BBVENIX0lORElSRUNUX0JVRkZFUhdHTF9EUkFXX0lORElSRUNUX0JVRkZFUhhHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVIRR0xfVEVYVFVSRV9CVUZGRVICEmdsVXNlUHJvZ3JhbVN0YWdlcwGQcwyQdQiQdwoSZ2xVc2VQcm9ncmFtU3RhZ2VzBnN0YWdlcwQSR0xfQUxMX1NIQURFUl9CSVRTFUdMX0NPTVBVVEVfU0hBREVSX0JJVBZHTF9GUkFHTUVOVF9TSEFERVJfQklUFEdMX1ZFUlRFWF9TSEFERVJfQklUAhRnbFZlcnRleEF0dHJpYkZvcm1hdAGQeQyQewiQfQoUZ2xWZXJ0ZXhBdHRyaWJGb3JtYXQEdHlwZQwHR0xfQllURQZHTF9JTlQIR0xfU0hPUlQQR0xfVU5TSUdORURfQllURQ9HTF9VTlNJR05FRF9JTlQRR0xfVU5TSUdORURfU0hPUlQIR0xfRklYRUQIR0xfRkxPQVQRR0xfSEFMRl9GTE9BVF9PRVMNR0xfSEFMRl9GTE9BVBVHTF9JTlRfMl8xMF8xMF8xMF9SRVYeR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWAhVnbFZlcnRleEF0dHJpYklGb3JtYXQBkH8MkIEIkIMKFWdsVmVydGV4QXR0cmliSUZvcm1hdAR0eXBlDAdHTF9CWVRFBkdMX0lOVAhHTF9TSE9SVBBHTF9VTlNJR05FRF9CWVRFD0dMX1VOU0lHTkVEX0lOVBFHTF9VTlNJR05FRF9TSE9SVAhHTF9GSVhFRAhHTF9GTE9BVBFHTF9IQUxGX0ZMT0FUX09FUw1HTF9IQUxGX0ZMT0FUFUdMX0lOVF8yXzEwXzEwXzEwX1JFVh5HTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYCFmdsVmVydGV4QXR0cmliSVBvaW50ZXIBkIUMkIcIkIkKFmdsVmVydGV4QXR0cmliSVBvaW50ZXIEdHlwZQwHR0xfQllURQZHTF9JTlQIR0xfU0hPUlQQR0xfVU5TSUdORURfQllURQ9HTF9VTlNJR05FRF9JTlQRR0xfVU5TSUdORURfU0hPUlQIR0xfRklYRUQIR0xfRkxPQVQRR0xfSEFMRl9GTE9BVF9PRVMNR0xfSEFMRl9GTE9BVBVHTF9JTlRfMl8xMF8xMF8xMF9SRVYeR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWAhVnbFZlcnRleEF0dHJpYlBvaW50ZXIBkIsMkI0IkI8KFWdsVmVydGV4QXR0cmliUG9pbnRlcgR0eXBlDAdHTF9CWVRFBkdMX0lOVAhHTF9TSE9SVBBHTF9VTlNJR05FRF9CWVRFD0dMX1VOU0lHTkVEX0lOVBFHTF9VTlNJR05FRF9TSE9SVAhHTF9GSVhFRAhHTF9GTE9BVBFHTF9IQUxGX0ZMT0FUX09FUw1HTF9IQUxGX0ZMT0FUFUdMX0lOVF8yXzEwXzEwXzEwX1JFVh5HTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVY=`
const globals_snippets_base64_file = `globals_snippets.base64`
const globals_snippets_base64_utf8 = true
-const globals_snippets_base64 = `AwhzbmlwcGV0cwZMYWJlbHMAAgMGsAMFCHNuaXBwZXRzCHBhcnRQYXRoAAIDUAUHCHNuaXBwZXRzCWZpZWxkUGF0aAACA7AHBAkGCwkIc25pcHBldHMMcmVsYXRpdmVQYXRoAAGwBVN0YXRlCENvbnRleHRzAg1BY3RpdmVRdWVyaWVzAAQVR0xfQU5ZX1NBTVBMRVNfUEFTU0VEIkdMX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkUoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1BSSU1JVElWRVNfV1JJVFRFThdHTF9QUklNSVRJVkVTX0dFTkVSQVRFRAINBg8EEQYTCAVTdGF0ZQhDb250ZXh0cwIRQWN0aXZlVGV4dHVyZVVuaXQgC0dMX1RFWFRVUkUwC0dMX1RFWFRVUkUxDEdMX1RFWFRVUkUxMAxHTF9URVhUVVJFMTEMR0xfVEVYVFVSRTEyDEdMX1RFWFRVUkUxMwxHTF9URVhUVVJFMTQMR0xfVEVYVFVSRTE1DEdMX1RFWFRVUkUxNgxHTF9URVhUVVJFMTcMR0xfVEVYVFVSRTE4DEdMX1RFWFRVUkUxOQtHTF9URVhUVVJFMgxHTF9URVhUVVJFMjAMR0xfVEVYVFVSRTIxDEdMX1RFWFRVUkUyMgxHTF9URVhUVVJFMjMMR0xfVEVYVFVSRTI0DEdMX1RFWFRVUkUyNQxHTF9URVhUVVJFMjYMR0xfVEVYVFVSRTI3DEdMX1RFWFRVUkUyOAxHTF9URVhUVVJFMjkLR0xfVEVYVFVSRTMMR0xfVEVYVFVSRTMwDEdMX1RFWFRVUkUzMQtHTF9URVhUVVJFNAtHTF9URVhUVVJFNQtHTF9URVhUVVJFNgtHTF9URVhUVVJFNwtHTF9URVhUVVJFOAtHTF9URVhUVVJFOQIVBBcGGQQbBh0IBVN0YXRlCENvbnRleHRzAhFCb3VuZEZyYW1lYnVmZmVycwADE0dMX0RSQVdfRlJBTUVCVUZGRVITR0xfUkVBRF9GUkFNRUJVRkZFUg5HTF9GUkFNRUJVRkZFUgIfBCEGIwQlBicIBVN0YXRlCENvbnRleHRzAhJCb3VuZFJlbmRlcmJ1ZmZlcnMAAQ9HTF9SRU5ERVJCVUZGRVICKQYrBi0ELwYxCAVTdGF0ZQhDb250ZXh0cwIFRGVidWcGT3V0cHV0AghHTF9GQUxTRQdHTF9UUlVFAjMGNQY3BDkGOwgFU3RhdGUIQ29udGV4dHMCBURlYnVnEU91dHB1dFN5bmNocm9ub3VzAghHTF9GQUxTRQdHTF9UUlVFAj0GPwRBBkMGRQRHBkkIBVN0YXRlCENvbnRleHRzAhJGcmFnbWVudE9wZXJhdGlvbnMFQmxlbmQCCERzdEFscGhhDxFHTF9DT05TVEFOVF9BTFBIQRFHTF9DT05TVEFOVF9DT0xPUgxHTF9EU1RfQUxQSEEMR0xfRFNUX0NPTE9SBkdMX09ORRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEbR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SFkdMX09ORV9NSU5VU19EU1RfQUxQSEEWR0xfT05FX01JTlVTX0RTVF9DT0xPUhZHTF9PTkVfTUlOVVNfU1JDX0FMUEhBFkdMX09ORV9NSU5VU19TUkNfQ09MT1IMR0xfU1JDX0FMUEhBFUdMX1NSQ19BTFBIQV9TQVRVUkFURQxHTF9TUkNfQ09MT1IHR0xfWkVSTwJLBk0ETwZRBlMEVQZXCAVTdGF0ZQhDb250ZXh0cwISRnJhZ21lbnRPcGVyYXRpb25zBUJsZW5kAgZEc3RSZ2IPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPAlkGWwRdBl8GYQRjBmUIBVN0YXRlCENvbnRleHRzAhJGcmFnbWVudE9wZXJhdGlvbnMFQmxlbmQCB0VuYWJsZWQCCEdMX0ZBTFNFB0dMX1RSVUUCZwZpBGsGbQZvBHEGcwgFU3RhdGUIQ29udGV4dHMCEkZyYWdtZW50T3BlcmF0aW9ucwVCbGVuZAINRXF1YXRpb25BbHBoYQULR0xfRlVOQ19BREQYR0xfRlVOQ19SRVZFUlNFX1NVQlRSQUNUEEdMX0ZVTkNfU1VCVFJBQ1QGR0xfTUFYBkdMX01JTgJ1BncEeQZ7Bn0EfwaAgQgFU3RhdGUIQ29udGV4dHMCEkZyYWdtZW50T3BlcmF0aW9ucwVCbGVuZAILRXF1YXRpb25SZ2IFC0dMX0ZVTkNfQUREGEdMX0ZVTkNfUkVWRVJTRV9TVUJUUkFDVBBHTF9GVU5DX1NVQlRSQUNUBkdMX01BWAZHTF9NSU4CgIMGgIUEgIcGgIkGgIsEgI0GgI8IBVN0YXRlCENvbnRleHRzAhJGcmFnbWVudE9wZXJhdGlvbnMFQmxlbmQCCFNyY0FscGhhDxFHTF9DT05TVEFOVF9BTFBIQRFHTF9DT05TVEFOVF9DT0xPUgxHTF9EU1RfQUxQSEEMR0xfRFNUX0NPTE9SBkdMX09ORRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEbR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SFkdMX09ORV9NSU5VU19EU1RfQUxQSEEWR0xfT05FX01JTlVTX0RTVF9DT0xPUhZHTF9PTkVfTUlOVVNfU1JDX0FMUEhBFkdMX09ORV9NSU5VU19TUkNfQ09MT1IMR0xfU1JDX0FMUEhBFUdMX1NSQ19BTFBIQV9TQVRVUkFURQxHTF9TUkNfQ09MT1IHR0xfWkVSTwKAkQaAkwSAlQaAlwaAmQSAmwaAnQgFU3RhdGUIQ29udGV4dHMCEkZyYWdtZW50T3BlcmF0aW9ucwVCbGVuZAIGU3JjUmdiDxFHTF9DT05TVEFOVF9BTFBIQRFHTF9DT05TVEFOVF9DT0xPUgxHTF9EU1RfQUxQSEEMR0xfRFNUX0NPTE9SBkdMX09ORRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEbR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SFkdMX09ORV9NSU5VU19EU1RfQUxQSEEWR0xfT05FX01JTlVTX0RTVF9DT0xPUhZHTF9PTkVfTUlOVVNfU1JDX0FMUEhBFkdMX09ORV9NSU5VU19TUkNfQ09MT1IMR0xfU1JDX0FMUEhBFUdMX1NSQ19BTFBIQV9TQVRVUkFURQxHTF9TUkNfQ09MT1IHR0xfWkVSTwKAnwaAoQaAowaApQSApwaAqQgFU3RhdGUIQ29udGV4dHMCEkZyYWdtZW50T3BlcmF0aW9ucwVEZXB0aARGdW5jCAlHTF9BTFdBWVMIR0xfRVFVQUwJR0xfR0VRVUFMCkdMX0dSRUFURVIJR0xfTEVRVUFMB0dMX0xFU1MIR0xfTkVWRVILR0xfTk9URVFVQUwCgKsGgK0GgK8GgLEEgLMGgLUIBVN0YXRlCENvbnRleHRzAhJGcmFnbWVudE9wZXJhdGlvbnMFRGVwdGgEVGVzdAIIR0xfRkFMU0UHR0xfVFJVRQKAtwaAuQaAuwSAvQaAvwgFU3RhdGUIQ29udGV4dHMCEkZyYWdtZW50T3BlcmF0aW9ucwZEaXRoZXICCEdMX0ZBTFNFB0dMX1RSVUUCgMEGgMMGgMUEgMcGgMkIBVN0YXRlCENvbnRleHRzAhJGcmFnbWVudE9wZXJhdGlvbnMPRnJhbWVidWZmZXJTcmdiAghHTF9GQUxTRQdHTF9UUlVFAoDLBoDNBoDPBoDRBIDTBoDVCAVTdGF0ZQhDb250ZXh0cwISRnJhZ21lbnRPcGVyYXRpb25zB1NjaXNzb3IEVGVzdAIIR0xfRkFMU0UHR0xfVFJVRQKA1waA2QaA2waA3QSA3waA4QgFU3RhdGUIQ29udGV4dHMCEkZyYWdtZW50T3BlcmF0aW9ucwdTdGVuY2lsCEJhY2tGYWlsCAdHTF9ERUNSDEdMX0RFQ1JfV1JBUAdHTF9JTkNSDEdMX0lOQ1JfV1JBUAlHTF9JTlZFUlQHR0xfS0VFUApHTF9SRVBMQUNFB0dMX1pFUk8CgOMGgOUGgOcGgOkEgOsGgO0IBVN0YXRlCENvbnRleHRzAhJGcmFnbWVudE9wZXJhdGlvbnMHU3RlbmNpbAhCYWNrRnVuYwgJR0xfQUxXQVlTCEdMX0VRVUFMCUdMX0dFUVVBTApHTF9HUkVBVEVSCUdMX0xFUVVBTAdHTF9MRVNTCEdMX05FVkVSC0dMX05PVEVRVUFMAoDvBoDxBoDzBoD1BID3BoD5CAVTdGF0ZQhDb250ZXh0cwISRnJhZ21lbnRPcGVyYXRpb25zB1N0ZW5jaWwRQmFja1Bhc3NEZXB0aEZhaWwIB0dMX0RFQ1IMR0xfREVDUl9XUkFQB0dMX0lOQ1IMR0xfSU5DUl9XUkFQCUdMX0lOVkVSVAdHTF9LRUVQCkdMX1JFUExBQ0UHR0xfWkVSTwKA+waA/QaA/waBAQSBAwaBBQgFU3RhdGUIQ29udGV4dHMCEkZyYWdtZW50T3BlcmF0aW9ucwdTdGVuY2lsEUJhY2tQYXNzRGVwdGhQYXNzCAdHTF9ERUNSDEdMX0RFQ1JfV1JBUAdHTF9JTkNSDEdMX0lOQ1JfV1JBUAlHTF9JTlZFUlQHR0xfS0VFUApHTF9SRVBMQUNFB0dMX1pFUk8CgQcGgQkGgQsGgQ0EgQ8GgREIBVN0YXRlCENvbnRleHRzAhJGcmFnbWVudE9wZXJhdGlvbnMHU3RlbmNpbARGYWlsCAdHTF9ERUNSDEdMX0RFQ1JfV1JBUAdHTF9JTkNSDEdMX0lOQ1JfV1JBUAlHTF9JTlZFUlQHR0xfS0VFUApHTF9SRVBMQUNFB0dMX1pFUk8CgRMGgRUGgRcGgRkEgRsGgR0IBVN0YXRlCENvbnRleHRzAhJGcmFnbWVudE9wZXJhdGlvbnMHU3RlbmNpbARGdW5jCAlHTF9BTFdBWVMIR0xfRVFVQUwJR0xfR0VRVUFMCkdMX0dSRUFURVIJR0xfTEVRVUFMB0dMX0xFU1MIR0xfTkVWRVILR0xfTk9URVFVQUwCgR8GgSEGgSMGgSUEgScGgSkIBVN0YXRlCENvbnRleHRzAhJGcmFnbWVudE9wZXJhdGlvbnMHU3RlbmNpbA1QYXNzRGVwdGhGYWlsCAdHTF9ERUNSDEdMX0RFQ1JfV1JBUAdHTF9JTkNSDEdMX0lOQ1JfV1JBUAlHTF9JTlZFUlQHR0xfS0VFUApHTF9SRVBMQUNFB0dMX1pFUk8CgSsGgS0GgS8GgTEEgTMGgTUIBVN0YXRlCENvbnRleHRzAhJGcmFnbWVudE9wZXJhdGlvbnMHU3RlbmNpbA1QYXNzRGVwdGhQYXNzCAdHTF9ERUNSDEdMX0RFQ1JfV1JBUAdHTF9JTkNSDEdMX0lOQ1JfV1JBUAlHTF9JTlZFUlQHR0xfS0VFUApHTF9SRVBMQUNFB0dMX1pFUk8CgTcGgTkGgTsGgT0EgT8GgUEIBVN0YXRlCENvbnRleHRzAhJGcmFnbWVudE9wZXJhdGlvbnMHU3RlbmNpbARUZXN0AghHTF9GQUxTRQdHTF9UUlVFAoFDBIFFBIFHBoFJBoFLBIFNBoFPCAVTdGF0ZQhDb250ZXh0cwILRnJhbWVidWZmZXIOQ29sb3JXcml0ZW1hc2sCAgEHR0xfVFJVRQKBUQaBUwSBVQaBVwSBWQaBWwgFU3RhdGUIQ29udGV4dHMCCkltYWdlVW5pdHMCBkFjY2VzcwMMR0xfUkVBRF9PTkxZDUdMX1JFQURfV1JJVEUNR0xfV1JJVEVfT05MWQKBXQaBXwSBYQaBYwSBZQaBZwgFU3RhdGUIQ29udGV4dHMCCkltYWdlVW5pdHMCBkZvcm1hdA0HR0xfUjMyRgdHTF9SMzJJCEdMX1IzMlVJCkdMX1JHQkExNkYKR0xfUkdCQTE2SQtHTF9SR0JBMTZVSQpHTF9SR0JBMzJGCkdMX1JHQkEzMkkLR0xfUkdCQTMyVUkIR0xfUkdCQTgJR0xfUkdCQThJCkdMX1JHQkE4VUkOR0xfUkdCQThfU05PUk0CgWkGgWsEgW0GgW8GgXEEgXMGgXUIBVN0YXRlCENvbnRleHRzAglJbnN0YW5jZXMHQnVmZmVycwILQWNjZXNzRmxhZ3MDGUdMX01BUF9GTFVTSF9FWFBMSUNJVF9CSVQPR0xfTUFQX1JFQURfQklUEEdMX01BUF9XUklURV9CSVQLCHNuaXBwZXRzDE9ic2VydmF0aW9ucwACAwZQgXcGgXkEgXsGgX0GgX8EgYEGgYMIBVN0YXRlCENvbnRleHRzAglJbnN0YW5jZXMHQnVmZmVycwIERGF0YQICAAqBhQSBhwaBiQSBiwaBjQaBjwSBkQaBkwgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcwdCdWZmZXJzAgpNYXBQb2ludGVyBAICAAKBlQaBlwSBmQaBmwaBnQSBnwaBoQgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcwdCdWZmZXJzAgZNYXBwZWQCCEdMX0ZBTFNFB0dMX1RSVUUCgaMGgaUEgacGgakGgasEga0Gga8IBVN0YXRlCENvbnRleHRzAglJbnN0YW5jZXMHQnVmZmVycwIFVXNhZ2UJD0dMX0RZTkFNSUNfRFJBVw5HTF9TVEFUSUNfRFJBVw5HTF9TVFJFQU1fRFJBVw9HTF9EWU5BTUlDX0NPUFkPR0xfRFlOQU1JQ19SRUFEDkdMX1NUQVRJQ19DT1BZDkdMX1NUQVRJQ19SRUFEDkdMX1NUUkVBTV9DT1BZDkdMX1NUUkVBTV9SRUFEAoGxBoGzBoG1BoG3BoG5BIG7BoG9CAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzD0RlZmF1bHRUZXh0dXJlcwlUZXh0dXJlMmQES2luZAENR0xfVEVYVFVSRV8yRAKBvwaBwQaBwwaBxQaBxwSByQaBywgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcw9EZWZhdWx0VGV4dHVyZXMOVGV4dHVyZTJkQXJyYXkES2luZAETR0xfVEVYVFVSRV8yRF9BUlJBWQKBzQaBzwaB0QaB0waB1QSB1waB2QgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcw9EZWZhdWx0VGV4dHVyZXMUVGV4dHVyZTJkTXVsdGlzYW1wbGUES2luZAEZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRQKB2waB3QaB3waB4QaB4wSB5QaB5wgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcw9EZWZhdWx0VGV4dHVyZXMZVGV4dHVyZTJkTXVsdGlzYW1wbGVBcnJheQRLaW5kAR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZAoHpBoHrBoHtBoHvBoHxBIHzBoH1CAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzD0RlZmF1bHRUZXh0dXJlcwlUZXh0dXJlM2QES2luZAENR0xfVEVYVFVSRV8zRAKB9waB+QaB+waB/QaB/wSCAQaCAwgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcw9EZWZhdWx0VGV4dHVyZXMNVGV4dHVyZUJ1ZmZlcgRLaW5kARFHTF9URVhUVVJFX0JVRkZFUgKCBQaCBwaCCQaCCwaCDQSCDwaCEQgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcw9EZWZhdWx0VGV4dHVyZXMOVGV4dHVyZUN1YmVNYXAES2luZAETR0xfVEVYVFVSRV9DVUJFX01BUAKCEwaCFQaCFwaCGQaCGwSCHQaCHwgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcw9EZWZhdWx0VGV4dHVyZXMTVGV4dHVyZUN1YmVNYXBBcnJheQRLaW5kARlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZAoIhBoIjBoIlBoInBoIpBIIrBoItCAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzD0RlZmF1bHRUZXh0dXJlcxJUZXh0dXJlRXh0ZXJuYWxPZXMES2luZAEXR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMCgi8GgjEEgjMGgjUEgjcGgjkGgjsEgj0Ggj8IBVN0YXRlCENvbnRleHRzAglJbnN0YW5jZXMMRnJhbWVidWZmZXJzAgtBdHRhY2htZW50cwIKT2JqZWN0VHlwZQMPR0xfUkVOREVSQlVGRkVSCkdMX1RFWFRVUkUHR0xfTk9ORQKCQQaCQwSCRQaCRwSCSQaCSwaCTQSCTwaCUQgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcwxGcmFtZWJ1ZmZlcnMCC0F0dGFjaG1lbnRzAhJUZXh0dXJlQ3ViZU1hcEZhY2UBB0dMX05PTkUCglMEglUGglcEglkGglsGgl0Egl8GgmEIBVN0YXRlCENvbnRleHRzAglJbnN0YW5jZXMMRnJhbWVidWZmZXJzAgtBdHRhY2htZW50cwAWFEdMX0NPTE9SX0FUVEFDSE1FTlQwE0dMX0RFUFRIX0FUVEFDSE1FTlQVR0xfU1RFTkNJTF9BVFRBQ0hNRU5UFEdMX0NPTE9SX0FUVEFDSE1FTlQxFUdMX0NPTE9SX0FUVEFDSE1FTlQxMBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTEVR0xfQ09MT1JfQVRUQUNITUVOVDEyFUdMX0NPTE9SX0FUVEFDSE1FTlQxMxVHTF9DT0xPUl9BVFRBQ0hNRU5UMTQVR0xfQ09MT1JfQVRUQUNITUVOVDE1FEdMX0NPTE9SX0FUVEFDSE1FTlQyFEdMX0NPTE9SX0FUVEFDSE1FTlQzFEdMX0NPTE9SX0FUVEFDSE1FTlQ0FEdMX0NPTE9SX0FUVEFDSE1FTlQ1FEdMX0NPTE9SX0FUVEFDSE1FTlQ2FEdMX0NPTE9SX0FUVEFDSE1FTlQ3FEdMX0NPTE9SX0FUVEFDSE1FTlQ4FEdMX0NPTE9SX0FUVEFDSE1FTlQ5G0dMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVAdHTF9CQUNLCEdMX0RFUFRICkdMX1NURU5DSUwCgmMEgmUGgmcEgmkGgmsGgm0Egm8GgnEIBVN0YXRlCENvbnRleHRzAglJbnN0YW5jZXMMRnJhbWVidWZmZXJzAgpEcmF3QnVmZmVyAgEHR0xfTk9ORQKCcwaCdQSCdwaCeQaCewSCfQaCfwgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcwxGcmFtZWJ1ZmZlcnMCClJlYWRCdWZmZXISB0dMX0JBQ0sUR0xfQ09MT1JfQVRUQUNITUVOVDAUR0xfQ09MT1JfQVRUQUNITUVOVDEVR0xfQ09MT1JfQVRUQUNITUVOVDEwFUdMX0NPTE9SX0FUVEFDSE1FTlQxMRVHTF9DT0xPUl9BVFRBQ0hNRU5UMTIVR0xfQ09MT1JfQVRUQUNITUVOVDEzFUdMX0NPTE9SX0FUVEFDSE1FTlQxNBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTUUR0xfQ09MT1JfQVRUQUNITUVOVDIUR0xfQ09MT1JfQVRUQUNITUVOVDMUR0xfQ09MT1JfQVRUQUNITUVOVDQUR0xfQ09MT1JfQVRUQUNITUVOVDUUR0xfQ09MT1JfQVRUQUNITUVOVDYUR0xfQ09MT1JfQVRUQUNITUVOVDcUR0xfQ09MT1JfQVRUQUNITUVOVDgUR0xfQ09MT1JfQVRUQUNITUVOVDkHR0xfTk9ORQKCgQaCgwSChQaChwSCiQaCiwaCjQSCjwaCkQgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcwhQcm9ncmFtcwIIVW5pZm9ybXMCBFR5cGUVCEdMX0ZMT0FUBkdMX0lOVA9HTF9VTlNJR05FRF9JTlQNR0xfRkxPQVRfVkVDMgtHTF9JTlRfVkVDMhRHTF9VTlNJR05FRF9JTlRfVkVDMg1HTF9GTE9BVF9WRUMzC0dMX0lOVF9WRUMzFEdMX1VOU0lHTkVEX0lOVF9WRUMzDUdMX0ZMT0FUX1ZFQzQLR0xfSU5UX1ZFQzQUR0xfVU5TSUdORURfSU5UX1ZFQzQNR0xfRkxPQVRfTUFUMg9HTF9GTE9BVF9NQVQyeDMPR0xfRkxPQVRfTUFUMng0DUdMX0ZMT0FUX01BVDMPR0xfRkxPQVRfTUFUM3gyD0dMX0ZMT0FUX01BVDN4NA1HTF9GTE9BVF9NQVQ0D0dMX0ZMT0FUX01BVDR4Mg9HTF9GTE9BVF9NQVQ0eDMKgpMGgpUEgpcGgpkEgpsGgp0Ggp8EgqEGgqMIBVN0YXRlCENvbnRleHRzAglJbnN0YW5jZXMIUHJvZ3JhbXMCCFVuaWZvcm1zAgVWYWx1ZQICAAKCpQaCpwSCqQaCqwaCrQSCrwaCsQgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcw1SZW5kZXJidWZmZXJzAg5JbnRlcm5hbEZvcm1hdCUUR0xfREVQVEhfQ09NUE9ORU5UMTYJR0xfUkdCNTY1CkdMX1JHQjVfQTEIR0xfUkdCQTQRR0xfU1RFTkNJTF9JTkRFWDgTR0xfREVQVEgyNF9TVEVOQ0lMOBRHTF9ERVBUSDMyRl9TVEVOQ0lMOBRHTF9ERVBUSF9DT01QT05FTlQyNBVHTF9ERVBUSF9DT01QT05FTlQzMkYHR0xfUjE2SQhHTF9SMTZVSQdHTF9SMzJJCEdMX1IzMlVJBUdMX1I4BkdMX1I4SQdHTF9SOFVJCEdMX1JHMTZJCUdMX1JHMTZVSQhHTF9SRzMySQlHTF9SRzMyVUkGR0xfUkc4B0dMX1JHOEkIR0xfUkc4VUkLR0xfUkdCMTBfQTINR0xfUkdCMTBfQTJVSQdHTF9SR0I4CkdMX1JHQkExNkkLR0xfUkdCQTE2VUkKR0xfUkdCQTMySQtHTF9SR0JBMzJVSQhHTF9SR0JBOAlHTF9SR0JBOEkKR0xfUkdCQThVSQ9HTF9TUkdCOF9BTFBIQTgGR0xfUjE2B0dMX1JHMTYJR0xfUkdCQTE2AoKzBoK1BIK3BoK5BoK7BIK9BoK/CAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzB1NoYWRlcnMCClNoYWRlclR5cGUGEkdMX0ZSQUdNRU5UX1NIQURFUhBHTF9WRVJURVhfU0hBREVSEUdMX0NPTVBVVEVfU0hBREVSEkdMX0dFT01FVFJZX1NIQURFUhZHTF9URVNTX0NPTlRST0xfU0hBREVSGUdMX1RFU1NfRVZBTFVBVElPTl9TSEFERVICgsEGgsMEgsUGgscGgskEgssGgs0IBVN0YXRlCENvbnRleHRzAglJbnN0YW5jZXMHU2hhZGVycwIEVHlwZQYSR0xfRlJBR01FTlRfU0hBREVSEEdMX1ZFUlRFWF9TSEFERVIRR0xfQ09NUFVURV9TSEFERVISR0xfR0VPTUVUUllfU0hBREVSFkdMX1RFU1NfQ09OVFJPTF9TSEFERVIZR0xfVEVTU19FVkFMVUFUSU9OX1NIQURFUgKCzwaC0QSC0waC1QaC1wSC2QaC2wgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcwhUZXh0dXJlcwIES2luZAkXR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMNR0xfVEVYVFVSRV8yRBNHTF9URVhUVVJFXzJEX0FSUkFZGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWQ1HTF9URVhUVVJFXzNEEUdMX1RFWFRVUkVfQlVGRkVSE0dMX1RFWFRVUkVfQ1VCRV9NQVAZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWQKC3QaC3wSC4QaC4waC5QSC5waC6QgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcwhUZXh0dXJlcwIJTWluRmlsdGVyAQlHTF9MSU5FQVICgusGgu0Egu8GgvEGgvMEgvUGgvcIBVN0YXRlCENvbnRleHRzAglJbnN0YW5jZXMIVGV4dHVyZXMCBVdyYXBTARBHTF9DTEFNUF9UT19FREdFAoL5BoL7BIL9BoL/BoMBBIMDBoMFCAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzCFRleHR1cmVzAgVXcmFwVAEQR0xfQ0xBTVBfVE9fRURHRQKDBwaDCQSDCwaDDQSDDwaDEQaDEwSDFQaDFwgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcwxWZXJ0ZXhBcnJheXMCFVZlcnRleEF0dHJpYnV0ZUFycmF5cwIHRW5hYmxlZAIIR0xfRkFMU0UHR0xfVFJVRQqDGQSDGwaDHQSDHwaDIQSDIwaDJQaDJwSDKQaDKwgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcwxWZXJ0ZXhBcnJheXMCFVZlcnRleEF0dHJpYnV0ZUFycmF5cwIHUG9pbnRlcgQBAAKDLQaDLwSDMQaDMwSDNQaDNwaDOQSDOwaDPQgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcwxWZXJ0ZXhBcnJheXMCFVZlcnRleEF0dHJpYnV0ZUFycmF5cwIEVHlwZQwHR0xfQllURRBHTF9VTlNJR05FRF9CWVRFCEdMX1NIT1JUEUdMX1VOU0lHTkVEX1NIT1JUDUdMX0hBTEZfRkxPQVQRR0xfSEFMRl9GTE9BVF9PRVMGR0xfSU5UD0dMX1VOU0lHTkVEX0lOVAhHTF9GTE9BVAhHTF9GSVhFRBVHTF9JTlRfMl8xMF8xMF8xMF9SRVYeR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWAoM/BoNBBoNDBINFBoNHCAVTdGF0ZQhDb250ZXh0cwINTWlzY2VsbGFuZW91cxxGcmFnbWVudFNoYWRlckRlcml2YXRpdmVIaW50AwxHTF9ET05UX0NBUkUKR0xfRkFTVEVTVAlHTF9OSUNFU1QCg0kGg0sGg00Eg08Gg1EIBVN0YXRlCENvbnRleHRzAg1NaXNjZWxsYW5lb3VzEkdlbmVyYXRlTWlwbWFwSGludAMMR0xfRE9OVF9DQVJFCkdMX0ZBU1RFU1QJR0xfTklDRVNUAoNTBoNVBoNXBINZBoNbCAVTdGF0ZQhDb250ZXh0cwINTWlzY2VsbGFuZW91cxpQcmltaXRpdmVSZXN0YXJ0Rml4ZWRJbmRleAIIR0xfRkFMU0UHR0xfVFJVRQKDXQaDXwaDYQSDYwaDZQgFU3RhdGUIQ29udGV4dHMCDVJhc3Rlcml6YXRpb24IQ3VsbEZhY2UCCEdMX0ZBTFNFB0dMX1RSVUUCg2cGg2kGg2sEg20Gg28IBVN0YXRlCENvbnRleHRzAg1SYXN0ZXJpemF0aW9uDEN1bGxGYWNlTW9kZQMHR0xfQkFDSwhHTF9GUk9OVBFHTF9GUk9OVF9BTkRfQkFDSwKDcQaDcwaDdQSDdwaDeQgFU3RhdGUIQ29udGV4dHMCDVJhc3Rlcml6YXRpb24JRnJvbnRGYWNlAgZHTF9DQ1cFR0xfQ1cCg3sGg30Gg38Eg4EGg4MIBVN0YXRlCENvbnRleHRzAg1SYXN0ZXJpemF0aW9uEVBvbHlnb25PZmZzZXRGaWxsAghHTF9GQUxTRQdHTF9UUlVFAoOFBoOHBoOJBIOLBoONCAVTdGF0ZQhDb250ZXh0cwINUmFzdGVyaXphdGlvbhFSYXN0ZXJpemVyRGlzY2FyZAIIR0xfRkFMU0UHR0xfVFJVRQKDjwaDkQaDkwSDlQaDlwgFU3RhdGUIQ29udGV4dHMCDVJhc3Rlcml6YXRpb24VU2FtcGxlQWxwaGFUb0NvdmVyYWdlAghHTF9GQUxTRQdHTF9UUlVFAoOZBoObBoOdBIOfBoOhCAVTdGF0ZQhDb250ZXh0cwINUmFzdGVyaXphdGlvbg5TYW1wbGVDb3ZlcmFnZQIIR0xfRkFMU0UHR0xfVFJVRQKDowaDpQaDpwSDqQaDqwgFU3RhdGUIQ29udGV4dHMCDVJhc3Rlcml6YXRpb24KU2FtcGxlTWFzawIIR0xfRkFMU0UHR0xfVFJVRQKDrQSDrwaDsQSDswaDtQgFU3RhdGUIQ29udGV4dHMCDFRleHR1cmVVbml0cwAgC0dMX1RFWFRVUkUwC0dMX1RFWFRVUkUxDEdMX1RFWFRVUkUxMAxHTF9URVhUVVJFMTEMR0xfVEVYVFVSRTEyDEdMX1RFWFRVUkUxMwxHTF9URVhUVVJFMTQMR0xfVEVYVFVSRTE1DEdMX1RFWFRVUkUxNgxHTF9URVhUVVJFMTcMR0xfVEVYVFVSRTE4DEdMX1RFWFRVUkUxOQtHTF9URVhUVVJFMgxHTF9URVhUVVJFMjAMR0xfVEVYVFVSRTIxDEdMX1RFWFRVUkUyMgxHTF9URVhUVVJFMjMMR0xfVEVYVFVSRTI0DEdMX1RFWFRVUkUyNQxHTF9URVhUVVJFMjYMR0xfVEVYVFVSRTI3DEdMX1RFWFRVUkUyOAxHTF9URVhUVVJFMjkLR0xfVEVYVFVSRTMMR0xfVEVYVFVSRTMwDEdMX1RFWFRVUkUzMQtHTF9URVhUVVJFNAtHTF9URVhUVVJFNQtHTF9URVhUVVJFNgtHTF9URVhUVVJFNwtHTF9URVhUVVJFOAtHTF9URVhUVVJFOQKDtwSDuQaDuwSDvQaDvwgFU3RhdGULRUdMQ29udGV4dHMCEUJvdW5kRnJhbWVidWZmZXJzAAITR0xfRFJBV19GUkFNRUJVRkZFUhNHTF9SRUFEX0ZSQU1FQlVGRkVSAoPBBIPDBIPFBoPHBoPJBIPLBoPNCAVTdGF0ZQtFR0xDb250ZXh0cwILRnJhbWVidWZmZXIOQ29sb3JXcml0ZW1hc2sCAgEHR0xfVFJVRQKDzwaD0QaD0waD1QaD1wSD2QaD2wgFU3RhdGULRUdMQ29udGV4dHMCCUluc3RhbmNlcw9EZWZhdWx0VGV4dHVyZXMJVGV4dHVyZTJkBEtpbmQBDUdMX1RFWFRVUkVfMkQCg90Gg98Gg+EGg+MGg+UEg+cGg+kIBVN0YXRlC0VHTENvbnRleHRzAglJbnN0YW5jZXMPRGVmYXVsdFRleHR1cmVzDlRleHR1cmUyZEFycmF5BEtpbmQBE0dMX1RFWFRVUkVfMkRfQVJSQVkCg+sGg+0Gg+8Gg/EGg/MEg/UGg/cIBVN0YXRlC0VHTENvbnRleHRzAglJbnN0YW5jZXMPRGVmYXVsdFRleHR1cmVzFFRleHR1cmUyZE11bHRpc2FtcGxlBEtpbmQBGUdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUCg/kGg/sGg/0Gg/8GhAEEhAMGhAUIBVN0YXRlC0VHTENvbnRleHRzAglJbnN0YW5jZXMPRGVmYXVsdFRleHR1cmVzGVRleHR1cmUyZE11bHRpc2FtcGxlQXJyYXkES2luZAEfR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV9BUlJBWQKEBwaECQaECwaEDQaEDwSEEQaEEwgFU3RhdGULRUdMQ29udGV4dHMCCUluc3RhbmNlcw9EZWZhdWx0VGV4dHVyZXMJVGV4dHVyZTNkBEtpbmQBDUdMX1RFWFRVUkVfM0QChBUGhBcGhBkGhBsGhB0EhB8GhCEIBVN0YXRlC0VHTENvbnRleHRzAglJbnN0YW5jZXMPRGVmYXVsdFRleHR1cmVzDVRleHR1cmVCdWZmZXIES2luZAERR0xfVEVYVFVSRV9CVUZGRVIChCMGhCUGhCcGhCkGhCsEhC0GhC8IBVN0YXRlC0VHTENvbnRleHRzAglJbnN0YW5jZXMPRGVmYXVsdFRleHR1cmVzDlRleHR1cmVDdWJlTWFwBEtpbmQBE0dMX1RFWFRVUkVfQ1VCRV9NQVAChDEGhDMGhDUGhDcGhDkEhDsGhD0IBVN0YXRlC0VHTENvbnRleHRzAglJbnN0YW5jZXMPRGVmYXVsdFRleHR1cmVzE1RleHR1cmVDdWJlTWFwQXJyYXkES2luZAEZR0xfVEVYVFVSRV9DVUJFX01BUF9BUlJBWQKEPwaEQQaEQwaERQaERwSESQaESwgFU3RhdGULRUdMQ29udGV4dHMCCUluc3RhbmNlcw9EZWZhdWx0VGV4dHVyZXMSVGV4dHVyZUV4dGVybmFsT2VzBEtpbmQBF0dMX1RFWFRVUkVfRVhURVJOQUxfT0VTAoRNBoRPBIRRBoRTBIRVBoRXBoRZBIRbBoRdCAVTdGF0ZQtFR0xDb250ZXh0cwIJSW5zdGFuY2VzDEZyYW1lYnVmZmVycwILQXR0YWNobWVudHMCCk9iamVjdFR5cGUBD0dMX1JFTkRFUkJVRkZFUgKEXwaEYQSEYwaEZQSEZwaEaQaEawSEbQaEbwgFU3RhdGULRUdMQ29udGV4dHMCCUluc3RhbmNlcwxGcmFtZWJ1ZmZlcnMCC0F0dGFjaG1lbnRzAhJUZXh0dXJlQ3ViZU1hcEZhY2UBB0dMX05PTkUChHEEhHMGhHUEhHcGhHkGhHsEhH0GhH8IBVN0YXRlC0VHTENvbnRleHRzAglJbnN0YW5jZXMMRnJhbWVidWZmZXJzAgtBdHRhY2htZW50cwADFEdMX0NPTE9SX0FUVEFDSE1FTlQwE0dMX0RFUFRIX0FUVEFDSE1FTlQVR0xfU1RFTkNJTF9BVFRBQ0hNRU5UAoSBBoSDBISFBoSHBoSJBISLBoSNCAVTdGF0ZQtFR0xDb250ZXh0cwIJSW5zdGFuY2VzDEZyYW1lYnVmZmVycwIKUmVhZEJ1ZmZlcgEHR0xfQkFDSwKEjwSEkQaEkwSElQaElwgFU3RhdGULRUdMQ29udGV4dHMCDFRleHR1cmVVbml0cwABC0dMX1RFWFRVUkUw`
+const globals_snippets_base64 = `AwhzbmlwcGV0cwZMYWJlbHMAAgMGsAMFCHNuaXBwZXRzCHBhcnRQYXRoAAIDUAUHCHNuaXBwZXRzCWZpZWxkUGF0aAACA7AHBAkGCwkIc25pcHBldHMMcmVsYXRpdmVQYXRoAAGwBVN0YXRlCENvbnRleHRzAg1BY3RpdmVRdWVyaWVzAAUVR0xfQU5ZX1NBTVBMRVNfUEFTU0VEIkdMX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkUoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1BSSU1JVElWRVNfV1JJVFRFThdHTF9QUklNSVRJVkVTX0dFTkVSQVRFRBBHTF9USU1FU1RBTVBfRVhUAg0GDwQRBhMIBVN0YXRlCENvbnRleHRzAhFBY3RpdmVUZXh0dXJlVW5pdCALR0xfVEVYVFVSRTALR0xfVEVYVFVSRTEMR0xfVEVYVFVSRTEwDEdMX1RFWFRVUkUxMQxHTF9URVhUVVJFMTIMR0xfVEVYVFVSRTEzDEdMX1RFWFRVUkUxNAxHTF9URVhUVVJFMTUMR0xfVEVYVFVSRTE2DEdMX1RFWFRVUkUxNwxHTF9URVhUVVJFMTgMR0xfVEVYVFVSRTE5C0dMX1RFWFRVUkUyDEdMX1RFWFRVUkUyMAxHTF9URVhUVVJFMjEMR0xfVEVYVFVSRTIyDEdMX1RFWFRVUkUyMwxHTF9URVhUVVJFMjQMR0xfVEVYVFVSRTI1DEdMX1RFWFRVUkUyNgxHTF9URVhUVVJFMjcMR0xfVEVYVFVSRTI4DEdMX1RFWFRVUkUyOQtHTF9URVhUVVJFMwxHTF9URVhUVVJFMzAMR0xfVEVYVFVSRTMxC0dMX1RFWFRVUkU0C0dMX1RFWFRVUkU1C0dMX1RFWFRVUkU2C0dMX1RFWFRVUkU3C0dMX1RFWFRVUkU4C0dMX1RFWFRVUkU5AhUEFwYZBBsGHQgFU3RhdGUIQ29udGV4dHMCEUJvdW5kRnJhbWVidWZmZXJzAAMTR0xfRFJBV19GUkFNRUJVRkZFUhNHTF9SRUFEX0ZSQU1FQlVGRkVSDkdMX0ZSQU1FQlVGRkVSAh8EIQYjBCUGJwgFU3RhdGUIQ29udGV4dHMCEkJvdW5kUmVuZGVyYnVmZmVycwABD0dMX1JFTkRFUkJVRkZFUgIpBisGLQQvBjEIBVN0YXRlCENvbnRleHRzAgVEZWJ1ZwZPdXRwdXQCCEdMX0ZBTFNFB0dMX1RSVUUCMwY1BjcEOQY7CAVTdGF0ZQhDb250ZXh0cwIFRGVidWcRT3V0cHV0U3luY2hyb25vdXMCCEdMX0ZBTFNFB0dMX1RSVUUCPQY/BEEGQwZFBEcGSQgFU3RhdGUIQ29udGV4dHMCEkZyYWdtZW50T3BlcmF0aW9ucwVCbGVuZAIIRHN0QWxwaGEPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPAksGTQRPBlEGUwRVBlcIBVN0YXRlCENvbnRleHRzAhJGcmFnbWVudE9wZXJhdGlvbnMFQmxlbmQCBkRzdFJnYg8RR0xfQ09OU1RBTlRfQUxQSEERR0xfQ09OU1RBTlRfQ09MT1IMR0xfRFNUX0FMUEhBDEdMX0RTVF9DT0xPUgZHTF9PTkUbR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBG0dMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUhZHTF9PTkVfTUlOVVNfRFNUX0FMUEhBFkdMX09ORV9NSU5VU19EU1RfQ09MT1IWR0xfT05FX01JTlVTX1NSQ19BTFBIQRZHTF9PTkVfTUlOVVNfU1JDX0NPTE9SDEdMX1NSQ19BTFBIQRVHTF9TUkNfQUxQSEFfU0FUVVJBVEUMR0xfU1JDX0NPTE9SB0dMX1pFUk8CWQZbBF0GXwZhBGMGZQgFU3RhdGUIQ29udGV4dHMCEkZyYWdtZW50T3BlcmF0aW9ucwVCbGVuZAIHRW5hYmxlZAIIR0xfRkFMU0UHR0xfVFJVRQJnBmkEawZtBm8EcQZzCAVTdGF0ZQhDb250ZXh0cwISRnJhZ21lbnRPcGVyYXRpb25zBUJsZW5kAg1FcXVhdGlvbkFscGhhBQtHTF9GVU5DX0FERBhHTF9GVU5DX1JFVkVSU0VfU1VCVFJBQ1QQR0xfRlVOQ19TVUJUUkFDVAZHTF9NQVgGR0xfTUlOAnUGdwR5BnsGfQR/BoCBCAVTdGF0ZQhDb250ZXh0cwISRnJhZ21lbnRPcGVyYXRpb25zBUJsZW5kAgtFcXVhdGlvblJnYgULR0xfRlVOQ19BREQYR0xfRlVOQ19SRVZFUlNFX1NVQlRSQUNUEEdMX0ZVTkNfU1VCVFJBQ1QGR0xfTUFYBkdMX01JTgKAgwaAhQSAhwaAiQaAiwSAjQaAjwgFU3RhdGUIQ29udGV4dHMCEkZyYWdtZW50T3BlcmF0aW9ucwVCbGVuZAIIU3JjQWxwaGEPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPAoCRBoCTBICVBoCXBoCZBICbBoCdCAVTdGF0ZQhDb250ZXh0cwISRnJhZ21lbnRPcGVyYXRpb25zBUJsZW5kAgZTcmNSZ2IPEUdMX0NPTlNUQU5UX0FMUEhBEUdMX0NPTlNUQU5UX0NPTE9SDEdMX0RTVF9BTFBIQQxHTF9EU1RfQ09MT1IGR0xfT05FG0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQRtHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IWR0xfT05FX01JTlVTX0RTVF9BTFBIQRZHTF9PTkVfTUlOVVNfRFNUX0NPTE9SFkdMX09ORV9NSU5VU19TUkNfQUxQSEEWR0xfT05FX01JTlVTX1NSQ19DT0xPUgxHTF9TUkNfQUxQSEEVR0xfU1JDX0FMUEhBX1NBVFVSQVRFDEdMX1NSQ19DT0xPUgdHTF9aRVJPAoCfBoChBoCjBoClBICnBoCpCAVTdGF0ZQhDb250ZXh0cwISRnJhZ21lbnRPcGVyYXRpb25zBURlcHRoBEZ1bmMICUdMX0FMV0FZUwhHTF9FUVVBTAlHTF9HRVFVQUwKR0xfR1JFQVRFUglHTF9MRVFVQUwHR0xfTEVTUwhHTF9ORVZFUgtHTF9OT1RFUVVBTAKAqwaArQaArwaAsQSAswaAtQgFU3RhdGUIQ29udGV4dHMCEkZyYWdtZW50T3BlcmF0aW9ucwVEZXB0aARUZXN0AghHTF9GQUxTRQdHTF9UUlVFAoC3BoC5BoC7BIC9BoC/CAVTdGF0ZQhDb250ZXh0cwISRnJhZ21lbnRPcGVyYXRpb25zBkRpdGhlcgIIR0xfRkFMU0UHR0xfVFJVRQKAwQaAwwaAxQSAxwaAyQgFU3RhdGUIQ29udGV4dHMCEkZyYWdtZW50T3BlcmF0aW9ucw9GcmFtZWJ1ZmZlclNyZ2ICCEdMX0ZBTFNFB0dMX1RSVUUCgMsGgM0GgM8GgNEEgNMGgNUIBVN0YXRlCENvbnRleHRzAhJGcmFnbWVudE9wZXJhdGlvbnMHU2Npc3NvcgRUZXN0AghHTF9GQUxTRQdHTF9UUlVFAoDXBoDZBoDbBoDdBIDfBoDhCAVTdGF0ZQhDb250ZXh0cwISRnJhZ21lbnRPcGVyYXRpb25zB1N0ZW5jaWwIQmFja0ZhaWwIB0dMX0RFQ1IMR0xfREVDUl9XUkFQB0dMX0lOQ1IMR0xfSU5DUl9XUkFQCUdMX0lOVkVSVAdHTF9LRUVQCkdMX1JFUExBQ0UHR0xfWkVSTwKA4waA5QaA5waA6QSA6waA7QgFU3RhdGUIQ29udGV4dHMCEkZyYWdtZW50T3BlcmF0aW9ucwdTdGVuY2lsCEJhY2tGdW5jCAlHTF9BTFdBWVMIR0xfRVFVQUwJR0xfR0VRVUFMCkdMX0dSRUFURVIJR0xfTEVRVUFMB0dMX0xFU1MIR0xfTkVWRVILR0xfTk9URVFVQUwCgO8GgPEGgPMGgPUEgPcGgPkIBVN0YXRlCENvbnRleHRzAhJGcmFnbWVudE9wZXJhdGlvbnMHU3RlbmNpbBFCYWNrUGFzc0RlcHRoRmFpbAgHR0xfREVDUgxHTF9ERUNSX1dSQVAHR0xfSU5DUgxHTF9JTkNSX1dSQVAJR0xfSU5WRVJUB0dMX0tFRVAKR0xfUkVQTEFDRQdHTF9aRVJPAoD7BoD9BoD/BoEBBIEDBoEFCAVTdGF0ZQhDb250ZXh0cwISRnJhZ21lbnRPcGVyYXRpb25zB1N0ZW5jaWwRQmFja1Bhc3NEZXB0aFBhc3MIB0dMX0RFQ1IMR0xfREVDUl9XUkFQB0dMX0lOQ1IMR0xfSU5DUl9XUkFQCUdMX0lOVkVSVAdHTF9LRUVQCkdMX1JFUExBQ0UHR0xfWkVSTwKBBwaBCQaBCwaBDQSBDwaBEQgFU3RhdGUIQ29udGV4dHMCEkZyYWdtZW50T3BlcmF0aW9ucwdTdGVuY2lsBEZhaWwIB0dMX0RFQ1IMR0xfREVDUl9XUkFQB0dMX0lOQ1IMR0xfSU5DUl9XUkFQCUdMX0lOVkVSVAdHTF9LRUVQCkdMX1JFUExBQ0UHR0xfWkVSTwKBEwaBFQaBFwaBGQSBGwaBHQgFU3RhdGUIQ29udGV4dHMCEkZyYWdtZW50T3BlcmF0aW9ucwdTdGVuY2lsBEZ1bmMICUdMX0FMV0FZUwhHTF9FUVVBTAlHTF9HRVFVQUwKR0xfR1JFQVRFUglHTF9MRVFVQUwHR0xfTEVTUwhHTF9ORVZFUgtHTF9OT1RFUVVBTAKBHwaBIQaBIwaBJQSBJwaBKQgFU3RhdGUIQ29udGV4dHMCEkZyYWdtZW50T3BlcmF0aW9ucwdTdGVuY2lsDVBhc3NEZXB0aEZhaWwIB0dMX0RFQ1IMR0xfREVDUl9XUkFQB0dMX0lOQ1IMR0xfSU5DUl9XUkFQCUdMX0lOVkVSVAdHTF9LRUVQCkdMX1JFUExBQ0UHR0xfWkVSTwKBKwaBLQaBLwaBMQSBMwaBNQgFU3RhdGUIQ29udGV4dHMCEkZyYWdtZW50T3BlcmF0aW9ucwdTdGVuY2lsDVBhc3NEZXB0aFBhc3MIB0dMX0RFQ1IMR0xfREVDUl9XUkFQB0dMX0lOQ1IMR0xfSU5DUl9XUkFQCUdMX0lOVkVSVAdHTF9LRUVQCkdMX1JFUExBQ0UHR0xfWkVSTwKBNwaBOQaBOwaBPQSBPwaBQQgFU3RhdGUIQ29udGV4dHMCEkZyYWdtZW50T3BlcmF0aW9ucwdTdGVuY2lsBFRlc3QCCEdMX0ZBTFNFB0dMX1RSVUUCgUMEgUUEgUcGgUkGgUsEgU0GgU8IBVN0YXRlCENvbnRleHRzAgtGcmFtZWJ1ZmZlcg5Db2xvcldyaXRlbWFzawICAQdHTF9UUlVFAoFRBoFTBIFVBoFXBIFZBoFbCAVTdGF0ZQhDb250ZXh0cwIKSW1hZ2VVbml0cwIGQWNjZXNzAwxHTF9SRUFEX09OTFkNR0xfUkVBRF9XUklURQ1HTF9XUklURV9PTkxZAoFdBoFfBIFhBoFjBIFlBoFnCAVTdGF0ZQhDb250ZXh0cwIKSW1hZ2VVbml0cwIGRm9ybWF0DQdHTF9SMzJGB0dMX1IzMkkIR0xfUjMyVUkKR0xfUkdCQTE2RgpHTF9SR0JBMTZJC0dMX1JHQkExNlVJCkdMX1JHQkEzMkYKR0xfUkdCQTMySQtHTF9SR0JBMzJVSQhHTF9SR0JBOAlHTF9SR0JBOEkKR0xfUkdCQThVSQ5HTF9SR0JBOF9TTk9STQKBaQaBawSBbQaBbwaBcQSBcwaBdQgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcwdCdWZmZXJzAgtBY2Nlc3NGbGFncwMZR0xfTUFQX0ZMVVNIX0VYUExJQ0lUX0JJVA9HTF9NQVBfUkVBRF9CSVQQR0xfTUFQX1dSSVRFX0JJVAsIc25pcHBldHMMT2JzZXJ2YXRpb25zAAIDBlCBdwaBeQSBewaBfQaBfwSBgQaBgwgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcwdCdWZmZXJzAgREYXRhAgIACoGFBIGHBoGJBIGLBoGNBoGPBIGRBoGTCAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzB0J1ZmZlcnMCCk1hcFBvaW50ZXIEAgIAAoGVBoGXBIGZBoGbBoGdBIGfBoGhCAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzB0J1ZmZlcnMCBk1hcHBlZAIIR0xfRkFMU0UHR0xfVFJVRQKBowaBpQSBpwaBqQaBqwSBrQaBrwgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcwdCdWZmZXJzAgVVc2FnZQkPR0xfRFlOQU1JQ19EUkFXDkdMX1NUQVRJQ19EUkFXDkdMX1NUUkVBTV9EUkFXD0dMX0RZTkFNSUNfQ09QWQ9HTF9EWU5BTUlDX1JFQUQOR0xfU1RBVElDX0NPUFkOR0xfU1RBVElDX1JFQUQOR0xfU1RSRUFNX0NPUFkOR0xfU1RSRUFNX1JFQUQCgbEGgbMGgbUGgbcGgbkEgbsGgb0IBVN0YXRlCENvbnRleHRzAglJbnN0YW5jZXMPRGVmYXVsdFRleHR1cmVzCVRleHR1cmUyZARLaW5kAQ1HTF9URVhUVVJFXzJEAoG/BoHBBoHDBoHFBoHHBIHJBoHLCAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzD0RlZmF1bHRUZXh0dXJlcw5UZXh0dXJlMmRBcnJheQRLaW5kARNHTF9URVhUVVJFXzJEX0FSUkFZAoHNBoHPBoHRBoHTBoHVBIHXBoHZCAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzD0RlZmF1bHRUZXh0dXJlcxRUZXh0dXJlMmRNdWx0aXNhbXBsZQRLaW5kARlHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFAoHbBoHdBoHfBoHhBoHjBIHlBoHnCAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzD0RlZmF1bHRUZXh0dXJlcxlUZXh0dXJlMmRNdWx0aXNhbXBsZUFycmF5BEtpbmQBH0dMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEVfQVJSQVkCgekGgesGge0Gge8GgfEEgfMGgfUIBVN0YXRlCENvbnRleHRzAglJbnN0YW5jZXMPRGVmYXVsdFRleHR1cmVzCVRleHR1cmUzZARLaW5kAQ1HTF9URVhUVVJFXzNEAoH3BoH5BoH7BoH9BoH/BIIBBoIDCAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzD0RlZmF1bHRUZXh0dXJlcw1UZXh0dXJlQnVmZmVyBEtpbmQBEUdMX1RFWFRVUkVfQlVGRkVSAoIFBoIHBoIJBoILBoINBIIPBoIRCAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzD0RlZmF1bHRUZXh0dXJlcw5UZXh0dXJlQ3ViZU1hcARLaW5kARNHTF9URVhUVVJFX0NVQkVfTUFQAoITBoIVBoIXBoIZBoIbBIIdBoIfCAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzD0RlZmF1bHRUZXh0dXJlcxNUZXh0dXJlQ3ViZU1hcEFycmF5BEtpbmQBGUdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVkCgiEGgiMGgiUGgicGgikEgisGgi0IBVN0YXRlCENvbnRleHRzAglJbnN0YW5jZXMPRGVmYXVsdFRleHR1cmVzElRleHR1cmVFeHRlcm5hbE9lcwRLaW5kARdHTF9URVhUVVJFX0VYVEVSTkFMX09FUwKCLwaCMQSCMwaCNQSCNwaCOQaCOwSCPQaCPwgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcwxGcmFtZWJ1ZmZlcnMCC0F0dGFjaG1lbnRzAgpPYmplY3RUeXBlAw9HTF9SRU5ERVJCVUZGRVIKR0xfVEVYVFVSRQdHTF9OT05FAoJBBoJDBIJFBoJHBIJJBoJLBoJNBIJPBoJRCAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzDEZyYW1lYnVmZmVycwILQXR0YWNobWVudHMCElRleHR1cmVDdWJlTWFwRmFjZQEHR0xfTk9ORQKCUwSCVQaCVwSCWQaCWwaCXQSCXwaCYQgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcwxGcmFtZWJ1ZmZlcnMCC0F0dGFjaG1lbnRzABYUR0xfQ09MT1JfQVRUQUNITUVOVDATR0xfREVQVEhfQVRUQUNITUVOVBVHTF9TVEVOQ0lMX0FUVEFDSE1FTlQUR0xfQ09MT1JfQVRUQUNITUVOVDEVR0xfQ09MT1JfQVRUQUNITUVOVDEwFUdMX0NPTE9SX0FUVEFDSE1FTlQxMRVHTF9DT0xPUl9BVFRBQ0hNRU5UMTIVR0xfQ09MT1JfQVRUQUNITUVOVDEzFUdMX0NPTE9SX0FUVEFDSE1FTlQxNBVHTF9DT0xPUl9BVFRBQ0hNRU5UMTUUR0xfQ09MT1JfQVRUQUNITUVOVDIUR0xfQ09MT1JfQVRUQUNITUVOVDMUR0xfQ09MT1JfQVRUQUNITUVOVDQUR0xfQ09MT1JfQVRUQUNITUVOVDUUR0xfQ09MT1JfQVRUQUNITUVOVDYUR0xfQ09MT1JfQVRUQUNITUVOVDcUR0xfQ09MT1JfQVRUQUNITUVOVDgUR0xfQ09MT1JfQVRUQUNITUVOVDkbR0xfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UB0dMX0JBQ0sIR0xfREVQVEgKR0xfU1RFTkNJTAKCYwSCZQaCZwSCaQaCawaCbQSCbwaCcQgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcwxGcmFtZWJ1ZmZlcnMCCkRyYXdCdWZmZXICAQdHTF9OT05FAoJzBoJ1BIJ3BoJ5BoJ7BIJ9BoJ/CAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzDEZyYW1lYnVmZmVycwIKUmVhZEJ1ZmZlchIHR0xfQkFDSxRHTF9DT0xPUl9BVFRBQ0hNRU5UMBRHTF9DT0xPUl9BVFRBQ0hNRU5UMRVHTF9DT0xPUl9BVFRBQ0hNRU5UMTAVR0xfQ09MT1JfQVRUQUNITUVOVDExFUdMX0NPTE9SX0FUVEFDSE1FTlQxMhVHTF9DT0xPUl9BVFRBQ0hNRU5UMTMVR0xfQ09MT1JfQVRUQUNITUVOVDE0FUdMX0NPTE9SX0FUVEFDSE1FTlQxNRRHTF9DT0xPUl9BVFRBQ0hNRU5UMhRHTF9DT0xPUl9BVFRBQ0hNRU5UMxRHTF9DT0xPUl9BVFRBQ0hNRU5UNBRHTF9DT0xPUl9BVFRBQ0hNRU5UNRRHTF9DT0xPUl9BVFRBQ0hNRU5UNhRHTF9DT0xPUl9BVFRBQ0hNRU5UNxRHTF9DT0xPUl9BVFRBQ0hNRU5UOBRHTF9DT0xPUl9BVFRBQ0hNRU5UOQdHTF9OT05FAoKBBoKDBIKFBoKHBIKJBoKLBoKNBIKPBoKRCAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzCFByb2dyYW1zAghVbmlmb3JtcwIEVHlwZRUIR0xfRkxPQVQGR0xfSU5UD0dMX1VOU0lHTkVEX0lOVA1HTF9GTE9BVF9WRUMyC0dMX0lOVF9WRUMyFEdMX1VOU0lHTkVEX0lOVF9WRUMyDUdMX0ZMT0FUX1ZFQzMLR0xfSU5UX1ZFQzMUR0xfVU5TSUdORURfSU5UX1ZFQzMNR0xfRkxPQVRfVkVDNAtHTF9JTlRfVkVDNBRHTF9VTlNJR05FRF9JTlRfVkVDNA1HTF9GTE9BVF9NQVQyD0dMX0ZMT0FUX01BVDJ4Mw9HTF9GTE9BVF9NQVQyeDQNR0xfRkxPQVRfTUFUMw9HTF9GTE9BVF9NQVQzeDIPR0xfRkxPQVRfTUFUM3g0DUdMX0ZMT0FUX01BVDQPR0xfRkxPQVRfTUFUNHgyD0dMX0ZMT0FUX01BVDR4MwqCkwaClQSClwaCmQSCmwaCnQaCnwSCoQaCowgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcwhQcm9ncmFtcwIIVW5pZm9ybXMCBVZhbHVlAgIAAoKlBoKnBIKpBoKrBoKtBIKvBoKxCAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzDVJlbmRlcmJ1ZmZlcnMCDkludGVybmFsRm9ybWF0JRRHTF9ERVBUSF9DT01QT05FTlQxNglHTF9SR0I1NjUKR0xfUkdCNV9BMQhHTF9SR0JBNBFHTF9TVEVOQ0lMX0lOREVYOBNHTF9ERVBUSDI0X1NURU5DSUw4FEdMX0RFUFRIMzJGX1NURU5DSUw4FEdMX0RFUFRIX0NPTVBPTkVOVDI0FUdMX0RFUFRIX0NPTVBPTkVOVDMyRgdHTF9SMTZJCEdMX1IxNlVJB0dMX1IzMkkIR0xfUjMyVUkFR0xfUjgGR0xfUjhJB0dMX1I4VUkIR0xfUkcxNkkJR0xfUkcxNlVJCEdMX1JHMzJJCUdMX1JHMzJVSQZHTF9SRzgHR0xfUkc4SQhHTF9SRzhVSQtHTF9SR0IxMF9BMg1HTF9SR0IxMF9BMlVJB0dMX1JHQjgKR0xfUkdCQTE2SQtHTF9SR0JBMTZVSQpHTF9SR0JBMzJJC0dMX1JHQkEzMlVJCEdMX1JHQkE4CUdMX1JHQkE4SQpHTF9SR0JBOFVJD0dMX1NSR0I4X0FMUEhBOAZHTF9SMTYHR0xfUkcxNglHTF9SR0JBMTYCgrMGgrUEgrcGgrkGgrsEgr0Ggr8IBVN0YXRlCENvbnRleHRzAglJbnN0YW5jZXMHU2hhZGVycwIKU2hhZGVyVHlwZQYSR0xfRlJBR01FTlRfU0hBREVSEEdMX1ZFUlRFWF9TSEFERVIRR0xfQ09NUFVURV9TSEFERVISR0xfR0VPTUVUUllfU0hBREVSFkdMX1RFU1NfQ09OVFJPTF9TSEFERVIZR0xfVEVTU19FVkFMVUFUSU9OX1NIQURFUgKCwQaCwwSCxQaCxwaCyQSCywaCzQgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcwdTaGFkZXJzAgRUeXBlBhJHTF9GUkFHTUVOVF9TSEFERVIQR0xfVkVSVEVYX1NIQURFUhFHTF9DT01QVVRFX1NIQURFUhJHTF9HRU9NRVRSWV9TSEFERVIWR0xfVEVTU19DT05UUk9MX1NIQURFUhlHTF9URVNTX0VWQUxVQVRJT05fU0hBREVSAoLPBoLRBILTBoLVBoLXBILZBoLbCAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzCFRleHR1cmVzAgRLaW5kCRdHTF9URVhUVVJFX0VYVEVSTkFMX09FUw1HTF9URVhUVVJFXzJEE0dMX1RFWFRVUkVfMkRfQVJSQVkZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZDUdMX1RFWFRVUkVfM0QRR0xfVEVYVFVSRV9CVUZGRVITR0xfVEVYVFVSRV9DVUJFX01BUBlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZAoLdBoLfBILhBoLjBoLlBILnBoLpCAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzCFRleHR1cmVzAglNaW5GaWx0ZXIBCUdMX0xJTkVBUgKC6waC7QSC7waC8QaC8wSC9QaC9wgFU3RhdGUIQ29udGV4dHMCCUluc3RhbmNlcwhUZXh0dXJlcwIFV3JhcFMBEEdMX0NMQU1QX1RPX0VER0UCgvkGgvsEgv0Ggv8GgwEEgwMGgwUIBVN0YXRlCENvbnRleHRzAglJbnN0YW5jZXMIVGV4dHVyZXMCBVdyYXBUARBHTF9DTEFNUF9UT19FREdFAoMHBoMJBIMLBoMNBIMPBoMRBoMTBIMVBoMXCAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzDFZlcnRleEFycmF5cwIVVmVydGV4QXR0cmlidXRlQXJyYXlzAgdFbmFibGVkAghHTF9GQUxTRQdHTF9UUlVFCoMZBIMbBoMdBIMfBoMhBIMjBoMlBoMnBIMpBoMrCAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzDFZlcnRleEFycmF5cwIVVmVydGV4QXR0cmlidXRlQXJyYXlzAgdQb2ludGVyBAEAAoMtBoMvBIMxBoMzBIM1BoM3BoM5BIM7BoM9CAVTdGF0ZQhDb250ZXh0cwIJSW5zdGFuY2VzDFZlcnRleEFycmF5cwIVVmVydGV4QXR0cmlidXRlQXJyYXlzAgRUeXBlDAdHTF9CWVRFEEdMX1VOU0lHTkVEX0JZVEUIR0xfU0hPUlQRR0xfVU5TSUdORURfU0hPUlQNR0xfSEFMRl9GTE9BVBFHTF9IQUxGX0ZMT0FUX09FUwZHTF9JTlQPR0xfVU5TSUdORURfSU5UCEdMX0ZMT0FUCEdMX0ZJWEVEFUdMX0lOVF8yXzEwXzEwXzEwX1JFVh5HTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYCgz8Gg0EGg0MEg0UGg0cIBVN0YXRlCENvbnRleHRzAg1NaXNjZWxsYW5lb3VzHEZyYWdtZW50U2hhZGVyRGVyaXZhdGl2ZUhpbnQDDEdMX0RPTlRfQ0FSRQpHTF9GQVNURVNUCUdMX05JQ0VTVAKDSQaDSwaDTQSDTwaDUQgFU3RhdGUIQ29udGV4dHMCDU1pc2NlbGxhbmVvdXMSR2VuZXJhdGVNaXBtYXBIaW50AwxHTF9ET05UX0NBUkUKR0xfRkFTVEVTVAlHTF9OSUNFU1QCg1MGg1UGg1cEg1kGg1sIBVN0YXRlCENvbnRleHRzAg1NaXNjZWxsYW5lb3VzGlByaW1pdGl2ZVJlc3RhcnRGaXhlZEluZGV4AghHTF9GQUxTRQdHTF9UUlVFAoNdBoNfBoNhBINjBoNlCAVTdGF0ZQhDb250ZXh0cwINUmFzdGVyaXphdGlvbghDdWxsRmFjZQIIR0xfRkFMU0UHR0xfVFJVRQKDZwaDaQaDawSDbQaDbwgFU3RhdGUIQ29udGV4dHMCDVJhc3Rlcml6YXRpb24MQ3VsbEZhY2VNb2RlAwdHTF9CQUNLCEdMX0ZST05UEUdMX0ZST05UX0FORF9CQUNLAoNxBoNzBoN1BIN3BoN5CAVTdGF0ZQhDb250ZXh0cwINUmFzdGVyaXphdGlvbglGcm9udEZhY2UCBkdMX0NDVwVHTF9DVwKDewaDfQaDfwSDgQaDgwgFU3RhdGUIQ29udGV4dHMCDVJhc3Rlcml6YXRpb24RUG9seWdvbk9mZnNldEZpbGwCCEdMX0ZBTFNFB0dMX1RSVUUCg4UGg4cGg4kEg4sGg40IBVN0YXRlCENvbnRleHRzAg1SYXN0ZXJpemF0aW9uEVJhc3Rlcml6ZXJEaXNjYXJkAghHTF9GQUxTRQdHTF9UUlVFAoOPBoORBoOTBIOVBoOXCAVTdGF0ZQhDb250ZXh0cwINUmFzdGVyaXphdGlvbhVTYW1wbGVBbHBoYVRvQ292ZXJhZ2UCCEdMX0ZBTFNFB0dMX1RSVUUCg5kGg5sGg50Eg58Gg6EIBVN0YXRlCENvbnRleHRzAg1SYXN0ZXJpemF0aW9uDlNhbXBsZUNvdmVyYWdlAghHTF9GQUxTRQdHTF9UUlVFAoOjBoOlBoOnBIOpBoOrCAVTdGF0ZQhDb250ZXh0cwINUmFzdGVyaXphdGlvbgpTYW1wbGVNYXNrAghHTF9GQUxTRQdHTF9UUlVFAoOtBIOvBoOxBIOzBoO1CAVTdGF0ZQhDb250ZXh0cwIMVGV4dHVyZVVuaXRzACALR0xfVEVYVFVSRTALR0xfVEVYVFVSRTEMR0xfVEVYVFVSRTEwDEdMX1RFWFRVUkUxMQxHTF9URVhUVVJFMTIMR0xfVEVYVFVSRTEzDEdMX1RFWFRVUkUxNAxHTF9URVhUVVJFMTUMR0xfVEVYVFVSRTE2DEdMX1RFWFRVUkUxNwxHTF9URVhUVVJFMTgMR0xfVEVYVFVSRTE5C0dMX1RFWFRVUkUyDEdMX1RFWFRVUkUyMAxHTF9URVhUVVJFMjEMR0xfVEVYVFVSRTIyDEdMX1RFWFRVUkUyMwxHTF9URVhUVVJFMjQMR0xfVEVYVFVSRTI1DEdMX1RFWFRVUkUyNgxHTF9URVhUVVJFMjcMR0xfVEVYVFVSRTI4DEdMX1RFWFRVUkUyOQtHTF9URVhUVVJFMwxHTF9URVhUVVJFMzAMR0xfVEVYVFVSRTMxC0dMX1RFWFRVUkU0C0dMX1RFWFRVUkU1C0dMX1RFWFRVUkU2C0dMX1RFWFRVUkU3C0dMX1RFWFRVUkU4C0dMX1RFWFRVUkU5AoO3BIO5BoO7BIO9BoO/CAVTdGF0ZQtFR0xDb250ZXh0cwIRQm91bmRGcmFtZWJ1ZmZlcnMAAhNHTF9EUkFXX0ZSQU1FQlVGRkVSE0dMX1JFQURfRlJBTUVCVUZGRVICg8EEg8MEg8UGg8cGg8kEg8sGg80IBVN0YXRlC0VHTENvbnRleHRzAgtGcmFtZWJ1ZmZlcg5Db2xvcldyaXRlbWFzawICAQdHTF9UUlVFAoPPBoPRBoPTBoPVBoPXBIPZBoPbCAVTdGF0ZQtFR0xDb250ZXh0cwIJSW5zdGFuY2VzD0RlZmF1bHRUZXh0dXJlcwlUZXh0dXJlMmQES2luZAENR0xfVEVYVFVSRV8yRAKD3QaD3waD4QaD4waD5QSD5waD6QgFU3RhdGULRUdMQ29udGV4dHMCCUluc3RhbmNlcw9EZWZhdWx0VGV4dHVyZXMOVGV4dHVyZTJkQXJyYXkES2luZAETR0xfVEVYVFVSRV8yRF9BUlJBWQKD6waD7QaD7waD8QaD8wSD9QaD9wgFU3RhdGULRUdMQ29udGV4dHMCCUluc3RhbmNlcw9EZWZhdWx0VGV4dHVyZXMUVGV4dHVyZTJkTXVsdGlzYW1wbGUES2luZAEZR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRQKD+QaD+waD/QaD/waEAQSEAwaEBQgFU3RhdGULRUdMQ29udGV4dHMCCUluc3RhbmNlcw9EZWZhdWx0VGV4dHVyZXMZVGV4dHVyZTJkTXVsdGlzYW1wbGVBcnJheQRLaW5kAR9HTF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZAoQHBoQJBoQLBoQNBoQPBIQRBoQTCAVTdGF0ZQtFR0xDb250ZXh0cwIJSW5zdGFuY2VzD0RlZmF1bHRUZXh0dXJlcwlUZXh0dXJlM2QES2luZAENR0xfVEVYVFVSRV8zRAKEFQaEFwaEGQaEGwaEHQSEHwaEIQgFU3RhdGULRUdMQ29udGV4dHMCCUluc3RhbmNlcw9EZWZhdWx0VGV4dHVyZXMNVGV4dHVyZUJ1ZmZlcgRLaW5kARFHTF9URVhUVVJFX0JVRkZFUgKEIwaEJQaEJwaEKQaEKwSELQaELwgFU3RhdGULRUdMQ29udGV4dHMCCUluc3RhbmNlcw9EZWZhdWx0VGV4dHVyZXMOVGV4dHVyZUN1YmVNYXAES2luZAETR0xfVEVYVFVSRV9DVUJFX01BUAKEMQaEMwaENQaENwaEOQSEOwaEPQgFU3RhdGULRUdMQ29udGV4dHMCCUluc3RhbmNlcw9EZWZhdWx0VGV4dHVyZXMTVGV4dHVyZUN1YmVNYXBBcnJheQRLaW5kARlHTF9URVhUVVJFX0NVQkVfTUFQX0FSUkFZAoQ/BoRBBoRDBoRFBoRHBIRJBoRLCAVTdGF0ZQtFR0xDb250ZXh0cwIJSW5zdGFuY2VzD0RlZmF1bHRUZXh0dXJlcxJUZXh0dXJlRXh0ZXJuYWxPZXMES2luZAEXR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMChE0GhE8EhFEGhFMEhFUGhFcGhFkEhFsGhF0IBVN0YXRlC0VHTENvbnRleHRzAglJbnN0YW5jZXMMRnJhbWVidWZmZXJzAgtBdHRhY2htZW50cwIKT2JqZWN0VHlwZQEPR0xfUkVOREVSQlVGRkVSAoRfBoRhBIRjBoRlBIRnBoRpBoRrBIRtBoRvCAVTdGF0ZQtFR0xDb250ZXh0cwIJSW5zdGFuY2VzDEZyYW1lYnVmZmVycwILQXR0YWNobWVudHMCElRleHR1cmVDdWJlTWFwRmFjZQEHR0xfTk9ORQKEcQSEcwaEdQSEdwaEeQaEewSEfQaEfwgFU3RhdGULRUdMQ29udGV4dHMCCUluc3RhbmNlcwxGcmFtZWJ1ZmZlcnMCC0F0dGFjaG1lbnRzAAMUR0xfQ09MT1JfQVRUQUNITUVOVDATR0xfREVQVEhfQVRUQUNITUVOVBVHTF9TVEVOQ0lMX0FUVEFDSE1FTlQChIEGhIMEhIUGhIcGhIkEhIsGhI0IBVN0YXRlC0VHTENvbnRleHRzAglJbnN0YW5jZXMMRnJhbWVidWZmZXJzAgpSZWFkQnVmZmVyAQdHTF9CQUNLAoSPBISRBoSTBISVBoSXCAVTdGF0ZQtFR0xDb250ZXh0cwIMVGV4dHVyZVVuaXRzAAELR0xfVEVYVFVSRTA=`
diff --git a/gapid/gfxapi/gles/types.api b/gapid/gfxapi/gles/types.api
index 5b8b148..3ce3d3d 100644
--- a/gapid/gfxapi/gles/types.api
+++ b/gapid/gfxapi/gles/types.api
@@ -27,7 +27,9 @@
type s32 GLint // 32 bit, signed, two's complement binary integer.
type u32 GLuint // 32 bit, unsigned binary integer.
type s64 GLint64 // 64 bit, signed, two's complement binary integer.
+type s64 GLint64EXT // 64 bit, signed, two's complement binary integer.
type u64 GLuint64 // 64 bit, unsigned binary integer.
+type u64 GLuint64EXT // 64 bit, unsigned binary integer.
type s32 GLfixed // 16.16 bits, signed, two's complement fixed-point integer.
type s32 GLsizei // 32 bit, signed binary integer used to represent sizes.
type s32 GLintptr // TODO: No API datatype to represent this type.
diff --git a/gapid/gfxapi/templates/go_common.tmpl b/gapid/gfxapi/templates/go_common.tmpl
index 7024c28..2437e40 100644
--- a/gapid/gfxapi/templates/go_common.tmpl
+++ b/gapid/gfxapi/templates/go_common.tmpl
@@ -393,7 +393,6 @@
{{else if IsS64 $.Type}}value.S64({{$.Name}})
{{else if IsInt $.Type}}value.S64({{$.Name}})
{{else if IsUint $.Type}}value.U64({{$.Name}})
- {{else if IsSize $.Type}}value.U64({{$.Name}})
{{else if IsString $.Type}}ϟb.String({{$.Name}})
{{else if IsPointer $.Type}}{{$.Name}}.value(ϟb, ϟa, ϟs)
{{else if IsEnum $.Type}}value.U32({{$.Name}})
diff --git a/gapid/gfxapi/templates/mutate.go.tmpl b/gapid/gfxapi/templates/mutate.go.tmpl
index 4993886..e389ded 100644
--- a/gapid/gfxapi/templates/mutate.go.tmpl
+++ b/gapid/gfxapi/templates/mutate.go.tmpl
@@ -205,6 +205,17 @@
} else {
ϟb.Push({{Template "Go.Replay.Value" "Type" $.Type "Name" $.Name}})
}
+ {{else if IsSize $.Type}}
+ {
+ size_size := ϟs.MemoryLayout.SizeSize * 8
+ if size_size == 32 {
+ ϟb.Push(value.U32({{$.Name}}))
+ } else if size_size == 64 {
+ ϟb.Push(value.U64({{$.Name}}))
+ } else {
+ panic(fmt.Errorf("Unsupported size type bitwidth: %v", size_size))
+ }
+ }
{{else}}
ϟb.Push({{Template "Go.Replay.Value" "Type" $.Type "Name" $.Name}})
{{end}}
diff --git a/gapid/gfxapi/vulkan/api.go b/gapid/gfxapi/vulkan/api.go
index f9e4e8a..f8d4ce4 100644
--- a/gapid/gfxapi/vulkan/api.go
+++ b/gapid/gfxapi/vulkan/api.go
@@ -412,6 +412,7 @@
// Check interface conformance
var _ path.Linker = PFN_vkVoidFunction{}
+type VkExternalMemoryHandleTypeFlagsNV VkFlags
type VkSurfaceTransformFlagsKHR VkFlags
type VkCompositeAlphaFlagsKHR VkFlags
type VkSwapchainCreateFlagsKHR VkFlags
@@ -8443,6 +8444,108 @@
// Check interface conformance
var _ path.Linker = VkDeviceMemoryᵖ{}
+// VkStructureTypeᵖ is a pointer to a VkStructureType element.
+type VkStructureTypeᵖ memory.Pointer
+
+// NewVkStructureTypeᵖ returns a VkStructureTypeᵖ that points to addr in the application pool.
+func NewVkStructureTypeᵖ(addr uint64) VkStructureTypeᵖ {
+ return VkStructureTypeᵖ{Address: addr, Pool: memory.ApplicationPool}
+}
+
+// ElementSize returns the size in bytes of an element that VkStructureTypeᵖ points to.
+func (p VkStructureTypeᵖ) ElementSize(ϟs *gfxapi.State) uint64 {
+ return uint64(4)
+}
+
+// Read reads and returns the VkStructureType element at the pointer.
+func (p VkStructureTypeᵖ) Read(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) VkStructureType {
+ return p.Slice(0, 1, ϟs).Read(ϟctx, ϟa, ϟs, ϟd, ϟb)[0]
+}
+
+// Write writes value to the VkStructureType element at the pointer.
+func (p VkStructureTypeᵖ) Write(ϟctx log.Context, value VkStructureType, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ p.Slice(0, 1, ϟs).Write(ϟctx, []VkStructureType{value}, ϟa, ϟs, ϟd, ϟb)
+}
+
+// Slice returns a new VkStructureTypeˢ from the pointer using start and end indices.
+func (p VkStructureTypeᵖ) Slice(start, end uint64, ϟs *gfxapi.State) VkStructureTypeˢ {
+ if start > end {
+ panic(fmt.Errorf("Slice start (%d) is greater than the end (%d)", start, end))
+ }
+ return VkStructureTypeˢ{SliceInfo: memory.SliceInfo{Root: p.Address, Base: p.Address + start*p.ElementSize(ϟs), Count: end - start, Pool: p.Pool}}
+}
+func (p VkStructureTypeᵖ) value(ϟb *builder.Builder, ϟa atom.Atom, ϟs *gfxapi.State) value.Pointer {
+ if p.Address != 0 {
+ return value.ObservedPointer(p.Address)
+ } else {
+ return value.AbsolutePointer(0)
+ }
+}
+
+// Link returns a path to the object that this is a link to, or error
+// if you can not follow this path. Typically the incoming path ϟp
+// is a path to the atom and resulting path is a path to an object
+// identified by p. Once resolved the path will return a representation
+// of the value of the instance after the atom has executed.
+func (p VkStructureTypeᵖ) Link(ϟctx log.Context, ϟp path.Path, ϟd database.Database) (path.Path, error) {
+ ϟt := path.MemoryType{Kind: path.MemoryKind_Integer, ByteSize: uint64(4)}
+ return resolve.TypedLink(memory.Pointer(p), ϟctx, ϟp, ϟd, ϟt)
+}
+
+// Check interface conformance
+var _ path.Linker = VkStructureTypeᵖ{}
+
+// VkDedicatedAllocationMemoryAllocateInfoNVᵖ is a pointer to a VkDedicatedAllocationMemoryAllocateInfoNV element.
+type VkDedicatedAllocationMemoryAllocateInfoNVᵖ memory.Pointer
+
+// NewVkDedicatedAllocationMemoryAllocateInfoNVᵖ returns a VkDedicatedAllocationMemoryAllocateInfoNVᵖ that points to addr in the application pool.
+func NewVkDedicatedAllocationMemoryAllocateInfoNVᵖ(addr uint64) VkDedicatedAllocationMemoryAllocateInfoNVᵖ {
+ return VkDedicatedAllocationMemoryAllocateInfoNVᵖ{Address: addr, Pool: memory.ApplicationPool}
+}
+
+// ElementSize returns the size in bytes of an element that VkDedicatedAllocationMemoryAllocateInfoNVᵖ points to.
+func (p VkDedicatedAllocationMemoryAllocateInfoNVᵖ) ElementSize(ϟs *gfxapi.State) uint64 {
+ return VkDedicatedAllocationMemoryAllocateInfoNVSize(ϟs)
+}
+
+// Read reads and returns the VkDedicatedAllocationMemoryAllocateInfoNV element at the pointer.
+func (p VkDedicatedAllocationMemoryAllocateInfoNVᵖ) Read(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) VkDedicatedAllocationMemoryAllocateInfoNV {
+ return p.Slice(0, 1, ϟs).Read(ϟctx, ϟa, ϟs, ϟd, ϟb)[0]
+}
+
+// Write writes value to the VkDedicatedAllocationMemoryAllocateInfoNV element at the pointer.
+func (p VkDedicatedAllocationMemoryAllocateInfoNVᵖ) Write(ϟctx log.Context, value VkDedicatedAllocationMemoryAllocateInfoNV, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ p.Slice(0, 1, ϟs).Write(ϟctx, []VkDedicatedAllocationMemoryAllocateInfoNV{value}, ϟa, ϟs, ϟd, ϟb)
+}
+
+// Slice returns a new VkDedicatedAllocationMemoryAllocateInfoNVˢ from the pointer using start and end indices.
+func (p VkDedicatedAllocationMemoryAllocateInfoNVᵖ) Slice(start, end uint64, ϟs *gfxapi.State) VkDedicatedAllocationMemoryAllocateInfoNVˢ {
+ if start > end {
+ panic(fmt.Errorf("Slice start (%d) is greater than the end (%d)", start, end))
+ }
+ return VkDedicatedAllocationMemoryAllocateInfoNVˢ{SliceInfo: memory.SliceInfo{Root: p.Address, Base: p.Address + start*p.ElementSize(ϟs), Count: end - start, Pool: p.Pool}}
+}
+func (p VkDedicatedAllocationMemoryAllocateInfoNVᵖ) value(ϟb *builder.Builder, ϟa atom.Atom, ϟs *gfxapi.State) value.Pointer {
+ if p.Address != 0 {
+ return value.ObservedPointer(p.Address)
+ } else {
+ return value.AbsolutePointer(0)
+ }
+}
+
+// Link returns a path to the object that this is a link to, or error
+// if you can not follow this path. Typically the incoming path ϟp
+// is a path to the atom and resulting path is a path to an object
+// identified by p. Once resolved the path will return a representation
+// of the value of the instance after the atom has executed.
+func (p VkDedicatedAllocationMemoryAllocateInfoNVᵖ) Link(ϟctx log.Context, ϟp path.Path, ϟd database.Database) (path.Path, error) {
+ ϟt := path.UnknownType
+ return resolve.TypedLink(memory.Pointer(p), ϟctx, ϟp, ϟd, ϟt)
+}
+
+// Check interface conformance
+var _ path.Linker = VkDedicatedAllocationMemoryAllocateInfoNVᵖ{}
+
// VkMappedMemoryRangeᶜᵖ is a pointer to a VkMappedMemoryRange element.
type VkMappedMemoryRangeᶜᵖ memory.Pointer
@@ -9514,6 +9617,57 @@
// Check interface conformance
var _ path.Linker = VkBufferᵖ{}
+// VkDedicatedAllocationBufferCreateInfoNVᵖ is a pointer to a VkDedicatedAllocationBufferCreateInfoNV element.
+type VkDedicatedAllocationBufferCreateInfoNVᵖ memory.Pointer
+
+// NewVkDedicatedAllocationBufferCreateInfoNVᵖ returns a VkDedicatedAllocationBufferCreateInfoNVᵖ that points to addr in the application pool.
+func NewVkDedicatedAllocationBufferCreateInfoNVᵖ(addr uint64) VkDedicatedAllocationBufferCreateInfoNVᵖ {
+ return VkDedicatedAllocationBufferCreateInfoNVᵖ{Address: addr, Pool: memory.ApplicationPool}
+}
+
+// ElementSize returns the size in bytes of an element that VkDedicatedAllocationBufferCreateInfoNVᵖ points to.
+func (p VkDedicatedAllocationBufferCreateInfoNVᵖ) ElementSize(ϟs *gfxapi.State) uint64 {
+ return VkDedicatedAllocationBufferCreateInfoNVSize(ϟs)
+}
+
+// Read reads and returns the VkDedicatedAllocationBufferCreateInfoNV element at the pointer.
+func (p VkDedicatedAllocationBufferCreateInfoNVᵖ) Read(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) VkDedicatedAllocationBufferCreateInfoNV {
+ return p.Slice(0, 1, ϟs).Read(ϟctx, ϟa, ϟs, ϟd, ϟb)[0]
+}
+
+// Write writes value to the VkDedicatedAllocationBufferCreateInfoNV element at the pointer.
+func (p VkDedicatedAllocationBufferCreateInfoNVᵖ) Write(ϟctx log.Context, value VkDedicatedAllocationBufferCreateInfoNV, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ p.Slice(0, 1, ϟs).Write(ϟctx, []VkDedicatedAllocationBufferCreateInfoNV{value}, ϟa, ϟs, ϟd, ϟb)
+}
+
+// Slice returns a new VkDedicatedAllocationBufferCreateInfoNVˢ from the pointer using start and end indices.
+func (p VkDedicatedAllocationBufferCreateInfoNVᵖ) Slice(start, end uint64, ϟs *gfxapi.State) VkDedicatedAllocationBufferCreateInfoNVˢ {
+ if start > end {
+ panic(fmt.Errorf("Slice start (%d) is greater than the end (%d)", start, end))
+ }
+ return VkDedicatedAllocationBufferCreateInfoNVˢ{SliceInfo: memory.SliceInfo{Root: p.Address, Base: p.Address + start*p.ElementSize(ϟs), Count: end - start, Pool: p.Pool}}
+}
+func (p VkDedicatedAllocationBufferCreateInfoNVᵖ) value(ϟb *builder.Builder, ϟa atom.Atom, ϟs *gfxapi.State) value.Pointer {
+ if p.Address != 0 {
+ return value.ObservedPointer(p.Address)
+ } else {
+ return value.AbsolutePointer(0)
+ }
+}
+
+// Link returns a path to the object that this is a link to, or error
+// if you can not follow this path. Typically the incoming path ϟp
+// is a path to the atom and resulting path is a path to an object
+// identified by p. Once resolved the path will return a representation
+// of the value of the instance after the atom has executed.
+func (p VkDedicatedAllocationBufferCreateInfoNVᵖ) Link(ϟctx log.Context, ϟp path.Path, ϟd database.Database) (path.Path, error) {
+ ϟt := path.UnknownType
+ return resolve.TypedLink(memory.Pointer(p), ϟctx, ϟp, ϟd, ϟt)
+}
+
+// Check interface conformance
+var _ path.Linker = VkDedicatedAllocationBufferCreateInfoNVᵖ{}
+
// VkBufferViewCreateInfoᶜᵖ is a pointer to a VkBufferViewCreateInfo element.
type VkBufferViewCreateInfoᶜᵖ memory.Pointer
@@ -9769,6 +9923,57 @@
// Check interface conformance
var _ path.Linker = VkImageᵖ{}
+// VkDedicatedAllocationImageCreateInfoNVᵖ is a pointer to a VkDedicatedAllocationImageCreateInfoNV element.
+type VkDedicatedAllocationImageCreateInfoNVᵖ memory.Pointer
+
+// NewVkDedicatedAllocationImageCreateInfoNVᵖ returns a VkDedicatedAllocationImageCreateInfoNVᵖ that points to addr in the application pool.
+func NewVkDedicatedAllocationImageCreateInfoNVᵖ(addr uint64) VkDedicatedAllocationImageCreateInfoNVᵖ {
+ return VkDedicatedAllocationImageCreateInfoNVᵖ{Address: addr, Pool: memory.ApplicationPool}
+}
+
+// ElementSize returns the size in bytes of an element that VkDedicatedAllocationImageCreateInfoNVᵖ points to.
+func (p VkDedicatedAllocationImageCreateInfoNVᵖ) ElementSize(ϟs *gfxapi.State) uint64 {
+ return VkDedicatedAllocationImageCreateInfoNVSize(ϟs)
+}
+
+// Read reads and returns the VkDedicatedAllocationImageCreateInfoNV element at the pointer.
+func (p VkDedicatedAllocationImageCreateInfoNVᵖ) Read(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) VkDedicatedAllocationImageCreateInfoNV {
+ return p.Slice(0, 1, ϟs).Read(ϟctx, ϟa, ϟs, ϟd, ϟb)[0]
+}
+
+// Write writes value to the VkDedicatedAllocationImageCreateInfoNV element at the pointer.
+func (p VkDedicatedAllocationImageCreateInfoNVᵖ) Write(ϟctx log.Context, value VkDedicatedAllocationImageCreateInfoNV, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) {
+ p.Slice(0, 1, ϟs).Write(ϟctx, []VkDedicatedAllocationImageCreateInfoNV{value}, ϟa, ϟs, ϟd, ϟb)
+}
+
+// Slice returns a new VkDedicatedAllocationImageCreateInfoNVˢ from the pointer using start and end indices.
+func (p VkDedicatedAllocationImageCreateInfoNVᵖ) Slice(start, end uint64, ϟs *gfxapi.State) VkDedicatedAllocationImageCreateInfoNVˢ {
+ if start > end {
+ panic(fmt.Errorf("Slice start (%d) is greater than the end (%d)", start, end))
+ }
+ return VkDedicatedAllocationImageCreateInfoNVˢ{SliceInfo: memory.SliceInfo{Root: p.Address, Base: p.Address + start*p.ElementSize(ϟs), Count: end - start, Pool: p.Pool}}
+}
+func (p VkDedicatedAllocationImageCreateInfoNVᵖ) value(ϟb *builder.Builder, ϟa atom.Atom, ϟs *gfxapi.State) value.Pointer {
+ if p.Address != 0 {
+ return value.ObservedPointer(p.Address)
+ } else {
+ return value.AbsolutePointer(0)
+ }
+}
+
+// Link returns a path to the object that this is a link to, or error
+// if you can not follow this path. Typically the incoming path ϟp
+// is a path to the atom and resulting path is a path to an object
+// identified by p. Once resolved the path will return a representation
+// of the value of the instance after the atom has executed.
+func (p VkDedicatedAllocationImageCreateInfoNVᵖ) Link(ϟctx log.Context, ϟp path.Path, ϟd database.Database) (path.Path, error) {
+ ϟt := path.UnknownType
+ return resolve.TypedLink(memory.Pointer(p), ϟctx, ϟp, ϟd, ϟt)
+}
+
+// Check interface conformance
+var _ path.Linker = VkDedicatedAllocationImageCreateInfoNVᵖ{}
+
// VkImageSubresourceᶜᵖ is a pointer to a VkImageSubresource element.
type VkImageSubresourceᶜᵖ memory.Pointer
@@ -26231,6 +26436,869 @@
// Check interface conformance
var _ path.Linker = VkDebugReportCallbackEXTˢ{}
+// VkDedicatedAllocationBufferCreateInfoNVˢ is a slice of VkDedicatedAllocationBufferCreateInfoNV.
+type VkDedicatedAllocationBufferCreateInfoNVˢ struct {
+ binary.Generate
+ memory.SliceInfo
+}
+
+// MakeVkDedicatedAllocationBufferCreateInfoNVˢ returns a VkDedicatedAllocationBufferCreateInfoNVˢ backed by a new memory pool.
+func MakeVkDedicatedAllocationBufferCreateInfoNVˢ(count uint64, ϟs *gfxapi.State) VkDedicatedAllocationBufferCreateInfoNVˢ {
+ id := ϟs.NextPoolID
+ ϟs.Memory[id] = &memory.Pool{}
+ ϟs.NextPoolID++
+ return VkDedicatedAllocationBufferCreateInfoNVˢ{SliceInfo: memory.SliceInfo{Count: count, Pool: id}}
+}
+
+// Clone returns a copy of the VkDedicatedAllocationBufferCreateInfoNVˢ in a new memory pool.
+func (s VkDedicatedAllocationBufferCreateInfoNVˢ) Clone(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) VkDedicatedAllocationBufferCreateInfoNVˢ {
+ s.OnRead(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ pool := &memory.Pool{}
+ pool.Write(0, ϟs.Memory[s.Pool].Slice(s.Range(ϟs)))
+ id := ϟs.NextPoolID
+ ϟs.Memory[id] = pool
+ ϟs.NextPoolID++
+ dst := VkDedicatedAllocationBufferCreateInfoNVˢ{SliceInfo: memory.SliceInfo{Count: s.Count, Pool: id}}
+ return dst
+}
+
+// ElementSize returns the size in bytes of an element that VkDedicatedAllocationBufferCreateInfoNVˢ points to.
+func (s VkDedicatedAllocationBufferCreateInfoNVˢ) ElementSize(ϟs *gfxapi.State) uint64 {
+ return VkDedicatedAllocationBufferCreateInfoNVSize(ϟs)
+}
+
+// ElementTypeName returns the name of the type of element in VkDedicatedAllocationBufferCreateInfoNVˢ.
+func (s VkDedicatedAllocationBufferCreateInfoNVˢ) ElementTypeName() string {
+ return "VkDedicatedAllocationBufferCreateInfoNV"
+}
+
+// Range returns the memory range this slice represents in the underlying pool.
+func (s VkDedicatedAllocationBufferCreateInfoNVˢ) Range(ϟs *gfxapi.State) memory.Range {
+ return memory.Range{Base: s.Base, Size: s.Count * s.ElementSize(ϟs)}
+}
+
+// ResourceID returns an identifier to a resource representing the data of
+// this slice.
+func (s VkDedicatedAllocationBufferCreateInfoNVˢ) ResourceID(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database) id.ID {
+ id, err := ϟs.Memory[s.Pool].Slice(s.Range(ϟs)).ResourceID(ϟctx, ϟd)
+ if err != nil {
+ panic(err)
+ }
+ return id
+}
+
+// Decoder returns a memory decoder for the slice.
+func (s VkDedicatedAllocationBufferCreateInfoNVˢ) Decoder(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database) binary.Reader {
+ return ϟs.MemoryDecoder(ϟctx, ϟs.Memory[s.Pool].Slice(s.Range(ϟs)), ϟd)
+}
+
+// Encoder returns a memory encoder for the slice.
+func (s VkDedicatedAllocationBufferCreateInfoNVˢ) Encoder(ϟs *gfxapi.State) binary.Writer {
+ return ϟs.MemoryEncoder(ϟs.Memory[s.Pool], s.Range(ϟs))
+}
+
+// AsVkDedicatedAllocationBufferCreateInfoNVˢ returns s cast to a VkDedicatedAllocationBufferCreateInfoNVˢ.
+// The returned slice length will be calculated so that the returned slice is
+// no longer (in bytes) than s.
+func AsVkDedicatedAllocationBufferCreateInfoNVˢ(s slice, ϟs *gfxapi.State) VkDedicatedAllocationBufferCreateInfoNVˢ {
+ out := VkDedicatedAllocationBufferCreateInfoNVˢ{SliceInfo: s.Info()}
+ out.Count = (out.Count * s.ElementSize(ϟs)) / out.ElementSize(ϟs)
+ return out
+}
+
+// Read reads and returns all the VkDedicatedAllocationBufferCreateInfoNV elements in this VkDedicatedAllocationBufferCreateInfoNVˢ.
+func (s VkDedicatedAllocationBufferCreateInfoNVˢ) Read(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) []VkDedicatedAllocationBufferCreateInfoNV {
+ d, res := s.Decoder(ϟctx, ϟs, ϟd), make([]VkDedicatedAllocationBufferCreateInfoNV, s.Count)
+ s.OnRead(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ for i := range res {
+ if s.Pool == memory.ApplicationPool {
+ VkDedicatedAllocationBufferCreateInfoNVDecodeRaw(ϟs, d, &res[i])
+ if d.Error() != nil {
+ panic(d.Error())
+ }
+ } else {
+ if d.Simple(&res[i]); d.Error() != nil {
+ panic(d.Error())
+ }
+ }
+ }
+ return res
+}
+
+// Write copies elements from src to this slice. The number of elements copied is returned
+// which is the minimum of s.Count and len(src).
+func (s VkDedicatedAllocationBufferCreateInfoNVˢ) Write(ϟctx log.Context, src []VkDedicatedAllocationBufferCreateInfoNV, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) uint64 {
+ count := min(s.Count, uint64(len(src)))
+ s = s.Slice(0, count, ϟs)
+ e := s.Encoder(ϟs)
+ for i := uint64(0); i < count; i++ {
+ if s.Pool == memory.ApplicationPool {
+ VkDedicatedAllocationBufferCreateInfoNVEncodeRaw(ϟs, e, &src[i])
+ if e.Error() != nil {
+ panic(e.Error())
+ }
+ } else {
+ if e.Simple(&src[i]); e.Error() != nil {
+ panic(e.Error())
+ }
+ }
+ }
+ s.OnWrite(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ return count
+}
+
+// Copy copies elements from src to this slice.
+// The number of elements copied is the minimum of dst.Count and src.Count.
+// The slices of this and dst to the copied elements is returned.
+func (dst VkDedicatedAllocationBufferCreateInfoNVˢ) Copy(ϟctx log.Context, src VkDedicatedAllocationBufferCreateInfoNVˢ, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) (d, s VkDedicatedAllocationBufferCreateInfoNVˢ) {
+ count := min(dst.Count, src.Count)
+ dst, src = dst.Slice(0, count, ϟs), src.Slice(0, count, ϟs)
+ src.OnRead(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ ϟs.Memory[dst.Pool].Write(dst.Base, ϟs.Memory[src.Pool].Slice(src.Range(ϟs)))
+ dst.OnWrite(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ return dst, src
+}
+
+// Contains returns true if the slice contains the specified value.
+func (s VkDedicatedAllocationBufferCreateInfoNVˢ) Contains(ϟctx log.Context, val VkDedicatedAllocationBufferCreateInfoNV, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) bool {
+ for _, e := range s.Read(ϟctx, ϟa, ϟs, ϟd, ϟb) {
+ if e == val {
+ return true
+ }
+ }
+ return false
+}
+
+// OnRead calls the backing pool's OnRead callback. s is returned so calls can be chained.
+func (s VkDedicatedAllocationBufferCreateInfoNVˢ) OnRead(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) VkDedicatedAllocationBufferCreateInfoNVˢ {
+ if f := ϟs.Memory[s.Pool].OnRead; f != nil {
+ f(s.Range(ϟs))
+ }
+ if ϟb != nil && s.Pool == memory.ApplicationPool {
+ s.ReserveMemory(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ // Write out the entire structure, then over-write
+ // any pointer fields.
+ ϟb.Write(s.Range(ϟs), s.ResourceID(ϟctx, ϟs, ϟd))
+ d := s.Decoder(ϟctx, ϟs, ϟd)
+ base := value.ObservedPointer(s.Base)
+ // If there are no members, then lets not have Go complain
+ // about unused variables.
+ _ = d
+ _ = base
+ offset := uint64(0)
+ _ = offset // Silence warnings for objects with no fields
+ for i := uint64(0); i < s.Count; i++ {
+ {
+ required_alignment := uint64(4)
+ if offset%required_alignment != 0 {
+ extra_reads := required_alignment - (offset % required_alignment)
+ offset += extra_reads
+ for i := uint64(0); i < extra_reads; i++ {
+ if binary.ReadUint(d, 8); d.Error() != nil {
+ panic(d.Error())
+ }
+ base += value.ObservedPointer(1)
+ }
+ }
+ offset += uint64(4)
+ var v VkStructureType
+ if ϟv := d.Uint32(); d.Error() == nil {
+ v = VkStructureType(ϟv)
+ } else {
+ panic(d.Error())
+ }
+ var _ = v
+ // We don't actually have to write the type here since we wrote
+ // the entire range, we just need to keep the decoder in sync.
+ base += value.ObservedPointer(uint64(4))
+ }
+ {
+ required_alignment := uint64(ϟs.MemoryLayout.PointerSize)
+ if offset%required_alignment != 0 {
+ extra_reads := required_alignment - (offset % required_alignment)
+ offset += extra_reads
+ for i := uint64(0); i < extra_reads; i++ {
+ if binary.ReadUint(d, 8); d.Error() != nil {
+ panic(d.Error())
+ }
+ base += value.ObservedPointer(1)
+ }
+ }
+ offset += uint64(ϟs.MemoryLayout.PointerSize)
+ i := binary.ReadUint(d, ϟs.MemoryLayout.PointerSize*8)
+ v := NewVoidᶜᵖ(i).value(ϟb, ϟa, ϟs)
+ ϟb.Push(v)
+ ϟb.Store(base)
+ base += value.ObservedPointer(ϟs.MemoryLayout.PointerSize)
+ }
+ {
+ required_alignment := uint64(4)
+ if offset%required_alignment != 0 {
+ extra_reads := required_alignment - (offset % required_alignment)
+ offset += extra_reads
+ for i := uint64(0); i < extra_reads; i++ {
+ if binary.ReadUint(d, 8); d.Error() != nil {
+ panic(d.Error())
+ }
+ base += value.ObservedPointer(1)
+ }
+ }
+ offset += uint64(4)
+ var v VkBool32
+ if ϟv := d.Uint32(); d.Error() == nil {
+ v = VkBool32(ϟv)
+ } else {
+ panic(d.Error())
+ }
+ var _ = v
+ // We don't actually have to write the type here since we wrote
+ // the entire range, we just need to keep the decoder in sync.
+ base += value.ObservedPointer(uint64(4))
+ }
+ }
+ }
+ return s
+}
+
+// OnWrite calls the backing pool's OnWrite callback. s is returned so calls can be chained.
+func (s VkDedicatedAllocationBufferCreateInfoNVˢ) OnWrite(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) VkDedicatedAllocationBufferCreateInfoNVˢ {
+ if f := ϟs.Memory[s.Pool].OnWrite; f != nil {
+ f(s.Range(ϟs))
+ }
+ if ϟb != nil && s.Pool == memory.ApplicationPool {
+ ϟb.ReserveMemory(memory.Range{Base: s.Root, Size: uint64(s.Range(ϟs).End() - s.Root)})
+ }
+ return s
+}
+func (s VkDedicatedAllocationBufferCreateInfoNVˢ) ReserveMemory(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) VkDedicatedAllocationBufferCreateInfoNVˢ {
+ if ϟb != nil && s.Pool == memory.ApplicationPool {
+ rng := s.Range(ϟs)
+ ϟb.ReserveMemory(memory.Range{Base: s.Root, Size: uint64(rng.End() - s.Root)})
+ }
+ return s
+}
+
+// Index returns a VkDedicatedAllocationBufferCreateInfoNVᵖ to the i'th element in this VkDedicatedAllocationBufferCreateInfoNVˢ.
+func (s VkDedicatedAllocationBufferCreateInfoNVˢ) Index(i uint64, ϟs *gfxapi.State) VkDedicatedAllocationBufferCreateInfoNVᵖ {
+ return VkDedicatedAllocationBufferCreateInfoNVᵖ{Address: s.Base + i*s.ElementSize(ϟs), Pool: s.Pool}
+}
+
+// Slice returns a sub-slice from the VkDedicatedAllocationBufferCreateInfoNVˢ using start and end indices.
+func (s VkDedicatedAllocationBufferCreateInfoNVˢ) Slice(start, end uint64, ϟs *gfxapi.State) VkDedicatedAllocationBufferCreateInfoNVˢ {
+ if start > end {
+ panic(fmt.Errorf("%v.Slice start (%d) is greater than the end (%d)", s, start, end))
+ }
+ if end > s.Count {
+ panic(fmt.Errorf("%v.Slice(%d, %d) - out of bounds", s, start, end))
+ }
+ return VkDedicatedAllocationBufferCreateInfoNVˢ{SliceInfo: memory.SliceInfo{Root: s.Root, Base: s.Base + start*s.ElementSize(ϟs), Count: end - start, Pool: s.Pool}}
+}
+
+// Info returns the memory.SliceInfo for this slice.
+func (s VkDedicatedAllocationBufferCreateInfoNVˢ) Info() memory.SliceInfo { return s.SliceInfo }
+
+// String returns a string description of the VkDedicatedAllocationBufferCreateInfoNVˢ slice.
+func (s VkDedicatedAllocationBufferCreateInfoNVˢ) String() string {
+ return fmt.Sprintf("VkDedicatedAllocationBufferCreateInfoNV(%v@%v)[%d]", s.Base, s.Pool, s.Count)
+}
+
+// Link returns a path which can be used to view memory which is referenced
+// by the slice s. When resolved the path includes memory type information as well
+// as the memory context itself.
+// If nil, nil is returned then the path cannot be followed.
+func (s VkDedicatedAllocationBufferCreateInfoNVˢ) Link(ϟctx log.Context, ϟp path.Path, ϟd database.Database) (path.Path, error) {
+ ϟt := path.UnknownType
+ return resolve.TypedLink(
+ memory.Pointer{Address: s.Base, Pool: s.Pool}, ϟctx, ϟp, ϟd, ϟt)
+}
+
+// Check interface conformance
+var _ path.Linker = VkDedicatedAllocationBufferCreateInfoNVˢ{}
+
+// VkDedicatedAllocationImageCreateInfoNVˢ is a slice of VkDedicatedAllocationImageCreateInfoNV.
+type VkDedicatedAllocationImageCreateInfoNVˢ struct {
+ binary.Generate
+ memory.SliceInfo
+}
+
+// MakeVkDedicatedAllocationImageCreateInfoNVˢ returns a VkDedicatedAllocationImageCreateInfoNVˢ backed by a new memory pool.
+func MakeVkDedicatedAllocationImageCreateInfoNVˢ(count uint64, ϟs *gfxapi.State) VkDedicatedAllocationImageCreateInfoNVˢ {
+ id := ϟs.NextPoolID
+ ϟs.Memory[id] = &memory.Pool{}
+ ϟs.NextPoolID++
+ return VkDedicatedAllocationImageCreateInfoNVˢ{SliceInfo: memory.SliceInfo{Count: count, Pool: id}}
+}
+
+// Clone returns a copy of the VkDedicatedAllocationImageCreateInfoNVˢ in a new memory pool.
+func (s VkDedicatedAllocationImageCreateInfoNVˢ) Clone(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) VkDedicatedAllocationImageCreateInfoNVˢ {
+ s.OnRead(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ pool := &memory.Pool{}
+ pool.Write(0, ϟs.Memory[s.Pool].Slice(s.Range(ϟs)))
+ id := ϟs.NextPoolID
+ ϟs.Memory[id] = pool
+ ϟs.NextPoolID++
+ dst := VkDedicatedAllocationImageCreateInfoNVˢ{SliceInfo: memory.SliceInfo{Count: s.Count, Pool: id}}
+ return dst
+}
+
+// ElementSize returns the size in bytes of an element that VkDedicatedAllocationImageCreateInfoNVˢ points to.
+func (s VkDedicatedAllocationImageCreateInfoNVˢ) ElementSize(ϟs *gfxapi.State) uint64 {
+ return VkDedicatedAllocationImageCreateInfoNVSize(ϟs)
+}
+
+// ElementTypeName returns the name of the type of element in VkDedicatedAllocationImageCreateInfoNVˢ.
+func (s VkDedicatedAllocationImageCreateInfoNVˢ) ElementTypeName() string {
+ return "VkDedicatedAllocationImageCreateInfoNV"
+}
+
+// Range returns the memory range this slice represents in the underlying pool.
+func (s VkDedicatedAllocationImageCreateInfoNVˢ) Range(ϟs *gfxapi.State) memory.Range {
+ return memory.Range{Base: s.Base, Size: s.Count * s.ElementSize(ϟs)}
+}
+
+// ResourceID returns an identifier to a resource representing the data of
+// this slice.
+func (s VkDedicatedAllocationImageCreateInfoNVˢ) ResourceID(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database) id.ID {
+ id, err := ϟs.Memory[s.Pool].Slice(s.Range(ϟs)).ResourceID(ϟctx, ϟd)
+ if err != nil {
+ panic(err)
+ }
+ return id
+}
+
+// Decoder returns a memory decoder for the slice.
+func (s VkDedicatedAllocationImageCreateInfoNVˢ) Decoder(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database) binary.Reader {
+ return ϟs.MemoryDecoder(ϟctx, ϟs.Memory[s.Pool].Slice(s.Range(ϟs)), ϟd)
+}
+
+// Encoder returns a memory encoder for the slice.
+func (s VkDedicatedAllocationImageCreateInfoNVˢ) Encoder(ϟs *gfxapi.State) binary.Writer {
+ return ϟs.MemoryEncoder(ϟs.Memory[s.Pool], s.Range(ϟs))
+}
+
+// AsVkDedicatedAllocationImageCreateInfoNVˢ returns s cast to a VkDedicatedAllocationImageCreateInfoNVˢ.
+// The returned slice length will be calculated so that the returned slice is
+// no longer (in bytes) than s.
+func AsVkDedicatedAllocationImageCreateInfoNVˢ(s slice, ϟs *gfxapi.State) VkDedicatedAllocationImageCreateInfoNVˢ {
+ out := VkDedicatedAllocationImageCreateInfoNVˢ{SliceInfo: s.Info()}
+ out.Count = (out.Count * s.ElementSize(ϟs)) / out.ElementSize(ϟs)
+ return out
+}
+
+// Read reads and returns all the VkDedicatedAllocationImageCreateInfoNV elements in this VkDedicatedAllocationImageCreateInfoNVˢ.
+func (s VkDedicatedAllocationImageCreateInfoNVˢ) Read(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) []VkDedicatedAllocationImageCreateInfoNV {
+ d, res := s.Decoder(ϟctx, ϟs, ϟd), make([]VkDedicatedAllocationImageCreateInfoNV, s.Count)
+ s.OnRead(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ for i := range res {
+ if s.Pool == memory.ApplicationPool {
+ VkDedicatedAllocationImageCreateInfoNVDecodeRaw(ϟs, d, &res[i])
+ if d.Error() != nil {
+ panic(d.Error())
+ }
+ } else {
+ if d.Simple(&res[i]); d.Error() != nil {
+ panic(d.Error())
+ }
+ }
+ }
+ return res
+}
+
+// Write copies elements from src to this slice. The number of elements copied is returned
+// which is the minimum of s.Count and len(src).
+func (s VkDedicatedAllocationImageCreateInfoNVˢ) Write(ϟctx log.Context, src []VkDedicatedAllocationImageCreateInfoNV, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) uint64 {
+ count := min(s.Count, uint64(len(src)))
+ s = s.Slice(0, count, ϟs)
+ e := s.Encoder(ϟs)
+ for i := uint64(0); i < count; i++ {
+ if s.Pool == memory.ApplicationPool {
+ VkDedicatedAllocationImageCreateInfoNVEncodeRaw(ϟs, e, &src[i])
+ if e.Error() != nil {
+ panic(e.Error())
+ }
+ } else {
+ if e.Simple(&src[i]); e.Error() != nil {
+ panic(e.Error())
+ }
+ }
+ }
+ s.OnWrite(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ return count
+}
+
+// Copy copies elements from src to this slice.
+// The number of elements copied is the minimum of dst.Count and src.Count.
+// The slices of this and dst to the copied elements is returned.
+func (dst VkDedicatedAllocationImageCreateInfoNVˢ) Copy(ϟctx log.Context, src VkDedicatedAllocationImageCreateInfoNVˢ, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) (d, s VkDedicatedAllocationImageCreateInfoNVˢ) {
+ count := min(dst.Count, src.Count)
+ dst, src = dst.Slice(0, count, ϟs), src.Slice(0, count, ϟs)
+ src.OnRead(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ ϟs.Memory[dst.Pool].Write(dst.Base, ϟs.Memory[src.Pool].Slice(src.Range(ϟs)))
+ dst.OnWrite(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ return dst, src
+}
+
+// Contains returns true if the slice contains the specified value.
+func (s VkDedicatedAllocationImageCreateInfoNVˢ) Contains(ϟctx log.Context, val VkDedicatedAllocationImageCreateInfoNV, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) bool {
+ for _, e := range s.Read(ϟctx, ϟa, ϟs, ϟd, ϟb) {
+ if e == val {
+ return true
+ }
+ }
+ return false
+}
+
+// OnRead calls the backing pool's OnRead callback. s is returned so calls can be chained.
+func (s VkDedicatedAllocationImageCreateInfoNVˢ) OnRead(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) VkDedicatedAllocationImageCreateInfoNVˢ {
+ if f := ϟs.Memory[s.Pool].OnRead; f != nil {
+ f(s.Range(ϟs))
+ }
+ if ϟb != nil && s.Pool == memory.ApplicationPool {
+ s.ReserveMemory(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ // Write out the entire structure, then over-write
+ // any pointer fields.
+ ϟb.Write(s.Range(ϟs), s.ResourceID(ϟctx, ϟs, ϟd))
+ d := s.Decoder(ϟctx, ϟs, ϟd)
+ base := value.ObservedPointer(s.Base)
+ // If there are no members, then lets not have Go complain
+ // about unused variables.
+ _ = d
+ _ = base
+ offset := uint64(0)
+ _ = offset // Silence warnings for objects with no fields
+ for i := uint64(0); i < s.Count; i++ {
+ {
+ required_alignment := uint64(4)
+ if offset%required_alignment != 0 {
+ extra_reads := required_alignment - (offset % required_alignment)
+ offset += extra_reads
+ for i := uint64(0); i < extra_reads; i++ {
+ if binary.ReadUint(d, 8); d.Error() != nil {
+ panic(d.Error())
+ }
+ base += value.ObservedPointer(1)
+ }
+ }
+ offset += uint64(4)
+ var v VkStructureType
+ if ϟv := d.Uint32(); d.Error() == nil {
+ v = VkStructureType(ϟv)
+ } else {
+ panic(d.Error())
+ }
+ var _ = v
+ // We don't actually have to write the type here since we wrote
+ // the entire range, we just need to keep the decoder in sync.
+ base += value.ObservedPointer(uint64(4))
+ }
+ {
+ required_alignment := uint64(ϟs.MemoryLayout.PointerSize)
+ if offset%required_alignment != 0 {
+ extra_reads := required_alignment - (offset % required_alignment)
+ offset += extra_reads
+ for i := uint64(0); i < extra_reads; i++ {
+ if binary.ReadUint(d, 8); d.Error() != nil {
+ panic(d.Error())
+ }
+ base += value.ObservedPointer(1)
+ }
+ }
+ offset += uint64(ϟs.MemoryLayout.PointerSize)
+ i := binary.ReadUint(d, ϟs.MemoryLayout.PointerSize*8)
+ v := NewVoidᶜᵖ(i).value(ϟb, ϟa, ϟs)
+ ϟb.Push(v)
+ ϟb.Store(base)
+ base += value.ObservedPointer(ϟs.MemoryLayout.PointerSize)
+ }
+ {
+ required_alignment := uint64(4)
+ if offset%required_alignment != 0 {
+ extra_reads := required_alignment - (offset % required_alignment)
+ offset += extra_reads
+ for i := uint64(0); i < extra_reads; i++ {
+ if binary.ReadUint(d, 8); d.Error() != nil {
+ panic(d.Error())
+ }
+ base += value.ObservedPointer(1)
+ }
+ }
+ offset += uint64(4)
+ var v VkBool32
+ if ϟv := d.Uint32(); d.Error() == nil {
+ v = VkBool32(ϟv)
+ } else {
+ panic(d.Error())
+ }
+ var _ = v
+ // We don't actually have to write the type here since we wrote
+ // the entire range, we just need to keep the decoder in sync.
+ base += value.ObservedPointer(uint64(4))
+ }
+ }
+ }
+ return s
+}
+
+// OnWrite calls the backing pool's OnWrite callback. s is returned so calls can be chained.
+func (s VkDedicatedAllocationImageCreateInfoNVˢ) OnWrite(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) VkDedicatedAllocationImageCreateInfoNVˢ {
+ if f := ϟs.Memory[s.Pool].OnWrite; f != nil {
+ f(s.Range(ϟs))
+ }
+ if ϟb != nil && s.Pool == memory.ApplicationPool {
+ ϟb.ReserveMemory(memory.Range{Base: s.Root, Size: uint64(s.Range(ϟs).End() - s.Root)})
+ }
+ return s
+}
+func (s VkDedicatedAllocationImageCreateInfoNVˢ) ReserveMemory(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) VkDedicatedAllocationImageCreateInfoNVˢ {
+ if ϟb != nil && s.Pool == memory.ApplicationPool {
+ rng := s.Range(ϟs)
+ ϟb.ReserveMemory(memory.Range{Base: s.Root, Size: uint64(rng.End() - s.Root)})
+ }
+ return s
+}
+
+// Index returns a VkDedicatedAllocationImageCreateInfoNVᵖ to the i'th element in this VkDedicatedAllocationImageCreateInfoNVˢ.
+func (s VkDedicatedAllocationImageCreateInfoNVˢ) Index(i uint64, ϟs *gfxapi.State) VkDedicatedAllocationImageCreateInfoNVᵖ {
+ return VkDedicatedAllocationImageCreateInfoNVᵖ{Address: s.Base + i*s.ElementSize(ϟs), Pool: s.Pool}
+}
+
+// Slice returns a sub-slice from the VkDedicatedAllocationImageCreateInfoNVˢ using start and end indices.
+func (s VkDedicatedAllocationImageCreateInfoNVˢ) Slice(start, end uint64, ϟs *gfxapi.State) VkDedicatedAllocationImageCreateInfoNVˢ {
+ if start > end {
+ panic(fmt.Errorf("%v.Slice start (%d) is greater than the end (%d)", s, start, end))
+ }
+ if end > s.Count {
+ panic(fmt.Errorf("%v.Slice(%d, %d) - out of bounds", s, start, end))
+ }
+ return VkDedicatedAllocationImageCreateInfoNVˢ{SliceInfo: memory.SliceInfo{Root: s.Root, Base: s.Base + start*s.ElementSize(ϟs), Count: end - start, Pool: s.Pool}}
+}
+
+// Info returns the memory.SliceInfo for this slice.
+func (s VkDedicatedAllocationImageCreateInfoNVˢ) Info() memory.SliceInfo { return s.SliceInfo }
+
+// String returns a string description of the VkDedicatedAllocationImageCreateInfoNVˢ slice.
+func (s VkDedicatedAllocationImageCreateInfoNVˢ) String() string {
+ return fmt.Sprintf("VkDedicatedAllocationImageCreateInfoNV(%v@%v)[%d]", s.Base, s.Pool, s.Count)
+}
+
+// Link returns a path which can be used to view memory which is referenced
+// by the slice s. When resolved the path includes memory type information as well
+// as the memory context itself.
+// If nil, nil is returned then the path cannot be followed.
+func (s VkDedicatedAllocationImageCreateInfoNVˢ) Link(ϟctx log.Context, ϟp path.Path, ϟd database.Database) (path.Path, error) {
+ ϟt := path.UnknownType
+ return resolve.TypedLink(
+ memory.Pointer{Address: s.Base, Pool: s.Pool}, ϟctx, ϟp, ϟd, ϟt)
+}
+
+// Check interface conformance
+var _ path.Linker = VkDedicatedAllocationImageCreateInfoNVˢ{}
+
+// VkDedicatedAllocationMemoryAllocateInfoNVˢ is a slice of VkDedicatedAllocationMemoryAllocateInfoNV.
+type VkDedicatedAllocationMemoryAllocateInfoNVˢ struct {
+ binary.Generate
+ memory.SliceInfo
+}
+
+// MakeVkDedicatedAllocationMemoryAllocateInfoNVˢ returns a VkDedicatedAllocationMemoryAllocateInfoNVˢ backed by a new memory pool.
+func MakeVkDedicatedAllocationMemoryAllocateInfoNVˢ(count uint64, ϟs *gfxapi.State) VkDedicatedAllocationMemoryAllocateInfoNVˢ {
+ id := ϟs.NextPoolID
+ ϟs.Memory[id] = &memory.Pool{}
+ ϟs.NextPoolID++
+ return VkDedicatedAllocationMemoryAllocateInfoNVˢ{SliceInfo: memory.SliceInfo{Count: count, Pool: id}}
+}
+
+// Clone returns a copy of the VkDedicatedAllocationMemoryAllocateInfoNVˢ in a new memory pool.
+func (s VkDedicatedAllocationMemoryAllocateInfoNVˢ) Clone(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) VkDedicatedAllocationMemoryAllocateInfoNVˢ {
+ s.OnRead(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ pool := &memory.Pool{}
+ pool.Write(0, ϟs.Memory[s.Pool].Slice(s.Range(ϟs)))
+ id := ϟs.NextPoolID
+ ϟs.Memory[id] = pool
+ ϟs.NextPoolID++
+ dst := VkDedicatedAllocationMemoryAllocateInfoNVˢ{SliceInfo: memory.SliceInfo{Count: s.Count, Pool: id}}
+ return dst
+}
+
+// ElementSize returns the size in bytes of an element that VkDedicatedAllocationMemoryAllocateInfoNVˢ points to.
+func (s VkDedicatedAllocationMemoryAllocateInfoNVˢ) ElementSize(ϟs *gfxapi.State) uint64 {
+ return VkDedicatedAllocationMemoryAllocateInfoNVSize(ϟs)
+}
+
+// ElementTypeName returns the name of the type of element in VkDedicatedAllocationMemoryAllocateInfoNVˢ.
+func (s VkDedicatedAllocationMemoryAllocateInfoNVˢ) ElementTypeName() string {
+ return "VkDedicatedAllocationMemoryAllocateInfoNV"
+}
+
+// Range returns the memory range this slice represents in the underlying pool.
+func (s VkDedicatedAllocationMemoryAllocateInfoNVˢ) Range(ϟs *gfxapi.State) memory.Range {
+ return memory.Range{Base: s.Base, Size: s.Count * s.ElementSize(ϟs)}
+}
+
+// ResourceID returns an identifier to a resource representing the data of
+// this slice.
+func (s VkDedicatedAllocationMemoryAllocateInfoNVˢ) ResourceID(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database) id.ID {
+ id, err := ϟs.Memory[s.Pool].Slice(s.Range(ϟs)).ResourceID(ϟctx, ϟd)
+ if err != nil {
+ panic(err)
+ }
+ return id
+}
+
+// Decoder returns a memory decoder for the slice.
+func (s VkDedicatedAllocationMemoryAllocateInfoNVˢ) Decoder(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database) binary.Reader {
+ return ϟs.MemoryDecoder(ϟctx, ϟs.Memory[s.Pool].Slice(s.Range(ϟs)), ϟd)
+}
+
+// Encoder returns a memory encoder for the slice.
+func (s VkDedicatedAllocationMemoryAllocateInfoNVˢ) Encoder(ϟs *gfxapi.State) binary.Writer {
+ return ϟs.MemoryEncoder(ϟs.Memory[s.Pool], s.Range(ϟs))
+}
+
+// AsVkDedicatedAllocationMemoryAllocateInfoNVˢ returns s cast to a VkDedicatedAllocationMemoryAllocateInfoNVˢ.
+// The returned slice length will be calculated so that the returned slice is
+// no longer (in bytes) than s.
+func AsVkDedicatedAllocationMemoryAllocateInfoNVˢ(s slice, ϟs *gfxapi.State) VkDedicatedAllocationMemoryAllocateInfoNVˢ {
+ out := VkDedicatedAllocationMemoryAllocateInfoNVˢ{SliceInfo: s.Info()}
+ out.Count = (out.Count * s.ElementSize(ϟs)) / out.ElementSize(ϟs)
+ return out
+}
+
+// Read reads and returns all the VkDedicatedAllocationMemoryAllocateInfoNV elements in this VkDedicatedAllocationMemoryAllocateInfoNVˢ.
+func (s VkDedicatedAllocationMemoryAllocateInfoNVˢ) Read(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) []VkDedicatedAllocationMemoryAllocateInfoNV {
+ d, res := s.Decoder(ϟctx, ϟs, ϟd), make([]VkDedicatedAllocationMemoryAllocateInfoNV, s.Count)
+ s.OnRead(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ for i := range res {
+ if s.Pool == memory.ApplicationPool {
+ VkDedicatedAllocationMemoryAllocateInfoNVDecodeRaw(ϟs, d, &res[i])
+ if d.Error() != nil {
+ panic(d.Error())
+ }
+ } else {
+ if d.Simple(&res[i]); d.Error() != nil {
+ panic(d.Error())
+ }
+ }
+ }
+ return res
+}
+
+// Write copies elements from src to this slice. The number of elements copied is returned
+// which is the minimum of s.Count and len(src).
+func (s VkDedicatedAllocationMemoryAllocateInfoNVˢ) Write(ϟctx log.Context, src []VkDedicatedAllocationMemoryAllocateInfoNV, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) uint64 {
+ count := min(s.Count, uint64(len(src)))
+ s = s.Slice(0, count, ϟs)
+ e := s.Encoder(ϟs)
+ for i := uint64(0); i < count; i++ {
+ if s.Pool == memory.ApplicationPool {
+ VkDedicatedAllocationMemoryAllocateInfoNVEncodeRaw(ϟs, e, &src[i])
+ if e.Error() != nil {
+ panic(e.Error())
+ }
+ } else {
+ if e.Simple(&src[i]); e.Error() != nil {
+ panic(e.Error())
+ }
+ }
+ }
+ s.OnWrite(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ return count
+}
+
+// Copy copies elements from src to this slice.
+// The number of elements copied is the minimum of dst.Count and src.Count.
+// The slices of this and dst to the copied elements is returned.
+func (dst VkDedicatedAllocationMemoryAllocateInfoNVˢ) Copy(ϟctx log.Context, src VkDedicatedAllocationMemoryAllocateInfoNVˢ, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) (d, s VkDedicatedAllocationMemoryAllocateInfoNVˢ) {
+ count := min(dst.Count, src.Count)
+ dst, src = dst.Slice(0, count, ϟs), src.Slice(0, count, ϟs)
+ src.OnRead(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ ϟs.Memory[dst.Pool].Write(dst.Base, ϟs.Memory[src.Pool].Slice(src.Range(ϟs)))
+ dst.OnWrite(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ return dst, src
+}
+
+// Contains returns true if the slice contains the specified value.
+func (s VkDedicatedAllocationMemoryAllocateInfoNVˢ) Contains(ϟctx log.Context, val VkDedicatedAllocationMemoryAllocateInfoNV, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) bool {
+ for _, e := range s.Read(ϟctx, ϟa, ϟs, ϟd, ϟb) {
+ if e == val {
+ return true
+ }
+ }
+ return false
+}
+
+// OnRead calls the backing pool's OnRead callback. s is returned so calls can be chained.
+func (s VkDedicatedAllocationMemoryAllocateInfoNVˢ) OnRead(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) VkDedicatedAllocationMemoryAllocateInfoNVˢ {
+ if f := ϟs.Memory[s.Pool].OnRead; f != nil {
+ f(s.Range(ϟs))
+ }
+ if ϟb != nil && s.Pool == memory.ApplicationPool {
+ s.ReserveMemory(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ // Write out the entire structure, then over-write
+ // any pointer fields.
+ ϟb.Write(s.Range(ϟs), s.ResourceID(ϟctx, ϟs, ϟd))
+ d := s.Decoder(ϟctx, ϟs, ϟd)
+ base := value.ObservedPointer(s.Base)
+ // If there are no members, then lets not have Go complain
+ // about unused variables.
+ _ = d
+ _ = base
+ offset := uint64(0)
+ _ = offset // Silence warnings for objects with no fields
+ for i := uint64(0); i < s.Count; i++ {
+ {
+ required_alignment := uint64(4)
+ if offset%required_alignment != 0 {
+ extra_reads := required_alignment - (offset % required_alignment)
+ offset += extra_reads
+ for i := uint64(0); i < extra_reads; i++ {
+ if binary.ReadUint(d, 8); d.Error() != nil {
+ panic(d.Error())
+ }
+ base += value.ObservedPointer(1)
+ }
+ }
+ offset += uint64(4)
+ var v VkStructureType
+ if ϟv := d.Uint32(); d.Error() == nil {
+ v = VkStructureType(ϟv)
+ } else {
+ panic(d.Error())
+ }
+ var _ = v
+ // We don't actually have to write the type here since we wrote
+ // the entire range, we just need to keep the decoder in sync.
+ base += value.ObservedPointer(uint64(4))
+ }
+ {
+ required_alignment := uint64(ϟs.MemoryLayout.PointerSize)
+ if offset%required_alignment != 0 {
+ extra_reads := required_alignment - (offset % required_alignment)
+ offset += extra_reads
+ for i := uint64(0); i < extra_reads; i++ {
+ if binary.ReadUint(d, 8); d.Error() != nil {
+ panic(d.Error())
+ }
+ base += value.ObservedPointer(1)
+ }
+ }
+ offset += uint64(ϟs.MemoryLayout.PointerSize)
+ i := binary.ReadUint(d, ϟs.MemoryLayout.PointerSize*8)
+ v := NewVoidᶜᵖ(i).value(ϟb, ϟa, ϟs)
+ ϟb.Push(v)
+ ϟb.Store(base)
+ base += value.ObservedPointer(ϟs.MemoryLayout.PointerSize)
+ }
+ {
+ required_alignment := uint64(ϟs.MemoryLayout.U64Alignment)
+ if offset%required_alignment != 0 {
+ extra_reads := required_alignment - (offset % required_alignment)
+ offset += extra_reads
+ for i := uint64(0); i < extra_reads; i++ {
+ if binary.ReadUint(d, 8); d.Error() != nil {
+ panic(d.Error())
+ }
+ base += value.ObservedPointer(1)
+ }
+ }
+ offset += uint64(8)
+ var v VkImage
+ if ϟv := d.Uint64(); d.Error() == nil {
+ v = VkImage(ϟv)
+ } else {
+ panic(d.Error())
+ }
+ if key, remap := v.remap(ϟa, ϟs); remap {
+ loadRemap(ϟb, key, protocol.Type_Uint64, v.value(ϟb, ϟa, ϟs))
+ ϟb.Store(base)
+ }
+ base += value.ObservedPointer(uint64(8))
+ }
+ {
+ required_alignment := uint64(ϟs.MemoryLayout.U64Alignment)
+ if offset%required_alignment != 0 {
+ extra_reads := required_alignment - (offset % required_alignment)
+ offset += extra_reads
+ for i := uint64(0); i < extra_reads; i++ {
+ if binary.ReadUint(d, 8); d.Error() != nil {
+ panic(d.Error())
+ }
+ base += value.ObservedPointer(1)
+ }
+ }
+ offset += uint64(8)
+ var v VkBuffer
+ if ϟv := d.Uint64(); d.Error() == nil {
+ v = VkBuffer(ϟv)
+ } else {
+ panic(d.Error())
+ }
+ if key, remap := v.remap(ϟa, ϟs); remap {
+ loadRemap(ϟb, key, protocol.Type_Uint64, v.value(ϟb, ϟa, ϟs))
+ ϟb.Store(base)
+ }
+ base += value.ObservedPointer(uint64(8))
+ }
+ }
+ }
+ return s
+}
+
+// OnWrite calls the backing pool's OnWrite callback. s is returned so calls can be chained.
+func (s VkDedicatedAllocationMemoryAllocateInfoNVˢ) OnWrite(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) VkDedicatedAllocationMemoryAllocateInfoNVˢ {
+ if f := ϟs.Memory[s.Pool].OnWrite; f != nil {
+ f(s.Range(ϟs))
+ }
+ if ϟb != nil && s.Pool == memory.ApplicationPool {
+ ϟb.ReserveMemory(memory.Range{Base: s.Root, Size: uint64(s.Range(ϟs).End() - s.Root)})
+ }
+ return s
+}
+func (s VkDedicatedAllocationMemoryAllocateInfoNVˢ) ReserveMemory(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) VkDedicatedAllocationMemoryAllocateInfoNVˢ {
+ if ϟb != nil && s.Pool == memory.ApplicationPool {
+ rng := s.Range(ϟs)
+ ϟb.ReserveMemory(memory.Range{Base: s.Root, Size: uint64(rng.End() - s.Root)})
+ }
+ return s
+}
+
+// Index returns a VkDedicatedAllocationMemoryAllocateInfoNVᵖ to the i'th element in this VkDedicatedAllocationMemoryAllocateInfoNVˢ.
+func (s VkDedicatedAllocationMemoryAllocateInfoNVˢ) Index(i uint64, ϟs *gfxapi.State) VkDedicatedAllocationMemoryAllocateInfoNVᵖ {
+ return VkDedicatedAllocationMemoryAllocateInfoNVᵖ{Address: s.Base + i*s.ElementSize(ϟs), Pool: s.Pool}
+}
+
+// Slice returns a sub-slice from the VkDedicatedAllocationMemoryAllocateInfoNVˢ using start and end indices.
+func (s VkDedicatedAllocationMemoryAllocateInfoNVˢ) Slice(start, end uint64, ϟs *gfxapi.State) VkDedicatedAllocationMemoryAllocateInfoNVˢ {
+ if start > end {
+ panic(fmt.Errorf("%v.Slice start (%d) is greater than the end (%d)", s, start, end))
+ }
+ if end > s.Count {
+ panic(fmt.Errorf("%v.Slice(%d, %d) - out of bounds", s, start, end))
+ }
+ return VkDedicatedAllocationMemoryAllocateInfoNVˢ{SliceInfo: memory.SliceInfo{Root: s.Root, Base: s.Base + start*s.ElementSize(ϟs), Count: end - start, Pool: s.Pool}}
+}
+
+// Info returns the memory.SliceInfo for this slice.
+func (s VkDedicatedAllocationMemoryAllocateInfoNVˢ) Info() memory.SliceInfo { return s.SliceInfo }
+
+// String returns a string description of the VkDedicatedAllocationMemoryAllocateInfoNVˢ slice.
+func (s VkDedicatedAllocationMemoryAllocateInfoNVˢ) String() string {
+ return fmt.Sprintf("VkDedicatedAllocationMemoryAllocateInfoNV(%v@%v)[%d]", s.Base, s.Pool, s.Count)
+}
+
+// Link returns a path which can be used to view memory which is referenced
+// by the slice s. When resolved the path includes memory type information as well
+// as the memory context itself.
+// If nil, nil is returned then the path cannot be followed.
+func (s VkDedicatedAllocationMemoryAllocateInfoNVˢ) Link(ϟctx log.Context, ϟp path.Path, ϟd database.Database) (path.Path, error) {
+ ϟt := path.UnknownType
+ return resolve.TypedLink(
+ memory.Pointer{Address: s.Base, Pool: s.Pool}, ϟctx, ϟp, ϟd, ϟt)
+}
+
+// Check interface conformance
+var _ path.Linker = VkDedicatedAllocationMemoryAllocateInfoNVˢ{}
+
// VkDescriptorBufferInfoˢ is a slice of VkDescriptorBufferInfo.
type VkDescriptorBufferInfoˢ struct {
binary.Generate
@@ -63861,6 +64929,194 @@
// Check interface conformance
var _ path.Linker = VkSpecializationMapEntryˢ{}
+// VkStructureTypeˢ is a slice of VkStructureType.
+type VkStructureTypeˢ struct {
+ binary.Generate
+ memory.SliceInfo
+}
+
+// MakeVkStructureTypeˢ returns a VkStructureTypeˢ backed by a new memory pool.
+func MakeVkStructureTypeˢ(count uint64, ϟs *gfxapi.State) VkStructureTypeˢ {
+ id := ϟs.NextPoolID
+ ϟs.Memory[id] = &memory.Pool{}
+ ϟs.NextPoolID++
+ return VkStructureTypeˢ{SliceInfo: memory.SliceInfo{Count: count, Pool: id}}
+}
+
+// Clone returns a copy of the VkStructureTypeˢ in a new memory pool.
+func (s VkStructureTypeˢ) Clone(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) VkStructureTypeˢ {
+ s.OnRead(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ pool := &memory.Pool{}
+ pool.Write(0, ϟs.Memory[s.Pool].Slice(s.Range(ϟs)))
+ id := ϟs.NextPoolID
+ ϟs.Memory[id] = pool
+ ϟs.NextPoolID++
+ dst := VkStructureTypeˢ{SliceInfo: memory.SliceInfo{Count: s.Count, Pool: id}}
+ return dst
+}
+
+// ElementSize returns the size in bytes of an element that VkStructureTypeˢ points to.
+func (s VkStructureTypeˢ) ElementSize(ϟs *gfxapi.State) uint64 {
+ return uint64(4)
+}
+
+// ElementTypeName returns the name of the type of element in VkStructureTypeˢ.
+func (s VkStructureTypeˢ) ElementTypeName() string {
+ return "VkStructureType"
+}
+
+// Range returns the memory range this slice represents in the underlying pool.
+func (s VkStructureTypeˢ) Range(ϟs *gfxapi.State) memory.Range {
+ return memory.Range{Base: s.Base, Size: s.Count * s.ElementSize(ϟs)}
+}
+
+// ResourceID returns an identifier to a resource representing the data of
+// this slice.
+func (s VkStructureTypeˢ) ResourceID(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database) id.ID {
+ id, err := ϟs.Memory[s.Pool].Slice(s.Range(ϟs)).ResourceID(ϟctx, ϟd)
+ if err != nil {
+ panic(err)
+ }
+ return id
+}
+
+// Decoder returns a memory decoder for the slice.
+func (s VkStructureTypeˢ) Decoder(ϟctx log.Context, ϟs *gfxapi.State, ϟd database.Database) binary.Reader {
+ return ϟs.MemoryDecoder(ϟctx, ϟs.Memory[s.Pool].Slice(s.Range(ϟs)), ϟd)
+}
+
+// Encoder returns a memory encoder for the slice.
+func (s VkStructureTypeˢ) Encoder(ϟs *gfxapi.State) binary.Writer {
+ return ϟs.MemoryEncoder(ϟs.Memory[s.Pool], s.Range(ϟs))
+}
+
+// AsVkStructureTypeˢ returns s cast to a VkStructureTypeˢ.
+// The returned slice length will be calculated so that the returned slice is
+// no longer (in bytes) than s.
+func AsVkStructureTypeˢ(s slice, ϟs *gfxapi.State) VkStructureTypeˢ {
+ out := VkStructureTypeˢ{SliceInfo: s.Info()}
+ out.Count = (out.Count * s.ElementSize(ϟs)) / out.ElementSize(ϟs)
+ return out
+}
+
+// Read reads and returns all the VkStructureType elements in this VkStructureTypeˢ.
+func (s VkStructureTypeˢ) Read(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) []VkStructureType {
+ d, res := s.Decoder(ϟctx, ϟs, ϟd), make([]VkStructureType, s.Count)
+ s.OnRead(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ for i := range res {
+ if ϟv := d.Uint32(); d.Error() == nil {
+ res[i] = VkStructureType(ϟv)
+ } else {
+ panic(d.Error())
+ }
+ }
+ return res
+}
+
+// Write copies elements from src to this slice. The number of elements copied is returned
+// which is the minimum of s.Count and len(src).
+func (s VkStructureTypeˢ) Write(ϟctx log.Context, src []VkStructureType, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) uint64 {
+ count := min(s.Count, uint64(len(src)))
+ s = s.Slice(0, count, ϟs)
+ e := s.Encoder(ϟs)
+ for i := uint64(0); i < count; i++ {
+ if e.Uint32(uint32(src[i])); e.Error() != nil {
+ panic(e.Error())
+ }
+ }
+ s.OnWrite(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ return count
+}
+
+// Copy copies elements from src to this slice.
+// The number of elements copied is the minimum of dst.Count and src.Count.
+// The slices of this and dst to the copied elements is returned.
+func (dst VkStructureTypeˢ) Copy(ϟctx log.Context, src VkStructureTypeˢ, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) (d, s VkStructureTypeˢ) {
+ count := min(dst.Count, src.Count)
+ dst, src = dst.Slice(0, count, ϟs), src.Slice(0, count, ϟs)
+ src.OnRead(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ ϟs.Memory[dst.Pool].Write(dst.Base, ϟs.Memory[src.Pool].Slice(src.Range(ϟs)))
+ dst.OnWrite(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ return dst, src
+}
+
+// Contains returns true if the slice contains the specified value.
+func (s VkStructureTypeˢ) Contains(ϟctx log.Context, val VkStructureType, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) bool {
+ for _, e := range s.Read(ϟctx, ϟa, ϟs, ϟd, ϟb) {
+ if e == val {
+ return true
+ }
+ }
+ return false
+}
+
+// OnRead calls the backing pool's OnRead callback. s is returned so calls can be chained.
+func (s VkStructureTypeˢ) OnRead(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) VkStructureTypeˢ {
+ if f := ϟs.Memory[s.Pool].OnRead; f != nil {
+ f(s.Range(ϟs))
+ }
+ if ϟb != nil && s.Pool == memory.ApplicationPool {
+ s.ReserveMemory(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ ϟb.Write(s.Range(ϟs), s.ResourceID(ϟctx, ϟs, ϟd))
+ }
+ return s
+}
+
+// OnWrite calls the backing pool's OnWrite callback. s is returned so calls can be chained.
+func (s VkStructureTypeˢ) OnWrite(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) VkStructureTypeˢ {
+ if f := ϟs.Memory[s.Pool].OnWrite; f != nil {
+ f(s.Range(ϟs))
+ }
+ if ϟb != nil && s.Pool == memory.ApplicationPool {
+ ϟb.ReserveMemory(memory.Range{Base: s.Root, Size: uint64(s.Range(ϟs).End() - s.Root)})
+ }
+ return s
+}
+func (s VkStructureTypeˢ) ReserveMemory(ϟctx log.Context, ϟa atom.Atom, ϟs *gfxapi.State, ϟd database.Database, ϟb *builder.Builder) VkStructureTypeˢ {
+ if ϟb != nil && s.Pool == memory.ApplicationPool {
+ rng := s.Range(ϟs)
+ ϟb.ReserveMemory(memory.Range{Base: s.Root, Size: uint64(rng.End() - s.Root)})
+ }
+ return s
+}
+
+// Index returns a VkStructureTypeᵖ to the i'th element in this VkStructureTypeˢ.
+func (s VkStructureTypeˢ) Index(i uint64, ϟs *gfxapi.State) VkStructureTypeᵖ {
+ return VkStructureTypeᵖ{Address: s.Base + i*s.ElementSize(ϟs), Pool: s.Pool}
+}
+
+// Slice returns a sub-slice from the VkStructureTypeˢ using start and end indices.
+func (s VkStructureTypeˢ) Slice(start, end uint64, ϟs *gfxapi.State) VkStructureTypeˢ {
+ if start > end {
+ panic(fmt.Errorf("%v.Slice start (%d) is greater than the end (%d)", s, start, end))
+ }
+ if end > s.Count {
+ panic(fmt.Errorf("%v.Slice(%d, %d) - out of bounds", s, start, end))
+ }
+ return VkStructureTypeˢ{SliceInfo: memory.SliceInfo{Root: s.Root, Base: s.Base + start*s.ElementSize(ϟs), Count: end - start, Pool: s.Pool}}
+}
+
+// Info returns the memory.SliceInfo for this slice.
+func (s VkStructureTypeˢ) Info() memory.SliceInfo { return s.SliceInfo }
+
+// String returns a string description of the VkStructureTypeˢ slice.
+func (s VkStructureTypeˢ) String() string {
+ return fmt.Sprintf("VkStructureType(%v@%v)[%d]", s.Base, s.Pool, s.Count)
+}
+
+// Link returns a path which can be used to view memory which is referenced
+// by the slice s. When resolved the path includes memory type information as well
+// as the memory context itself.
+// If nil, nil is returned then the path cannot be followed.
+func (s VkStructureTypeˢ) Link(ϟctx log.Context, ϟp path.Path, ϟd database.Database) (path.Path, error) {
+ ϟt := path.MemoryType{Kind: path.MemoryKind_Integer, ByteSize: uint64(4)}
+ return resolve.TypedLink(
+ memory.Pointer{Address: s.Base, Pool: s.Pool}, ϟctx, ϟp, ϟd, ϟt)
+}
+
+// Check interface conformance
+var _ path.Linker = VkStructureTypeˢ{}
+
// VkSubmitInfoˢ is a slice of VkSubmitInfo.
type VkSubmitInfoˢ struct {
binary.Generate
@@ -71139,6 +72395,42 @@
return s
}
+type U64ːVkImageCopyᵐ map[uint64]VkImageCopy
+
+func (m U64ːVkImageCopyᵐ) Get(key uint64) VkImageCopy {
+ return m[key]
+}
+func (m U64ːVkImageCopyᵐ) Contains(key uint64) bool {
+ _, ok := m[key]
+ return ok
+}
+func (m U64ːVkImageCopyᵐ) Delete(key uint64) {
+ delete(m, key)
+}
+func (m U64ːVkImageCopyᵐ) Range() []VkImageCopy {
+ values := make([]VkImageCopy, 0, len(m))
+ for _, value := range m {
+ values = append(values, value)
+ }
+ return values
+}
+
+type U64ːVkImageCopyᵐ_SortKeys []uint64
+
+func (s U64ːVkImageCopyᵐ_SortKeys) Len() int { return len(s) }
+func (s U64ːVkImageCopyᵐ_SortKeys) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
+func (s U64ːVkImageCopyᵐ_SortKeys) Less(i, j int) bool { return s[i] < s[j] }
+func (m U64ːVkImageCopyᵐ) KeysSorted() []uint64 {
+ s := make(U64ːVkImageCopyᵐ_SortKeys, len(m))
+ i := 0
+ for k, _ := range m {
+ s[i] = k
+ i++
+ }
+ sort.Sort(s)
+ return s
+}
+
type VkBufferViewːBufferViewObjectʳᵐ map[VkBufferView](*BufferViewObject)
func (m VkBufferViewːBufferViewObjectʳᵐ) Get(key VkBufferView) *BufferViewObject {
@@ -110210,6 +111502,462 @@
}
////////////////////////////////////////////////////////////////////////////////
+// class VkDedicatedAllocationImageCreateInfoNV
+////////////////////////////////////////////////////////////////////////////////
+type VkDedicatedAllocationImageCreateInfoNV struct {
+ binary.Generate
+ SType VkStructureType
+ PNext Voidᶜᵖ
+ DedicatedAllocation VkBool32
+}
+
+func VkDedicatedAllocationImageCreateInfoNVSize(ϟs *gfxapi.State) uint64 {
+ size := uint64(0)
+ alignment := uint64(1)
+ {
+ size, alignment = u64.AlignToNextAndReturnLargestAlignment(size, uint64(4), alignment)
+ size += uint64(4)
+ }
+ {
+ size, alignment = u64.AlignToNextAndReturnLargestAlignment(size, uint64(ϟs.MemoryLayout.PointerSize), alignment)
+ size += uint64(ϟs.MemoryLayout.PointerSize)
+ }
+ {
+ size, alignment = u64.AlignToNextAndReturnLargestAlignment(size, uint64(4), alignment)
+ size += uint64(4)
+ }
+ if size%alignment != 0 {
+ size += alignment - (size % alignment)
+ }
+ return size
+}
+func VkDedicatedAllocationImageCreateInfoNVAlignment(ϟs *gfxapi.State) uint64 {
+ alignment := uint64(1)
+ {
+ required_alignment := uint64(4)
+ if required_alignment > alignment {
+ alignment = required_alignment
+ }
+ }
+ {
+ required_alignment := uint64(ϟs.MemoryLayout.PointerSize)
+ if required_alignment > alignment {
+ alignment = required_alignment
+ }
+ }
+ {
+ required_alignment := uint64(4)
+ if required_alignment > alignment {
+ alignment = required_alignment
+ }
+ }
+ return alignment
+}
+
+// VkDedicatedAllocationImageCreateInfoNVDecodeRaw decodes a structure as it would have been stored
+// in memory by the traced application. This means native-width pointers
+// and aligned member variables.
+func VkDedicatedAllocationImageCreateInfoNVDecodeRaw(ϟs *gfxapi.State, d binary.Reader, o *VkDedicatedAllocationImageCreateInfoNV) {
+ offset := uint64(0)
+ _ = offset // Silence warnings for objects with no fields
+ {
+ newOffset, _ := u64.AlignToNextAndReturnLargestAlignment(offset, uint64(4), 0)
+ offset = offset + binary.ConsumeBytes(d, newOffset-offset) + uint64(4)
+ }
+ if ϟv := d.Uint32(); d.Error() == nil {
+ o.SType = VkStructureType(ϟv)
+ } else {
+ panic(d.Error())
+ }
+ {
+ newOffset, _ := u64.AlignToNextAndReturnLargestAlignment(offset, uint64(ϟs.MemoryLayout.PointerSize), 0)
+ offset = offset + binary.ConsumeBytes(d, newOffset-offset) + uint64(ϟs.MemoryLayout.PointerSize)
+ }
+ if ϟv := binary.ReadUint(d, ϟs.MemoryLayout.PointerSize*8); d.Error() == nil {
+ o.PNext = Voidᶜᵖ(memory.Pointer{Address: ϟv, Pool: memory.ApplicationPool})
+ } else {
+ panic(d.Error())
+ }
+ {
+ newOffset, _ := u64.AlignToNextAndReturnLargestAlignment(offset, uint64(4), 0)
+ offset = offset + binary.ConsumeBytes(d, newOffset-offset) + uint64(4)
+ }
+ if ϟv := d.Uint32(); d.Error() == nil {
+ o.DedicatedAllocation = VkBool32(ϟv)
+ } else {
+ panic(d.Error())
+ }
+}
+func VkDedicatedAllocationImageCreateInfoNVEncodeRaw(ϟs *gfxapi.State, e binary.Writer, o *VkDedicatedAllocationImageCreateInfoNV) {
+ offset := uint64(0)
+ _ = offset // Silence warnings for objects with no fields
+ {
+ required_alignment := uint64(4)
+ if offset%required_alignment != 0 {
+ extra_writes := required_alignment - (offset % required_alignment)
+ offset += extra_writes
+ for i := uint64(0); i < extra_writes; i++ {
+ if binary.WriteUint(e, 8, 0); e.Error() != nil {
+ panic(e.Error())
+ }
+ }
+ }
+ offset += uint64(4)
+ }
+ if e.Uint32(uint32(o.SType)); e.Error() != nil {
+ panic(e.Error())
+ }
+ {
+ required_alignment := uint64(ϟs.MemoryLayout.PointerSize)
+ if offset%required_alignment != 0 {
+ extra_writes := required_alignment - (offset % required_alignment)
+ offset += extra_writes
+ for i := uint64(0); i < extra_writes; i++ {
+ if binary.WriteUint(e, 8, 0); e.Error() != nil {
+ panic(e.Error())
+ }
+ }
+ }
+ offset += uint64(ϟs.MemoryLayout.PointerSize)
+ }
+ if binary.WriteUint(e, ϟs.MemoryLayout.PointerSize*8, o.PNext.Address); e.Error() != nil {
+ panic(e.Error())
+ }
+ {
+ required_alignment := uint64(4)
+ if offset%required_alignment != 0 {
+ extra_writes := required_alignment - (offset % required_alignment)
+ offset += extra_writes
+ for i := uint64(0); i < extra_writes; i++ {
+ if binary.WriteUint(e, 8, 0); e.Error() != nil {
+ panic(e.Error())
+ }
+ }
+ }
+ offset += uint64(4)
+ }
+ if e.Uint32(uint32(o.DedicatedAllocation)); e.Error() != nil {
+ panic(e.Error())
+ }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// class VkDedicatedAllocationBufferCreateInfoNV
+////////////////////////////////////////////////////////////////////////////////
+type VkDedicatedAllocationBufferCreateInfoNV struct {
+ binary.Generate
+ SType VkStructureType
+ PNext Voidᶜᵖ
+ DedicatedAllocation VkBool32
+}
+
+func VkDedicatedAllocationBufferCreateInfoNVSize(ϟs *gfxapi.State) uint64 {
+ size := uint64(0)
+ alignment := uint64(1)
+ {
+ size, alignment = u64.AlignToNextAndReturnLargestAlignment(size, uint64(4), alignment)
+ size += uint64(4)
+ }
+ {
+ size, alignment = u64.AlignToNextAndReturnLargestAlignment(size, uint64(ϟs.MemoryLayout.PointerSize), alignment)
+ size += uint64(ϟs.MemoryLayout.PointerSize)
+ }
+ {
+ size, alignment = u64.AlignToNextAndReturnLargestAlignment(size, uint64(4), alignment)
+ size += uint64(4)
+ }
+ if size%alignment != 0 {
+ size += alignment - (size % alignment)
+ }
+ return size
+}
+func VkDedicatedAllocationBufferCreateInfoNVAlignment(ϟs *gfxapi.State) uint64 {
+ alignment := uint64(1)
+ {
+ required_alignment := uint64(4)
+ if required_alignment > alignment {
+ alignment = required_alignment
+ }
+ }
+ {
+ required_alignment := uint64(ϟs.MemoryLayout.PointerSize)
+ if required_alignment > alignment {
+ alignment = required_alignment
+ }
+ }
+ {
+ required_alignment := uint64(4)
+ if required_alignment > alignment {
+ alignment = required_alignment
+ }
+ }
+ return alignment
+}
+
+// VkDedicatedAllocationBufferCreateInfoNVDecodeRaw decodes a structure as it would have been stored
+// in memory by the traced application. This means native-width pointers
+// and aligned member variables.
+func VkDedicatedAllocationBufferCreateInfoNVDecodeRaw(ϟs *gfxapi.State, d binary.Reader, o *VkDedicatedAllocationBufferCreateInfoNV) {
+ offset := uint64(0)
+ _ = offset // Silence warnings for objects with no fields
+ {
+ newOffset, _ := u64.AlignToNextAndReturnLargestAlignment(offset, uint64(4), 0)
+ offset = offset + binary.ConsumeBytes(d, newOffset-offset) + uint64(4)
+ }
+ if ϟv := d.Uint32(); d.Error() == nil {
+ o.SType = VkStructureType(ϟv)
+ } else {
+ panic(d.Error())
+ }
+ {
+ newOffset, _ := u64.AlignToNextAndReturnLargestAlignment(offset, uint64(ϟs.MemoryLayout.PointerSize), 0)
+ offset = offset + binary.ConsumeBytes(d, newOffset-offset) + uint64(ϟs.MemoryLayout.PointerSize)
+ }
+ if ϟv := binary.ReadUint(d, ϟs.MemoryLayout.PointerSize*8); d.Error() == nil {
+ o.PNext = Voidᶜᵖ(memory.Pointer{Address: ϟv, Pool: memory.ApplicationPool})
+ } else {
+ panic(d.Error())
+ }
+ {
+ newOffset, _ := u64.AlignToNextAndReturnLargestAlignment(offset, uint64(4), 0)
+ offset = offset + binary.ConsumeBytes(d, newOffset-offset) + uint64(4)
+ }
+ if ϟv := d.Uint32(); d.Error() == nil {
+ o.DedicatedAllocation = VkBool32(ϟv)
+ } else {
+ panic(d.Error())
+ }
+}
+func VkDedicatedAllocationBufferCreateInfoNVEncodeRaw(ϟs *gfxapi.State, e binary.Writer, o *VkDedicatedAllocationBufferCreateInfoNV) {
+ offset := uint64(0)
+ _ = offset // Silence warnings for objects with no fields
+ {
+ required_alignment := uint64(4)
+ if offset%required_alignment != 0 {
+ extra_writes := required_alignment - (offset % required_alignment)
+ offset += extra_writes
+ for i := uint64(0); i < extra_writes; i++ {
+ if binary.WriteUint(e, 8, 0); e.Error() != nil {
+ panic(e.Error())
+ }
+ }
+ }
+ offset += uint64(4)
+ }
+ if e.Uint32(uint32(o.SType)); e.Error() != nil {
+ panic(e.Error())
+ }
+ {
+ required_alignment := uint64(ϟs.MemoryLayout.PointerSize)
+ if offset%required_alignment != 0 {
+ extra_writes := required_alignment - (offset % required_alignment)
+ offset += extra_writes
+ for i := uint64(0); i < extra_writes; i++ {
+ if binary.WriteUint(e, 8, 0); e.Error() != nil {
+ panic(e.Error())
+ }
+ }
+ }
+ offset += uint64(ϟs.MemoryLayout.PointerSize)
+ }
+ if binary.WriteUint(e, ϟs.MemoryLayout.PointerSize*8, o.PNext.Address); e.Error() != nil {
+ panic(e.Error())
+ }
+ {
+ required_alignment := uint64(4)
+ if offset%required_alignment != 0 {
+ extra_writes := required_alignment - (offset % required_alignment)
+ offset += extra_writes
+ for i := uint64(0); i < extra_writes; i++ {
+ if binary.WriteUint(e, 8, 0); e.Error() != nil {
+ panic(e.Error())
+ }
+ }
+ }
+ offset += uint64(4)
+ }
+ if e.Uint32(uint32(o.DedicatedAllocation)); e.Error() != nil {
+ panic(e.Error())
+ }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// class VkDedicatedAllocationMemoryAllocateInfoNV
+////////////////////////////////////////////////////////////////////////////////
+type VkDedicatedAllocationMemoryAllocateInfoNV struct {
+ binary.Generate
+ SType VkStructureType
+ PNext Voidᶜᵖ
+ Image VkImage
+ Buffer VkBuffer
+}
+
+func VkDedicatedAllocationMemoryAllocateInfoNVSize(ϟs *gfxapi.State) uint64 {
+ size := uint64(0)
+ alignment := uint64(1)
+ {
+ size, alignment = u64.AlignToNextAndReturnLargestAlignment(size, uint64(4), alignment)
+ size += uint64(4)
+ }
+ {
+ size, alignment = u64.AlignToNextAndReturnLargestAlignment(size, uint64(ϟs.MemoryLayout.PointerSize), alignment)
+ size += uint64(ϟs.MemoryLayout.PointerSize)
+ }
+ {
+ size, alignment = u64.AlignToNextAndReturnLargestAlignment(size, uint64(ϟs.MemoryLayout.U64Alignment), alignment)
+ size += uint64(8)
+ }
+ {
+ size, alignment = u64.AlignToNextAndReturnLargestAlignment(size, uint64(ϟs.MemoryLayout.U64Alignment), alignment)
+ size += uint64(8)
+ }
+ if size%alignment != 0 {
+ size += alignment - (size % alignment)
+ }
+ return size
+}
+func VkDedicatedAllocationMemoryAllocateInfoNVAlignment(ϟs *gfxapi.State) uint64 {
+ alignment := uint64(1)
+ {
+ required_alignment := uint64(4)
+ if required_alignment > alignment {
+ alignment = required_alignment
+ }
+ }
+ {
+ required_alignment := uint64(ϟs.MemoryLayout.PointerSize)
+ if required_alignment > alignment {
+ alignment = required_alignment
+ }
+ }
+ {
+ required_alignment := uint64(ϟs.MemoryLayout.U64Alignment)
+ if required_alignment > alignment {
+ alignment = required_alignment
+ }
+ }
+ {
+ required_alignment := uint64(ϟs.MemoryLayout.U64Alignment)
+ if required_alignment > alignment {
+ alignment = required_alignment
+ }
+ }
+ return alignment
+}
+
+// VkDedicatedAllocationMemoryAllocateInfoNVDecodeRaw decodes a structure as it would have been stored
+// in memory by the traced application. This means native-width pointers
+// and aligned member variables.
+func VkDedicatedAllocationMemoryAllocateInfoNVDecodeRaw(ϟs *gfxapi.State, d binary.Reader, o *VkDedicatedAllocationMemoryAllocateInfoNV) {
+ offset := uint64(0)
+ _ = offset // Silence warnings for objects with no fields
+ {
+ newOffset, _ := u64.AlignToNextAndReturnLargestAlignment(offset, uint64(4), 0)
+ offset = offset + binary.ConsumeBytes(d, newOffset-offset) + uint64(4)
+ }
+ if ϟv := d.Uint32(); d.Error() == nil {
+ o.SType = VkStructureType(ϟv)
+ } else {
+ panic(d.Error())
+ }
+ {
+ newOffset, _ := u64.AlignToNextAndReturnLargestAlignment(offset, uint64(ϟs.MemoryLayout.PointerSize), 0)
+ offset = offset + binary.ConsumeBytes(d, newOffset-offset) + uint64(ϟs.MemoryLayout.PointerSize)
+ }
+ if ϟv := binary.ReadUint(d, ϟs.MemoryLayout.PointerSize*8); d.Error() == nil {
+ o.PNext = Voidᶜᵖ(memory.Pointer{Address: ϟv, Pool: memory.ApplicationPool})
+ } else {
+ panic(d.Error())
+ }
+ {
+ newOffset, _ := u64.AlignToNextAndReturnLargestAlignment(offset, uint64(ϟs.MemoryLayout.U64Alignment), 0)
+ offset = offset + binary.ConsumeBytes(d, newOffset-offset) + uint64(8)
+ }
+ if ϟv := d.Uint64(); d.Error() == nil {
+ o.Image = VkImage(ϟv)
+ } else {
+ panic(d.Error())
+ }
+ {
+ newOffset, _ := u64.AlignToNextAndReturnLargestAlignment(offset, uint64(ϟs.MemoryLayout.U64Alignment), 0)
+ offset = offset + binary.ConsumeBytes(d, newOffset-offset) + uint64(8)
+ }
+ if ϟv := d.Uint64(); d.Error() == nil {
+ o.Buffer = VkBuffer(ϟv)
+ } else {
+ panic(d.Error())
+ }
+}
+func VkDedicatedAllocationMemoryAllocateInfoNVEncodeRaw(ϟs *gfxapi.State, e binary.Writer, o *VkDedicatedAllocationMemoryAllocateInfoNV) {
+ offset := uint64(0)
+ _ = offset // Silence warnings for objects with no fields
+ {
+ required_alignment := uint64(4)
+ if offset%required_alignment != 0 {
+ extra_writes := required_alignment - (offset % required_alignment)
+ offset += extra_writes
+ for i := uint64(0); i < extra_writes; i++ {
+ if binary.WriteUint(e, 8, 0); e.Error() != nil {
+ panic(e.Error())
+ }
+ }
+ }
+ offset += uint64(4)
+ }
+ if e.Uint32(uint32(o.SType)); e.Error() != nil {
+ panic(e.Error())
+ }
+ {
+ required_alignment := uint64(ϟs.MemoryLayout.PointerSize)
+ if offset%required_alignment != 0 {
+ extra_writes := required_alignment - (offset % required_alignment)
+ offset += extra_writes
+ for i := uint64(0); i < extra_writes; i++ {
+ if binary.WriteUint(e, 8, 0); e.Error() != nil {
+ panic(e.Error())
+ }
+ }
+ }
+ offset += uint64(ϟs.MemoryLayout.PointerSize)
+ }
+ if binary.WriteUint(e, ϟs.MemoryLayout.PointerSize*8, o.PNext.Address); e.Error() != nil {
+ panic(e.Error())
+ }
+ {
+ required_alignment := uint64(ϟs.MemoryLayout.U64Alignment)
+ if offset%required_alignment != 0 {
+ extra_writes := required_alignment - (offset % required_alignment)
+ offset += extra_writes
+ for i := uint64(0); i < extra_writes; i++ {
+ if binary.WriteUint(e, 8, 0); e.Error() != nil {
+ panic(e.Error())
+ }
+ }
+ }
+ offset += uint64(8)
+ }
+ if e.Uint64(uint64(o.Image)); e.Error() != nil {
+ panic(e.Error())
+ }
+ {
+ required_alignment := uint64(ϟs.MemoryLayout.U64Alignment)
+ if offset%required_alignment != 0 {
+ extra_writes := required_alignment - (offset % required_alignment)
+ offset += extra_writes
+ for i := uint64(0); i < extra_writes; i++ {
+ if binary.WriteUint(e, 8, 0); e.Error() != nil {
+ panic(e.Error())
+ }
+ }
+ }
+ offset += uint64(8)
+ }
+ if e.Uint64(uint64(o.Buffer)); e.Error() != nil {
+ panic(e.Error())
+ }
+}
+
+////////////////////////////////////////////////////////////////////////////////
// class MemoryRangeArray
////////////////////////////////////////////////////////////////////////////////
type MemoryRangeArray struct {
@@ -110341,6 +112089,16 @@
}
////////////////////////////////////////////////////////////////////////////////
+// class CmdCopyImage
+////////////////////////////////////////////////////////////////////////////////
+type CmdCopyImage struct {
+ binary.Generate `cpp:"disable"`
+ SrcImage VkImage
+ DstImage VkImage
+ Regions U64ːVkImageCopyᵐ
+}
+
+////////////////////////////////////////////////////////////////////////////////
// class TexelBlockSizePair
////////////////////////////////////////////////////////////////////////////////
type TexelBlockSizePair struct {
@@ -113880,6 +115638,7 @@
Device VkDevice
Memory VkDeviceMemory
MemoryOffset VkDeviceSize
+ MemorySize VkDeviceSize
}
////////////////////////////////////////////////////////////////////////////////
diff --git a/gapid/gfxapi/vulkan/custom_replay.go b/gapid/gfxapi/vulkan/custom_replay.go
index a4cb6c7..cc164f4 100644
--- a/gapid/gfxapi/vulkan/custom_replay.go
+++ b/gapid/gfxapi/vulkan/custom_replay.go
@@ -337,10 +337,10 @@
o := a.Extras().Observations()
_ = c
o.ApplyReads(s.Memory[memory.ApplicationPool])
- _ = a.PImageIndex.Slice(uint64(0), uint64(1), s).Index(uint64(0), s).Read(ctx, a, s, d, b)
// Apply the write observation before having the replay device calling the vkAcquireNextImageKHR() command.
// This is to pass the returned image index value captured in the trace, into the replay device to acquire for the specific image.
o.ApplyWrites(s.Memory[memory.ApplicationPool])
+ _ = a.PImageIndex.Slice(uint64(0), uint64(1), s).Index(uint64(0), s).Read(ctx, a, s, d, b)
if b != nil {
a.Call(ctx, s, d, b)
}
diff --git a/gapid/gfxapi/vulkan/enum.go b/gapid/gfxapi/vulkan/enum.go
index 2641b99..6084cbd 100644
--- a/gapid/gfxapi/vulkan/enum.go
+++ b/gapid/gfxapi/vulkan/enum.go
@@ -126,68 +126,71 @@
type VkStructureType uint32
const (
- VkStructureType_VK_STRUCTURE_TYPE_APPLICATION_INFO = VkStructureType(0)
- VkStructureType_VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = VkStructureType(1)
- VkStructureType_VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = VkStructureType(2)
- VkStructureType_VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = VkStructureType(3)
- VkStructureType_VK_STRUCTURE_TYPE_SUBMIT_INFO = VkStructureType(4)
- VkStructureType_VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = VkStructureType(5)
- VkStructureType_VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = VkStructureType(6)
- VkStructureType_VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = VkStructureType(7)
- VkStructureType_VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = VkStructureType(8)
- VkStructureType_VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = VkStructureType(9)
- VkStructureType_VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = VkStructureType(10)
- VkStructureType_VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = VkStructureType(11)
- VkStructureType_VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = VkStructureType(12)
- VkStructureType_VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = VkStructureType(13)
- VkStructureType_VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = VkStructureType(14)
- VkStructureType_VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = VkStructureType(15)
- VkStructureType_VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = VkStructureType(16)
- VkStructureType_VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = VkStructureType(17)
- VkStructureType_VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = VkStructureType(18)
- VkStructureType_VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = VkStructureType(19)
- VkStructureType_VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = VkStructureType(20)
- VkStructureType_VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = VkStructureType(21)
- VkStructureType_VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = VkStructureType(22)
- VkStructureType_VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = VkStructureType(23)
- VkStructureType_VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = VkStructureType(24)
- VkStructureType_VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = VkStructureType(25)
- VkStructureType_VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = VkStructureType(26)
- VkStructureType_VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = VkStructureType(27)
- VkStructureType_VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = VkStructureType(28)
- VkStructureType_VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = VkStructureType(29)
- VkStructureType_VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = VkStructureType(30)
- VkStructureType_VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = VkStructureType(31)
- VkStructureType_VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = VkStructureType(32)
- VkStructureType_VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = VkStructureType(33)
- VkStructureType_VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = VkStructureType(34)
- VkStructureType_VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = VkStructureType(35)
- VkStructureType_VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = VkStructureType(36)
- VkStructureType_VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = VkStructureType(37)
- VkStructureType_VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = VkStructureType(38)
- VkStructureType_VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = VkStructureType(39)
- VkStructureType_VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = VkStructureType(40)
- VkStructureType_VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = VkStructureType(41)
- VkStructureType_VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = VkStructureType(42)
- VkStructureType_VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = VkStructureType(43)
- VkStructureType_VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = VkStructureType(44)
- VkStructureType_VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = VkStructureType(45)
- VkStructureType_VK_STRUCTURE_TYPE_MEMORY_BARRIER = VkStructureType(46)
- VkStructureType_VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = VkStructureType(47)
- VkStructureType_VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = VkStructureType(48)
- VkStructureType_VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = VkStructureType(1000001000)
- VkStructureType_VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = VkStructureType(1000001001)
- VkStructureType_VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = VkStructureType(1000002000)
- VkStructureType_VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = VkStructureType(1000002001)
- VkStructureType_VK_STRUCTURE_TYPE_DISPLAY_DISPLAY_PRESENT_INFO_KHR = VkStructureType(1000003000)
- VkStructureType_VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = VkStructureType(1000004000)
- VkStructureType_VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = VkStructureType(1000005000)
- VkStructureType_VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = VkStructureType(1000006000)
- VkStructureType_VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR = VkStructureType(1000007000)
- VkStructureType_VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = VkStructureType(1000008000)
- VkStructureType_VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = VkStructureType(1000009000)
- VkStructureType_VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID = VkStructureType(1000010000)
- VkStructureType_VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = VkStructureType(1000011000)
+ VkStructureType_VK_STRUCTURE_TYPE_APPLICATION_INFO = VkStructureType(0)
+ VkStructureType_VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = VkStructureType(1)
+ VkStructureType_VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = VkStructureType(2)
+ VkStructureType_VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = VkStructureType(3)
+ VkStructureType_VK_STRUCTURE_TYPE_SUBMIT_INFO = VkStructureType(4)
+ VkStructureType_VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = VkStructureType(5)
+ VkStructureType_VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = VkStructureType(6)
+ VkStructureType_VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = VkStructureType(7)
+ VkStructureType_VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = VkStructureType(8)
+ VkStructureType_VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = VkStructureType(9)
+ VkStructureType_VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = VkStructureType(10)
+ VkStructureType_VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = VkStructureType(11)
+ VkStructureType_VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = VkStructureType(12)
+ VkStructureType_VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = VkStructureType(13)
+ VkStructureType_VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = VkStructureType(14)
+ VkStructureType_VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = VkStructureType(15)
+ VkStructureType_VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = VkStructureType(16)
+ VkStructureType_VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = VkStructureType(17)
+ VkStructureType_VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = VkStructureType(18)
+ VkStructureType_VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = VkStructureType(19)
+ VkStructureType_VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = VkStructureType(20)
+ VkStructureType_VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = VkStructureType(21)
+ VkStructureType_VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = VkStructureType(22)
+ VkStructureType_VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = VkStructureType(23)
+ VkStructureType_VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = VkStructureType(24)
+ VkStructureType_VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = VkStructureType(25)
+ VkStructureType_VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = VkStructureType(26)
+ VkStructureType_VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = VkStructureType(27)
+ VkStructureType_VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = VkStructureType(28)
+ VkStructureType_VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = VkStructureType(29)
+ VkStructureType_VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = VkStructureType(30)
+ VkStructureType_VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = VkStructureType(31)
+ VkStructureType_VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = VkStructureType(32)
+ VkStructureType_VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = VkStructureType(33)
+ VkStructureType_VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = VkStructureType(34)
+ VkStructureType_VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = VkStructureType(35)
+ VkStructureType_VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = VkStructureType(36)
+ VkStructureType_VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = VkStructureType(37)
+ VkStructureType_VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = VkStructureType(38)
+ VkStructureType_VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = VkStructureType(39)
+ VkStructureType_VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = VkStructureType(40)
+ VkStructureType_VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = VkStructureType(41)
+ VkStructureType_VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = VkStructureType(42)
+ VkStructureType_VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = VkStructureType(43)
+ VkStructureType_VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = VkStructureType(44)
+ VkStructureType_VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = VkStructureType(45)
+ VkStructureType_VK_STRUCTURE_TYPE_MEMORY_BARRIER = VkStructureType(46)
+ VkStructureType_VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = VkStructureType(47)
+ VkStructureType_VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = VkStructureType(48)
+ VkStructureType_VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = VkStructureType(1000001000)
+ VkStructureType_VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = VkStructureType(1000001001)
+ VkStructureType_VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = VkStructureType(1000002000)
+ VkStructureType_VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = VkStructureType(1000002001)
+ VkStructureType_VK_STRUCTURE_TYPE_DISPLAY_DISPLAY_PRESENT_INFO_KHR = VkStructureType(1000003000)
+ VkStructureType_VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = VkStructureType(1000004000)
+ VkStructureType_VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = VkStructureType(1000005000)
+ VkStructureType_VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = VkStructureType(1000006000)
+ VkStructureType_VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR = VkStructureType(1000007000)
+ VkStructureType_VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = VkStructureType(1000008000)
+ VkStructureType_VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = VkStructureType(1000009000)
+ VkStructureType_VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID = VkStructureType(1000010000)
+ VkStructureType_VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = VkStructureType(1000011000)
+ VkStructureType_VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = VkStructureType(1000026000)
+ VkStructureType_VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = VkStructureType(1000026001)
+ VkStructureType_VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = VkStructureType(1000026002)
)
var _VkStructureType_map = map[VkStructureType]string{}
@@ -258,6 +261,9 @@
{Name: "VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR", Value: uint32(1000009000)},
{Name: "VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID", Value: uint32(1000010000)},
{Name: "VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT", Value: uint32(1000011000)},
+ {Name: "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV", Value: uint32(1000026000)},
+ {Name: "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV", Value: uint32(1000026001)},
+ {Name: "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV", Value: uint32(1000026002)},
},
}
ConstantValues = append(ConstantValues, _VkStructureType_cs)
@@ -3072,6 +3078,43 @@
}
////////////////////////////////////////////////////////////////////////////////
+// enum VkExternalMemoryHandleTypeFlagBitsNV
+////////////////////////////////////////////////////////////////////////////////
+type VkExternalMemoryHandleTypeFlagBitsNV uint32
+
+const (
+ VkExternalMemoryHandleTypeFlagBitsNV_VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = VkExternalMemoryHandleTypeFlagBitsNV(1)
+ VkExternalMemoryHandleTypeFlagBitsNV_VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = VkExternalMemoryHandleTypeFlagBitsNV(2)
+ VkExternalMemoryHandleTypeFlagBitsNV_VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = VkExternalMemoryHandleTypeFlagBitsNV(4)
+ VkExternalMemoryHandleTypeFlagBitsNV_VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = VkExternalMemoryHandleTypeFlagBitsNV(8)
+)
+
+var _VkExternalMemoryHandleTypeFlagBitsNV_map = map[VkExternalMemoryHandleTypeFlagBitsNV]string{}
+
+func init() {
+ _VkExternalMemoryHandleTypeFlagBitsNV_cs := schema.ConstantSet{
+ Type: &schema.Primitive{Name: "VkExternalMemoryHandleTypeFlagBitsNV", Method: schema.Uint32},
+ Entries: []schema.Constant{
+ {Name: "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV", Value: uint32(1)},
+ {Name: "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV", Value: uint32(2)},
+ {Name: "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV", Value: uint32(4)},
+ {Name: "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV", Value: uint32(8)},
+ },
+ }
+ ConstantValues = append(ConstantValues, _VkExternalMemoryHandleTypeFlagBitsNV_cs)
+ for _, cv := range _VkExternalMemoryHandleTypeFlagBitsNV_cs.Entries {
+ _VkExternalMemoryHandleTypeFlagBitsNV_map[VkExternalMemoryHandleTypeFlagBitsNV(cv.Value.(uint32))] = cv.Name
+ }
+}
+func (e VkExternalMemoryHandleTypeFlagBitsNV) String() string {
+ name, found := _VkExternalMemoryHandleTypeFlagBitsNV_map[e]
+ if found {
+ return name
+ }
+ return fmt.Sprintf("VkExternalMemoryHandleTypeFlagBitsNV(%v)", uint32(e))
+}
+
+////////////////////////////////////////////////////////////////////////////////
// enum VkColorSpaceKHR
////////////////////////////////////////////////////////////////////////////////
type VkColorSpaceKHR uint32
diff --git a/gapid/gfxapi/vulkan/externs.go b/gapid/gfxapi/vulkan/externs.go
index 93eb6e7..812b7ab 100644
--- a/gapid/gfxapi/vulkan/externs.go
+++ b/gapid/gfxapi/vulkan/externs.go
@@ -89,7 +89,6 @@
func (e externs) execCommands(commandBuffer VkCommandBuffer) {
o := GetState(e.s).State.CommandBuffers.Get(commandBuffer)
for _, command := range o.Commands {
- e.ctx.Warning().Logf("execCommands(): Command to run: %v", command)
command.function()
}
}
diff --git a/gapid/gfxapi/vulkan/globals_snippets.base64 b/gapid/gfxapi/vulkan/globals_snippets.base64
index 2c9c428..9e09a67 100644
--- a/gapid/gfxapi/vulkan/globals_snippets.base64
+++ b/gapid/gfxapi/vulkan/globals_snippets.base64
@@ -1 +1 @@
-AwhzbmlwcGV0cwxPYnNlcnZhdGlvbnMAAgMGUAMFCHNuaXBwZXRzCWZpZWxkUGF0aAACA7AFBwhzbmlwcGV0cwhwYXJ0UGF0aAACA1AHBAkECwkIc25pcHBldHMMcmVsYXRpdmVQYXRoAAGwBVN0YXRlBVN0YXRlDkRldmljZU1lbW9yaWVzAgREYXRhAgIACwhzbmlwcGV0cwZMYWJlbHMAAgMGsA0EDwYRBBMEFQgFU3RhdGUFU3RhdGUGSW1hZ2VzAgZGb3JtYXQRFlZLX0ZPUk1BVF9SOEc4QjhfVU5PUk0YVktfRk9STUFUX1I4RzhCOEE4X1VOT1JNGFZLX0ZPUk1BVF9COEc4UjhBOF9VTk9STRlWS19GT1JNQVRfQkMyX1VOT1JNX0JMT0NLGVZLX0ZPUk1BVF9CQzNfVU5PUk1fQkxPQ0sdVktfRk9STUFUX1IxNkcxNkIxNkExNl9TRkxPQVQdVktfRk9STUFUX1IzMkczMkIzMkEzMl9TRkxPQVQSVktfRk9STUFUX1I4X1VOT1JNE1ZLX0ZPUk1BVF9SMTZfVU5PUk0UVktfRk9STUFUX1IzMl9TRkxPQVQcVktfRk9STUFUX0QzMl9TRkxPQVRfUzhfVUlOVBNWS19GT1JNQVRfRDE2X1VOT1JNG1ZLX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVCBWS19GT1JNQVRfRVRDMl9SOEc4QjhfU1JHQl9CTE9DSyFWS19GT1JNQVRfRVRDMl9SOEc4QjhfVU5PUk1fQkxPQ0siVktfRk9STUFUX0VUQzJfUjhHOEI4QThfU1JHQl9CTE9DSyNWS19GT1JNQVRfRVRDMl9SOEc4QjhBOF9VTk9STV9CTE9DSwoXBBkGGwQdBB8IBVN0YXRlBVN0YXRlBkltYWdlcwIGTGF5b3V0ARlWS19JTUFHRV9MQVlPVVRfVU5ERUZJTkVECiEEIwYlBCcEKQgFU3RhdGUFU3RhdGUGSW1hZ2VzAgdTYW1wbGVzARVWS19TQU1QTEVfQ09VTlRfMV9CSVQKKwQtBi8EMQQzCAVTdGF0ZQVTdGF0ZQZJbWFnZXMCBFR5cGUBEFZLX0lNQUdFX1RZUEVfMkQKNQQ3BjkEOwQ9Bj8EQQRDCAVTdGF0ZQVTdGF0ZQ9QaHlzaWNhbERldmljZXMCEE1lbW9yeVByb3BlcnRpZXMLbWVtb3J5VHlwZXMCDXByb3BlcnR5RmxhZ3MBJFZLX01FTU9SWV9QUk9QRVJUWV9IT1NUX0NPSEVSRU5UX0JJVA==
\ No newline at end of file
+AwhzbmlwcGV0cwxPYnNlcnZhdGlvbnMAAgMGUAMFCHNuaXBwZXRzCWZpZWxkUGF0aAACA7AFBwhzbmlwcGV0cwhwYXJ0UGF0aAACA1AHBAkECwkIc25pcHBldHMMcmVsYXRpdmVQYXRoAAGwBVN0YXRlBVN0YXRlDkRldmljZU1lbW9yaWVzAgREYXRhAgIACwhzbmlwcGV0cwZMYWJlbHMAAgMGsA0EDwYRBBMEFQgFU3RhdGUFU3RhdGUGSW1hZ2VzAgZGb3JtYXQVFlZLX0ZPUk1BVF9SOEc4QjhfVU5PUk0YVktfRk9STUFUX1I4RzhCOEE4X1VOT1JNGFZLX0ZPUk1BVF9COEc4UjhBOF9VTk9STR1WS19GT1JNQVRfQkMxX1JHQl9VTk9STV9CTE9DSxxWS19GT1JNQVRfQkMxX1JHQl9TUkdCX0JMT0NLHlZLX0ZPUk1BVF9CQzFfUkdCQV9VTk9STV9CTE9DSx1WS19GT1JNQVRfQkMxX1JHQkFfU1JHQl9CTE9DSxlWS19GT1JNQVRfQkMyX1VOT1JNX0JMT0NLGVZLX0ZPUk1BVF9CQzNfVU5PUk1fQkxPQ0sdVktfRk9STUFUX1IxNkcxNkIxNkExNl9TRkxPQVQdVktfRk9STUFUX1IzMkczMkIzMkEzMl9TRkxPQVQSVktfRk9STUFUX1I4X1VOT1JNE1ZLX0ZPUk1BVF9SMTZfVU5PUk0UVktfRk9STUFUX1IzMl9TRkxPQVQcVktfRk9STUFUX0QzMl9TRkxPQVRfUzhfVUlOVBNWS19GT1JNQVRfRDE2X1VOT1JNG1ZLX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVCBWS19GT1JNQVRfRVRDMl9SOEc4QjhfU1JHQl9CTE9DSyFWS19GT1JNQVRfRVRDMl9SOEc4QjhfVU5PUk1fQkxPQ0siVktfRk9STUFUX0VUQzJfUjhHOEI4QThfU1JHQl9CTE9DSyNWS19GT1JNQVRfRVRDMl9SOEc4QjhBOF9VTk9STV9CTE9DSwoXBBkGGwQdBB8IBVN0YXRlBVN0YXRlBkltYWdlcwIGTGF5b3V0ARlWS19JTUFHRV9MQVlPVVRfVU5ERUZJTkVECiEEIwYlBCcEKQgFU3RhdGUFU3RhdGUGSW1hZ2VzAgdTYW1wbGVzARVWS19TQU1QTEVfQ09VTlRfMV9CSVQKKwQtBi8EMQQzCAVTdGF0ZQVTdGF0ZQZJbWFnZXMCBFR5cGUBEFZLX0lNQUdFX1RZUEVfMkQKNQQ3BjkEOwQ9Bj8EQQRDCAVTdGF0ZQVTdGF0ZQ9QaHlzaWNhbERldmljZXMCEE1lbW9yeVByb3BlcnRpZXMLbWVtb3J5VHlwZXMCDXByb3BlcnR5RmxhZ3MBJFZLX01FTU9SWV9QUk9QRVJUWV9IT1NUX0NPSEVSRU5UX0JJVA==
\ No newline at end of file
diff --git a/gapid/gfxapi/vulkan/globals_snippets.text b/gapid/gfxapi/vulkan/globals_snippets.text
index 9e02afb..42a4571 100644
--- a/gapid/gfxapi/vulkan/globals_snippets.text
+++ b/gapid/gfxapi/vulkan/globals_snippets.text
@@ -1,5 +1,5 @@
Global:State.DeviceMemories.Elem().Data: [Observation(Write) Observation(Read)]
-Global:State.Images.Elem().Format: [VK_FORMAT_R8G8B8_UNORM VK_FORMAT_R8G8B8A8_UNORM VK_FORMAT_B8G8R8A8_UNORM VK_FORMAT_BC2_UNORM_BLOCK VK_FORMAT_BC3_UNORM_BLOCK VK_FORMAT_R16G16B16A16_SFLOAT VK_FORMAT_R32G32B32A32_SFLOAT VK_FORMAT_R8_UNORM VK_FORMAT_R16_UNORM VK_FORMAT_R32_SFLOAT VK_FORMAT_D32_SFLOAT_S8_UINT VK_FORMAT_D16_UNORM VK_FORMAT_D24_UNORM_S8_UINT VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK]
+Global:State.Images.Elem().Format: [VK_FORMAT_R8G8B8_UNORM VK_FORMAT_R8G8B8A8_UNORM VK_FORMAT_B8G8R8A8_UNORM VK_FORMAT_BC1_RGB_UNORM_BLOCK VK_FORMAT_BC1_RGB_SRGB_BLOCK VK_FORMAT_BC1_RGBA_UNORM_BLOCK VK_FORMAT_BC1_RGBA_SRGB_BLOCK VK_FORMAT_BC2_UNORM_BLOCK VK_FORMAT_BC3_UNORM_BLOCK VK_FORMAT_R16G16B16A16_SFLOAT VK_FORMAT_R32G32B32A32_SFLOAT VK_FORMAT_R8_UNORM VK_FORMAT_R16_UNORM VK_FORMAT_R32_SFLOAT VK_FORMAT_D32_SFLOAT_S8_UINT VK_FORMAT_D16_UNORM VK_FORMAT_D24_UNORM_S8_UINT VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK]
Global:State.Images.Elem().Layout: [VK_IMAGE_LAYOUT_UNDEFINED]
Global:State.Images.Elem().Samples: [VK_SAMPLE_COUNT_1_BIT]
Global:State.Images.Elem().Type: [VK_IMAGE_TYPE_2D]
diff --git a/gapid/gfxapi/vulkan/mutate.go b/gapid/gfxapi/vulkan/mutate.go
index a559936..0aaf18d 100644
--- a/gapid/gfxapi/vulkan/mutate.go
+++ b/gapid/gfxapi/vulkan/mutate.go
@@ -564,6 +564,9 @@
func (c VkStencilFaceFlags) value(ϟb *builder.Builder, ϟa atom.Atom, ϟs *gfxapi.State) value.Value {
return VkFlags(c).value(ϟb, ϟa, ϟs)
}
+func (c VkExternalMemoryHandleTypeFlagsNV) value(ϟb *builder.Builder, ϟa atom.Atom, ϟs *gfxapi.State) value.Value {
+ return VkFlags(c).value(ϟb, ϟa, ϟs)
+}
func (c VkSurfaceTransformFlagsKHR) value(ϟb *builder.Builder, ϟa atom.Atom, ϟs *gfxapi.State) value.Value {
return VkFlags(c).value(ϟb, ϟa, ϟs)
}
@@ -693,13 +696,97 @@
{
for _, v := range bind.Buffers {
buffer := ϟc.State.Buffers.Get(v.Buffer)
- if ϟerr := subReadMemoryIfCoherent(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, buffer.Memory, v.Offset, VkDeviceSize(uint64(18446744073709551615))); ϟerr != nil {
+ if ϟerr := subReadMemoryIfCoherent(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, buffer.Memory, v.Offset, buffer.MemorySize); ϟerr != nil {
return ϟerr
}
}
}
return nil
}
+func subDoCmdCopyImage(ϟctx log.Context, ϟa atom.Atom, ϟo *atom.Observations, ϟs *gfxapi.State, ϟc *State, ϟd database.Database, ϟb *builder.Builder, args CmdCopyImage) error {
+ srcImageObject := ϟc.State.Images.Get(args.SrcImage)
+ dstImageObject := ϟc.State.Images.Get(args.DstImage)
+ srcFormat := srcImageObject.OnAccess(ϟs).Format
+ srcElementAndTexelBlockSize, ϟerr := subGetElementAndTexelBlockSize(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, srcFormat)
+ if ϟerr != nil {
+ return ϟerr
+ }
+ dstFormat := dstImageObject.OnAccess(ϟs).Format
+ dstElementAndTexelBlockSize, ϟerr := subGetElementAndTexelBlockSize(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, dstFormat)
+ if ϟerr != nil {
+ return ϟerr
+ }
+ for r := int32(0); r < int32(len(args.Regions)); r++ {
+ region := args.Regions.Get(uint64(r))
+ srcBaseLayer := region.SrcSubresource.BaseArrayLayer
+ dstBaseLayer := region.SrcSubresource.BaseArrayLayer
+ srcMipLevel := region.SrcSubresource.MipLevel
+ dstMipLevel := region.DstSubresource.MipLevel
+ srcElementSize := uint64(srcElementAndTexelBlockSize.ElementSize)
+ srcBlockWidth := uint64(srcElementAndTexelBlockSize.TexelBlockSize.Width)
+ srcBlockHeight := uint64(srcElementAndTexelBlockSize.TexelBlockSize.Height)
+ dstElementSize := uint64(dstElementAndTexelBlockSize.ElementSize)
+ dstBlockWidth := uint64(dstElementAndTexelBlockSize.TexelBlockSize.Width)
+ dstBlockHeight := uint64(dstElementAndTexelBlockSize.TexelBlockSize.Height)
+ srcXStartInBlocks := (uint64(region.SrcOffset.X)) / (srcBlockWidth)
+ srcYStartInBlocks := (uint64(region.SrcOffset.Y)) / (srcBlockHeight)
+ srcZStart := uint64(region.SrcOffset.Z)
+ dstXStartInBlocks := (uint64(region.DstOffset.X)) / (dstBlockWidth)
+ dstYStartInBlocks := (uint64(region.DstOffset.Y)) / (dstBlockHeight)
+ dstZStart := uint64(region.DstOffset.Z)
+ extentXInBlocks, ϟerr := subRoundUpTo(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, region.Extent.Width, uint32(srcBlockWidth))
+ if ϟerr != nil {
+ return ϟerr
+ }
+ extentYInBlocks, ϟerr := subRoundUpTo(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, region.Extent.Height, uint32(srcBlockHeight))
+ if ϟerr != nil {
+ return ϟerr
+ }
+ extentZ := region.Extent.Depth
+ for l := uint32(0); l < region.SrcSubresource.LayerCount; l++ {
+ srcImageLevel := srcImageObject.OnAccess(ϟs).Layers.Get((srcBaseLayer) + (l)).Levels.Get(srcMipLevel)
+ dstImageLevel := dstImageObject.OnAccess(ϟs).Layers.Get((dstBaseLayer) + (l)).Levels.Get(dstMipLevel)
+ _res_0, ϟerr := subRoundUpTo(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, srcImageLevel.Width, uint32(srcBlockWidth))
+ if ϟerr != nil {
+ return ϟerr
+ }
+ srcImageLevelWidthInBlocks := uint64(_res_0)
+ _res_1, ϟerr := subRoundUpTo(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, srcImageLevel.Height, uint32(srcBlockHeight))
+ if ϟerr != nil {
+ return ϟerr
+ }
+ srcImageLevelHeightInBlocks := uint64(_res_1)
+ _res_2, ϟerr := subRoundUpTo(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, dstImageLevel.Width, uint32(dstBlockWidth))
+ if ϟerr != nil {
+ return ϟerr
+ }
+ dstImageLevelWidthInBlocks := uint64(_res_2)
+ _res_3, ϟerr := subRoundUpTo(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, dstImageLevel.Height, uint32(dstBlockHeight))
+ if ϟerr != nil {
+ return ϟerr
+ }
+ dstImageLevelHeightInBlocks := uint64(_res_3)
+ srcData := srcImageLevel.Data
+ dstData := dstImageLevel.Data
+ for z := uint32(0); z < extentZ; z++ {
+ for y := uint32(0); y < extentYInBlocks; y++ {
+ copySize := (uint64(extentXInBlocks)) * (srcElementSize)
+ dstY := (dstYStartInBlocks) + (uint64(y))
+ dstZ := (dstZStart) + (uint64(z))
+ srcY := (srcYStartInBlocks) + (uint64(y))
+ srcZ := (srcZStart) + (uint64(z))
+ dstStart := (((((dstZ) * (dstImageLevelHeightInBlocks)) + (dstY)) * (dstImageLevelWidthInBlocks)) + (dstXStartInBlocks)) * (dstElementSize)
+ srcStart := (((((srcZ) * (srcImageLevelHeightInBlocks)) + (srcY)) * (srcImageLevelWidthInBlocks)) + (srcXStartInBlocks)) * (srcElementSize)
+ if ϟerr := subReadMemoryIfCoherent(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, srcImageObject.OnAccess(ϟs).BoundMemory, VkDeviceSize(srcStart), VkDeviceSize(copySize)); ϟerr != nil {
+ return ϟerr
+ }
+ dstData.Slice(dstStart, (dstStart)+(copySize), ϟs).Copy(ϟctx, srcData.Slice(srcStart, (srcStart)+(copySize), ϟs), ϟa, ϟs, ϟd, ϟb)
+ }
+ }
+ }
+ }
+ return nil
+}
func subGetElementAndTexelBlockSize(ϟctx log.Context, ϟa atom.Atom, ϟo *atom.Observations, ϟs *gfxapi.State, ϟc *State, ϟd database.Database, ϟb *builder.Builder, format VkFormat) (ElementAndTexelBlockSize, error) {
return func() (result ElementAndTexelBlockSize) {
switch format {
@@ -709,6 +796,8 @@
return ElementAndTexelBlockSize{ElementSize: uint32(4), TexelBlockSize: TexelBlockSizePair{Width: uint32(1), Height: uint32(1)}}
case VkFormat_VK_FORMAT_B8G8R8A8_UNORM:
return ElementAndTexelBlockSize{ElementSize: uint32(4), TexelBlockSize: TexelBlockSizePair{Width: uint32(1), Height: uint32(1)}}
+ case VkFormat_VK_FORMAT_BC1_RGB_UNORM_BLOCK, VkFormat_VK_FORMAT_BC1_RGB_SRGB_BLOCK, VkFormat_VK_FORMAT_BC1_RGBA_UNORM_BLOCK, VkFormat_VK_FORMAT_BC1_RGBA_SRGB_BLOCK:
+ return ElementAndTexelBlockSize{ElementSize: uint32(8), TexelBlockSize: TexelBlockSizePair{Width: uint32(4), Height: uint32(4)}}
case VkFormat_VK_FORMAT_BC2_UNORM_BLOCK:
return ElementAndTexelBlockSize{ElementSize: uint32(16), TexelBlockSize: TexelBlockSizePair{Width: uint32(4), Height: uint32(4)}}
case VkFormat_VK_FORMAT_BC3_UNORM_BLOCK:
@@ -796,14 +885,22 @@
layerIndex := (region.ImageSubresource.BaseArrayLayer) + (j)
bufferLayerOffset := (uint64(j)) * (layerSize)
imageLevel := imageObject.OnAccess(ϟs).Layers.Get(layerIndex).Levels.Get(region.ImageSubresource.MipLevel)
+ imageLevelWidthInBlocks := uint64((imageLevel.Width) / (elementAndTexelBlockSize.TexelBlockSize.Width))
+ imageLevelHeightInBlocks := uint64((imageLevel.Height) / (elementAndTexelBlockSize.TexelBlockSize.Height))
dstData := imageLevel.Data
for z := zStart; z < zEnd; z++ {
for y := yStart; y < yEnd; y++ {
copySize := ((xEnd) - (xStart)) * (elementSize)
- dstStart := ((((z) * (imageHeight)) + (y)) * ((rowLength) + (xStart))) * (elementSize)
+ dstStart := (((((z) * (imageLevelHeightInBlocks)) + (y)) * (imageLevelWidthInBlocks)) + (xStart)) * (elementSize)
dstEnd := (dstStart) + (copySize)
- srcStart := (uint64(bufferObject.MemoryOffset)) + ((uint64(region.BufferOffset)) + ((bufferLayerOffset) + (dstStart)))
+ zInExtent := (z) - (zStart)
+ yInExtent := (y) - (yStart)
+ rowStartInExtent := ((((zInExtent) * (imageHeight)) + (yInExtent)) * (rowLength)) * (elementSize)
+ srcStart := (uint64(bufferObject.MemoryOffset)) + ((uint64(region.BufferOffset)) + ((bufferLayerOffset) + (rowStartInExtent)))
srcEnd := (srcStart) + (copySize)
+ if ϟerr := subReadMemoryIfCoherent(ϟctx, ϟa, ϟo, ϟs, ϟc, ϟd, ϟb, bufferObject.Memory, VkDeviceSize(srcStart), VkDeviceSize(copySize)); ϟerr != nil {
+ return ϟerr
+ }
dstData.Slice(dstStart, dstEnd, ϟs).Copy(ϟctx, srcData.Slice(srcStart, srcEnd, ϟs), ϟa, ϟs, ϟd, ϟb)
}
}
@@ -2457,6 +2554,16 @@
_ = ϟc
ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
allocateInfo := ϟa.PAllocateInfo.Slice(uint64(0), uint64(1), ϟs).Index(uint64(0), ϟs).Read(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ if (allocateInfo.PNext) != (Voidᶜᵖ{}) {
+ t := VkStructureTypeᵖ(allocateInfo.PNext).Slice(uint64(0), uint64(1), ϟs).Index(uint64(0), ϟs).Read(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ switch t {
+ case VkStructureType_VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV:
+ _ = VkDedicatedAllocationMemoryAllocateInfoNVᵖ(allocateInfo.PNext).Slice(uint64(0), uint64(1), ϟs).Index(uint64(0), ϟs).Read(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ default:
+ v := t
+ return fmt.Errorf("Missing switch case handler for value %T %v", v, v)
+ }
+ }
memoryObject := &DeviceMemoryObject{BoundObjects: U64ːVkDeviceSizeᵐ{}, BoundCommandBuffers: VkCommandBufferːVkCommandBufferᵐ{}}
memoryObject.Device = ϟa.Device
memoryObject.AllocationSize = allocateInfo.AllocationSize
@@ -2747,6 +2854,7 @@
_ = ϟc
ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
ϟc.State.Buffers.Get(ϟa.Buffer).Memory = ϟa.Memory
+ ϟc.State.Buffers.Get(ϟa.Buffer).MemoryOffset = ϟa.MemoryOffset
ϟc.State.DeviceMemories.Get(ϟa.Memory).BoundObjects[uint64(ϟa.Buffer)] = ϟa.MemoryOffset
if ϟb != nil {
ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
@@ -3087,6 +3195,7 @@
ϟo := ϟa.Extras().Observations()
_ = ϟc
ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ ϟa.PFences.Slice(uint64(uint32(0)), uint64(ϟa.FenceCount), ϟs).OnRead(ϟctx, ϟa, ϟs, ϟd, ϟb)
if ϟb != nil {
ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
}
@@ -3518,7 +3627,16 @@
}
ϟb.Push(value.U32(ϟa.FirstQuery))
ϟb.Push(value.U32(ϟa.QueryCount))
- ϟb.Push(value.U64(ϟa.DataSize))
+ {
+ size_size := ϟs.MemoryLayout.SizeSize * 8
+ if size_size == 32 {
+ ϟb.Push(value.U32(ϟa.DataSize))
+ } else if size_size == 64 {
+ ϟb.Push(value.U64(ϟa.DataSize))
+ } else {
+ panic(fmt.Errorf("Unsupported size type bitwidth: %v", size_size))
+ }
+ }
ϟb.Push(ϟa.PData.value(ϟb, ϟa, ϟs))
ϟb.Push(ϟa.Stride.value(ϟb, ϟa, ϟs))
ϟb.Push(ϟa.Flags.value(ϟb, ϟa, ϟs))
@@ -3534,11 +3652,22 @@
ϟo := ϟa.Extras().Observations()
_ = ϟc
ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ buffer_create_info := ϟa.PCreateInfo.Slice(uint64(0), uint64(1), ϟs).Index(uint64(0), ϟs).Read(ϟctx, ϟa, ϟs, ϟd, ϟb)
bufferObject := &BufferObject{}
bufferObject.Device = ϟa.Device
bufferObject.Memory = VkDeviceMemory(uint64(0))
bufferObject.MemoryOffset = VkDeviceSize(uint64(0))
- buffer_create_info := ϟa.PCreateInfo.Slice(uint64(0), uint64(1), ϟs).Index(uint64(0), ϟs).Read(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ bufferObject.MemorySize = buffer_create_info.Size
+ if (buffer_create_info.PNext) != (Voidᶜᵖ{}) {
+ t := VkStructureTypeᵖ(buffer_create_info.PNext).Slice(uint64(0), uint64(1), ϟs).Index(uint64(0), ϟs).Read(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ switch t {
+ case VkStructureType_VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV:
+ _ = VkDedicatedAllocationBufferCreateInfoNVᵖ(buffer_create_info.PNext).Slice(uint64(0), uint64(1), ϟs).Index(uint64(0), ϟs).Read(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ default:
+ v := t
+ return fmt.Errorf("Missing switch case handler for value %T %v", v, v)
+ }
+ }
buffer_create_info.PQueueFamilyIndices.Slice(uint64(uint32(0)), uint64(buffer_create_info.QueueFamilyIndexCount), ϟs).OnRead(ϟctx, ϟa, ϟs, ϟd, ϟb)
if ϟb != nil {
ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
@@ -3679,6 +3808,16 @@
_ = ϟc
ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
info := ϟa.PCreateInfo.Slice(uint64(0), uint64(1), ϟs).Index(uint64(0), ϟs).Read(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ if (info.PNext) != (Voidᶜᵖ{}) {
+ t := VkStructureTypeᵖ(info.PNext).Slice(uint64(0), uint64(1), ϟs).Index(uint64(0), ϟs).Read(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ switch t {
+ case VkStructureType_VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV:
+ _ = VkDedicatedAllocationImageCreateInfoNVᵖ(info.PNext).Slice(uint64(0), uint64(1), ϟs).Index(uint64(0), ϟs).Read(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ default:
+ v := t
+ return fmt.Errorf("Missing switch case handler for value %T %v", v, v)
+ }
+ }
info.PQueueFamilyIndices.Slice(uint64(uint32(0)), uint64(info.QueueFamilyIndexCount), ϟs).OnRead(ϟctx, ϟa, ϟs, ϟd, ϟb)
if ϟb != nil {
ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
@@ -3974,7 +4113,8 @@
ϟo := ϟa.Extras().Observations()
_ = ϟc
ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
- _ = ϟa.PCreateInfo.Slice(uint64(0), uint64(1), ϟs).Index(uint64(0), ϟs).Read(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ create_info := ϟa.PCreateInfo.Slice(uint64(0), uint64(1), ϟs).Index(uint64(0), ϟs).Read(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ U8ᵖ(create_info.PInitialData).Slice(uint64(int32(0)), uint64(create_info.InitialDataSize), ϟs).OnRead(ϟctx, ϟa, ϟs, ϟd, ϟb)
if ϟb != nil {
ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
}
@@ -5509,15 +5649,17 @@
ϟa.PDynamicOffsets.Slice(uint64(uint32(0)), uint64(ϟa.DynamicOffsetCount), ϟs).OnRead(ϟctx, ϟa, ϟs, ϟd, ϟb)
bindBuffer := CmdBindBuffer{Buffers: U32ːBoundBufferᵐ{}}
for i := uint32(0); i < ϟa.DescriptorSetCount; i++ {
- set := ϟc.State.DescriptorSets.Get(sets.Index(uint64(i), ϟs).Read(ϟctx, ϟa, ϟs, ϟd, ϟb))
- {
- for _, buffers := range set.BufferInfo {
- length := int32(len(bindBuffer.Buffers))
- {
- j := int32(0)
- for _, v := range buffers {
- bindBuffer.Buffers[uint32((length)+(j))] = BoundBuffer{Buffer: v.Buffer, Offset: v.Offset}
- j++
+ if ϟc.State.DescriptorSets.Contains(sets.Index(uint64(i), ϟs).Read(ϟctx, ϟa, ϟs, ϟd, ϟb)) {
+ set := ϟc.State.DescriptorSets.Get(sets.Index(uint64(i), ϟs).Read(ϟctx, ϟa, ϟs, ϟd, ϟb))
+ {
+ for _, buffers := range set.BufferInfo {
+ length := int32(len(bindBuffer.Buffers))
+ {
+ j := int32(0)
+ for _, v := range buffers {
+ bindBuffer.Buffers[uint32((length)+(j))] = BoundBuffer{Buffer: v.Buffer, Offset: v.Offset}
+ j++
+ }
}
}
}
@@ -5561,6 +5703,9 @@
ϟo := ϟa.Extras().Observations()
_ = ϟc
ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ bindBuffer := CmdBindBuffer{Buffers: U32ːBoundBufferᵐ{}}
+ bindBuffer.Buffers[uint32(0)] = BoundBuffer{Buffer: ϟa.Buffer, Offset: ϟa.Offset}
+ (externs{ϟctx, ϟa, ϟs, ϟd, ϟb}.addCmd(ϟa.CommandBuffer, bindBuffer, subDoCmdBindBuffers))
if ϟb != nil {
ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
}
@@ -5860,6 +6005,12 @@
ϟo := ϟa.Extras().Observations()
_ = ϟc
ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ regions := ϟa.PRegions.Slice(uint64(uint32(0)), uint64(ϟa.RegionCount), ϟs)
+ copyArgs := CmdCopyImage{SrcImage: ϟa.SrcImage, DstImage: ϟa.DstImage, Regions: U64ːVkImageCopyᵐ{}}
+ for i := uint32(0); i < ϟa.RegionCount; i++ {
+ copyArgs.Regions[uint64(i)] = regions.Index(uint64(i), ϟs).Read(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ }
+ (externs{ϟctx, ϟa, ϟs, ϟd, ϟb}.addCmd(ϟa.CommandBuffer, copyArgs, subDoCmdCopyImage))
if ϟb != nil {
ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
}
@@ -6096,6 +6247,8 @@
ϟo := ϟa.Extras().Observations()
_ = ϟc
ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ _ = ϟa.PColor.Slice(uint64(0), uint64(1), ϟs).Index(uint64(0), ϟs).Read(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ ϟa.PRanges.Slice(uint64(uint32(0)), uint64(ϟa.RangeCount), ϟs).OnRead(ϟctx, ϟa, ϟs, ϟd, ϟb)
if ϟb != nil {
ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
}
@@ -6166,6 +6319,8 @@
ϟo := ϟa.Extras().Observations()
_ = ϟc
ϟo.ApplyReads(ϟs.Memory[memory.ApplicationPool])
+ ϟa.PAttachments.Slice(uint64(uint32(0)), uint64(ϟa.AttachmentCount), ϟs).OnRead(ϟctx, ϟa, ϟs, ϟd, ϟb)
+ ϟa.PRects.Slice(uint64(uint32(0)), uint64(ϟa.RectCount), ϟs).OnRead(ϟctx, ϟa, ϟs, ϟd, ϟb)
if ϟb != nil {
ϟa.Call(ϟctx, ϟs, ϟd, ϟb)
}
@@ -7558,7 +7713,16 @@
ϟb.Push(ϟa.Flags.value(ϟb, ϟa, ϟs))
ϟb.Push(value.U32(ϟa.ObjectType))
ϟb.Push(value.U64(ϟa.Object))
- ϟb.Push(value.U64(ϟa.Location))
+ {
+ size_size := ϟs.MemoryLayout.SizeSize * 8
+ if size_size == 32 {
+ ϟb.Push(value.U32(ϟa.Location))
+ } else if size_size == 64 {
+ ϟb.Push(value.U64(ϟa.Location))
+ } else {
+ panic(fmt.Errorf("Unsupported size type bitwidth: %v", size_size))
+ }
+ }
ϟb.Push(value.S32(ϟa.MessageCode))
ϟb.Push(ϟb.String(ϟa.PLayerPrefix))
ϟb.Push(ϟb.String(ϟa.PMessage))
diff --git a/gapid/gfxapi/vulkan/read_framebuffer.go b/gapid/gfxapi/vulkan/read_framebuffer.go
index 1112b07..db148a3 100644
--- a/gapid/gfxapi/vulkan/read_framebuffer.go
+++ b/gapid/gfxapi/vulkan/read_framebuffer.go
@@ -74,843 +74,39 @@
func (t *readFramebuffer) Flush(ctx log.Context, out atom.Writer) {}
-func (t *readFramebuffer) Depth(id atom.ID, res chan<- imgRes) {}
+func (t *readFramebuffer) Depth(id atom.ID, res chan<- imgRes) {
+ t.injections[id] = append(t.injections[id], func(ctx log.Context, out atom.Writer) {
+ s, d := t.state, t.database
+ vkState := GetState(s).State
+ attachment := gfxapi.FramebufferAttachment_Depth
+ w, h, form, attachmentIndex, err := GetState(s).getFramebufferAttachmentInfo(attachment)
+ if err != nil {
+ res <- imgRes{err: &service.ErrDataUnavailable{Reason: messages.ErrMessage("Invalid Depth attachment")}}
+ return
+ }
+ framebuffer := vkState.Framebuffers[vkState.LastUsedFramebuffer]
+ imageViewDepth := vkState.ImageViews[framebuffer.ImageAttachments[attachmentIndex]]
+ vkImageDepth := imageViewDepth.Image
+ postImageData(ctx, s, d, vkImageDepth, form, VkImageAspectFlagBits_VK_IMAGE_ASPECT_DEPTH_BIT, w, h, w, h, out, func(i imgRes) { res <- i })
+ })
+}
func (t *readFramebuffer) Color(id atom.ID, width, height, bufferIdx uint32, res chan<- imgRes) {
t.injections[id] = append(t.injections[id], func(ctx log.Context, out atom.Writer) {
s, d := t.state, t.database
vkState := GetState(s).State
attachment := gfxapi.FramebufferAttachment_Color0 + gfxapi.FramebufferAttachment(bufferIdx)
- w, h, form, err := GetState(s).getFramebufferAttachmentInfo(attachment)
-
- format, err := getImageFormatFromVulkanFormat(form)
+ w, h, form, attachmentIndex, err := GetState(s).getFramebufferAttachmentInfo(attachment)
if err != nil {
- res <- imgRes{err: &service.ErrDataUnavailable{Reason: messages.ErrFramebufferUnavailable()}}
+ res <- imgRes{err: &service.ErrDataUnavailable{Reason: messages.ErrMessage("Invalid Color attachment")}}
return
}
- requestSize := uint64(format.Size(int(width), int(height)))
- resolveSize := uint64(format.Size(int(w), int(h)))
-
// TODO: Figure out a better way to select the framebuffer here.
framebuffer := vkState.Framebuffers[vkState.LastUsedFramebuffer]
- imageView := vkState.ImageViews[framebuffer.ImageAttachments[bufferIdx]]
+ imageView := vkState.ImageViews[framebuffer.ImageAttachments[attachmentIndex]]
vkImage := imageView.Image
- imageObject := vkState.Images[vkImage]
-
- vkQueue := vkState.LastBoundQueue
- queue := vkState.Queues[vkQueue]
- vkDevice := queue.Device
- device := vkState.Devices[vkDevice]
- vkPhysicalDevice := device.PhysicalDevice
- physicalDevice := vkState.PhysicalDevices[vkPhysicalDevice]
-
- fenceId := VkFence(newUnusedID(false, func(x uint64) bool { _, ok := vkState.Fences[VkFence(x)]; return ok }))
- fenceCreateInfo := VkFenceCreateInfo{
- SType: VkStructureType_VK_STRUCTURE_TYPE_FENCE_CREATE_INFO,
- PNext: NewVoidᶜᵖ(0),
- Flags: VkFenceCreateFlags(0),
- }
- fenceCreateData := atom.Must(atom.AllocData(ctx, s, d, fenceCreateInfo))
- fenceData := atom.Must(atom.AllocData(ctx, s, d, fenceId))
-
- // TODO: Find a better way to determine what image memory index to use
- deviceImageMemoryIndex := uint32(0) //imageMemory.MemoryTypeIndex
- memoryType := uint32(0)
- for i := uint32(0); i < physicalDevice.MemoryProperties.MemoryTypeCount; i++ {
- t := physicalDevice.MemoryProperties.MemoryTypes.Elements[i]
- if 0 != (t.PropertyFlags & VkMemoryPropertyFlags(VkMemoryPropertyFlagBits_VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT|
- VkMemoryPropertyFlagBits_VK_MEMORY_PROPERTY_HOST_COHERENT_BIT)) {
- memoryType = i
- break
- }
- }
-
- // Data and info for destination buffer creation
- bufferId := VkBuffer(newUnusedID(false, func(x uint64) bool { _, ok := vkState.Buffers[VkBuffer(x)]; return ok }))
- bufferMemoryId := VkDeviceMemory(newUnusedID(false, func(x uint64) bool { _, ok := vkState.DeviceMemories[VkDeviceMemory(x)]; return ok }))
- bufferMemoryAllocInfo := VkMemoryAllocateInfo{
- SType: VkStructureType_VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,
- PNext: NewVoidᶜᵖ(0),
- AllocationSize: VkDeviceSize(requestSize),
- MemoryTypeIndex: memoryType,
- }
- bufferMemoryAllocateInfoData := atom.Must(atom.AllocData(ctx, s, d, bufferMemoryAllocInfo))
- bufferMemoryData := atom.Must(atom.AllocData(ctx, s, d, bufferMemoryId))
- bufferCreateInfo := VkBufferCreateInfo{
- SType: VkStructureType_VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO,
- PNext: NewVoidᶜᵖ(0),
- Flags: VkBufferCreateFlags(0),
- Size: VkDeviceSize(requestSize),
- Usage: VkBufferUsageFlags(VkBufferUsageFlagBits_VK_BUFFER_USAGE_TRANSFER_DST_BIT),
- SharingMode: VkSharingMode_VK_SHARING_MODE_EXCLUSIVE,
- QueueFamilyIndexCount: 0,
- PQueueFamilyIndices: NewU32ᶜᵖ(0),
- }
- bufferCreateInfoData := atom.Must(atom.AllocData(ctx, s, d, bufferCreateInfo))
- bufferData := atom.Must(atom.AllocData(ctx, s, d, bufferId))
-
- // Data and info for staging image creation
- stagingImageId := VkImage(newUnusedID(false, func(x uint64) bool { _, ok := vkState.Images[VkImage(x)]; return ok }))
- stagingImageCreateInfo := VkImageCreateInfo{
- SType: VkStructureType_VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
- PNext: NewVoidᶜᵖ(0),
- Flags: VkImageCreateFlags(0),
- ImageType: VkImageType_VK_IMAGE_TYPE_2D,
- Format: form,
- Extent: VkExtent3D{
- Width: width,
- Height: height,
- Depth: 1,
- },
- MipLevels: 1,
- ArrayLayers: 1,
- Samples: VkSampleCountFlagBits_VK_SAMPLE_COUNT_1_BIT,
- Tiling: VkImageTiling_VK_IMAGE_TILING_OPTIMAL,
- Usage: VkImageUsageFlags(VkImageUsageFlagBits_VK_IMAGE_USAGE_TRANSFER_SRC_BIT |
- VkImageUsageFlagBits_VK_IMAGE_USAGE_TRANSFER_DST_BIT),
- SharingMode: VkSharingMode_VK_SHARING_MODE_EXCLUSIVE,
- QueueFamilyIndexCount: 0,
- PQueueFamilyIndices: NewU32ᶜᵖ(0),
- InitialLayout: VkImageLayout_VK_IMAGE_LAYOUT_UNDEFINED,
- }
- stagingImageCreateInfoData := atom.Must(atom.AllocData(ctx, s, d, stagingImageCreateInfo))
- stagingImageData := atom.Must(atom.AllocData(ctx, s, d, stagingImageId))
- // TODO: We should definitely figure out a better source for the size of this
- // allocation, it may need to be larger
- stagingImageMemoryId := VkDeviceMemory(newUnusedID(false, func(x uint64) bool {
- _, ok := vkState.DeviceMemories[VkDeviceMemory(x)]
- ok = ok || VkDeviceMemory(x) == bufferMemoryId
- return ok
- }))
- stagingImageMemoryAllocateInfo := VkMemoryAllocateInfo{
- SType: VkStructureType_VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,
- PNext: NewVoidᶜᵖ(0),
- AllocationSize: VkDeviceSize(requestSize * 2), // << HACK
- MemoryTypeIndex: deviceImageMemoryIndex,
- }
- stagingImageMemoryAllocateInfoData := atom.Must(atom.AllocData(ctx, s, d, stagingImageMemoryAllocateInfo))
- stagingImageMemoryData := atom.Must(atom.AllocData(ctx, s, d, stagingImageMemoryId))
-
- // Data and info for resolve image creation. Resolve image is used when the attachment image is multi-sampled
- // Resolve image should be the same size as the attachment image.
-
- resolveImageId := VkImage(newUnusedID(false, func(x uint64) bool { _, ok := vkState.Images[VkImage(x)]; return ok }))
- resolveImageCreateInfo := VkImageCreateInfo{
- SType: VkStructureType_VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
- PNext: NewVoidᶜᵖ(0),
- Flags: VkImageCreateFlags(0),
- ImageType: VkImageType_VK_IMAGE_TYPE_2D,
- Format: form,
- Extent: VkExtent3D{
- Width: w, // same width as the attachment image, not the request
- Height: h, // same height as the attachment image, not the request
- Depth: 1,
- },
- MipLevels: 1,
- ArrayLayers: 1,
- Samples: VkSampleCountFlagBits_VK_SAMPLE_COUNT_1_BIT,
- Tiling: VkImageTiling_VK_IMAGE_TILING_OPTIMAL,
- Usage: VkImageUsageFlags(VkImageUsageFlagBits_VK_IMAGE_USAGE_TRANSFER_SRC_BIT |
- VkImageUsageFlagBits_VK_IMAGE_USAGE_TRANSFER_DST_BIT),
- SharingMode: VkSharingMode_VK_SHARING_MODE_EXCLUSIVE,
- QueueFamilyIndexCount: 0,
- PQueueFamilyIndices: NewU32ᶜᵖ(0),
- InitialLayout: VkImageLayout_VK_IMAGE_LAYOUT_UNDEFINED,
- }
- resolveImageCreateInfoData := atom.Must(atom.AllocData(ctx, s, d, resolveImageCreateInfo))
- resolveImageData := atom.Must(atom.AllocData(ctx, s, d, resolveImageId))
- // TODO: We should definitely figure out a better source for the size of this
- // allocation, it may need to be larger
- resolveImageMemoryId := VkDeviceMemory(newUnusedID(false, func(x uint64) bool {
- _, ok := vkState.DeviceMemories[VkDeviceMemory(x)]
- ok = ok || VkDeviceMemory(x) == bufferMemoryId || VkDeviceMemory(x) == stagingImageMemoryId
- return ok
- }))
- resolveImageMemoryAllocateInfo := VkMemoryAllocateInfo{
- SType: VkStructureType_VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,
- PNext: NewVoidᶜᵖ(0),
- AllocationSize: VkDeviceSize(resolveSize * 2), // << HACK
- MemoryTypeIndex: deviceImageMemoryIndex,
- }
- resolveImageMemoryAllocateInfoData := atom.Must(atom.AllocData(ctx, s, d, resolveImageMemoryAllocateInfo))
- resolveImageMemoryData := atom.Must(atom.AllocData(ctx, s, d, resolveImageMemoryId))
-
- // Command pool and command buffer
- commandPoolId := VkCommandPool(newUnusedID(false, func(x uint64) bool { _, ok := vkState.CommandPools[VkCommandPool(x)]; return ok }))
- commandPoolCreateInfo := VkCommandPoolCreateInfo{
- SType: VkStructureType_VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO,
- PNext: NewVoidᶜᵖ(0),
- Flags: VkCommandPoolCreateFlags(VkCommandPoolCreateFlagBits_VK_COMMAND_POOL_CREATE_TRANSIENT_BIT),
- QueueFamilyIndex: queue.Family,
- }
- commandPoolCreateInfoData := atom.Must(atom.AllocData(ctx, s, d, commandPoolCreateInfo))
- commandPoolData := atom.Must(atom.AllocData(ctx, s, d, commandPoolId))
- commandBufferAllocateInfo := VkCommandBufferAllocateInfo{
- SType: VkStructureType_VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO,
- PNext: NewVoidᶜᵖ(0),
- CommandPool: commandPoolId,
- Level: VkCommandBufferLevel_VK_COMMAND_BUFFER_LEVEL_PRIMARY,
- CommandBufferCount: 1,
- }
- commandBufferAllocateInfoData := atom.Must(atom.AllocData(ctx, s, d, commandBufferAllocateInfo))
- commandBufferId := VkCommandBuffer(newUnusedID(true, func(x uint64) bool { _, ok := vkState.CommandBuffers[VkCommandBuffer(x)]; return ok }))
- commandBufferData := atom.Must(atom.AllocData(ctx, s, d, commandBufferId))
-
- // Data and info for Vulkan commands in command buffers
- beginCommandBufferInfo := VkCommandBufferBeginInfo{
- SType: VkStructureType_VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,
- PNext: NewVoidᶜᵖ(0),
- Flags: VkCommandBufferUsageFlags(VkCommandBufferUsageFlagBits_VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT),
- PInheritanceInfo: NewVkCommandBufferInheritanceInfoᶜᵖ(0),
- }
- beginCommandBufferInfoData := atom.Must(atom.AllocData(ctx, s, d, beginCommandBufferInfo))
-
- bufferImageCopy := VkBufferImageCopy{
- BufferOffset: VkDeviceSize(0),
- BufferRowLength: 0,
- BufferImageHeight: 0,
- ImageSubresource: VkImageSubresourceLayers{
- AspectMask: VkImageAspectFlags(VkImageAspectFlagBits_VK_IMAGE_ASPECT_COLOR_BIT),
- MipLevel: 0,
- BaseArrayLayer: 0,
- LayerCount: 1,
- },
- ImageOffset: VkOffset3D{X: 0, Y: 0, Z: 0},
- ImageExtent: VkExtent3D{Width: width, Height: height, Depth: 1},
- }
- bufferImageCopyData := atom.Must(atom.AllocData(ctx, s, d, bufferImageCopy))
-
- commandBuffers := atom.Must(atom.AllocData(ctx, s, d, commandBufferId))
- submitInfo := VkSubmitInfo{
- SType: VkStructureType_VK_STRUCTURE_TYPE_SUBMIT_INFO,
- PNext: NewVoidᶜᵖ(0),
- WaitSemaphoreCount: 0,
- PWaitSemaphores: NewVkSemaphoreᶜᵖ(0),
- PWaitDstStageMask: NewVkPipelineStageFlagsᶜᵖ(0),
- CommandBufferCount: 1,
- PCommandBuffers: NewVkCommandBufferᶜᵖ(commandBuffers.Address()),
- SignalSemaphoreCount: 0,
- PSignalSemaphores: NewVkSemaphoreᶜᵖ(0),
- }
- submitInfoData := atom.Must(atom.AllocData(ctx, s, d, submitInfo))
-
- mappedMemoryRange := VkMappedMemoryRange{
- SType: VkStructureType_VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE,
- PNext: NewVoidᶜᵖ(0),
- Memory: bufferMemoryId,
- Offset: VkDeviceSize(0),
- Size: VkDeviceSize(0xFFFFFFFFFFFFFFFF),
- }
- mappedMemoryRangeData := atom.Must(atom.AllocData(ctx, s, d, mappedMemoryRange))
- at, err := s.Allocator.Alloc(requestSize, 8)
- mappedPointer := atom.Must(atom.AllocData(ctx, s, d, NewVoidᶜᵖ(at)))
-
- // Barrier data for layout transitions of staging image
- stagingImageToDstBarrier := VkImageMemoryBarrier{
- SType: VkStructureType_VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
- PNext: NewVoidᶜᵖ(0),
- SrcAccessMask: VkAccessFlags(
- VkAccessFlagBits_VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT |
- VkAccessFlagBits_VK_ACCESS_SHADER_WRITE_BIT |
- VkAccessFlagBits_VK_ACCESS_TRANSFER_WRITE_BIT,
- ),
- DstAccessMask: VkAccessFlags(VkAccessFlagBits_VK_ACCESS_TRANSFER_WRITE_BIT),
- NewLayout: VkImageLayout_VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
- OldLayout: VkImageLayout_VK_IMAGE_LAYOUT_UNDEFINED,
- SrcQueueFamilyIndex: 0xFFFFFFFF,
- DstQueueFamilyIndex: 0xFFFFFFFF,
- Image: stagingImageId,
- SubresourceRange: VkImageSubresourceRange{
- AspectMask: VkImageAspectFlags(VkImageAspectFlagBits_VK_IMAGE_ASPECT_COLOR_BIT),
- BaseMipLevel: 0,
- LevelCount: 1,
- BaseArrayLayer: 0,
- LayerCount: 1,
- },
- }
- stagingImageToDstBarrierData := atom.Must(atom.AllocData(ctx, s, d, stagingImageToDstBarrier))
-
- stagingImageToSrcBarrier := VkImageMemoryBarrier{
- SType: VkStructureType_VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
- PNext: NewVoidᶜᵖ(0),
- SrcAccessMask: VkAccessFlags(
- VkAccessFlagBits_VK_ACCESS_TRANSFER_WRITE_BIT,
- ),
- DstAccessMask: VkAccessFlags(VkAccessFlagBits_VK_ACCESS_TRANSFER_READ_BIT),
- NewLayout: VkImageLayout_VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
- OldLayout: VkImageLayout_VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
- SrcQueueFamilyIndex: 0xFFFFFFFF,
- DstQueueFamilyIndex: 0xFFFFFFFF,
- Image: stagingImageId,
- SubresourceRange: VkImageSubresourceRange{
- AspectMask: VkImageAspectFlags(VkImageAspectFlagBits_VK_IMAGE_ASPECT_COLOR_BIT),
- BaseMipLevel: 0,
- LevelCount: 1,
- BaseArrayLayer: 0,
- LayerCount: 1,
- },
- }
- stagingImageToSrcBarrierData := atom.Must(atom.AllocData(ctx, s, d, stagingImageToSrcBarrier))
-
- // Barrier data for layout transitions of resolve image. This only used when the attachment image is
- // multi-sampled.
- resolveImageToDstBarrier := VkImageMemoryBarrier{
- SType: VkStructureType_VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
- PNext: NewVoidᶜᵖ(0),
- SrcAccessMask: VkAccessFlags(
- VkAccessFlagBits_VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT |
- VkAccessFlagBits_VK_ACCESS_SHADER_WRITE_BIT |
- VkAccessFlagBits_VK_ACCESS_TRANSFER_WRITE_BIT,
- ),
- DstAccessMask: VkAccessFlags(VkAccessFlagBits_VK_ACCESS_TRANSFER_WRITE_BIT),
- NewLayout: VkImageLayout_VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
- OldLayout: VkImageLayout_VK_IMAGE_LAYOUT_UNDEFINED,
- SrcQueueFamilyIndex: 0xFFFFFFFF,
- DstQueueFamilyIndex: 0xFFFFFFFF,
- Image: resolveImageId,
- SubresourceRange: VkImageSubresourceRange{
- AspectMask: VkImageAspectFlags(VkImageAspectFlagBits_VK_IMAGE_ASPECT_COLOR_BIT),
- BaseMipLevel: 0,
- LevelCount: 1,
- BaseArrayLayer: 0,
- LayerCount: 1,
- },
- }
- resolveImageToDstBarrierData := atom.Must(atom.AllocData(ctx, s, d, resolveImageToDstBarrier))
-
- resolveImageToSrcBarrier := VkImageMemoryBarrier{
- SType: VkStructureType_VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
- PNext: NewVoidᶜᵖ(0),
- SrcAccessMask: VkAccessFlags(
- VkAccessFlagBits_VK_ACCESS_TRANSFER_WRITE_BIT,
- ),
- DstAccessMask: VkAccessFlags(VkAccessFlagBits_VK_ACCESS_TRANSFER_READ_BIT),
- NewLayout: VkImageLayout_VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
- OldLayout: VkImageLayout_VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
- SrcQueueFamilyIndex: 0xFFFFFFFF,
- DstQueueFamilyIndex: 0xFFFFFFFF,
- Image: resolveImageId,
- SubresourceRange: VkImageSubresourceRange{
- AspectMask: VkImageAspectFlags(VkImageAspectFlagBits_VK_IMAGE_ASPECT_COLOR_BIT),
- BaseMipLevel: 0,
- LevelCount: 1,
- BaseArrayLayer: 0,
- LayerCount: 1,
- },
- }
- resolveImageToSrcBarrierData := atom.Must(atom.AllocData(ctx, s, d, resolveImageToSrcBarrier))
-
- // Barrier data for layout transitions of attachment image
- attachmentImageToSrcBarrier := VkImageMemoryBarrier{
- SType: VkStructureType_VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
- PNext: NewVoidᶜᵖ(0),
- SrcAccessMask: VkAccessFlags(
- VkAccessFlagBits_VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT |
- VkAccessFlagBits_VK_ACCESS_SHADER_WRITE_BIT |
- VkAccessFlagBits_VK_ACCESS_TRANSFER_WRITE_BIT |
- VkAccessFlagBits_VK_ACCESS_TRANSFER_READ_BIT,
- ),
- DstAccessMask: VkAccessFlags(VkAccessFlagBits_VK_ACCESS_TRANSFER_READ_BIT),
- NewLayout: VkImageLayout_VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
- OldLayout: imageObject.Layout,
- SrcQueueFamilyIndex: 0xFFFFFFFF,
- DstQueueFamilyIndex: 0xFFFFFFFF,
- Image: vkImage,
- SubresourceRange: VkImageSubresourceRange{
- AspectMask: VkImageAspectFlags(VkImageAspectFlagBits_VK_IMAGE_ASPECT_COLOR_BIT),
- BaseMipLevel: 0,
- LevelCount: 1,
- BaseArrayLayer: 0,
- LayerCount: 1,
- },
- }
- attachmentImageToSrcBarrierData := atom.Must(atom.AllocData(ctx, s, d, attachmentImageToSrcBarrier))
-
- attachmentImageResetLayoutBarrier := VkImageMemoryBarrier{
- SType: VkStructureType_VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
- PNext: NewVoidᶜᵖ(0),
- SrcAccessMask: VkAccessFlags(
- VkAccessFlagBits_VK_ACCESS_TRANSFER_READ_BIT,
- ),
- DstAccessMask: VkAccessFlags(
- VkAccessFlagBits_VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT |
- VkAccessFlagBits_VK_ACCESS_SHADER_WRITE_BIT |
- VkAccessFlagBits_VK_ACCESS_TRANSFER_WRITE_BIT |
- VkAccessFlagBits_VK_ACCESS_TRANSFER_READ_BIT),
- NewLayout: imageObject.Layout,
- OldLayout: VkImageLayout_VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
- SrcQueueFamilyIndex: 0xFFFFFFFF,
- DstQueueFamilyIndex: 0xFFFFFFFF,
- Image: vkImage,
- SubresourceRange: VkImageSubresourceRange{
- AspectMask: VkImageAspectFlags(VkImageAspectFlagBits_VK_IMAGE_ASPECT_COLOR_BIT),
- BaseMipLevel: 0,
- LevelCount: 1,
- BaseArrayLayer: 0,
- LayerCount: 1,
- },
- }
- attachmentImageResetLayoutBarrierData := atom.Must(atom.AllocData(ctx, s, d, attachmentImageResetLayoutBarrier))
-
- // Observation data for vkCmdBlitImage
- imageBlit := VkImageBlit{
- SrcSubresource: VkImageSubresourceLayers{
- AspectMask: VkImageAspectFlags(VkImageAspectFlagBits_VK_IMAGE_ASPECT_COLOR_BIT),
- MipLevel: 0,
- BaseArrayLayer: 0,
- LayerCount: 1,
- },
- SrcOffsets: VkOffset3Dː2ᵃ{
- Elements: [2]VkOffset3D{
- VkOffset3D{
- X: 0,
- Y: 0,
- Z: 0,
- },
- VkOffset3D{
- X: int32(w),
- Y: int32(h),
- Z: 1,
- },
- },
- },
- DstSubresource: VkImageSubresourceLayers{
- AspectMask: VkImageAspectFlags(VkImageAspectFlagBits_VK_IMAGE_ASPECT_COLOR_BIT),
- MipLevel: 0,
- BaseArrayLayer: 0,
- LayerCount: 1,
- },
- DstOffsets: VkOffset3Dː2ᵃ{
- Elements: [2]VkOffset3D{
- VkOffset3D{
- X: int32(0),
- Y: int32(height),
- Z: 0,
- },
- VkOffset3D{
- X: int32(width),
- Y: int32(0),
- Z: 1,
- },
- },
- },
- }
- imageBlitData := atom.Must(atom.AllocData(ctx, s, d, imageBlit))
-
- // Observation data for vkCmdResolveImage
- imageResolve := VkImageResolve{
- SrcSubresource: VkImageSubresourceLayers{
- AspectMask: VkImageAspectFlags(VkImageAspectFlagBits_VK_IMAGE_ASPECT_COLOR_BIT),
- MipLevel: 0,
- BaseArrayLayer: 0,
- LayerCount: 1,
- },
- SrcOffset: VkOffset3D{
- X: 0,
- Y: 0,
- Z: 0,
- },
- DstSubresource: VkImageSubresourceLayers{
- AspectMask: VkImageAspectFlags(VkImageAspectFlagBits_VK_IMAGE_ASPECT_COLOR_BIT),
- MipLevel: 0,
- BaseArrayLayer: 0,
- LayerCount: 1,
- },
- DstOffset: VkOffset3D{
- X: 0,
- Y: 0,
- Z: 0,
- },
- Extent: VkExtent3D{
- Width: uint32(w),
- Height: uint32(h),
- Depth: 1,
- },
- }
- imageResolveData := atom.Must(atom.AllocData(ctx, s, d, imageResolve))
-
- // Write atoms to writer
- // Create staging image, allocate and bind memory
- writeEach(ctx, out,
- NewVkCreateImage(
- vkDevice,
- stagingImageCreateInfoData.Ptr(),
- memory.Pointer{},
- stagingImageData.Ptr(),
- VkResult_VK_SUCCESS,
- ).AddRead(
- stagingImageCreateInfoData.Data(),
- ).AddWrite(
- stagingImageData.Data(),
- ),
- NewVkAllocateMemory(
- vkDevice,
- stagingImageMemoryAllocateInfoData.Ptr(),
- memory.Pointer{},
- stagingImageMemoryData.Ptr(),
- VkResult_VK_SUCCESS,
- ).AddRead(
- stagingImageMemoryAllocateInfoData.Data(),
- ).AddWrite(
- stagingImageMemoryData.Data(),
- ),
- NewVkBindImageMemory(
- vkDevice,
- stagingImageId,
- stagingImageMemoryId,
- VkDeviceSize(0),
- VkResult_VK_SUCCESS,
- ),
- )
-
- // Create buffer, allocate and bind memory
- writeEach(ctx, out,
- NewVkCreateBuffer(
- vkDevice,
- bufferCreateInfoData.Ptr(),
- memory.Pointer{},
- bufferData.Ptr(),
- VkResult_VK_SUCCESS,
- ).AddRead(
- bufferCreateInfoData.Data(),
- ).AddWrite(
- bufferData.Data(),
- ),
- NewVkAllocateMemory(
- vkDevice,
- bufferMemoryAllocateInfoData.Ptr(),
- memory.Pointer{},
- bufferMemoryData.Ptr(),
- VkResult_VK_SUCCESS,
- ).AddRead(
- bufferMemoryAllocateInfoData.Data(),
- ).AddWrite(
- bufferMemoryData.Data(),
- ),
- NewVkBindBufferMemory(
- vkDevice,
- bufferId,
- bufferMemoryId,
- VkDeviceSize(0),
- VkResult_VK_SUCCESS,
- ),
- )
-
- // If the attachment image is multi-sampled, an resolve image is required
- // Create resolve image, allocate and bind memory
- if imageObject.Samples != VkSampleCountFlagBits_VK_SAMPLE_COUNT_1_BIT {
- writeEach(ctx, out,
- NewVkCreateImage(
- vkDevice,
- resolveImageCreateInfoData.Ptr(),
- memory.Pointer{},
- resolveImageData.Ptr(),
- VkResult_VK_SUCCESS,
- ).AddRead(
- resolveImageCreateInfoData.Data(),
- ).AddWrite(
- resolveImageData.Data(),
- ),
- NewVkAllocateMemory(
- vkDevice,
- resolveImageMemoryAllocateInfoData.Ptr(),
- memory.Pointer{},
- resolveImageMemoryData.Ptr(),
- VkResult_VK_SUCCESS,
- ).AddRead(
- resolveImageMemoryAllocateInfoData.Data(),
- ).AddWrite(
- resolveImageMemoryData.Data(),
- ),
- NewVkBindImageMemory(
- vkDevice,
- resolveImageId,
- resolveImageMemoryId,
- VkDeviceSize(0),
- VkResult_VK_SUCCESS,
- ),
- )
- }
-
- // Create command pool, allocate command buffer
- writeEach(ctx, out,
- NewVkCreateCommandPool(
- vkDevice,
- commandPoolCreateInfoData.Ptr(),
- memory.Pointer{},
- commandPoolData.Ptr(),
- VkResult_VK_SUCCESS,
- ).AddRead(
- commandPoolCreateInfoData.Data(),
- ).AddWrite(
- commandPoolData.Data(),
- ),
- NewVkAllocateCommandBuffers(
- vkDevice,
- commandBufferAllocateInfoData.Ptr(),
- commandBufferData.Ptr(),
- VkResult_VK_SUCCESS,
- ).AddRead(
- commandBufferAllocateInfoData.Data(),
- ).AddWrite(
- commandBufferData.Data(),
- ),
- )
-
- // Create a fence
- writeEach(ctx, out,
- NewVkCreateFence(
- vkDevice,
- fenceCreateData.Ptr(),
- memory.Pointer{},
- fenceData.Ptr(),
- VkResult_VK_SUCCESS,
- ).AddRead(
- fenceCreateData.Data(),
- ).AddWrite(
- fenceData.Data(),
- ),
- )
-
- // Begin command buffer, change attachment image and staging image layout
- writeEach(ctx, out,
- NewVkBeginCommandBuffer(
- commandBufferId,
- beginCommandBufferInfoData.Ptr(),
- VkResult_VK_SUCCESS,
- ).AddRead(
- beginCommandBufferInfoData.Data(),
- ),
- NewVkCmdPipelineBarrier(
- commandBufferId,
- VkPipelineStageFlags(VkPipelineStageFlagBits_VK_PIPELINE_STAGE_ALL_COMMANDS_BIT),
- VkPipelineStageFlags(VkPipelineStageFlagBits_VK_PIPELINE_STAGE_ALL_COMMANDS_BIT),
- VkDependencyFlags(0),
- 0,
- memory.Pointer{},
- 0,
- memory.Pointer{},
- 1,
- attachmentImageToSrcBarrierData.Ptr(),
- ).AddRead(
- attachmentImageToSrcBarrierData.Data(),
- ),
- NewVkCmdPipelineBarrier(
- commandBufferId,
- VkPipelineStageFlags(VkPipelineStageFlagBits_VK_PIPELINE_STAGE_ALL_COMMANDS_BIT),
- VkPipelineStageFlags(VkPipelineStageFlagBits_VK_PIPELINE_STAGE_ALL_COMMANDS_BIT),
- VkDependencyFlags(0),
- 0,
- memory.Pointer{},
- 0,
- memory.Pointer{},
- 1,
- stagingImageToDstBarrierData.Ptr(),
- ).AddRead(
- stagingImageToDstBarrierData.Data(),
- ),
- )
-
- // If the attachment image is multi-sampled, resolve the attchment image to resolve image before
- // blit the image. Change the resolve image layout, call vkCmdResolveImage, change the resolve
- // image layout again.
- if imageObject.Samples != VkSampleCountFlagBits_VK_SAMPLE_COUNT_1_BIT {
- writeEach(ctx, out,
- NewVkCmdPipelineBarrier(
- commandBufferId,
- VkPipelineStageFlags(VkPipelineStageFlagBits_VK_PIPELINE_STAGE_ALL_COMMANDS_BIT),
- VkPipelineStageFlags(VkPipelineStageFlagBits_VK_PIPELINE_STAGE_ALL_COMMANDS_BIT),
- VkDependencyFlags(0),
- 0,
- memory.Pointer{},
- 0,
- memory.Pointer{},
- 1,
- resolveImageToDstBarrierData.Ptr(),
- ).AddRead(
- resolveImageToDstBarrierData.Data(),
- ),
- NewVkCmdResolveImage(
- commandBufferId,
- vkImage,
- VkImageLayout_VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
- resolveImageId,
- VkImageLayout_VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
- 1,
- imageResolveData.Ptr(),
- ).AddRead(imageResolveData.Data()),
- NewVkCmdPipelineBarrier(
- commandBufferId,
- VkPipelineStageFlags(VkPipelineStageFlagBits_VK_PIPELINE_STAGE_ALL_COMMANDS_BIT),
- VkPipelineStageFlags(VkPipelineStageFlagBits_VK_PIPELINE_STAGE_ALL_COMMANDS_BIT),
- VkDependencyFlags(0),
- 0,
- memory.Pointer{},
- 0,
- memory.Pointer{},
- 1,
- resolveImageToSrcBarrierData.Ptr(),
- ).AddRead(
- resolveImageToSrcBarrierData.Data(),
- ),
- )
- }
-
- // Blit image, if the attachment image is multi-sampled, use resolve image as the source image, otherwise
- // use the attachment image as the source image directly
- blitSrcImage := vkImage
- if imageObject.Samples != VkSampleCountFlagBits_VK_SAMPLE_COUNT_1_BIT {
- blitSrcImage = resolveImageId
- }
- writeEach(ctx, out,
- NewVkCmdBlitImage(
- commandBufferId,
- blitSrcImage,
- VkImageLayout_VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
- stagingImageId,
- VkImageLayout_VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
- 1,
- imageBlitData.Ptr(),
- VkFilter_VK_FILTER_LINEAR,
- ).AddRead(imageBlitData.Data()),
- )
-
- // Change the layout of staging image and attachment image, copy staging image to buffer,
- // end command buffer
- writeEach(ctx, out,
- NewVkCmdPipelineBarrier(
- commandBufferId,
- VkPipelineStageFlags(VkPipelineStageFlagBits_VK_PIPELINE_STAGE_ALL_COMMANDS_BIT),
- VkPipelineStageFlags(VkPipelineStageFlagBits_VK_PIPELINE_STAGE_ALL_COMMANDS_BIT),
- VkDependencyFlags(0),
- 0,
- memory.Pointer{},
- 0,
- memory.Pointer{},
- 1,
- stagingImageToSrcBarrierData.Ptr(),
- ).AddRead(
- stagingImageToSrcBarrierData.Data(),
- ),
- NewVkCmdPipelineBarrier(
- commandBufferId,
- VkPipelineStageFlags(VkPipelineStageFlagBits_VK_PIPELINE_STAGE_ALL_COMMANDS_BIT),
- VkPipelineStageFlags(VkPipelineStageFlagBits_VK_PIPELINE_STAGE_ALL_COMMANDS_BIT),
- VkDependencyFlags(0),
- 0,
- memory.Pointer{},
- 0,
- memory.Pointer{},
- 1,
- attachmentImageResetLayoutBarrierData.Ptr(),
- ).AddRead(
- attachmentImageResetLayoutBarrierData.Data(),
- ),
- NewVkCmdCopyImageToBuffer(
- commandBufferId,
- stagingImageId,
- VkImageLayout_VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
- bufferId,
- 1,
- bufferImageCopyData.Ptr(),
- ).AddRead(
- bufferImageCopyData.Data(),
- ),
- NewVkEndCommandBuffer(
- commandBufferId,
- VkResult_VK_SUCCESS,
- ))
-
- // Submit all the commands above, wait until finish.
- writeEach(ctx, out,
- NewVkDeviceWaitIdle(framebuffer.Device, VkResult_VK_SUCCESS),
- NewVkQueueSubmit(
- vkQueue,
- 1,
- submitInfoData.Ptr(),
- fenceId,
- VkResult_VK_SUCCESS,
- ).AddRead(
- submitInfoData.Data(),
- ).AddRead(
- commandBuffers.Data(),
- ),
- NewVkWaitForFences(
- vkDevice,
- 1,
- fenceData.Ptr(),
- 1,
- 0xFFFFFFFFFFFFFFFF,
- VkResult_VK_SUCCESS,
- ).AddRead(
- fenceData.Data(),
- ),
- NewVkDeviceWaitIdle(framebuffer.Device, VkResult_VK_SUCCESS),
- )
-
- // Dump the buffer data to host
- writeEach(ctx, out,
- NewVkMapMemory(
- vkDevice,
- bufferMemoryId,
- VkDeviceSize(0),
- VkDeviceSize(requestSize),
- VkMemoryMapFlags(0),
- mappedPointer.Ptr(),
- VkResult_VK_SUCCESS,
- ).AddWrite(mappedPointer.Data()),
- NewVkInvalidateMappedMemoryRanges(
- vkDevice,
- 1,
- mappedMemoryRangeData.Ptr(),
- VkResult_VK_SUCCESS,
- ).AddRead(mappedMemoryRangeData.Data()),
- )
-
- // Add post atom
- writeEach(ctx, out,
- replay.Custom(func(ctx log.Context, s *gfxapi.State, d database.Database, b *builder.Builder) error {
- b.Post(value.ObservedPointer(at), uint64(requestSize), func(r binary.Reader, err error) error {
- var data []byte
- if err == nil {
- data = make([]byte, requestSize)
- r.Data(data)
- r.Error()
- }
- if err != nil {
- err = fmt.Errorf("Could not read framebuffer data (expected length %d bytes): %v", requestSize, err)
- data = nil
- }
-
- img := &image.Image{
- Data: data,
- Width: uint32(width),
- Height: uint32(height),
- Format: format,
- }
-
- res <- imgRes{img: img, err: err}
- return err
- })
- return nil
- }),
- )
-
- // Free the resources used for reading framebuffer
- writeEach(ctx, out,
- NewVkUnmapMemory(vkDevice, bufferMemoryId),
- NewVkDestroyBuffer(vkDevice, bufferId, memory.Pointer{}),
- NewVkDestroyCommandPool(vkDevice, commandPoolId, memory.Pointer{}),
- NewVkDestroyImage(vkDevice, stagingImageId, memory.Pointer{}),
- NewVkFreeMemory(vkDevice, stagingImageMemoryId, memory.Pointer{}),
- NewVkFreeMemory(vkDevice, bufferMemoryId, memory.Pointer{}))
- if imageObject.Samples != VkSampleCountFlagBits_VK_SAMPLE_COUNT_1_BIT {
- writeEach(ctx, out,
- NewVkDestroyImage(vkDevice, resolveImageId, memory.Pointer{}),
- NewVkFreeMemory(vkDevice, resolveImageMemoryId, memory.Pointer{}))
- }
- writeEach(ctx, out, NewVkDestroyFence(vkDevice, fenceId, memory.Pointer{}))
+ postImageData(ctx, s, d, vkImage, form, VkImageAspectFlagBits_VK_IMAGE_ASPECT_COLOR_BIT, w, h, width, height, out, func(i imgRes) { res <- i })
})
}
@@ -931,3 +127,873 @@
}
}
}
+
+func postImageData(ctx log.Context,
+ s *gfxapi.State,
+ d database.Database,
+ vkImage VkImage,
+ vkFormat VkFormat,
+ aspectMask VkImageAspectFlagBits,
+ imgWidth,
+ imgHeight,
+ reqWidth,
+ reqHeight uint32,
+ out atom.Writer,
+ callback func(imgRes)) {
+ attachmentImageFormat, err := getImageFormatFromVulkanFormat(vkFormat)
+ if err != nil {
+ callback(imgRes{err: &service.ErrDataUnavailable{Reason: messages.ErrFramebufferUnavailable()}})
+ return
+ }
+ // When depth image is requested, the format, which is used for resolving/bliting/copying attachment image data
+ // to the mapped buffer might be different with the format used in image resource. This is because we need to
+ // strip the stencil data if the source attachment image contains both depth and stencil data.
+ formatOfImgRes := attachmentImageFormat
+ if aspectMask == VkImageAspectFlagBits_VK_IMAGE_ASPECT_DEPTH_BIT {
+ formatOfImgRes, err = getDepthImageFormatFromVulkanFormat(vkFormat)
+ if err != nil {
+ callback(imgRes{err: &service.ErrDataUnavailable{Reason: messages.ErrFramebufferUnavailable()}})
+ return
+ }
+ }
+
+ vkState := GetState(s).State
+ imageObject := vkState.Images[vkImage]
+
+ vkQueue := vkState.LastBoundQueue
+ queue := vkState.Queues[vkQueue]
+ vkDevice := queue.Device
+ device := vkState.Devices[vkDevice]
+ vkPhysicalDevice := device.PhysicalDevice
+ physicalDevice := vkState.PhysicalDevices[vkPhysicalDevice]
+
+ fenceId := VkFence(newUnusedID(false, func(x uint64) bool { _, ok := vkState.Fences[VkFence(x)]; return ok }))
+ fenceCreateInfo := VkFenceCreateInfo{
+ SType: VkStructureType_VK_STRUCTURE_TYPE_FENCE_CREATE_INFO,
+ PNext: NewVoidᶜᵖ(0),
+ Flags: VkFenceCreateFlags(0),
+ }
+ fenceCreateData := atom.Must(atom.AllocData(ctx, s, d, fenceCreateInfo))
+ fenceData := atom.Must(atom.AllocData(ctx, s, d, fenceId))
+
+ // TODO: Find a better way to determine what image memory index to use
+ deviceImageMemoryIndex := uint32(0) //imageMemory.MemoryTypeIndex
+ memoryType := uint32(0)
+ for i := uint32(0); i < physicalDevice.MemoryProperties.MemoryTypeCount; i++ {
+ t := physicalDevice.MemoryProperties.MemoryTypes.Elements[i]
+ if 0 != (t.PropertyFlags & VkMemoryPropertyFlags(VkMemoryPropertyFlagBits_VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT|
+ VkMemoryPropertyFlagBits_VK_MEMORY_PROPERTY_HOST_COHERENT_BIT)) {
+ memoryType = i
+ break
+ }
+ }
+
+ bufferSize := uint64(formatOfImgRes.Size(int(reqWidth), int(reqHeight)))
+
+ // Data and info for destination buffer creation
+ bufferId := VkBuffer(newUnusedID(false, func(x uint64) bool { _, ok := vkState.Buffers[VkBuffer(x)]; return ok }))
+ bufferMemoryId := VkDeviceMemory(newUnusedID(false, func(x uint64) bool { _, ok := vkState.DeviceMemories[VkDeviceMemory(x)]; return ok }))
+ bufferMemoryAllocInfo := VkMemoryAllocateInfo{
+ SType: VkStructureType_VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,
+ PNext: NewVoidᶜᵖ(0),
+ AllocationSize: VkDeviceSize(bufferSize),
+ MemoryTypeIndex: memoryType,
+ }
+ bufferMemoryAllocateInfoData := atom.Must(atom.AllocData(ctx, s, d, bufferMemoryAllocInfo))
+ bufferMemoryData := atom.Must(atom.AllocData(ctx, s, d, bufferMemoryId))
+ bufferCreateInfo := VkBufferCreateInfo{
+ SType: VkStructureType_VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO,
+ PNext: NewVoidᶜᵖ(0),
+ Flags: VkBufferCreateFlags(0),
+ Size: VkDeviceSize(bufferSize),
+ Usage: VkBufferUsageFlags(VkBufferUsageFlagBits_VK_BUFFER_USAGE_TRANSFER_DST_BIT),
+ SharingMode: VkSharingMode_VK_SHARING_MODE_EXCLUSIVE,
+ QueueFamilyIndexCount: 0,
+ PQueueFamilyIndices: NewU32ᶜᵖ(0),
+ }
+ bufferCreateInfoData := atom.Must(atom.AllocData(ctx, s, d, bufferCreateInfo))
+ bufferData := atom.Must(atom.AllocData(ctx, s, d, bufferId))
+
+ // Data and info for staging image creation
+ stagingImageId := VkImage(newUnusedID(false, func(x uint64) bool { _, ok := vkState.Images[VkImage(x)]; return ok }))
+ stagingImageSize := uint64(attachmentImageFormat.Size(int(reqWidth), int(reqHeight)))
+ stagingImageCreateInfo := VkImageCreateInfo{
+ SType: VkStructureType_VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
+ PNext: NewVoidᶜᵖ(0),
+ Flags: VkImageCreateFlags(0),
+ ImageType: VkImageType_VK_IMAGE_TYPE_2D,
+ Format: vkFormat,
+ Extent: VkExtent3D{
+ Width: reqWidth,
+ Height: reqHeight,
+ Depth: 1,
+ },
+ MipLevels: 1,
+ ArrayLayers: 1,
+ Samples: VkSampleCountFlagBits_VK_SAMPLE_COUNT_1_BIT,
+ Tiling: VkImageTiling_VK_IMAGE_TILING_OPTIMAL,
+ Usage: VkImageUsageFlags(VkImageUsageFlagBits_VK_IMAGE_USAGE_TRANSFER_SRC_BIT |
+ VkImageUsageFlagBits_VK_IMAGE_USAGE_TRANSFER_DST_BIT),
+ SharingMode: VkSharingMode_VK_SHARING_MODE_EXCLUSIVE,
+ QueueFamilyIndexCount: 0,
+ PQueueFamilyIndices: NewU32ᶜᵖ(0),
+ InitialLayout: VkImageLayout_VK_IMAGE_LAYOUT_UNDEFINED,
+ }
+ stagingImageCreateInfoData := atom.Must(atom.AllocData(ctx, s, d, stagingImageCreateInfo))
+ stagingImageData := atom.Must(atom.AllocData(ctx, s, d, stagingImageId))
+ // TODO: We should definitely figure out a better source for the size of this
+ // allocation, it may need to be larger
+ stagingImageMemoryId := VkDeviceMemory(newUnusedID(false, func(x uint64) bool {
+ _, ok := vkState.DeviceMemories[VkDeviceMemory(x)]
+ ok = ok || VkDeviceMemory(x) == bufferMemoryId
+ return ok
+ }))
+ stagingImageMemoryAllocateInfo := VkMemoryAllocateInfo{
+ SType: VkStructureType_VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,
+ PNext: NewVoidᶜᵖ(0),
+ AllocationSize: VkDeviceSize(stagingImageSize * 2), // << HACK
+ MemoryTypeIndex: deviceImageMemoryIndex,
+ }
+ stagingImageMemoryAllocateInfoData := atom.Must(atom.AllocData(ctx, s, d, stagingImageMemoryAllocateInfo))
+ stagingImageMemoryData := atom.Must(atom.AllocData(ctx, s, d, stagingImageMemoryId))
+
+ // Data and info for resolve image creation. Resolve image is used when the attachment image is multi-sampled
+ // Resolve image should be the same size as the attachment image.
+ resolveImageSize := uint64(attachmentImageFormat.Size(int(imgWidth), int(imgHeight)))
+ resolveImageId := VkImage(newUnusedID(false, func(x uint64) bool { _, ok := vkState.Images[VkImage(x)]; return ok }))
+ resolveImageCreateInfo := VkImageCreateInfo{
+ SType: VkStructureType_VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
+ PNext: NewVoidᶜᵖ(0),
+ Flags: VkImageCreateFlags(0),
+ ImageType: VkImageType_VK_IMAGE_TYPE_2D,
+ Format: vkFormat,
+ Extent: VkExtent3D{
+ Width: imgWidth, // same width as the attachment image, not the request
+ Height: imgHeight, // same height as the attachment image, not the request
+ Depth: 1,
+ },
+ MipLevels: 1,
+ ArrayLayers: 1,
+ Samples: VkSampleCountFlagBits_VK_SAMPLE_COUNT_1_BIT,
+ Tiling: VkImageTiling_VK_IMAGE_TILING_OPTIMAL,
+ Usage: VkImageUsageFlags(VkImageUsageFlagBits_VK_IMAGE_USAGE_TRANSFER_SRC_BIT |
+ VkImageUsageFlagBits_VK_IMAGE_USAGE_TRANSFER_DST_BIT),
+ SharingMode: VkSharingMode_VK_SHARING_MODE_EXCLUSIVE,
+ QueueFamilyIndexCount: 0,
+ PQueueFamilyIndices: NewU32ᶜᵖ(0),
+ InitialLayout: VkImageLayout_VK_IMAGE_LAYOUT_UNDEFINED,
+ }
+ resolveImageCreateInfoData := atom.Must(atom.AllocData(ctx, s, d, resolveImageCreateInfo))
+ resolveImageData := atom.Must(atom.AllocData(ctx, s, d, resolveImageId))
+ // TODO: We should definitely figure out a better source for the size of this
+ // allocation, it may need to be larger
+ resolveImageMemoryId := VkDeviceMemory(newUnusedID(false, func(x uint64) bool {
+ _, ok := vkState.DeviceMemories[VkDeviceMemory(x)]
+ ok = ok || VkDeviceMemory(x) == bufferMemoryId || VkDeviceMemory(x) == stagingImageMemoryId
+ return ok
+ }))
+ resolveImageMemoryAllocateInfo := VkMemoryAllocateInfo{
+ SType: VkStructureType_VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,
+ PNext: NewVoidᶜᵖ(0),
+ AllocationSize: VkDeviceSize(resolveImageSize * 2), // << HACK
+ MemoryTypeIndex: deviceImageMemoryIndex,
+ }
+ resolveImageMemoryAllocateInfoData := atom.Must(atom.AllocData(ctx, s, d, resolveImageMemoryAllocateInfo))
+ resolveImageMemoryData := atom.Must(atom.AllocData(ctx, s, d, resolveImageMemoryId))
+
+ // Command pool and command buffer
+ commandPoolId := VkCommandPool(newUnusedID(false, func(x uint64) bool { _, ok := vkState.CommandPools[VkCommandPool(x)]; return ok }))
+ commandPoolCreateInfo := VkCommandPoolCreateInfo{
+ SType: VkStructureType_VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO,
+ PNext: NewVoidᶜᵖ(0),
+ Flags: VkCommandPoolCreateFlags(VkCommandPoolCreateFlagBits_VK_COMMAND_POOL_CREATE_TRANSIENT_BIT),
+ QueueFamilyIndex: queue.Family,
+ }
+ commandPoolCreateInfoData := atom.Must(atom.AllocData(ctx, s, d, commandPoolCreateInfo))
+ commandPoolData := atom.Must(atom.AllocData(ctx, s, d, commandPoolId))
+ commandBufferAllocateInfo := VkCommandBufferAllocateInfo{
+ SType: VkStructureType_VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO,
+ PNext: NewVoidᶜᵖ(0),
+ CommandPool: commandPoolId,
+ Level: VkCommandBufferLevel_VK_COMMAND_BUFFER_LEVEL_PRIMARY,
+ CommandBufferCount: 1,
+ }
+ commandBufferAllocateInfoData := atom.Must(atom.AllocData(ctx, s, d, commandBufferAllocateInfo))
+ commandBufferId := VkCommandBuffer(newUnusedID(true, func(x uint64) bool { _, ok := vkState.CommandBuffers[VkCommandBuffer(x)]; return ok }))
+ commandBufferData := atom.Must(atom.AllocData(ctx, s, d, commandBufferId))
+
+ // Data and info for Vulkan commands in command buffers
+ beginCommandBufferInfo := VkCommandBufferBeginInfo{
+ SType: VkStructureType_VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,
+ PNext: NewVoidᶜᵖ(0),
+ Flags: VkCommandBufferUsageFlags(VkCommandBufferUsageFlagBits_VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT),
+ PInheritanceInfo: NewVkCommandBufferInheritanceInfoᶜᵖ(0),
+ }
+ beginCommandBufferInfoData := atom.Must(atom.AllocData(ctx, s, d, beginCommandBufferInfo))
+
+ bufferImageCopy := VkBufferImageCopy{
+ BufferOffset: VkDeviceSize(0),
+ BufferRowLength: 0,
+ BufferImageHeight: 0,
+ ImageSubresource: VkImageSubresourceLayers{
+ AspectMask: VkImageAspectFlags(aspectMask),
+ MipLevel: 0,
+ BaseArrayLayer: 0,
+ LayerCount: 1,
+ },
+ ImageOffset: VkOffset3D{X: 0, Y: 0, Z: 0},
+ ImageExtent: VkExtent3D{Width: reqWidth, Height: reqHeight, Depth: 1},
+ }
+ bufferImageCopyData := atom.Must(atom.AllocData(ctx, s, d, bufferImageCopy))
+
+ commandBuffers := atom.Must(atom.AllocData(ctx, s, d, commandBufferId))
+ submitInfo := VkSubmitInfo{
+ SType: VkStructureType_VK_STRUCTURE_TYPE_SUBMIT_INFO,
+ PNext: NewVoidᶜᵖ(0),
+ WaitSemaphoreCount: 0,
+ PWaitSemaphores: NewVkSemaphoreᶜᵖ(0),
+ PWaitDstStageMask: NewVkPipelineStageFlagsᶜᵖ(0),
+ CommandBufferCount: 1,
+ PCommandBuffers: NewVkCommandBufferᶜᵖ(commandBuffers.Address()),
+ SignalSemaphoreCount: 0,
+ PSignalSemaphores: NewVkSemaphoreᶜᵖ(0),
+ }
+ submitInfoData := atom.Must(atom.AllocData(ctx, s, d, submitInfo))
+
+ mappedMemoryRange := VkMappedMemoryRange{
+ SType: VkStructureType_VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE,
+ PNext: NewVoidᶜᵖ(0),
+ Memory: bufferMemoryId,
+ Offset: VkDeviceSize(0),
+ Size: VkDeviceSize(0xFFFFFFFFFFFFFFFF),
+ }
+ mappedMemoryRangeData := atom.Must(atom.AllocData(ctx, s, d, mappedMemoryRange))
+ at, err := s.Allocator.Alloc(bufferSize, 8)
+ if err != nil {
+ callback(imgRes{err: &service.ErrDataUnavailable{Reason: messages.ErrMessage("Device Memory -> Host mapping failed")}})
+ }
+ mappedPointer := atom.Must(atom.AllocData(ctx, s, d, NewVoidᶜᵖ(at)))
+
+ // Barrier data for layout transitions of staging image
+ stagingImageToDstBarrier := VkImageMemoryBarrier{
+ SType: VkStructureType_VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
+ PNext: NewVoidᶜᵖ(0),
+ SrcAccessMask: VkAccessFlags(
+ VkAccessFlagBits_VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT |
+ VkAccessFlagBits_VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT |
+ VkAccessFlagBits_VK_ACCESS_SHADER_WRITE_BIT |
+ VkAccessFlagBits_VK_ACCESS_TRANSFER_WRITE_BIT,
+ ),
+ DstAccessMask: VkAccessFlags(VkAccessFlagBits_VK_ACCESS_TRANSFER_WRITE_BIT),
+ NewLayout: VkImageLayout_VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
+ OldLayout: VkImageLayout_VK_IMAGE_LAYOUT_UNDEFINED,
+ SrcQueueFamilyIndex: 0xFFFFFFFF,
+ DstQueueFamilyIndex: 0xFFFFFFFF,
+ Image: stagingImageId,
+ SubresourceRange: VkImageSubresourceRange{
+ AspectMask: VkImageAspectFlags(aspectMask),
+ BaseMipLevel: 0,
+ LevelCount: 1,
+ BaseArrayLayer: 0,
+ LayerCount: 1,
+ },
+ }
+ stagingImageToDstBarrierData := atom.Must(atom.AllocData(ctx, s, d, stagingImageToDstBarrier))
+
+ stagingImageToSrcBarrier := VkImageMemoryBarrier{
+ SType: VkStructureType_VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
+ PNext: NewVoidᶜᵖ(0),
+ SrcAccessMask: VkAccessFlags(
+ VkAccessFlagBits_VK_ACCESS_TRANSFER_WRITE_BIT,
+ ),
+ DstAccessMask: VkAccessFlags(VkAccessFlagBits_VK_ACCESS_TRANSFER_READ_BIT),
+ NewLayout: VkImageLayout_VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
+ OldLayout: VkImageLayout_VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
+ SrcQueueFamilyIndex: 0xFFFFFFFF,
+ DstQueueFamilyIndex: 0xFFFFFFFF,
+ Image: stagingImageId,
+ SubresourceRange: VkImageSubresourceRange{
+ AspectMask: VkImageAspectFlags(aspectMask),
+ BaseMipLevel: 0,
+ LevelCount: 1,
+ BaseArrayLayer: 0,
+ LayerCount: 1,
+ },
+ }
+ stagingImageToSrcBarrierData := atom.Must(atom.AllocData(ctx, s, d, stagingImageToSrcBarrier))
+
+ // Barrier data for layout transitions of resolve image. This only used when the attachment image is
+ // multi-sampled.
+ resolveImageToDstBarrier := VkImageMemoryBarrier{
+ SType: VkStructureType_VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
+ PNext: NewVoidᶜᵖ(0),
+ SrcAccessMask: VkAccessFlags(
+ VkAccessFlagBits_VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT |
+ VkAccessFlagBits_VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT |
+ VkAccessFlagBits_VK_ACCESS_SHADER_WRITE_BIT |
+ VkAccessFlagBits_VK_ACCESS_TRANSFER_WRITE_BIT,
+ ),
+ DstAccessMask: VkAccessFlags(VkAccessFlagBits_VK_ACCESS_TRANSFER_WRITE_BIT),
+ NewLayout: VkImageLayout_VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
+ OldLayout: VkImageLayout_VK_IMAGE_LAYOUT_UNDEFINED,
+ SrcQueueFamilyIndex: 0xFFFFFFFF,
+ DstQueueFamilyIndex: 0xFFFFFFFF,
+ Image: resolveImageId,
+ SubresourceRange: VkImageSubresourceRange{
+ AspectMask: VkImageAspectFlags(aspectMask),
+ BaseMipLevel: 0,
+ LevelCount: 1,
+ BaseArrayLayer: 0,
+ LayerCount: 1,
+ },
+ }
+ resolveImageToDstBarrierData := atom.Must(atom.AllocData(ctx, s, d, resolveImageToDstBarrier))
+
+ resolveImageToSrcBarrier := VkImageMemoryBarrier{
+ SType: VkStructureType_VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
+ PNext: NewVoidᶜᵖ(0),
+ SrcAccessMask: VkAccessFlags(
+ VkAccessFlagBits_VK_ACCESS_TRANSFER_WRITE_BIT,
+ ),
+ DstAccessMask: VkAccessFlags(VkAccessFlagBits_VK_ACCESS_TRANSFER_READ_BIT),
+ NewLayout: VkImageLayout_VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
+ OldLayout: VkImageLayout_VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
+ SrcQueueFamilyIndex: 0xFFFFFFFF,
+ DstQueueFamilyIndex: 0xFFFFFFFF,
+ Image: resolveImageId,
+ SubresourceRange: VkImageSubresourceRange{
+ AspectMask: VkImageAspectFlags(aspectMask),
+ BaseMipLevel: 0,
+ LevelCount: 1,
+ BaseArrayLayer: 0,
+ LayerCount: 1,
+ },
+ }
+ resolveImageToSrcBarrierData := atom.Must(atom.AllocData(ctx, s, d, resolveImageToSrcBarrier))
+
+ // Barrier data for layout transitions of attachment image
+ attachmentImageToSrcBarrier := VkImageMemoryBarrier{
+ SType: VkStructureType_VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
+ PNext: NewVoidᶜᵖ(0),
+ SrcAccessMask: VkAccessFlags(
+ VkAccessFlagBits_VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT |
+ VkAccessFlagBits_VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT |
+ VkAccessFlagBits_VK_ACCESS_SHADER_WRITE_BIT |
+ VkAccessFlagBits_VK_ACCESS_TRANSFER_WRITE_BIT |
+ VkAccessFlagBits_VK_ACCESS_TRANSFER_READ_BIT,
+ ),
+ DstAccessMask: VkAccessFlags(VkAccessFlagBits_VK_ACCESS_TRANSFER_READ_BIT),
+ NewLayout: VkImageLayout_VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
+ OldLayout: imageObject.Layout,
+ SrcQueueFamilyIndex: 0xFFFFFFFF,
+ DstQueueFamilyIndex: 0xFFFFFFFF,
+ Image: vkImage,
+ SubresourceRange: VkImageSubresourceRange{
+ AspectMask: VkImageAspectFlags(aspectMask),
+ BaseMipLevel: 0,
+ LevelCount: 1,
+ BaseArrayLayer: 0,
+ LayerCount: 1,
+ },
+ }
+ attachmentImageToSrcBarrierData := atom.Must(atom.AllocData(ctx, s, d, attachmentImageToSrcBarrier))
+
+ attachmentImageResetLayoutBarrier := VkImageMemoryBarrier{
+ SType: VkStructureType_VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
+ PNext: NewVoidᶜᵖ(0),
+ SrcAccessMask: VkAccessFlags(
+ VkAccessFlagBits_VK_ACCESS_TRANSFER_READ_BIT,
+ ),
+ DstAccessMask: VkAccessFlags(
+ VkAccessFlagBits_VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT |
+ VkAccessFlagBits_VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT |
+ VkAccessFlagBits_VK_ACCESS_SHADER_WRITE_BIT |
+ VkAccessFlagBits_VK_ACCESS_TRANSFER_WRITE_BIT |
+ VkAccessFlagBits_VK_ACCESS_TRANSFER_READ_BIT),
+ NewLayout: imageObject.Layout,
+ OldLayout: VkImageLayout_VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
+ SrcQueueFamilyIndex: 0xFFFFFFFF,
+ DstQueueFamilyIndex: 0xFFFFFFFF,
+ Image: vkImage,
+ SubresourceRange: VkImageSubresourceRange{
+ AspectMask: VkImageAspectFlags(aspectMask),
+ BaseMipLevel: 0,
+ LevelCount: 1,
+ BaseArrayLayer: 0,
+ LayerCount: 1,
+ },
+ }
+ attachmentImageResetLayoutBarrierData := atom.Must(atom.AllocData(ctx, s, d, attachmentImageResetLayoutBarrier))
+
+ // Observation data for vkCmdBlitImage
+ imageBlit := VkImageBlit{
+ SrcSubresource: VkImageSubresourceLayers{
+ AspectMask: VkImageAspectFlags(aspectMask),
+ MipLevel: 0,
+ BaseArrayLayer: 0,
+ LayerCount: 1,
+ },
+ SrcOffsets: VkOffset3Dː2ᵃ{
+ Elements: [2]VkOffset3D{
+ VkOffset3D{
+ X: 0,
+ Y: 0,
+ Z: 0,
+ },
+ VkOffset3D{
+ X: int32(imgWidth),
+ Y: int32(imgHeight),
+ Z: 1,
+ },
+ },
+ },
+ DstSubresource: VkImageSubresourceLayers{
+ AspectMask: VkImageAspectFlags(aspectMask),
+ MipLevel: 0,
+ BaseArrayLayer: 0,
+ LayerCount: 1,
+ },
+ DstOffsets: VkOffset3Dː2ᵃ{
+ Elements: [2]VkOffset3D{
+ VkOffset3D{
+ X: int32(0),
+ Y: int32(0),
+ Z: 0,
+ },
+ VkOffset3D{
+ X: int32(reqWidth),
+ Y: int32(reqHeight),
+ Z: 1,
+ },
+ },
+ },
+ }
+ imageBlitData := atom.Must(atom.AllocData(ctx, s, d, imageBlit))
+
+ // Observation data for vkCmdResolveImage
+ imageResolve := VkImageResolve{
+ SrcSubresource: VkImageSubresourceLayers{
+ AspectMask: VkImageAspectFlags(aspectMask),
+ MipLevel: 0,
+ BaseArrayLayer: 0,
+ LayerCount: 1,
+ },
+ SrcOffset: VkOffset3D{
+ X: 0,
+ Y: 0,
+ Z: 0,
+ },
+ DstSubresource: VkImageSubresourceLayers{
+ AspectMask: VkImageAspectFlags(aspectMask),
+ MipLevel: 0,
+ BaseArrayLayer: 0,
+ LayerCount: 1,
+ },
+ DstOffset: VkOffset3D{
+ X: 0,
+ Y: 0,
+ Z: 0,
+ },
+ Extent: VkExtent3D{
+ Width: uint32(imgWidth),
+ Height: uint32(imgHeight),
+ Depth: 1,
+ },
+ }
+ imageResolveData := atom.Must(atom.AllocData(ctx, s, d, imageResolve))
+
+ // Write atoms to writer
+ // Create staging image, allocate and bind memory
+ writeEach(ctx, out,
+ NewVkCreateImage(
+ vkDevice,
+ stagingImageCreateInfoData.Ptr(),
+ memory.Pointer{},
+ stagingImageData.Ptr(),
+ VkResult_VK_SUCCESS,
+ ).AddRead(
+ stagingImageCreateInfoData.Data(),
+ ).AddWrite(
+ stagingImageData.Data(),
+ ),
+ NewVkAllocateMemory(
+ vkDevice,
+ stagingImageMemoryAllocateInfoData.Ptr(),
+ memory.Pointer{},
+ stagingImageMemoryData.Ptr(),
+ VkResult_VK_SUCCESS,
+ ).AddRead(
+ stagingImageMemoryAllocateInfoData.Data(),
+ ).AddWrite(
+ stagingImageMemoryData.Data(),
+ ),
+ NewVkBindImageMemory(
+ vkDevice,
+ stagingImageId,
+ stagingImageMemoryId,
+ VkDeviceSize(0),
+ VkResult_VK_SUCCESS,
+ ),
+ )
+
+ // Create buffer, allocate and bind memory
+ writeEach(ctx, out,
+ NewVkCreateBuffer(
+ vkDevice,
+ bufferCreateInfoData.Ptr(),
+ memory.Pointer{},
+ bufferData.Ptr(),
+ VkResult_VK_SUCCESS,
+ ).AddRead(
+ bufferCreateInfoData.Data(),
+ ).AddWrite(
+ bufferData.Data(),
+ ),
+ NewVkAllocateMemory(
+ vkDevice,
+ bufferMemoryAllocateInfoData.Ptr(),
+ memory.Pointer{},
+ bufferMemoryData.Ptr(),
+ VkResult_VK_SUCCESS,
+ ).AddRead(
+ bufferMemoryAllocateInfoData.Data(),
+ ).AddWrite(
+ bufferMemoryData.Data(),
+ ),
+ NewVkBindBufferMemory(
+ vkDevice,
+ bufferId,
+ bufferMemoryId,
+ VkDeviceSize(0),
+ VkResult_VK_SUCCESS,
+ ),
+ )
+
+ // If the attachment image is multi-sampled, an resolve image is required
+ // Create resolve image, allocate and bind memory
+ if imageObject.Samples != VkSampleCountFlagBits_VK_SAMPLE_COUNT_1_BIT {
+ writeEach(ctx, out,
+ NewVkCreateImage(
+ vkDevice,
+ resolveImageCreateInfoData.Ptr(),
+ memory.Pointer{},
+ resolveImageData.Ptr(),
+ VkResult_VK_SUCCESS,
+ ).AddRead(
+ resolveImageCreateInfoData.Data(),
+ ).AddWrite(
+ resolveImageData.Data(),
+ ),
+ NewVkAllocateMemory(
+ vkDevice,
+ resolveImageMemoryAllocateInfoData.Ptr(),
+ memory.Pointer{},
+ resolveImageMemoryData.Ptr(),
+ VkResult_VK_SUCCESS,
+ ).AddRead(
+ resolveImageMemoryAllocateInfoData.Data(),
+ ).AddWrite(
+ resolveImageMemoryData.Data(),
+ ),
+ NewVkBindImageMemory(
+ vkDevice,
+ resolveImageId,
+ resolveImageMemoryId,
+ VkDeviceSize(0),
+ VkResult_VK_SUCCESS,
+ ),
+ )
+ }
+
+ // Create command pool, allocate command buffer
+ writeEach(ctx, out,
+ NewVkCreateCommandPool(
+ vkDevice,
+ commandPoolCreateInfoData.Ptr(),
+ memory.Pointer{},
+ commandPoolData.Ptr(),
+ VkResult_VK_SUCCESS,
+ ).AddRead(
+ commandPoolCreateInfoData.Data(),
+ ).AddWrite(
+ commandPoolData.Data(),
+ ),
+ NewVkAllocateCommandBuffers(
+ vkDevice,
+ commandBufferAllocateInfoData.Ptr(),
+ commandBufferData.Ptr(),
+ VkResult_VK_SUCCESS,
+ ).AddRead(
+ commandBufferAllocateInfoData.Data(),
+ ).AddWrite(
+ commandBufferData.Data(),
+ ),
+ )
+
+ // Create a fence
+ writeEach(ctx, out,
+ NewVkCreateFence(
+ vkDevice,
+ fenceCreateData.Ptr(),
+ memory.Pointer{},
+ fenceData.Ptr(),
+ VkResult_VK_SUCCESS,
+ ).AddRead(
+ fenceCreateData.Data(),
+ ).AddWrite(
+ fenceData.Data(),
+ ),
+ )
+
+ // Begin command buffer, change attachment image and staging image layout
+ writeEach(ctx, out,
+ NewVkBeginCommandBuffer(
+ commandBufferId,
+ beginCommandBufferInfoData.Ptr(),
+ VkResult_VK_SUCCESS,
+ ).AddRead(
+ beginCommandBufferInfoData.Data(),
+ ),
+ NewVkCmdPipelineBarrier(
+ commandBufferId,
+ VkPipelineStageFlags(VkPipelineStageFlagBits_VK_PIPELINE_STAGE_ALL_COMMANDS_BIT),
+ VkPipelineStageFlags(VkPipelineStageFlagBits_VK_PIPELINE_STAGE_ALL_COMMANDS_BIT),
+ VkDependencyFlags(0),
+ 0,
+ memory.Pointer{},
+ 0,
+ memory.Pointer{},
+ 1,
+ attachmentImageToSrcBarrierData.Ptr(),
+ ).AddRead(
+ attachmentImageToSrcBarrierData.Data(),
+ ),
+ NewVkCmdPipelineBarrier(
+ commandBufferId,
+ VkPipelineStageFlags(VkPipelineStageFlagBits_VK_PIPELINE_STAGE_ALL_COMMANDS_BIT),
+ VkPipelineStageFlags(VkPipelineStageFlagBits_VK_PIPELINE_STAGE_ALL_COMMANDS_BIT),
+ VkDependencyFlags(0),
+ 0,
+ memory.Pointer{},
+ 0,
+ memory.Pointer{},
+ 1,
+ stagingImageToDstBarrierData.Ptr(),
+ ).AddRead(
+ stagingImageToDstBarrierData.Data(),
+ ),
+ )
+
+ // If the attachment image is multi-sampled, resolve the attchment image to resolve image before
+ // blit the image. Change the resolve image layout, call vkCmdResolveImage, change the resolve
+ // image layout again.fmt
+ if imageObject.Samples != VkSampleCountFlagBits_VK_SAMPLE_COUNT_1_BIT {
+ writeEach(ctx, out,
+ NewVkCmdPipelineBarrier(
+ commandBufferId,
+ VkPipelineStageFlags(VkPipelineStageFlagBits_VK_PIPELINE_STAGE_ALL_COMMANDS_BIT),
+ VkPipelineStageFlags(VkPipelineStageFlagBits_VK_PIPELINE_STAGE_ALL_COMMANDS_BIT),
+ VkDependencyFlags(0),
+ 0,
+ memory.Pointer{},
+ 0,
+ memory.Pointer{},
+ 1,
+ resolveImageToDstBarrierData.Ptr(),
+ ).AddRead(
+ resolveImageToDstBarrierData.Data(),
+ ),
+ NewVkCmdResolveImage(
+ commandBufferId,
+ vkImage,
+ VkImageLayout_VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
+ resolveImageId,
+ VkImageLayout_VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
+ 1,
+ imageResolveData.Ptr(),
+ ).AddRead(imageResolveData.Data()),
+ NewVkCmdPipelineBarrier(
+ commandBufferId,
+ VkPipelineStageFlags(VkPipelineStageFlagBits_VK_PIPELINE_STAGE_ALL_COMMANDS_BIT),
+ VkPipelineStageFlags(VkPipelineStageFlagBits_VK_PIPELINE_STAGE_ALL_COMMANDS_BIT),
+ VkDependencyFlags(0),
+ 0,
+ memory.Pointer{},
+ 0,
+ memory.Pointer{},
+ 1,
+ resolveImageToSrcBarrierData.Ptr(),
+ ).AddRead(
+ resolveImageToSrcBarrierData.Data(),
+ ),
+ )
+ }
+
+ // Blit image, if the attachment image is multi-sampled, use resolve image as the source image, otherwise
+ // use the attachment image as the source image directly
+ blitSrcImage := vkImage
+ if imageObject.Samples != VkSampleCountFlagBits_VK_SAMPLE_COUNT_1_BIT {
+ blitSrcImage = resolveImageId
+ }
+ writeEach(ctx, out,
+ NewVkCmdBlitImage(
+ commandBufferId,
+ blitSrcImage,
+ VkImageLayout_VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
+ stagingImageId,
+ VkImageLayout_VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
+ 1,
+ imageBlitData.Ptr(),
+ VkFilter_VK_FILTER_LINEAR,
+ ).AddRead(imageBlitData.Data()),
+ )
+
+ // Change the layout of staging image and attachment image, copy staging image to buffer,
+ // end command buffer
+ writeEach(ctx, out,
+ NewVkCmdPipelineBarrier(
+ commandBufferId,
+ VkPipelineStageFlags(VkPipelineStageFlagBits_VK_PIPELINE_STAGE_ALL_COMMANDS_BIT),
+ VkPipelineStageFlags(VkPipelineStageFlagBits_VK_PIPELINE_STAGE_ALL_COMMANDS_BIT),
+ VkDependencyFlags(0),
+ 0,
+ memory.Pointer{},
+ 0,
+ memory.Pointer{},
+ 1,
+ stagingImageToSrcBarrierData.Ptr(),
+ ).AddRead(
+ stagingImageToSrcBarrierData.Data(),
+ ),
+ NewVkCmdPipelineBarrier(
+ commandBufferId,
+ VkPipelineStageFlags(VkPipelineStageFlagBits_VK_PIPELINE_STAGE_ALL_COMMANDS_BIT),
+ VkPipelineStageFlags(VkPipelineStageFlagBits_VK_PIPELINE_STAGE_ALL_COMMANDS_BIT),
+ VkDependencyFlags(0),
+ 0,
+ memory.Pointer{},
+ 0,
+ memory.Pointer{},
+ 1,
+ attachmentImageResetLayoutBarrierData.Ptr(),
+ ).AddRead(
+ attachmentImageResetLayoutBarrierData.Data(),
+ ),
+ NewVkCmdCopyImageToBuffer(
+ commandBufferId,
+ stagingImageId,
+ VkImageLayout_VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
+ bufferId,
+ 1,
+ bufferImageCopyData.Ptr(),
+ ).AddRead(
+ bufferImageCopyData.Data(),
+ ),
+ NewVkEndCommandBuffer(
+ commandBufferId,
+ VkResult_VK_SUCCESS,
+ ))
+
+ // Submit all the commands above, wait until finish.
+ writeEach(ctx, out,
+ NewVkDeviceWaitIdle(vkDevice, VkResult_VK_SUCCESS),
+ NewVkQueueSubmit(
+ vkQueue,
+ 1,
+ submitInfoData.Ptr(),
+ fenceId,
+ VkResult_VK_SUCCESS,
+ ).AddRead(
+ submitInfoData.Data(),
+ ).AddRead(
+ commandBuffers.Data(),
+ ),
+ NewVkWaitForFences(
+ vkDevice,
+ 1,
+ fenceData.Ptr(),
+ 1,
+ 0xFFFFFFFFFFFFFFFF,
+ VkResult_VK_SUCCESS,
+ ).AddRead(
+ fenceData.Data(),
+ ),
+ NewVkDeviceWaitIdle(vkDevice, VkResult_VK_SUCCESS),
+ )
+
+ // Dump the buffer data to host
+ writeEach(ctx, out,
+ NewVkMapMemory(
+ vkDevice,
+ bufferMemoryId,
+ VkDeviceSize(0),
+ VkDeviceSize(bufferSize),
+ VkMemoryMapFlags(0),
+ mappedPointer.Ptr(),
+ VkResult_VK_SUCCESS,
+ ).AddWrite(mappedPointer.Data()),
+ NewVkInvalidateMappedMemoryRanges(
+ vkDevice,
+ 1,
+ mappedMemoryRangeData.Ptr(),
+ VkResult_VK_SUCCESS,
+ ).AddRead(mappedMemoryRangeData.Data()),
+ )
+
+ // Add post atom
+ writeEach(ctx, out,
+ replay.Custom(func(ctx log.Context, s *gfxapi.State, d database.Database, b *builder.Builder) error {
+ b.Post(value.ObservedPointer(at), uint64(bufferSize), func(r binary.Reader, err error) error {
+ var data []byte
+ if err == nil {
+ data = make([]byte, bufferSize)
+ r.Data(data)
+ r.Error()
+
+ // Flip the image in Y axis
+ rowSizeInBytes := uint64(formatOfImgRes.Size(int(reqWidth), 1))
+ top := uint64(0)
+ bottom := bufferSize - rowSizeInBytes
+ var temp = make([]byte, rowSizeInBytes)
+ for top <= bottom {
+ copy(temp, data[top:top+rowSizeInBytes])
+ copy(data[top:top+rowSizeInBytes], data[bottom:bottom+rowSizeInBytes])
+ copy(data[bottom:bottom+rowSizeInBytes], temp)
+ top += rowSizeInBytes
+ bottom -= rowSizeInBytes
+ }
+ }
+ if err != nil {
+ err = fmt.Errorf("Could not read framebuffer data (expected length %d bytes): %v", bufferSize, err)
+ data = nil
+ }
+
+ img := &image.Image{
+ Data: data,
+ Width: uint32(reqWidth),
+ Height: uint32(reqHeight),
+ Format: formatOfImgRes,
+ }
+
+ callback(imgRes{img: img, err: err})
+ return err
+ })
+ return nil
+ }),
+ )
+
+ // Free the resources used for reading framebuffer
+ writeEach(ctx, out,
+ NewVkUnmapMemory(vkDevice, bufferMemoryId),
+ NewVkDestroyBuffer(vkDevice, bufferId, memory.Pointer{}),
+ NewVkDestroyCommandPool(vkDevice, commandPoolId, memory.Pointer{}),
+ NewVkDestroyImage(vkDevice, stagingImageId, memory.Pointer{}),
+ NewVkFreeMemory(vkDevice, stagingImageMemoryId, memory.Pointer{}),
+ NewVkFreeMemory(vkDevice, bufferMemoryId, memory.Pointer{}))
+ if imageObject.Samples != VkSampleCountFlagBits_VK_SAMPLE_COUNT_1_BIT {
+ writeEach(ctx, out,
+ NewVkDestroyImage(vkDevice, resolveImageId, memory.Pointer{}),
+ NewVkFreeMemory(vkDevice, resolveImageMemoryId, memory.Pointer{}))
+ }
+ writeEach(ctx, out, NewVkDestroyFence(vkDevice, fenceId, memory.Pointer{}))
+}
diff --git a/gapid/gfxapi/vulkan/replay.go b/gapid/gfxapi/vulkan/replay.go
index bfc924b..17b4f13 100644
--- a/gapid/gfxapi/vulkan/replay.go
+++ b/gapid/gfxapi/vulkan/replay.go
@@ -147,7 +147,6 @@
return
}
} else if createRenderPass, ok := a.(*VkCreateRenderPass); ok {
- ctx.Enter("path transformation, create render branch")
pInfo := createRenderPass.PCreateInfo
info := pInfo.Read(ctx, createRenderPass, t.state, t.database, nil)
pAttachments := info.PAttachments
@@ -160,12 +159,10 @@
}
}
// Returns if no attachment description needs to be changed
- ctx.Error().Log("after checking")
if !changed {
out.Write(ctx, id, a)
return
}
- ctx.Error().Log("changed")
// Build new attachments data, new create info and new atom
newAttachments := atom.Must(atom.AllocData(ctx, t.state, t.database, attachments))
info.PAttachments = VkAttachmentDescriptionᶜᵖ(newAttachments.Ptr())
@@ -362,7 +359,7 @@
earlyTerminator.Add(req.after)
switch req.attachment {
case gfxapi.FramebufferAttachment_Depth:
- return fmt.Errorf("Depth attachments are not currently supported")
+ readFramebuffer.Depth(req.after, req.out)
case gfxapi.FramebufferAttachment_Stencil:
return fmt.Errorf("Stencil attachments are not currently supported")
default:
diff --git a/gapid/gfxapi/vulkan/resources.go b/gapid/gfxapi/vulkan/resources.go
index 71c1574..2ec353f 100644
--- a/gapid/gfxapi/vulkan/resources.go
+++ b/gapid/gfxapi/vulkan/resources.go
@@ -71,6 +71,12 @@
switch vkfmt {
case VkFormat_VK_FORMAT_R8G8B8A8_UNORM:
return image.RGBA(), nil
+ case VkFormat_VK_FORMAT_BC1_RGB_SRGB_BLOCK,
+ VkFormat_VK_FORMAT_BC1_RGB_UNORM_BLOCK:
+ return image.S3_DXT1_RGB(), nil
+ case VkFormat_VK_FORMAT_BC1_RGBA_SRGB_BLOCK,
+ VkFormat_VK_FORMAT_BC1_RGBA_UNORM_BLOCK:
+ return image.S3_DXT1_RGBA(), nil
case VkFormat_VK_FORMAT_BC2_UNORM_BLOCK:
return image.S3_DXT3_RGBA(), nil
case VkFormat_VK_FORMAT_BC3_UNORM_BLOCK:
@@ -87,9 +93,8 @@
return image.RGBAF32(), nil
case VkFormat_VK_FORMAT_B8G8R8A8_UNORM:
return image.BGRA(), nil
- // TODO: This is wrong, we need to create the D32S8 format
case VkFormat_VK_FORMAT_D32_SFLOAT_S8_UINT:
- return image.D24S8(), nil
+ return image.DF32S8(), nil
case VkFormat_VK_FORMAT_D24_UNORM_S8_UINT:
return image.D24S8(), nil
case VkFormat_VK_FORMAT_D16_UNORM:
@@ -105,6 +110,21 @@
}
}
+func getDepthImageFormatFromVulkanFormat(vkfmt VkFormat) (image.Format, error) {
+ switch vkfmt {
+ case VkFormat_VK_FORMAT_D32_SFLOAT_S8_UINT:
+ return image.DepthF32(), nil
+ case VkFormat_VK_FORMAT_D16_UNORM,
+ VkFormat_VK_FORMAT_D16_UNORM_S8_UINT:
+ return image.Depth16(), nil
+ // TODO: This is wrong, need to convert D24 to D32 with 0x00 in MSB 8-bit
+ case VkFormat_VK_FORMAT_D24_UNORM_S8_UINT:
+ fallthrough
+ default:
+ return nil, &unsupportedVulkanFormatError{Format: vkfmt}
+ }
+}
+
func setCubemapFace(img *image.Info, cubeMap *gfxapi.CubemapLevel, layerIndex uint32) (success bool) {
if cubeMap == nil || img == nil {
return false
diff --git a/gapid/gfxapi/vulkan/snippets.base64 b/gapid/gfxapi/vulkan/snippets.base64
index 1497b85..0e41645 100644
--- a/gapid/gfxapi/vulkan/snippets.base64
+++ b/gapid/gfxapi/vulkan/snippets.base64
@@ -1 +1 @@
-AwhzbmlwcGV0cwxBdG9tU25pcHBldHMAArAGAxRSZXBsYXlDcmVhdGVWa0RldmljZQEDBQhzbmlwcGV0cwxPYnNlcnZhdGlvbnMAAgMGUAUHCHNuaXBwZXRzCHBhcnRQYXRoAAIDUAcJCHNuaXBwZXRzCWZpZWxkUGF0aAACA7AJBgsGDQgPBhEGEwgVCwhzbmlwcGV0cwxyZWxhdGl2ZVBhdGgAAbAUUmVwbGF5Q3JlYXRlVmtEZXZpY2ULcENyZWF0ZUluZm8EAhFwUXVldWVDcmVhdGVJbmZvcwQCEHBRdWV1ZVByaW9yaXRpZXMEAQACGHZrQWxsb2NhdGVEZXNjcmlwdG9yU2V0cwEXBBkGGwgdBh8GIQgjChh2a0FsbG9jYXRlRGVzY3JpcHRvclNldHMNcEFsbG9jYXRlSW5mbwQCC3BTZXRMYXlvdXRzBAEAAhR2a0NtZEJlZ2luUmVuZGVyUGFzcwElBCcGKQgrBi0GLwgxChR2a0NtZEJlZ2luUmVuZGVyUGFzcxBwUmVuZGVyUGFzc0JlZ2luBAIMcENsZWFyVmFsdWVzBAEAAhd2a0NtZEJpbmREZXNjcmlwdG9yU2V0cwEzBDUGNwg5Chd2a0NtZEJpbmREZXNjcmlwdG9yU2V0cw9wRHluYW1pY09mZnNldHMEAQACDnZrQ21kQmxpdEltYWdlATsEPQY/CEEKDnZrQ21kQmxpdEltYWdlCHBSZWdpb25zBAEAAg92a0NtZENvcHlCdWZmZXIBQwRFBkcISQoPdmtDbWRDb3B5QnVmZmVyCHBSZWdpb25zBAEAAhZ2a0NtZENvcHlCdWZmZXJUb0ltYWdlAUsETQZPCFEKFnZrQ21kQ29weUJ1ZmZlclRvSW1hZ2UIcFJlZ2lvbnMEAQACFnZrQ21kQ29weUltYWdlVG9CdWZmZXIBUwRVBlcIWQoWdmtDbWRDb3B5SW1hZ2VUb0J1ZmZlcghwUmVnaW9ucwQBAAIUdmtDbWRFeGVjdXRlQ29tbWFuZHMBWwRdBl8IYQoUdmtDbWRFeGVjdXRlQ29tbWFuZHMPcENvbW1hbmRCdWZmZXJzBAEAAhR2a0NtZFBpcGVsaW5lQmFycmllcgJjBGUGZwhpChR2a0NtZFBpcGVsaW5lQmFycmllcg9wTWVtb3J5QmFycmllcnMEAQBrBG0GbwhxChR2a0NtZFBpcGVsaW5lQmFycmllchVwQnVmZmVyTWVtb3J5QmFycmllcnMEAQACEnZrQ21kUHVzaENvbnN0YW50cwFzBHUGdwh5ChJ2a0NtZFB1c2hDb25zdGFudHMHcFZhbHVlcwQBAAIRdmtDbWRSZXNvbHZlSW1hZ2UBewR9Bn8IgIEKEXZrQ21kUmVzb2x2ZUltYWdlCHBSZWdpb25zBAEAAg92a0NtZFNldFNjaXNzb3IBgIMEgIUGgIcIgIkKD3ZrQ21kU2V0U2Npc3NvcglwU2Npc3NvcnMEAQACEHZrQ21kU2V0Vmlld3BvcnQBgIsEgI0GgI8IgJEKEHZrQ21kU2V0Vmlld3BvcnQKcFZpZXdwb3J0cwQBAAIOdmtDcmVhdGVCdWZmZXIBgJMEgJUGgJcIgJkGgJsGgJ0IgJ8KDnZrQ3JlYXRlQnVmZmVyC3BDcmVhdGVJbmZvBAITcFF1ZXVlRmFtaWx5SW5kaWNlcwQBAAIWdmtDcmVhdGVEZXNjcmlwdG9yUG9vbAGAoQSAowaApQiApwaAqQaAqwiArQoWdmtDcmVhdGVEZXNjcmlwdG9yUG9vbAtwQ3JlYXRlSW5mbwQCCnBQb29sU2l6ZXMEAQACG3ZrQ3JlYXRlRGVzY3JpcHRvclNldExheW91dAGArwSAsQaAswiAtQaAtwaAuQiAuwaAvQaAvwiAwQobdmtDcmVhdGVEZXNjcmlwdG9yU2V0TGF5b3V0C3BDcmVhdGVJbmZvBAIJcEJpbmRpbmdzBAIScEltbXV0YWJsZVNhbXBsZXJzBAEAAg52a0NyZWF0ZURldmljZQGAwwSAxQaAxwiAyQaAywaAzQiAzwaA0QaA0wiA1QoOdmtDcmVhdGVEZXZpY2ULcENyZWF0ZUluZm8EAhFwUXVldWVDcmVhdGVJbmZvcwQCEHBRdWV1ZVByaW9yaXRpZXMEAQACDXZrQ3JlYXRlRmVuY2UBgNcNCHNuaXBwZXRzBkxhYmVscwACAwawgNkIgNsGgN0GgN8IgOEKDXZrQ3JlYXRlRmVuY2ULcENyZWF0ZUluZm8EAgVmbGFncwEcVktfRkVOQ0VfQ1JFQVRFX1NJR05BTEVEX0JJVAIZdmtDcmVhdGVHcmFwaGljc1BpcGVsaW5lcwyA4wSA5QaA5wiA6QaA6waA7QiA7waA8QaA8wiA9QoZdmtDcmVhdGVHcmFwaGljc1BpcGVsaW5lcwxwQ3JlYXRlSW5mb3MEAhBwQ29sb3JCbGVuZFN0YXRlBAIMcEF0dGFjaG1lbnRzBAEAgPcEgPkGgPsIgP0GgP8GgQEIgQMKGXZrQ3JlYXRlR3JhcGhpY3NQaXBlbGluZXMMcENyZWF0ZUluZm9zBAIScERlcHRoU3RlbmNpbFN0YXRlBAEAgQUEgQcGgQkIgQsGgQ0GgQ8IgREGgRMGgRUIgRcKGXZrQ3JlYXRlR3JhcGhpY3NQaXBlbGluZXMMcENyZWF0ZUluZm9zBAINcER5bmFtaWNTdGF0ZQQCDnBEeW5hbWljU3RhdGVzBAEAgRkEgRsGgR0IgR8GgSEGgSMIgSUKGXZrQ3JlYXRlR3JhcGhpY3NQaXBlbGluZXMMcENyZWF0ZUluZm9zBAITcElucHV0QXNzZW1ibHlTdGF0ZQQBAIEnBIEpBoErCIEtBoEvBoExCIEzBoE1BoE3CIE5Chl2a0NyZWF0ZUdyYXBoaWNzUGlwZWxpbmVzDHBDcmVhdGVJbmZvcwQCEXBNdWx0aXNhbXBsZVN0YXRlBAILcFNhbXBsZU1hc2sEAQCBOwSBPQaBPwiBQQaBQwaBRQiBRwaBSQaBSwiBTQaBTwaBUQiBUwoZdmtDcmVhdGVHcmFwaGljc1BpcGVsaW5lcwxwQ3JlYXRlSW5mb3MEAgdwU3RhZ2VzBAITcFNwZWNpYWxpemF0aW9uSW5mbwQCBXBEYXRhBAEAgVUEgVcGgVkIgVsGgV0GgV8IgWEGgWMGgWUIgWcGgWkGgWsIgW0KGXZrQ3JlYXRlR3JhcGhpY3NQaXBlbGluZXMMcENyZWF0ZUluZm9zBAIHcFN0YWdlcwQCE3BTcGVjaWFsaXphdGlvbkluZm8EAgtwTWFwRW50cmllcwQBAIFvBIFxBoFzCIF1BoF3BoF5CIF7Chl2a0NyZWF0ZUdyYXBoaWNzUGlwZWxpbmVzDHBDcmVhdGVJbmZvcwQCEnBUZXNzZWxsYXRpb25TdGF0ZQQBAIF9BIF/BoGBCIGDBoGFBoGHCIGJBoGLBoGNCIGPChl2a0NyZWF0ZUdyYXBoaWNzUGlwZWxpbmVzDHBDcmVhdGVJbmZvcwQCEXBWZXJ0ZXhJbnB1dFN0YXRlBAIccFZlcnRleEF0dHJpYnV0ZURlc2NyaXB0aW9ucwQBAIGRBIGTBoGVCIGXBoGZBoGbCIGdBoGfBoGhCIGjChl2a0NyZWF0ZUdyYXBoaWNzUGlwZWxpbmVzDHBDcmVhdGVJbmZvcwQCEXBWZXJ0ZXhJbnB1dFN0YXRlBAIacFZlcnRleEJpbmRpbmdEZXNjcmlwdGlvbnMEAQCBpQSBpwaBqQiBqwaBrQaBrwiBsQaBswaBtQiBtwoZdmtDcmVhdGVHcmFwaGljc1BpcGVsaW5lcwxwQ3JlYXRlSW5mb3MEAg5wVmlld3BvcnRTdGF0ZQQCCXBTY2lzc29ycwQBAIG5BIG7BoG9CIG/BoHBBoHDCIHFBoHHBoHJCIHLChl2a0NyZWF0ZUdyYXBoaWNzUGlwZWxpbmVzDHBDcmVhdGVJbmZvcwQCDnBWaWV3cG9ydFN0YXRlBAIKcFZpZXdwb3J0cwQBAAINdmtDcmVhdGVJbWFnZQKBzQyBzwiB0QaB0waB1QiB1woNdmtDcmVhdGVJbWFnZQtwQ3JlYXRlSW5mbwQCBmZvcm1hdBEWVktfRk9STUFUX1I4RzhCOF9VTk9STRhWS19GT1JNQVRfUjhHOEI4QThfVU5PUk0YVktfRk9STUFUX0I4RzhSOEE4X1VOT1JNGVZLX0ZPUk1BVF9CQzJfVU5PUk1fQkxPQ0sZVktfRk9STUFUX0JDM19VTk9STV9CTE9DSx1WS19GT1JNQVRfUjE2RzE2QjE2QTE2X1NGTE9BVB1WS19GT1JNQVRfUjMyRzMyQjMyQTMyX1NGTE9BVBJWS19GT1JNQVRfUjhfVU5PUk0TVktfRk9STUFUX1IxNl9VTk9STRRWS19GT1JNQVRfUjMyX1NGTE9BVBxWS19GT1JNQVRfRDMyX1NGTE9BVF9TOF9VSU5UE1ZLX0ZPUk1BVF9EMTZfVU5PUk0bVktfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5UIFZLX0ZPUk1BVF9FVEMyX1I4RzhCOF9TUkdCX0JMT0NLIVZLX0ZPUk1BVF9FVEMyX1I4RzhCOF9VTk9STV9CTE9DSyJWS19GT1JNQVRfRVRDMl9SOEc4QjhBOF9TUkdCX0JMT0NLI1ZLX0ZPUk1BVF9FVEMyX1I4RzhCOEE4X1VOT1JNX0JMT0NLgdkEgdsGgd0Igd8GgeEGgeMIgeUKDXZrQ3JlYXRlSW1hZ2ULcENyZWF0ZUluZm8EAhNwUXVldWVGYW1pbHlJbmRpY2VzBAEAAhZ2a0NyZWF0ZVBpcGVsaW5lTGF5b3V0AoHnBIHpBoHrCIHtBoHvBoHxCIHzChZ2a0NyZWF0ZVBpcGVsaW5lTGF5b3V0C3BDcmVhdGVJbmZvBAITcFB1c2hDb25zdGFudFJhbmdlcwQBAIH1BIH3BoH5CIH7BoH9BoH/CIIBChZ2a0NyZWF0ZVBpcGVsaW5lTGF5b3V0C3BDcmVhdGVJbmZvBAILcFNldExheW91dHMEAQACEnZrQ3JlYXRlUmVuZGVyUGFzcweCAwSCBQaCBwiCCQaCCwaCDQiCDwoSdmtDcmVhdGVSZW5kZXJQYXNzC3BDcmVhdGVJbmZvBAIMcEF0dGFjaG1lbnRzBAEAghEEghMGghUIghcGghkGghsIgh0KEnZrQ3JlYXRlUmVuZGVyUGFzcwtwQ3JlYXRlSW5mbwQCDXBEZXBlbmRlbmNpZXMEAQCCHwSCIQaCIwiCJQaCJwaCKQiCKwoSdmtDcmVhdGVSZW5kZXJQYXNzC3BDcmVhdGVJbmZvBAIKcFN1YnBhc3NlcwQBAIItBIIvBoIxCIIzBoI1BoI3CII5BoI7BoI9CII/ChJ2a0NyZWF0ZVJlbmRlclBhc3MLcENyZWF0ZUluZm8EAgpwU3VicGFzc2VzBAIRcENvbG9yQXR0YWNobWVudHMEAQCCQQSCQwaCRQiCRwaCSQaCSwiCTQaCTwaCUQiCUwoSdmtDcmVhdGVSZW5kZXJQYXNzC3BDcmVhdGVJbmZvBAIKcFN1YnBhc3NlcwQCEXBJbnB1dEF0dGFjaG1lbnRzBAEAglUEglcGglkIglsGgl0Ggl8IgmEGgmMGgmUIgmcKEnZrQ3JlYXRlUmVuZGVyUGFzcwtwQ3JlYXRlSW5mbwQCCnBTdWJwYXNzZXMEAhRwUHJlc2VydmVBdHRhY2htZW50cwQBAIJpBIJrBoJtCIJvBoJxBoJzCIJ1BoJ3BoJ5CIJ7ChJ2a0NyZWF0ZVJlbmRlclBhc3MLcENyZWF0ZUluZm8EAgpwU3VicGFzc2VzBAITcFJlc29sdmVBdHRhY2htZW50cwQBAAIUdmtDcmVhdGVTaGFkZXJNb2R1bGUBgn0Egn8GgoEIgoMGgoUGgocIgokKFHZrQ3JlYXRlU2hhZGVyTW9kdWxlC3BDcmVhdGVJbmZvBAIFcENvZGUEAQACFHZrQ3JlYXRlU3dhcGNoYWluS0hSAYKLBIKNBoKPCIKRBoKTBoKVCIKXChR2a0NyZWF0ZVN3YXBjaGFpbktIUgtwQ3JlYXRlSW5mbwQCE3BRdWV1ZUZhbWlseUluZGljZXMEAQACGXZrRmx1c2hNYXBwZWRNZW1vcnlSYW5nZXMAAhd2a0dldFN3YXBjaGFpbkltYWdlc0tIUgACC3ZrTWFwTWVtb3J5AYKZBIKbBoKdCIKfCgt2a01hcE1lbW9yeQZwcERhdGEEAQACEXZrUXVldWVQcmVzZW50S0hSAoKhBIKjBoKlCIKnBoKpBoKrCIKtChF2a1F1ZXVlUHJlc2VudEtIUgxwUHJlc2VudEluZm8EAghwUmVzdWx0cwQBAIKvBIKxBoKzCIK1BoK3BoK5CIK7ChF2a1F1ZXVlUHJlc2VudEtIUgxwUHJlc2VudEluZm8EAg9wV2FpdFNlbWFwaG9yZXMEAQACDXZrUXVldWVTdWJtaXQDgr0Egr8GgsEIgsMGgsUGgscIgskKDXZrUXVldWVTdWJtaXQIcFN1Ym1pdHMEAhFwU2lnbmFsU2VtYXBob3JlcwQBAILLBILNBoLPCILRBoLTBoLVCILXCg12a1F1ZXVlU3VibWl0CHBTdWJtaXRzBAIRcFdhaXREc3RTdGFnZU1hc2sEAQCC2QSC2waC3QiC3waC4QaC4wiC5QoNdmtRdWV1ZVN1Ym1pdAhwU3VibWl0cwQCD3BXYWl0U2VtYXBob3JlcwQBAAINdmtVbm1hcE1lbW9yeQACFnZrVXBkYXRlRGVzY3JpcHRvclNldHMEgucMgukIgusGgu0Ggu8IgvEKFnZrVXBkYXRlRGVzY3JpcHRvclNldHMRcERlc2NyaXB0b3JXcml0ZXMEAg5kZXNjcmlwdG9yVHlwZQsaVktfREVTQ1JJUFRPUl9UWVBFX1NBTVBMRVIpVktfREVTQ1JJUFRPUl9UWVBFX0NPTUJJTkVEX0lNQUdFX1NBTVBMRVIgVktfREVTQ1JJUFRPUl9UWVBFX1NBTVBMRURfSU1BR0UgVktfREVTQ1JJUFRPUl9UWVBFX1NUT1JBR0VfSU1BR0UjVktfREVTQ1JJUFRPUl9UWVBFX0lOUFVUX0FUVEFDSE1FTlQnVktfREVTQ1JJUFRPUl9UWVBFX1VOSUZPUk1fVEVYRUxfQlVGRkVSJ1ZLX0RFU0NSSVBUT1JfVFlQRV9TVE9SQUdFX1RFWEVMX0JVRkZFUiFWS19ERVNDUklQVE9SX1RZUEVfVU5JRk9STV9CVUZGRVIhVktfREVTQ1JJUFRPUl9UWVBFX1NUT1JBR0VfQlVGRkVSKVZLX0RFU0NSSVBUT1JfVFlQRV9VTklGT1JNX0JVRkZFUl9EWU5BTUlDKVZLX0RFU0NSSVBUT1JfVFlQRV9TVE9SQUdFX0JVRkZFUl9EWU5BTUlDgvMEgvUGgvcIgvkGgvsGgv0Igv8KFnZrVXBkYXRlRGVzY3JpcHRvclNldHMRcERlc2NyaXB0b3JXcml0ZXMEAgpwSW1hZ2VJbmZvBAEAgwEEgwMGgwUIgwcGgwkGgwsIgw0KFnZrVXBkYXRlRGVzY3JpcHRvclNldHMRcERlc2NyaXB0b3JXcml0ZXMEAhBwVGV4ZWxCdWZmZXJWaWV3BAEAgw8EgxEGgxMIgxUKFnZrVXBkYXRlRGVzY3JpcHRvclNldHMRcERlc2NyaXB0b3JDb3BpZXMEAQACD3ZrV2FpdEZvckZlbmNlcwGDFwSDGQaDGwiDHQoPdmtXYWl0Rm9yRmVuY2VzB3BGZW5jZXMEAQA=
\ No newline at end of file
+AwhzbmlwcGV0cwxBdG9tU25pcHBldHMAArAGAxRSZXBsYXlDcmVhdGVWa0RldmljZQEDBQhzbmlwcGV0cwxPYnNlcnZhdGlvbnMAAgMGUAUHCHNuaXBwZXRzCHBhcnRQYXRoAAIDUAcJCHNuaXBwZXRzCWZpZWxkUGF0aAACA7AJBgsGDQgPBhEGEwgVCwhzbmlwcGV0cwxyZWxhdGl2ZVBhdGgAAbAUUmVwbGF5Q3JlYXRlVmtEZXZpY2ULcENyZWF0ZUluZm8EAhFwUXVldWVDcmVhdGVJbmZvcwQCEHBRdWV1ZVByaW9yaXRpZXMEAQACGHZrQWxsb2NhdGVEZXNjcmlwdG9yU2V0cwEXBBkGGwgdBh8GIQgjChh2a0FsbG9jYXRlRGVzY3JpcHRvclNldHMNcEFsbG9jYXRlSW5mbwQCC3BTZXRMYXlvdXRzBAEAAhB2a0FsbG9jYXRlTWVtb3J5ASUNCHNuaXBwZXRzBkxhYmVscwACAwawJwYpBisILQYvBjEIMwoQdmtBbGxvY2F0ZU1lbW9yeQ1wQWxsb2NhdGVJbmZvBAIFcE5leHQEAgE+VktfU1RSVUNUVVJFX1RZUEVfREVESUNBVEVEX0FMTE9DQVRJT05fTUVNT1JZX0FMTE9DQVRFX0lORk9fTlYCFHZrQ21kQmVnaW5SZW5kZXJQYXNzATUENwY5CDsGPQY/CEEKFHZrQ21kQmVnaW5SZW5kZXJQYXNzEHBSZW5kZXJQYXNzQmVnaW4EAgxwQ2xlYXJWYWx1ZXMEAQACF3ZrQ21kQmluZERlc2NyaXB0b3JTZXRzAUMERQZHCEkKF3ZrQ21kQmluZERlc2NyaXB0b3JTZXRzD3BEeW5hbWljT2Zmc2V0cwQBAAIOdmtDbWRCbGl0SW1hZ2UBSwRNBk8IUQoOdmtDbWRCbGl0SW1hZ2UIcFJlZ2lvbnMEAQACFXZrQ21kQ2xlYXJBdHRhY2htZW50cwJTBFUGVwhZChV2a0NtZENsZWFyQXR0YWNobWVudHMMcEF0dGFjaG1lbnRzBAEAWwRdBl8IYQoVdmtDbWRDbGVhckF0dGFjaG1lbnRzBnBSZWN0cwQBAAIUdmtDbWRDbGVhckNvbG9ySW1hZ2UBYwRlBmcIaQoUdmtDbWRDbGVhckNvbG9ySW1hZ2UHcFJhbmdlcwQBAAIPdmtDbWRDb3B5QnVmZmVyAWsEbQZvCHEKD3ZrQ21kQ29weUJ1ZmZlcghwUmVnaW9ucwQBAAIWdmtDbWRDb3B5QnVmZmVyVG9JbWFnZQFzBHUGdwh5ChZ2a0NtZENvcHlCdWZmZXJUb0ltYWdlCHBSZWdpb25zBAEAAhZ2a0NtZENvcHlJbWFnZVRvQnVmZmVyAXsEfQZ/CICBChZ2a0NtZENvcHlJbWFnZVRvQnVmZmVyCHBSZWdpb25zBAEAAhR2a0NtZEV4ZWN1dGVDb21tYW5kcwGAgwSAhQaAhwiAiQoUdmtDbWRFeGVjdXRlQ29tbWFuZHMPcENvbW1hbmRCdWZmZXJzBAEAAhR2a0NtZFBpcGVsaW5lQmFycmllcgKAiwSAjQaAjwiAkQoUdmtDbWRQaXBlbGluZUJhcnJpZXIPcE1lbW9yeUJhcnJpZXJzBAEAgJMEgJUGgJcIgJkKFHZrQ21kUGlwZWxpbmVCYXJyaWVyFXBCdWZmZXJNZW1vcnlCYXJyaWVycwQBAAISdmtDbWRQdXNoQ29uc3RhbnRzAYCbBICdBoCfCIChChJ2a0NtZFB1c2hDb25zdGFudHMHcFZhbHVlcwQBAAIRdmtDbWRSZXNvbHZlSW1hZ2UBgKMEgKUGgKcIgKkKEXZrQ21kUmVzb2x2ZUltYWdlCHBSZWdpb25zBAEAAg92a0NtZFNldFNjaXNzb3IBgKsEgK0GgK8IgLEKD3ZrQ21kU2V0U2Npc3NvcglwU2Npc3NvcnMEAQACEHZrQ21kU2V0Vmlld3BvcnQBgLMEgLUGgLcIgLkKEHZrQ21kU2V0Vmlld3BvcnQKcFZpZXdwb3J0cwQBAAIOdmtDcmVhdGVCdWZmZXICgLsMgL0GgL8GgMEIgMMGgMUGgMcIgMkKDnZrQ3JlYXRlQnVmZmVyC3BDcmVhdGVJbmZvBAIFcE5leHQEAgE8VktfU1RSVUNUVVJFX1RZUEVfREVESUNBVEVEX0FMTE9DQVRJT05fQlVGRkVSX0NSRUFURV9JTkZPX05WgMsEgM0GgM8IgNEGgNMGgNUIgNcKDnZrQ3JlYXRlQnVmZmVyC3BDcmVhdGVJbmZvBAITcFF1ZXVlRmFtaWx5SW5kaWNlcwQBAAIWdmtDcmVhdGVEZXNjcmlwdG9yUG9vbAGA2QSA2waA3QiA3waA4QaA4wiA5QoWdmtDcmVhdGVEZXNjcmlwdG9yUG9vbAtwQ3JlYXRlSW5mbwQCCnBQb29sU2l6ZXMEAQACG3ZrQ3JlYXRlRGVzY3JpcHRvclNldExheW91dAGA5wSA6QaA6wiA7QaA7waA8QiA8waA9QaA9wiA+QobdmtDcmVhdGVEZXNjcmlwdG9yU2V0TGF5b3V0C3BDcmVhdGVJbmZvBAIJcEJpbmRpbmdzBAIScEltbXV0YWJsZVNhbXBsZXJzBAEAAg52a0NyZWF0ZURldmljZQGA+wSA/QaA/wiBAQaBAwaBBQiBBwaBCQaBCwiBDQoOdmtDcmVhdGVEZXZpY2ULcENyZWF0ZUluZm8EAhFwUXVldWVDcmVhdGVJbmZvcwQCEHBRdWV1ZVByaW9yaXRpZXMEAQACDXZrQ3JlYXRlRmVuY2UBgQ8MgREIgRMGgRUGgRcIgRkKDXZrQ3JlYXRlRmVuY2ULcENyZWF0ZUluZm8EAgVmbGFncwEcVktfRkVOQ0VfQ1JFQVRFX1NJR05BTEVEX0JJVAIZdmtDcmVhdGVHcmFwaGljc1BpcGVsaW5lcwyBGwSBHQaBHwiBIQaBIwaBJQiBJwaBKQaBKwiBLQoZdmtDcmVhdGVHcmFwaGljc1BpcGVsaW5lcwxwQ3JlYXRlSW5mb3MEAhBwQ29sb3JCbGVuZFN0YXRlBAIMcEF0dGFjaG1lbnRzBAEAgS8EgTEGgTMIgTUGgTcGgTkIgTsKGXZrQ3JlYXRlR3JhcGhpY3NQaXBlbGluZXMMcENyZWF0ZUluZm9zBAIScERlcHRoU3RlbmNpbFN0YXRlBAEAgT0EgT8GgUEIgUMGgUUGgUcIgUkGgUsGgU0IgU8KGXZrQ3JlYXRlR3JhcGhpY3NQaXBlbGluZXMMcENyZWF0ZUluZm9zBAINcER5bmFtaWNTdGF0ZQQCDnBEeW5hbWljU3RhdGVzBAEAgVEEgVMGgVUIgVcGgVkGgVsIgV0KGXZrQ3JlYXRlR3JhcGhpY3NQaXBlbGluZXMMcENyZWF0ZUluZm9zBAITcElucHV0QXNzZW1ibHlTdGF0ZQQBAIFfBIFhBoFjCIFlBoFnBoFpCIFrBoFtBoFvCIFxChl2a0NyZWF0ZUdyYXBoaWNzUGlwZWxpbmVzDHBDcmVhdGVJbmZvcwQCEXBNdWx0aXNhbXBsZVN0YXRlBAILcFNhbXBsZU1hc2sEAQCBcwSBdQaBdwiBeQaBewaBfQiBfwaBgQaBgwiBhQaBhwaBiQiBiwoZdmtDcmVhdGVHcmFwaGljc1BpcGVsaW5lcwxwQ3JlYXRlSW5mb3MEAgdwU3RhZ2VzBAITcFNwZWNpYWxpemF0aW9uSW5mbwQCBXBEYXRhBAEAgY0EgY8GgZEIgZMGgZUGgZcIgZkGgZsGgZ0IgZ8GgaEGgaMIgaUKGXZrQ3JlYXRlR3JhcGhpY3NQaXBlbGluZXMMcENyZWF0ZUluZm9zBAIHcFN0YWdlcwQCE3BTcGVjaWFsaXphdGlvbkluZm8EAgtwTWFwRW50cmllcwQBAIGnBIGpBoGrCIGtBoGvBoGxCIGzChl2a0NyZWF0ZUdyYXBoaWNzUGlwZWxpbmVzDHBDcmVhdGVJbmZvcwQCEnBUZXNzZWxsYXRpb25TdGF0ZQQBAIG1BIG3BoG5CIG7BoG9BoG/CIHBBoHDBoHFCIHHChl2a0NyZWF0ZUdyYXBoaWNzUGlwZWxpbmVzDHBDcmVhdGVJbmZvcwQCEXBWZXJ0ZXhJbnB1dFN0YXRlBAIccFZlcnRleEF0dHJpYnV0ZURlc2NyaXB0aW9ucwQBAIHJBIHLBoHNCIHPBoHRBoHTCIHVBoHXBoHZCIHbChl2a0NyZWF0ZUdyYXBoaWNzUGlwZWxpbmVzDHBDcmVhdGVJbmZvcwQCEXBWZXJ0ZXhJbnB1dFN0YXRlBAIacFZlcnRleEJpbmRpbmdEZXNjcmlwdGlvbnMEAQCB3QSB3waB4QiB4waB5QaB5wiB6QaB6waB7QiB7woZdmtDcmVhdGVHcmFwaGljc1BpcGVsaW5lcwxwQ3JlYXRlSW5mb3MEAg5wVmlld3BvcnRTdGF0ZQQCCXBTY2lzc29ycwQBAIHxBIHzBoH1CIH3BoH5BoH7CIH9BoH/BoIBCIIDChl2a0NyZWF0ZUdyYXBoaWNzUGlwZWxpbmVzDHBDcmVhdGVJbmZvcwQCDnBWaWV3cG9ydFN0YXRlBAIKcFZpZXdwb3J0cwQBAAINdmtDcmVhdGVJbWFnZQOCBQyCBwiCCQaCCwaCDQiCDwoNdmtDcmVhdGVJbWFnZQtwQ3JlYXRlSW5mbwQCBmZvcm1hdBUWVktfRk9STUFUX1I4RzhCOF9VTk9STRhWS19GT1JNQVRfUjhHOEI4QThfVU5PUk0YVktfRk9STUFUX0I4RzhSOEE4X1VOT1JNHVZLX0ZPUk1BVF9CQzFfUkdCX1VOT1JNX0JMT0NLHFZLX0ZPUk1BVF9CQzFfUkdCX1NSR0JfQkxPQ0seVktfRk9STUFUX0JDMV9SR0JBX1VOT1JNX0JMT0NLHVZLX0ZPUk1BVF9CQzFfUkdCQV9TUkdCX0JMT0NLGVZLX0ZPUk1BVF9CQzJfVU5PUk1fQkxPQ0sZVktfRk9STUFUX0JDM19VTk9STV9CTE9DSx1WS19GT1JNQVRfUjE2RzE2QjE2QTE2X1NGTE9BVB1WS19GT1JNQVRfUjMyRzMyQjMyQTMyX1NGTE9BVBJWS19GT1JNQVRfUjhfVU5PUk0TVktfRk9STUFUX1IxNl9VTk9STRRWS19GT1JNQVRfUjMyX1NGTE9BVBxWS19GT1JNQVRfRDMyX1NGTE9BVF9TOF9VSU5UE1ZLX0ZPUk1BVF9EMTZfVU5PUk0bVktfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5UIFZLX0ZPUk1BVF9FVEMyX1I4RzhCOF9TUkdCX0JMT0NLIVZLX0ZPUk1BVF9FVEMyX1I4RzhCOF9VTk9STV9CTE9DSyJWS19GT1JNQVRfRVRDMl9SOEc4QjhBOF9TUkdCX0JMT0NLI1ZLX0ZPUk1BVF9FVEMyX1I4RzhCOEE4X1VOT1JNX0JMT0NLghEMghMGghUGghcIghkGghsGgh0Igh8KDXZrQ3JlYXRlSW1hZ2ULcENyZWF0ZUluZm8EAgVwTmV4dAQCATtWS19TVFJVQ1RVUkVfVFlQRV9ERURJQ0FURURfQUxMT0NBVElPTl9JTUFHRV9DUkVBVEVfSU5GT19OVoIhBIIjBoIlCIInBoIpBoIrCIItCg12a0NyZWF0ZUltYWdlC3BDcmVhdGVJbmZvBAITcFF1ZXVlRmFtaWx5SW5kaWNlcwQBAAIVdmtDcmVhdGVQaXBlbGluZUNhY2hlAYIvBIIxBoIzCII1BoI3BoI5CII7ChV2a0NyZWF0ZVBpcGVsaW5lQ2FjaGULcENyZWF0ZUluZm8EAgxwSW5pdGlhbERhdGEEAQACFnZrQ3JlYXRlUGlwZWxpbmVMYXlvdXQCgj0Egj8GgkEIgkMGgkUGgkcIgkkKFnZrQ3JlYXRlUGlwZWxpbmVMYXlvdXQLcENyZWF0ZUluZm8EAhNwUHVzaENvbnN0YW50UmFuZ2VzBAEAgksEgk0Ggk8IglEGglMGglUIglcKFnZrQ3JlYXRlUGlwZWxpbmVMYXlvdXQLcENyZWF0ZUluZm8EAgtwU2V0TGF5b3V0cwQBAAISdmtDcmVhdGVSZW5kZXJQYXNzB4JZBIJbBoJdCIJfBoJhBoJjCIJlChJ2a0NyZWF0ZVJlbmRlclBhc3MLcENyZWF0ZUluZm8EAgxwQXR0YWNobWVudHMEAQCCZwSCaQaCawiCbQaCbwaCcQiCcwoSdmtDcmVhdGVSZW5kZXJQYXNzC3BDcmVhdGVJbmZvBAINcERlcGVuZGVuY2llcwQBAIJ1BIJ3BoJ5CIJ7BoJ9BoJ/CIKBChJ2a0NyZWF0ZVJlbmRlclBhc3MLcENyZWF0ZUluZm8EAgpwU3VicGFzc2VzBAEAgoMEgoUGgocIgokGgosGgo0Igo8GgpEGgpMIgpUKEnZrQ3JlYXRlUmVuZGVyUGFzcwtwQ3JlYXRlSW5mbwQCCnBTdWJwYXNzZXMEAhFwQ29sb3JBdHRhY2htZW50cwQBAIKXBIKZBoKbCIKdBoKfBoKhCIKjBoKlBoKnCIKpChJ2a0NyZWF0ZVJlbmRlclBhc3MLcENyZWF0ZUluZm8EAgpwU3VicGFzc2VzBAIRcElucHV0QXR0YWNobWVudHMEAQCCqwSCrQaCrwiCsQaCswaCtQiCtwaCuQaCuwiCvQoSdmtDcmVhdGVSZW5kZXJQYXNzC3BDcmVhdGVJbmZvBAIKcFN1YnBhc3NlcwQCFHBQcmVzZXJ2ZUF0dGFjaG1lbnRzBAEAgr8EgsEGgsMIgsUGgscGgskIgssGgs0Ggs8IgtEKEnZrQ3JlYXRlUmVuZGVyUGFzcwtwQ3JlYXRlSW5mbwQCCnBTdWJwYXNzZXMEAhNwUmVzb2x2ZUF0dGFjaG1lbnRzBAEAAhR2a0NyZWF0ZVNoYWRlck1vZHVsZQGC0wSC1QaC1wiC2QaC2waC3QiC3woUdmtDcmVhdGVTaGFkZXJNb2R1bGULcENyZWF0ZUluZm8EAgVwQ29kZQQBAAIUdmtDcmVhdGVTd2FwY2hhaW5LSFIBguEEguMGguUIgucGgukGgusIgu0KFHZrQ3JlYXRlU3dhcGNoYWluS0hSC3BDcmVhdGVJbmZvBAITcFF1ZXVlRmFtaWx5SW5kaWNlcwQBAAIZdmtGbHVzaE1hcHBlZE1lbW9yeVJhbmdlcwACFXZrR2V0UXVlcnlQb29sUmVzdWx0cwGC7wSC8QaC8wiC9QoVdmtHZXRRdWVyeVBvb2xSZXN1bHRzBXBEYXRhBAECAhd2a0dldFN3YXBjaGFpbkltYWdlc0tIUgACC3ZrTWFwTWVtb3J5AYL3BIL5BoL7CIL9Cgt2a01hcE1lbW9yeQZwcERhdGEEAQACEXZrUXVldWVQcmVzZW50S0hSAoL/BIMBBoMDCIMFBoMHBoMJCIMLChF2a1F1ZXVlUHJlc2VudEtIUgxwUHJlc2VudEluZm8EAghwUmVzdWx0cwQBAIMNBIMPBoMRCIMTBoMVBoMXCIMZChF2a1F1ZXVlUHJlc2VudEtIUgxwUHJlc2VudEluZm8EAg9wV2FpdFNlbWFwaG9yZXMEAQACDXZrUXVldWVTdWJtaXQDgxsEgx0Ggx8IgyEGgyMGgyUIgycKDXZrUXVldWVTdWJtaXQIcFN1Ym1pdHMEAhFwU2lnbmFsU2VtYXBob3JlcwQBAIMpBIMrBoMtCIMvBoMxBoMzCIM1Cg12a1F1ZXVlU3VibWl0CHBTdWJtaXRzBAIRcFdhaXREc3RTdGFnZU1hc2sEAQCDNwSDOQaDOwiDPQaDPwaDQQiDQwoNdmtRdWV1ZVN1Ym1pdAhwU3VibWl0cwQCD3BXYWl0U2VtYXBob3JlcwQBAAINdmtSZXNldEZlbmNlcwGDRQSDRwaDSQiDSwoNdmtSZXNldEZlbmNlcwdwRmVuY2VzBAEAAg12a1VubWFwTWVtb3J5AAIWdmtVcGRhdGVEZXNjcmlwdG9yU2V0cwSDTQyDTwiDUQaDUwaDVQiDVwoWdmtVcGRhdGVEZXNjcmlwdG9yU2V0cxFwRGVzY3JpcHRvcldyaXRlcwQCDmRlc2NyaXB0b3JUeXBlCxpWS19ERVNDUklQVE9SX1RZUEVfU0FNUExFUilWS19ERVNDUklQVE9SX1RZUEVfQ09NQklORURfSU1BR0VfU0FNUExFUiBWS19ERVNDUklQVE9SX1RZUEVfU0FNUExFRF9JTUFHRSBWS19ERVNDUklQVE9SX1RZUEVfU1RPUkFHRV9JTUFHRSNWS19ERVNDUklQVE9SX1RZUEVfSU5QVVRfQVRUQUNITUVOVCdWS19ERVNDUklQVE9SX1RZUEVfVU5JRk9STV9URVhFTF9CVUZGRVInVktfREVTQ1JJUFRPUl9UWVBFX1NUT1JBR0VfVEVYRUxfQlVGRkVSIVZLX0RFU0NSSVBUT1JfVFlQRV9VTklGT1JNX0JVRkZFUiFWS19ERVNDUklQVE9SX1RZUEVfU1RPUkFHRV9CVUZGRVIpVktfREVTQ1JJUFRPUl9UWVBFX1VOSUZPUk1fQlVGRkVSX0RZTkFNSUMpVktfREVTQ1JJUFRPUl9UWVBFX1NUT1JBR0VfQlVGRkVSX0RZTkFNSUODWQSDWwaDXQiDXwaDYQaDYwiDZQoWdmtVcGRhdGVEZXNjcmlwdG9yU2V0cxFwRGVzY3JpcHRvcldyaXRlcwQCCnBJbWFnZUluZm8EAQCDZwSDaQaDawiDbQaDbwaDcQiDcwoWdmtVcGRhdGVEZXNjcmlwdG9yU2V0cxFwRGVzY3JpcHRvcldyaXRlcwQCEHBUZXhlbEJ1ZmZlclZpZXcEAQCDdQSDdwaDeQiDewoWdmtVcGRhdGVEZXNjcmlwdG9yU2V0cxFwRGVzY3JpcHRvckNvcGllcwQBAAIPdmtXYWl0Rm9yRmVuY2VzAYN9BIN/BoOBCIODCg92a1dhaXRGb3JGZW5jZXMHcEZlbmNlcwQBAA==
\ No newline at end of file
diff --git a/gapid/gfxapi/vulkan/snippets.text b/gapid/gfxapi/vulkan/snippets.text
index 0ff95b8..68f2534 100644
--- a/gapid/gfxapi/vulkan/snippets.text
+++ b/gapid/gfxapi/vulkan/snippets.text
@@ -2,12 +2,19 @@
Parameter:pCreateInfo.Range().Elem().pQueueCreateInfos.Range().Elem().pQueuePriorities.Range(): [Observation(Read)]
===================================== vkAllocateDescriptorSets
Parameter:pAllocateInfo.Range().Elem().pSetLayouts.Range(): [Observation(Read)]
+===================================== vkAllocateMemory
+Parameter:pAllocateInfo.Range().Elem().pNext.Range().Elem(): [VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV]
===================================== vkCmdBeginRenderPass
Parameter:pRenderPassBegin.Range().Elem().pClearValues.Range(): [Observation(Read)]
===================================== vkCmdBindDescriptorSets
Parameter:pDynamicOffsets.Range(): [Observation(Read)]
===================================== vkCmdBlitImage
Parameter:pRegions.Range(): [Observation(Read)]
+===================================== vkCmdClearAttachments
+Parameter:pAttachments.Range(): [Observation(Read)]
+Parameter:pRects.Range(): [Observation(Read)]
+===================================== vkCmdClearColorImage
+Parameter:pRanges.Range(): [Observation(Read)]
===================================== vkCmdCopyBuffer
Parameter:pRegions.Range(): [Observation(Read)]
===================================== vkCmdCopyBufferToImage
@@ -28,6 +35,7 @@
===================================== vkCmdSetViewport
Parameter:pViewports.Range(): [Observation(Read)]
===================================== vkCreateBuffer
+Parameter:pCreateInfo.Range().Elem().pNext.Range().Elem(): [VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV]
Parameter:pCreateInfo.Range().Elem().pQueueFamilyIndices.Range(): [Observation(Read)]
===================================== vkCreateDescriptorPool
Parameter:pCreateInfo.Range().Elem().pPoolSizes.Range(): [Observation(Read)]
@@ -51,9 +59,12 @@
Parameter:pCreateInfos.Range().Elem().pViewportState.Range().Elem().pScissors.Range(): [Observation(Read)]
Parameter:pCreateInfos.Range().Elem().pViewportState.Range().Elem().pViewports.Range(): [Observation(Read)]
===================================== vkCreateImage
-Global:State.Images.Elem().Format: [VK_FORMAT_R8G8B8_UNORM VK_FORMAT_R8G8B8A8_UNORM VK_FORMAT_B8G8R8A8_UNORM VK_FORMAT_BC2_UNORM_BLOCK VK_FORMAT_BC3_UNORM_BLOCK VK_FORMAT_R16G16B16A16_SFLOAT VK_FORMAT_R32G32B32A32_SFLOAT VK_FORMAT_R8_UNORM VK_FORMAT_R16_UNORM VK_FORMAT_R32_SFLOAT VK_FORMAT_D32_SFLOAT_S8_UINT VK_FORMAT_D16_UNORM VK_FORMAT_D24_UNORM_S8_UINT VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK]
-Parameter:pCreateInfo.Range().Elem().format: [VK_FORMAT_R8G8B8_UNORM VK_FORMAT_R8G8B8A8_UNORM VK_FORMAT_B8G8R8A8_UNORM VK_FORMAT_BC2_UNORM_BLOCK VK_FORMAT_BC3_UNORM_BLOCK VK_FORMAT_R16G16B16A16_SFLOAT VK_FORMAT_R32G32B32A32_SFLOAT VK_FORMAT_R8_UNORM VK_FORMAT_R16_UNORM VK_FORMAT_R32_SFLOAT VK_FORMAT_D32_SFLOAT_S8_UINT VK_FORMAT_D16_UNORM VK_FORMAT_D24_UNORM_S8_UINT VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK]
+Global:State.Images.Elem().Format: [VK_FORMAT_R8G8B8_UNORM VK_FORMAT_R8G8B8A8_UNORM VK_FORMAT_B8G8R8A8_UNORM VK_FORMAT_BC1_RGB_UNORM_BLOCK VK_FORMAT_BC1_RGB_SRGB_BLOCK VK_FORMAT_BC1_RGBA_UNORM_BLOCK VK_FORMAT_BC1_RGBA_SRGB_BLOCK VK_FORMAT_BC2_UNORM_BLOCK VK_FORMAT_BC3_UNORM_BLOCK VK_FORMAT_R16G16B16A16_SFLOAT VK_FORMAT_R32G32B32A32_SFLOAT VK_FORMAT_R8_UNORM VK_FORMAT_R16_UNORM VK_FORMAT_R32_SFLOAT VK_FORMAT_D32_SFLOAT_S8_UINT VK_FORMAT_D16_UNORM VK_FORMAT_D24_UNORM_S8_UINT VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK]
+Parameter:pCreateInfo.Range().Elem().format: [VK_FORMAT_R8G8B8_UNORM VK_FORMAT_R8G8B8A8_UNORM VK_FORMAT_B8G8R8A8_UNORM VK_FORMAT_BC1_RGB_UNORM_BLOCK VK_FORMAT_BC1_RGB_SRGB_BLOCK VK_FORMAT_BC1_RGBA_UNORM_BLOCK VK_FORMAT_BC1_RGBA_SRGB_BLOCK VK_FORMAT_BC2_UNORM_BLOCK VK_FORMAT_BC3_UNORM_BLOCK VK_FORMAT_R16G16B16A16_SFLOAT VK_FORMAT_R32G32B32A32_SFLOAT VK_FORMAT_R8_UNORM VK_FORMAT_R16_UNORM VK_FORMAT_R32_SFLOAT VK_FORMAT_D32_SFLOAT_S8_UINT VK_FORMAT_D16_UNORM VK_FORMAT_D24_UNORM_S8_UINT VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK]
+Parameter:pCreateInfo.Range().Elem().pNext.Range().Elem(): [VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV]
Parameter:pCreateInfo.Range().Elem().pQueueFamilyIndices.Range(): [Observation(Read)]
+===================================== vkCreatePipelineCache
+Parameter:pCreateInfo.Range().Elem().pInitialData.Range(): [Observation(Read)]
===================================== vkCreatePipelineLayout
Parameter:pCreateInfo.Range().Elem().pPushConstantRanges.Range(): [Observation(Read)]
Parameter:pCreateInfo.Range().Elem().pSetLayouts.Range(): [Observation(Read)]
@@ -74,7 +85,7 @@
===================================== vkGetQueryPoolResults
Parameter:pData.Range(): [Observation(Write)]
===================================== vkGetSwapchainImagesKHR
-Global:State.Images.Elem().Format: [VK_FORMAT_R8G8B8_UNORM VK_FORMAT_R8G8B8A8_UNORM VK_FORMAT_B8G8R8A8_UNORM VK_FORMAT_BC2_UNORM_BLOCK VK_FORMAT_BC3_UNORM_BLOCK VK_FORMAT_R16G16B16A16_SFLOAT VK_FORMAT_R32G32B32A32_SFLOAT VK_FORMAT_R8_UNORM VK_FORMAT_R16_UNORM VK_FORMAT_R32_SFLOAT VK_FORMAT_D32_SFLOAT_S8_UINT VK_FORMAT_D16_UNORM VK_FORMAT_D24_UNORM_S8_UINT VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK]
+Global:State.Images.Elem().Format: [VK_FORMAT_R8G8B8_UNORM VK_FORMAT_R8G8B8A8_UNORM VK_FORMAT_B8G8R8A8_UNORM VK_FORMAT_BC1_RGB_UNORM_BLOCK VK_FORMAT_BC1_RGB_SRGB_BLOCK VK_FORMAT_BC1_RGBA_UNORM_BLOCK VK_FORMAT_BC1_RGBA_SRGB_BLOCK VK_FORMAT_BC2_UNORM_BLOCK VK_FORMAT_BC3_UNORM_BLOCK VK_FORMAT_R16G16B16A16_SFLOAT VK_FORMAT_R32G32B32A32_SFLOAT VK_FORMAT_R8_UNORM VK_FORMAT_R16_UNORM VK_FORMAT_R32_SFLOAT VK_FORMAT_D32_SFLOAT_S8_UINT VK_FORMAT_D16_UNORM VK_FORMAT_D24_UNORM_S8_UINT VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK]
Global:State.Images.Elem().Layout: [VK_IMAGE_LAYOUT_UNDEFINED]
Global:State.Images.Elem().Samples: [VK_SAMPLE_COUNT_1_BIT]
Global:State.Images.Elem().Type: [VK_IMAGE_TYPE_2D]
@@ -87,6 +98,8 @@
Parameter:pSubmits.Range().Elem().pSignalSemaphores.Range(): [Observation(Read)]
Parameter:pSubmits.Range().Elem().pWaitDstStageMask.Range(): [Observation(Read)]
Parameter:pSubmits.Range().Elem().pWaitSemaphores.Range(): [Observation(Read)]
+===================================== vkResetFences
+Parameter:pFences.Range(): [Observation(Read)]
===================================== vkUnmapMemory
Global:State.DeviceMemories.Elem().Data: [Observation(Write) Observation(Read)]
Global:State.PhysicalDevices.Elem().MemoryProperties.memoryTypes.Elem().propertyFlags: [VK_MEMORY_PROPERTY_HOST_COHERENT_BIT]
diff --git a/gapid/gfxapi/vulkan/snippets_embed.go b/gapid/gfxapi/vulkan/snippets_embed.go
index 7202b75..41d50c3 100644
--- a/gapid/gfxapi/vulkan/snippets_embed.go
+++ b/gapid/gfxapi/vulkan/snippets_embed.go
@@ -16,7 +16,7 @@
const snippets_base64_file = `snippets.base64`
const snippets_base64_utf8 = true
-const snippets_base64 = `AwhzbmlwcGV0cwxBdG9tU25pcHBldHMAArAGAxRSZXBsYXlDcmVhdGVWa0RldmljZQEDBQhzbmlwcGV0cwxPYnNlcnZhdGlvbnMAAgMGUAUHCHNuaXBwZXRzCHBhcnRQYXRoAAIDUAcJCHNuaXBwZXRzCWZpZWxkUGF0aAACA7AJBgsGDQgPBhEGEwgVCwhzbmlwcGV0cwxyZWxhdGl2ZVBhdGgAAbAUUmVwbGF5Q3JlYXRlVmtEZXZpY2ULcENyZWF0ZUluZm8EAhFwUXVldWVDcmVhdGVJbmZvcwQCEHBRdWV1ZVByaW9yaXRpZXMEAQACGHZrQWxsb2NhdGVEZXNjcmlwdG9yU2V0cwEXBBkGGwgdBh8GIQgjChh2a0FsbG9jYXRlRGVzY3JpcHRvclNldHMNcEFsbG9jYXRlSW5mbwQCC3BTZXRMYXlvdXRzBAEAAhR2a0NtZEJlZ2luUmVuZGVyUGFzcwElBCcGKQgrBi0GLwgxChR2a0NtZEJlZ2luUmVuZGVyUGFzcxBwUmVuZGVyUGFzc0JlZ2luBAIMcENsZWFyVmFsdWVzBAEAAhd2a0NtZEJpbmREZXNjcmlwdG9yU2V0cwEzBDUGNwg5Chd2a0NtZEJpbmREZXNjcmlwdG9yU2V0cw9wRHluYW1pY09mZnNldHMEAQACDnZrQ21kQmxpdEltYWdlATsEPQY/CEEKDnZrQ21kQmxpdEltYWdlCHBSZWdpb25zBAEAAg92a0NtZENvcHlCdWZmZXIBQwRFBkcISQoPdmtDbWRDb3B5QnVmZmVyCHBSZWdpb25zBAEAAhZ2a0NtZENvcHlCdWZmZXJUb0ltYWdlAUsETQZPCFEKFnZrQ21kQ29weUJ1ZmZlclRvSW1hZ2UIcFJlZ2lvbnMEAQACFnZrQ21kQ29weUltYWdlVG9CdWZmZXIBUwRVBlcIWQoWdmtDbWRDb3B5SW1hZ2VUb0J1ZmZlcghwUmVnaW9ucwQBAAIUdmtDbWRFeGVjdXRlQ29tbWFuZHMBWwRdBl8IYQoUdmtDbWRFeGVjdXRlQ29tbWFuZHMPcENvbW1hbmRCdWZmZXJzBAEAAhR2a0NtZFBpcGVsaW5lQmFycmllcgJjBGUGZwhpChR2a0NtZFBpcGVsaW5lQmFycmllcg9wTWVtb3J5QmFycmllcnMEAQBrBG0GbwhxChR2a0NtZFBpcGVsaW5lQmFycmllchVwQnVmZmVyTWVtb3J5QmFycmllcnMEAQACEnZrQ21kUHVzaENvbnN0YW50cwFzBHUGdwh5ChJ2a0NtZFB1c2hDb25zdGFudHMHcFZhbHVlcwQBAAIRdmtDbWRSZXNvbHZlSW1hZ2UBewR9Bn8IgIEKEXZrQ21kUmVzb2x2ZUltYWdlCHBSZWdpb25zBAEAAg92a0NtZFNldFNjaXNzb3IBgIMEgIUGgIcIgIkKD3ZrQ21kU2V0U2Npc3NvcglwU2Npc3NvcnMEAQACEHZrQ21kU2V0Vmlld3BvcnQBgIsEgI0GgI8IgJEKEHZrQ21kU2V0Vmlld3BvcnQKcFZpZXdwb3J0cwQBAAIOdmtDcmVhdGVCdWZmZXIBgJMEgJUGgJcIgJkGgJsGgJ0IgJ8KDnZrQ3JlYXRlQnVmZmVyC3BDcmVhdGVJbmZvBAITcFF1ZXVlRmFtaWx5SW5kaWNlcwQBAAIWdmtDcmVhdGVEZXNjcmlwdG9yUG9vbAGAoQSAowaApQiApwaAqQaAqwiArQoWdmtDcmVhdGVEZXNjcmlwdG9yUG9vbAtwQ3JlYXRlSW5mbwQCCnBQb29sU2l6ZXMEAQACG3ZrQ3JlYXRlRGVzY3JpcHRvclNldExheW91dAGArwSAsQaAswiAtQaAtwaAuQiAuwaAvQaAvwiAwQobdmtDcmVhdGVEZXNjcmlwdG9yU2V0TGF5b3V0C3BDcmVhdGVJbmZvBAIJcEJpbmRpbmdzBAIScEltbXV0YWJsZVNhbXBsZXJzBAEAAg52a0NyZWF0ZURldmljZQGAwwSAxQaAxwiAyQaAywaAzQiAzwaA0QaA0wiA1QoOdmtDcmVhdGVEZXZpY2ULcENyZWF0ZUluZm8EAhFwUXVldWVDcmVhdGVJbmZvcwQCEHBRdWV1ZVByaW9yaXRpZXMEAQACDXZrQ3JlYXRlRmVuY2UBgNcNCHNuaXBwZXRzBkxhYmVscwACAwawgNkIgNsGgN0GgN8IgOEKDXZrQ3JlYXRlRmVuY2ULcENyZWF0ZUluZm8EAgVmbGFncwEcVktfRkVOQ0VfQ1JFQVRFX1NJR05BTEVEX0JJVAIZdmtDcmVhdGVHcmFwaGljc1BpcGVsaW5lcwyA4wSA5QaA5wiA6QaA6waA7QiA7waA8QaA8wiA9QoZdmtDcmVhdGVHcmFwaGljc1BpcGVsaW5lcwxwQ3JlYXRlSW5mb3MEAhBwQ29sb3JCbGVuZFN0YXRlBAIMcEF0dGFjaG1lbnRzBAEAgPcEgPkGgPsIgP0GgP8GgQEIgQMKGXZrQ3JlYXRlR3JhcGhpY3NQaXBlbGluZXMMcENyZWF0ZUluZm9zBAIScERlcHRoU3RlbmNpbFN0YXRlBAEAgQUEgQcGgQkIgQsGgQ0GgQ8IgREGgRMGgRUIgRcKGXZrQ3JlYXRlR3JhcGhpY3NQaXBlbGluZXMMcENyZWF0ZUluZm9zBAINcER5bmFtaWNTdGF0ZQQCDnBEeW5hbWljU3RhdGVzBAEAgRkEgRsGgR0IgR8GgSEGgSMIgSUKGXZrQ3JlYXRlR3JhcGhpY3NQaXBlbGluZXMMcENyZWF0ZUluZm9zBAITcElucHV0QXNzZW1ibHlTdGF0ZQQBAIEnBIEpBoErCIEtBoEvBoExCIEzBoE1BoE3CIE5Chl2a0NyZWF0ZUdyYXBoaWNzUGlwZWxpbmVzDHBDcmVhdGVJbmZvcwQCEXBNdWx0aXNhbXBsZVN0YXRlBAILcFNhbXBsZU1hc2sEAQCBOwSBPQaBPwiBQQaBQwaBRQiBRwaBSQaBSwiBTQaBTwaBUQiBUwoZdmtDcmVhdGVHcmFwaGljc1BpcGVsaW5lcwxwQ3JlYXRlSW5mb3MEAgdwU3RhZ2VzBAITcFNwZWNpYWxpemF0aW9uSW5mbwQCBXBEYXRhBAEAgVUEgVcGgVkIgVsGgV0GgV8IgWEGgWMGgWUIgWcGgWkGgWsIgW0KGXZrQ3JlYXRlR3JhcGhpY3NQaXBlbGluZXMMcENyZWF0ZUluZm9zBAIHcFN0YWdlcwQCE3BTcGVjaWFsaXphdGlvbkluZm8EAgtwTWFwRW50cmllcwQBAIFvBIFxBoFzCIF1BoF3BoF5CIF7Chl2a0NyZWF0ZUdyYXBoaWNzUGlwZWxpbmVzDHBDcmVhdGVJbmZvcwQCEnBUZXNzZWxsYXRpb25TdGF0ZQQBAIF9BIF/BoGBCIGDBoGFBoGHCIGJBoGLBoGNCIGPChl2a0NyZWF0ZUdyYXBoaWNzUGlwZWxpbmVzDHBDcmVhdGVJbmZvcwQCEXBWZXJ0ZXhJbnB1dFN0YXRlBAIccFZlcnRleEF0dHJpYnV0ZURlc2NyaXB0aW9ucwQBAIGRBIGTBoGVCIGXBoGZBoGbCIGdBoGfBoGhCIGjChl2a0NyZWF0ZUdyYXBoaWNzUGlwZWxpbmVzDHBDcmVhdGVJbmZvcwQCEXBWZXJ0ZXhJbnB1dFN0YXRlBAIacFZlcnRleEJpbmRpbmdEZXNjcmlwdGlvbnMEAQCBpQSBpwaBqQiBqwaBrQaBrwiBsQaBswaBtQiBtwoZdmtDcmVhdGVHcmFwaGljc1BpcGVsaW5lcwxwQ3JlYXRlSW5mb3MEAg5wVmlld3BvcnRTdGF0ZQQCCXBTY2lzc29ycwQBAIG5BIG7BoG9CIG/BoHBBoHDCIHFBoHHBoHJCIHLChl2a0NyZWF0ZUdyYXBoaWNzUGlwZWxpbmVzDHBDcmVhdGVJbmZvcwQCDnBWaWV3cG9ydFN0YXRlBAIKcFZpZXdwb3J0cwQBAAINdmtDcmVhdGVJbWFnZQKBzQyBzwiB0QaB0waB1QiB1woNdmtDcmVhdGVJbWFnZQtwQ3JlYXRlSW5mbwQCBmZvcm1hdBEWVktfRk9STUFUX1I4RzhCOF9VTk9STRhWS19GT1JNQVRfUjhHOEI4QThfVU5PUk0YVktfRk9STUFUX0I4RzhSOEE4X1VOT1JNGVZLX0ZPUk1BVF9CQzJfVU5PUk1fQkxPQ0sZVktfRk9STUFUX0JDM19VTk9STV9CTE9DSx1WS19GT1JNQVRfUjE2RzE2QjE2QTE2X1NGTE9BVB1WS19GT1JNQVRfUjMyRzMyQjMyQTMyX1NGTE9BVBJWS19GT1JNQVRfUjhfVU5PUk0TVktfRk9STUFUX1IxNl9VTk9STRRWS19GT1JNQVRfUjMyX1NGTE9BVBxWS19GT1JNQVRfRDMyX1NGTE9BVF9TOF9VSU5UE1ZLX0ZPUk1BVF9EMTZfVU5PUk0bVktfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5UIFZLX0ZPUk1BVF9FVEMyX1I4RzhCOF9TUkdCX0JMT0NLIVZLX0ZPUk1BVF9FVEMyX1I4RzhCOF9VTk9STV9CTE9DSyJWS19GT1JNQVRfRVRDMl9SOEc4QjhBOF9TUkdCX0JMT0NLI1ZLX0ZPUk1BVF9FVEMyX1I4RzhCOEE4X1VOT1JNX0JMT0NLgdkEgdsGgd0Igd8GgeEGgeMIgeUKDXZrQ3JlYXRlSW1hZ2ULcENyZWF0ZUluZm8EAhNwUXVldWVGYW1pbHlJbmRpY2VzBAEAAhZ2a0NyZWF0ZVBpcGVsaW5lTGF5b3V0AoHnBIHpBoHrCIHtBoHvBoHxCIHzChZ2a0NyZWF0ZVBpcGVsaW5lTGF5b3V0C3BDcmVhdGVJbmZvBAITcFB1c2hDb25zdGFudFJhbmdlcwQBAIH1BIH3BoH5CIH7BoH9BoH/CIIBChZ2a0NyZWF0ZVBpcGVsaW5lTGF5b3V0C3BDcmVhdGVJbmZvBAILcFNldExheW91dHMEAQACEnZrQ3JlYXRlUmVuZGVyUGFzcweCAwSCBQaCBwiCCQaCCwaCDQiCDwoSdmtDcmVhdGVSZW5kZXJQYXNzC3BDcmVhdGVJbmZvBAIMcEF0dGFjaG1lbnRzBAEAghEEghMGghUIghcGghkGghsIgh0KEnZrQ3JlYXRlUmVuZGVyUGFzcwtwQ3JlYXRlSW5mbwQCDXBEZXBlbmRlbmNpZXMEAQCCHwSCIQaCIwiCJQaCJwaCKQiCKwoSdmtDcmVhdGVSZW5kZXJQYXNzC3BDcmVhdGVJbmZvBAIKcFN1YnBhc3NlcwQBAIItBIIvBoIxCIIzBoI1BoI3CII5BoI7BoI9CII/ChJ2a0NyZWF0ZVJlbmRlclBhc3MLcENyZWF0ZUluZm8EAgpwU3VicGFzc2VzBAIRcENvbG9yQXR0YWNobWVudHMEAQCCQQSCQwaCRQiCRwaCSQaCSwiCTQaCTwaCUQiCUwoSdmtDcmVhdGVSZW5kZXJQYXNzC3BDcmVhdGVJbmZvBAIKcFN1YnBhc3NlcwQCEXBJbnB1dEF0dGFjaG1lbnRzBAEAglUEglcGglkIglsGgl0Ggl8IgmEGgmMGgmUIgmcKEnZrQ3JlYXRlUmVuZGVyUGFzcwtwQ3JlYXRlSW5mbwQCCnBTdWJwYXNzZXMEAhRwUHJlc2VydmVBdHRhY2htZW50cwQBAIJpBIJrBoJtCIJvBoJxBoJzCIJ1BoJ3BoJ5CIJ7ChJ2a0NyZWF0ZVJlbmRlclBhc3MLcENyZWF0ZUluZm8EAgpwU3VicGFzc2VzBAITcFJlc29sdmVBdHRhY2htZW50cwQBAAIUdmtDcmVhdGVTaGFkZXJNb2R1bGUBgn0Egn8GgoEIgoMGgoUGgocIgokKFHZrQ3JlYXRlU2hhZGVyTW9kdWxlC3BDcmVhdGVJbmZvBAIFcENvZGUEAQACFHZrQ3JlYXRlU3dhcGNoYWluS0hSAYKLBIKNBoKPCIKRBoKTBoKVCIKXChR2a0NyZWF0ZVN3YXBjaGFpbktIUgtwQ3JlYXRlSW5mbwQCE3BRdWV1ZUZhbWlseUluZGljZXMEAQACGXZrRmx1c2hNYXBwZWRNZW1vcnlSYW5nZXMAAhd2a0dldFN3YXBjaGFpbkltYWdlc0tIUgACC3ZrTWFwTWVtb3J5AYKZBIKbBoKdCIKfCgt2a01hcE1lbW9yeQZwcERhdGEEAQACEXZrUXVldWVQcmVzZW50S0hSAoKhBIKjBoKlCIKnBoKpBoKrCIKtChF2a1F1ZXVlUHJlc2VudEtIUgxwUHJlc2VudEluZm8EAghwUmVzdWx0cwQBAIKvBIKxBoKzCIK1BoK3BoK5CIK7ChF2a1F1ZXVlUHJlc2VudEtIUgxwUHJlc2VudEluZm8EAg9wV2FpdFNlbWFwaG9yZXMEAQACDXZrUXVldWVTdWJtaXQDgr0Egr8GgsEIgsMGgsUGgscIgskKDXZrUXVldWVTdWJtaXQIcFN1Ym1pdHMEAhFwU2lnbmFsU2VtYXBob3JlcwQBAILLBILNBoLPCILRBoLTBoLVCILXCg12a1F1ZXVlU3VibWl0CHBTdWJtaXRzBAIRcFdhaXREc3RTdGFnZU1hc2sEAQCC2QSC2waC3QiC3waC4QaC4wiC5QoNdmtRdWV1ZVN1Ym1pdAhwU3VibWl0cwQCD3BXYWl0U2VtYXBob3JlcwQBAAINdmtVbm1hcE1lbW9yeQACFnZrVXBkYXRlRGVzY3JpcHRvclNldHMEgucMgukIgusGgu0Ggu8IgvEKFnZrVXBkYXRlRGVzY3JpcHRvclNldHMRcERlc2NyaXB0b3JXcml0ZXMEAg5kZXNjcmlwdG9yVHlwZQsaVktfREVTQ1JJUFRPUl9UWVBFX1NBTVBMRVIpVktfREVTQ1JJUFRPUl9UWVBFX0NPTUJJTkVEX0lNQUdFX1NBTVBMRVIgVktfREVTQ1JJUFRPUl9UWVBFX1NBTVBMRURfSU1BR0UgVktfREVTQ1JJUFRPUl9UWVBFX1NUT1JBR0VfSU1BR0UjVktfREVTQ1JJUFRPUl9UWVBFX0lOUFVUX0FUVEFDSE1FTlQnVktfREVTQ1JJUFRPUl9UWVBFX1VOSUZPUk1fVEVYRUxfQlVGRkVSJ1ZLX0RFU0NSSVBUT1JfVFlQRV9TVE9SQUdFX1RFWEVMX0JVRkZFUiFWS19ERVNDUklQVE9SX1RZUEVfVU5JRk9STV9CVUZGRVIhVktfREVTQ1JJUFRPUl9UWVBFX1NUT1JBR0VfQlVGRkVSKVZLX0RFU0NSSVBUT1JfVFlQRV9VTklGT1JNX0JVRkZFUl9EWU5BTUlDKVZLX0RFU0NSSVBUT1JfVFlQRV9TVE9SQUdFX0JVRkZFUl9EWU5BTUlDgvMEgvUGgvcIgvkGgvsGgv0Igv8KFnZrVXBkYXRlRGVzY3JpcHRvclNldHMRcERlc2NyaXB0b3JXcml0ZXMEAgpwSW1hZ2VJbmZvBAEAgwEEgwMGgwUIgwcGgwkGgwsIgw0KFnZrVXBkYXRlRGVzY3JpcHRvclNldHMRcERlc2NyaXB0b3JXcml0ZXMEAhBwVGV4ZWxCdWZmZXJWaWV3BAEAgw8EgxEGgxMIgxUKFnZrVXBkYXRlRGVzY3JpcHRvclNldHMRcERlc2NyaXB0b3JDb3BpZXMEAQACD3ZrV2FpdEZvckZlbmNlcwGDFwSDGQaDGwiDHQoPdmtXYWl0Rm9yRmVuY2VzB3BGZW5jZXMEAQA=`
+const snippets_base64 = `AwhzbmlwcGV0cwxBdG9tU25pcHBldHMAArAGAxRSZXBsYXlDcmVhdGVWa0RldmljZQEDBQhzbmlwcGV0cwxPYnNlcnZhdGlvbnMAAgMGUAUHCHNuaXBwZXRzCHBhcnRQYXRoAAIDUAcJCHNuaXBwZXRzCWZpZWxkUGF0aAACA7AJBgsGDQgPBhEGEwgVCwhzbmlwcGV0cwxyZWxhdGl2ZVBhdGgAAbAUUmVwbGF5Q3JlYXRlVmtEZXZpY2ULcENyZWF0ZUluZm8EAhFwUXVldWVDcmVhdGVJbmZvcwQCEHBRdWV1ZVByaW9yaXRpZXMEAQACGHZrQWxsb2NhdGVEZXNjcmlwdG9yU2V0cwEXBBkGGwgdBh8GIQgjChh2a0FsbG9jYXRlRGVzY3JpcHRvclNldHMNcEFsbG9jYXRlSW5mbwQCC3BTZXRMYXlvdXRzBAEAAhB2a0FsbG9jYXRlTWVtb3J5ASUNCHNuaXBwZXRzBkxhYmVscwACAwawJwYpBisILQYvBjEIMwoQdmtBbGxvY2F0ZU1lbW9yeQ1wQWxsb2NhdGVJbmZvBAIFcE5leHQEAgE+VktfU1RSVUNUVVJFX1RZUEVfREVESUNBVEVEX0FMTE9DQVRJT05fTUVNT1JZX0FMTE9DQVRFX0lORk9fTlYCFHZrQ21kQmVnaW5SZW5kZXJQYXNzATUENwY5CDsGPQY/CEEKFHZrQ21kQmVnaW5SZW5kZXJQYXNzEHBSZW5kZXJQYXNzQmVnaW4EAgxwQ2xlYXJWYWx1ZXMEAQACF3ZrQ21kQmluZERlc2NyaXB0b3JTZXRzAUMERQZHCEkKF3ZrQ21kQmluZERlc2NyaXB0b3JTZXRzD3BEeW5hbWljT2Zmc2V0cwQBAAIOdmtDbWRCbGl0SW1hZ2UBSwRNBk8IUQoOdmtDbWRCbGl0SW1hZ2UIcFJlZ2lvbnMEAQACFXZrQ21kQ2xlYXJBdHRhY2htZW50cwJTBFUGVwhZChV2a0NtZENsZWFyQXR0YWNobWVudHMMcEF0dGFjaG1lbnRzBAEAWwRdBl8IYQoVdmtDbWRDbGVhckF0dGFjaG1lbnRzBnBSZWN0cwQBAAIUdmtDbWRDbGVhckNvbG9ySW1hZ2UBYwRlBmcIaQoUdmtDbWRDbGVhckNvbG9ySW1hZ2UHcFJhbmdlcwQBAAIPdmtDbWRDb3B5QnVmZmVyAWsEbQZvCHEKD3ZrQ21kQ29weUJ1ZmZlcghwUmVnaW9ucwQBAAIWdmtDbWRDb3B5QnVmZmVyVG9JbWFnZQFzBHUGdwh5ChZ2a0NtZENvcHlCdWZmZXJUb0ltYWdlCHBSZWdpb25zBAEAAhZ2a0NtZENvcHlJbWFnZVRvQnVmZmVyAXsEfQZ/CICBChZ2a0NtZENvcHlJbWFnZVRvQnVmZmVyCHBSZWdpb25zBAEAAhR2a0NtZEV4ZWN1dGVDb21tYW5kcwGAgwSAhQaAhwiAiQoUdmtDbWRFeGVjdXRlQ29tbWFuZHMPcENvbW1hbmRCdWZmZXJzBAEAAhR2a0NtZFBpcGVsaW5lQmFycmllcgKAiwSAjQaAjwiAkQoUdmtDbWRQaXBlbGluZUJhcnJpZXIPcE1lbW9yeUJhcnJpZXJzBAEAgJMEgJUGgJcIgJkKFHZrQ21kUGlwZWxpbmVCYXJyaWVyFXBCdWZmZXJNZW1vcnlCYXJyaWVycwQBAAISdmtDbWRQdXNoQ29uc3RhbnRzAYCbBICdBoCfCIChChJ2a0NtZFB1c2hDb25zdGFudHMHcFZhbHVlcwQBAAIRdmtDbWRSZXNvbHZlSW1hZ2UBgKMEgKUGgKcIgKkKEXZrQ21kUmVzb2x2ZUltYWdlCHBSZWdpb25zBAEAAg92a0NtZFNldFNjaXNzb3IBgKsEgK0GgK8IgLEKD3ZrQ21kU2V0U2Npc3NvcglwU2Npc3NvcnMEAQACEHZrQ21kU2V0Vmlld3BvcnQBgLMEgLUGgLcIgLkKEHZrQ21kU2V0Vmlld3BvcnQKcFZpZXdwb3J0cwQBAAIOdmtDcmVhdGVCdWZmZXICgLsMgL0GgL8GgMEIgMMGgMUGgMcIgMkKDnZrQ3JlYXRlQnVmZmVyC3BDcmVhdGVJbmZvBAIFcE5leHQEAgE8VktfU1RSVUNUVVJFX1RZUEVfREVESUNBVEVEX0FMTE9DQVRJT05fQlVGRkVSX0NSRUFURV9JTkZPX05WgMsEgM0GgM8IgNEGgNMGgNUIgNcKDnZrQ3JlYXRlQnVmZmVyC3BDcmVhdGVJbmZvBAITcFF1ZXVlRmFtaWx5SW5kaWNlcwQBAAIWdmtDcmVhdGVEZXNjcmlwdG9yUG9vbAGA2QSA2waA3QiA3waA4QaA4wiA5QoWdmtDcmVhdGVEZXNjcmlwdG9yUG9vbAtwQ3JlYXRlSW5mbwQCCnBQb29sU2l6ZXMEAQACG3ZrQ3JlYXRlRGVzY3JpcHRvclNldExheW91dAGA5wSA6QaA6wiA7QaA7waA8QiA8waA9QaA9wiA+QobdmtDcmVhdGVEZXNjcmlwdG9yU2V0TGF5b3V0C3BDcmVhdGVJbmZvBAIJcEJpbmRpbmdzBAIScEltbXV0YWJsZVNhbXBsZXJzBAEAAg52a0NyZWF0ZURldmljZQGA+wSA/QaA/wiBAQaBAwaBBQiBBwaBCQaBCwiBDQoOdmtDcmVhdGVEZXZpY2ULcENyZWF0ZUluZm8EAhFwUXVldWVDcmVhdGVJbmZvcwQCEHBRdWV1ZVByaW9yaXRpZXMEAQACDXZrQ3JlYXRlRmVuY2UBgQ8MgREIgRMGgRUGgRcIgRkKDXZrQ3JlYXRlRmVuY2ULcENyZWF0ZUluZm8EAgVmbGFncwEcVktfRkVOQ0VfQ1JFQVRFX1NJR05BTEVEX0JJVAIZdmtDcmVhdGVHcmFwaGljc1BpcGVsaW5lcwyBGwSBHQaBHwiBIQaBIwaBJQiBJwaBKQaBKwiBLQoZdmtDcmVhdGVHcmFwaGljc1BpcGVsaW5lcwxwQ3JlYXRlSW5mb3MEAhBwQ29sb3JCbGVuZFN0YXRlBAIMcEF0dGFjaG1lbnRzBAEAgS8EgTEGgTMIgTUGgTcGgTkIgTsKGXZrQ3JlYXRlR3JhcGhpY3NQaXBlbGluZXMMcENyZWF0ZUluZm9zBAIScERlcHRoU3RlbmNpbFN0YXRlBAEAgT0EgT8GgUEIgUMGgUUGgUcIgUkGgUsGgU0IgU8KGXZrQ3JlYXRlR3JhcGhpY3NQaXBlbGluZXMMcENyZWF0ZUluZm9zBAINcER5bmFtaWNTdGF0ZQQCDnBEeW5hbWljU3RhdGVzBAEAgVEEgVMGgVUIgVcGgVkGgVsIgV0KGXZrQ3JlYXRlR3JhcGhpY3NQaXBlbGluZXMMcENyZWF0ZUluZm9zBAITcElucHV0QXNzZW1ibHlTdGF0ZQQBAIFfBIFhBoFjCIFlBoFnBoFpCIFrBoFtBoFvCIFxChl2a0NyZWF0ZUdyYXBoaWNzUGlwZWxpbmVzDHBDcmVhdGVJbmZvcwQCEXBNdWx0aXNhbXBsZVN0YXRlBAILcFNhbXBsZU1hc2sEAQCBcwSBdQaBdwiBeQaBewaBfQiBfwaBgQaBgwiBhQaBhwaBiQiBiwoZdmtDcmVhdGVHcmFwaGljc1BpcGVsaW5lcwxwQ3JlYXRlSW5mb3MEAgdwU3RhZ2VzBAITcFNwZWNpYWxpemF0aW9uSW5mbwQCBXBEYXRhBAEAgY0EgY8GgZEIgZMGgZUGgZcIgZkGgZsGgZ0IgZ8GgaEGgaMIgaUKGXZrQ3JlYXRlR3JhcGhpY3NQaXBlbGluZXMMcENyZWF0ZUluZm9zBAIHcFN0YWdlcwQCE3BTcGVjaWFsaXphdGlvbkluZm8EAgtwTWFwRW50cmllcwQBAIGnBIGpBoGrCIGtBoGvBoGxCIGzChl2a0NyZWF0ZUdyYXBoaWNzUGlwZWxpbmVzDHBDcmVhdGVJbmZvcwQCEnBUZXNzZWxsYXRpb25TdGF0ZQQBAIG1BIG3BoG5CIG7BoG9BoG/CIHBBoHDBoHFCIHHChl2a0NyZWF0ZUdyYXBoaWNzUGlwZWxpbmVzDHBDcmVhdGVJbmZvcwQCEXBWZXJ0ZXhJbnB1dFN0YXRlBAIccFZlcnRleEF0dHJpYnV0ZURlc2NyaXB0aW9ucwQBAIHJBIHLBoHNCIHPBoHRBoHTCIHVBoHXBoHZCIHbChl2a0NyZWF0ZUdyYXBoaWNzUGlwZWxpbmVzDHBDcmVhdGVJbmZvcwQCEXBWZXJ0ZXhJbnB1dFN0YXRlBAIacFZlcnRleEJpbmRpbmdEZXNjcmlwdGlvbnMEAQCB3QSB3waB4QiB4waB5QaB5wiB6QaB6waB7QiB7woZdmtDcmVhdGVHcmFwaGljc1BpcGVsaW5lcwxwQ3JlYXRlSW5mb3MEAg5wVmlld3BvcnRTdGF0ZQQCCXBTY2lzc29ycwQBAIHxBIHzBoH1CIH3BoH5BoH7CIH9BoH/BoIBCIIDChl2a0NyZWF0ZUdyYXBoaWNzUGlwZWxpbmVzDHBDcmVhdGVJbmZvcwQCDnBWaWV3cG9ydFN0YXRlBAIKcFZpZXdwb3J0cwQBAAINdmtDcmVhdGVJbWFnZQOCBQyCBwiCCQaCCwaCDQiCDwoNdmtDcmVhdGVJbWFnZQtwQ3JlYXRlSW5mbwQCBmZvcm1hdBUWVktfRk9STUFUX1I4RzhCOF9VTk9STRhWS19GT1JNQVRfUjhHOEI4QThfVU5PUk0YVktfRk9STUFUX0I4RzhSOEE4X1VOT1JNHVZLX0ZPUk1BVF9CQzFfUkdCX1VOT1JNX0JMT0NLHFZLX0ZPUk1BVF9CQzFfUkdCX1NSR0JfQkxPQ0seVktfRk9STUFUX0JDMV9SR0JBX1VOT1JNX0JMT0NLHVZLX0ZPUk1BVF9CQzFfUkdCQV9TUkdCX0JMT0NLGVZLX0ZPUk1BVF9CQzJfVU5PUk1fQkxPQ0sZVktfRk9STUFUX0JDM19VTk9STV9CTE9DSx1WS19GT1JNQVRfUjE2RzE2QjE2QTE2X1NGTE9BVB1WS19GT1JNQVRfUjMyRzMyQjMyQTMyX1NGTE9BVBJWS19GT1JNQVRfUjhfVU5PUk0TVktfRk9STUFUX1IxNl9VTk9STRRWS19GT1JNQVRfUjMyX1NGTE9BVBxWS19GT1JNQVRfRDMyX1NGTE9BVF9TOF9VSU5UE1ZLX0ZPUk1BVF9EMTZfVU5PUk0bVktfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5UIFZLX0ZPUk1BVF9FVEMyX1I4RzhCOF9TUkdCX0JMT0NLIVZLX0ZPUk1BVF9FVEMyX1I4RzhCOF9VTk9STV9CTE9DSyJWS19GT1JNQVRfRVRDMl9SOEc4QjhBOF9TUkdCX0JMT0NLI1ZLX0ZPUk1BVF9FVEMyX1I4RzhCOEE4X1VOT1JNX0JMT0NLghEMghMGghUGghcIghkGghsGgh0Igh8KDXZrQ3JlYXRlSW1hZ2ULcENyZWF0ZUluZm8EAgVwTmV4dAQCATtWS19TVFJVQ1RVUkVfVFlQRV9ERURJQ0FURURfQUxMT0NBVElPTl9JTUFHRV9DUkVBVEVfSU5GT19OVoIhBIIjBoIlCIInBoIpBoIrCIItCg12a0NyZWF0ZUltYWdlC3BDcmVhdGVJbmZvBAITcFF1ZXVlRmFtaWx5SW5kaWNlcwQBAAIVdmtDcmVhdGVQaXBlbGluZUNhY2hlAYIvBIIxBoIzCII1BoI3BoI5CII7ChV2a0NyZWF0ZVBpcGVsaW5lQ2FjaGULcENyZWF0ZUluZm8EAgxwSW5pdGlhbERhdGEEAQACFnZrQ3JlYXRlUGlwZWxpbmVMYXlvdXQCgj0Egj8GgkEIgkMGgkUGgkcIgkkKFnZrQ3JlYXRlUGlwZWxpbmVMYXlvdXQLcENyZWF0ZUluZm8EAhNwUHVzaENvbnN0YW50UmFuZ2VzBAEAgksEgk0Ggk8IglEGglMGglUIglcKFnZrQ3JlYXRlUGlwZWxpbmVMYXlvdXQLcENyZWF0ZUluZm8EAgtwU2V0TGF5b3V0cwQBAAISdmtDcmVhdGVSZW5kZXJQYXNzB4JZBIJbBoJdCIJfBoJhBoJjCIJlChJ2a0NyZWF0ZVJlbmRlclBhc3MLcENyZWF0ZUluZm8EAgxwQXR0YWNobWVudHMEAQCCZwSCaQaCawiCbQaCbwaCcQiCcwoSdmtDcmVhdGVSZW5kZXJQYXNzC3BDcmVhdGVJbmZvBAINcERlcGVuZGVuY2llcwQBAIJ1BIJ3BoJ5CIJ7BoJ9BoJ/CIKBChJ2a0NyZWF0ZVJlbmRlclBhc3MLcENyZWF0ZUluZm8EAgpwU3VicGFzc2VzBAEAgoMEgoUGgocIgokGgosGgo0Igo8GgpEGgpMIgpUKEnZrQ3JlYXRlUmVuZGVyUGFzcwtwQ3JlYXRlSW5mbwQCCnBTdWJwYXNzZXMEAhFwQ29sb3JBdHRhY2htZW50cwQBAIKXBIKZBoKbCIKdBoKfBoKhCIKjBoKlBoKnCIKpChJ2a0NyZWF0ZVJlbmRlclBhc3MLcENyZWF0ZUluZm8EAgpwU3VicGFzc2VzBAIRcElucHV0QXR0YWNobWVudHMEAQCCqwSCrQaCrwiCsQaCswaCtQiCtwaCuQaCuwiCvQoSdmtDcmVhdGVSZW5kZXJQYXNzC3BDcmVhdGVJbmZvBAIKcFN1YnBhc3NlcwQCFHBQcmVzZXJ2ZUF0dGFjaG1lbnRzBAEAgr8EgsEGgsMIgsUGgscGgskIgssGgs0Ggs8IgtEKEnZrQ3JlYXRlUmVuZGVyUGFzcwtwQ3JlYXRlSW5mbwQCCnBTdWJwYXNzZXMEAhNwUmVzb2x2ZUF0dGFjaG1lbnRzBAEAAhR2a0NyZWF0ZVNoYWRlck1vZHVsZQGC0wSC1QaC1wiC2QaC2waC3QiC3woUdmtDcmVhdGVTaGFkZXJNb2R1bGULcENyZWF0ZUluZm8EAgVwQ29kZQQBAAIUdmtDcmVhdGVTd2FwY2hhaW5LSFIBguEEguMGguUIgucGgukGgusIgu0KFHZrQ3JlYXRlU3dhcGNoYWluS0hSC3BDcmVhdGVJbmZvBAITcFF1ZXVlRmFtaWx5SW5kaWNlcwQBAAIZdmtGbHVzaE1hcHBlZE1lbW9yeVJhbmdlcwACFXZrR2V0UXVlcnlQb29sUmVzdWx0cwGC7wSC8QaC8wiC9QoVdmtHZXRRdWVyeVBvb2xSZXN1bHRzBXBEYXRhBAECAhd2a0dldFN3YXBjaGFpbkltYWdlc0tIUgACC3ZrTWFwTWVtb3J5AYL3BIL5BoL7CIL9Cgt2a01hcE1lbW9yeQZwcERhdGEEAQACEXZrUXVldWVQcmVzZW50S0hSAoL/BIMBBoMDCIMFBoMHBoMJCIMLChF2a1F1ZXVlUHJlc2VudEtIUgxwUHJlc2VudEluZm8EAghwUmVzdWx0cwQBAIMNBIMPBoMRCIMTBoMVBoMXCIMZChF2a1F1ZXVlUHJlc2VudEtIUgxwUHJlc2VudEluZm8EAg9wV2FpdFNlbWFwaG9yZXMEAQACDXZrUXVldWVTdWJtaXQDgxsEgx0Ggx8IgyEGgyMGgyUIgycKDXZrUXVldWVTdWJtaXQIcFN1Ym1pdHMEAhFwU2lnbmFsU2VtYXBob3JlcwQBAIMpBIMrBoMtCIMvBoMxBoMzCIM1Cg12a1F1ZXVlU3VibWl0CHBTdWJtaXRzBAIRcFdhaXREc3RTdGFnZU1hc2sEAQCDNwSDOQaDOwiDPQaDPwaDQQiDQwoNdmtRdWV1ZVN1Ym1pdAhwU3VibWl0cwQCD3BXYWl0U2VtYXBob3JlcwQBAAINdmtSZXNldEZlbmNlcwGDRQSDRwaDSQiDSwoNdmtSZXNldEZlbmNlcwdwRmVuY2VzBAEAAg12a1VubWFwTWVtb3J5AAIWdmtVcGRhdGVEZXNjcmlwdG9yU2V0cwSDTQyDTwiDUQaDUwaDVQiDVwoWdmtVcGRhdGVEZXNjcmlwdG9yU2V0cxFwRGVzY3JpcHRvcldyaXRlcwQCDmRlc2NyaXB0b3JUeXBlCxpWS19ERVNDUklQVE9SX1RZUEVfU0FNUExFUilWS19ERVNDUklQVE9SX1RZUEVfQ09NQklORURfSU1BR0VfU0FNUExFUiBWS19ERVNDUklQVE9SX1RZUEVfU0FNUExFRF9JTUFHRSBWS19ERVNDUklQVE9SX1RZUEVfU1RPUkFHRV9JTUFHRSNWS19ERVNDUklQVE9SX1RZUEVfSU5QVVRfQVRUQUNITUVOVCdWS19ERVNDUklQVE9SX1RZUEVfVU5JRk9STV9URVhFTF9CVUZGRVInVktfREVTQ1JJUFRPUl9UWVBFX1NUT1JBR0VfVEVYRUxfQlVGRkVSIVZLX0RFU0NSSVBUT1JfVFlQRV9VTklGT1JNX0JVRkZFUiFWS19ERVNDUklQVE9SX1RZUEVfU1RPUkFHRV9CVUZGRVIpVktfREVTQ1JJUFRPUl9UWVBFX1VOSUZPUk1fQlVGRkVSX0RZTkFNSUMpVktfREVTQ1JJUFRPUl9UWVBFX1NUT1JBR0VfQlVGRkVSX0RZTkFNSUODWQSDWwaDXQiDXwaDYQaDYwiDZQoWdmtVcGRhdGVEZXNjcmlwdG9yU2V0cxFwRGVzY3JpcHRvcldyaXRlcwQCCnBJbWFnZUluZm8EAQCDZwSDaQaDawiDbQaDbwaDcQiDcwoWdmtVcGRhdGVEZXNjcmlwdG9yU2V0cxFwRGVzY3JpcHRvcldyaXRlcwQCEHBUZXhlbEJ1ZmZlclZpZXcEAQCDdQSDdwaDeQiDewoWdmtVcGRhdGVEZXNjcmlwdG9yU2V0cxFwRGVzY3JpcHRvckNvcGllcwQBAAIPdmtXYWl0Rm9yRmVuY2VzAYN9BIN/BoOBCIODCg92a1dhaXRGb3JGZW5jZXMHcEZlbmNlcwQBAA==`
const globals_snippets_base64_file = `globals_snippets.base64`
const globals_snippets_base64_utf8 = true
-const globals_snippets_base64 = `AwhzbmlwcGV0cwxPYnNlcnZhdGlvbnMAAgMGUAMFCHNuaXBwZXRzCWZpZWxkUGF0aAACA7AFBwhzbmlwcGV0cwhwYXJ0UGF0aAACA1AHBAkECwkIc25pcHBldHMMcmVsYXRpdmVQYXRoAAGwBVN0YXRlBVN0YXRlDkRldmljZU1lbW9yaWVzAgREYXRhAgIACwhzbmlwcGV0cwZMYWJlbHMAAgMGsA0EDwYRBBMEFQgFU3RhdGUFU3RhdGUGSW1hZ2VzAgZGb3JtYXQRFlZLX0ZPUk1BVF9SOEc4QjhfVU5PUk0YVktfRk9STUFUX1I4RzhCOEE4X1VOT1JNGFZLX0ZPUk1BVF9COEc4UjhBOF9VTk9STRlWS19GT1JNQVRfQkMyX1VOT1JNX0JMT0NLGVZLX0ZPUk1BVF9CQzNfVU5PUk1fQkxPQ0sdVktfRk9STUFUX1IxNkcxNkIxNkExNl9TRkxPQVQdVktfRk9STUFUX1IzMkczMkIzMkEzMl9TRkxPQVQSVktfRk9STUFUX1I4X1VOT1JNE1ZLX0ZPUk1BVF9SMTZfVU5PUk0UVktfRk9STUFUX1IzMl9TRkxPQVQcVktfRk9STUFUX0QzMl9TRkxPQVRfUzhfVUlOVBNWS19GT1JNQVRfRDE2X1VOT1JNG1ZLX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVCBWS19GT1JNQVRfRVRDMl9SOEc4QjhfU1JHQl9CTE9DSyFWS19GT1JNQVRfRVRDMl9SOEc4QjhfVU5PUk1fQkxPQ0siVktfRk9STUFUX0VUQzJfUjhHOEI4QThfU1JHQl9CTE9DSyNWS19GT1JNQVRfRVRDMl9SOEc4QjhBOF9VTk9STV9CTE9DSwoXBBkGGwQdBB8IBVN0YXRlBVN0YXRlBkltYWdlcwIGTGF5b3V0ARlWS19JTUFHRV9MQVlPVVRfVU5ERUZJTkVECiEEIwYlBCcEKQgFU3RhdGUFU3RhdGUGSW1hZ2VzAgdTYW1wbGVzARVWS19TQU1QTEVfQ09VTlRfMV9CSVQKKwQtBi8EMQQzCAVTdGF0ZQVTdGF0ZQZJbWFnZXMCBFR5cGUBEFZLX0lNQUdFX1RZUEVfMkQKNQQ3BjkEOwQ9Bj8EQQRDCAVTdGF0ZQVTdGF0ZQ9QaHlzaWNhbERldmljZXMCEE1lbW9yeVByb3BlcnRpZXMLbWVtb3J5VHlwZXMCDXByb3BlcnR5RmxhZ3MBJFZLX01FTU9SWV9QUk9QRVJUWV9IT1NUX0NPSEVSRU5UX0JJVA==`
+const globals_snippets_base64 = `AwhzbmlwcGV0cwxPYnNlcnZhdGlvbnMAAgMGUAMFCHNuaXBwZXRzCWZpZWxkUGF0aAACA7AFBwhzbmlwcGV0cwhwYXJ0UGF0aAACA1AHBAkECwkIc25pcHBldHMMcmVsYXRpdmVQYXRoAAGwBVN0YXRlBVN0YXRlDkRldmljZU1lbW9yaWVzAgREYXRhAgIACwhzbmlwcGV0cwZMYWJlbHMAAgMGsA0EDwYRBBMEFQgFU3RhdGUFU3RhdGUGSW1hZ2VzAgZGb3JtYXQVFlZLX0ZPUk1BVF9SOEc4QjhfVU5PUk0YVktfRk9STUFUX1I4RzhCOEE4X1VOT1JNGFZLX0ZPUk1BVF9COEc4UjhBOF9VTk9STR1WS19GT1JNQVRfQkMxX1JHQl9VTk9STV9CTE9DSxxWS19GT1JNQVRfQkMxX1JHQl9TUkdCX0JMT0NLHlZLX0ZPUk1BVF9CQzFfUkdCQV9VTk9STV9CTE9DSx1WS19GT1JNQVRfQkMxX1JHQkFfU1JHQl9CTE9DSxlWS19GT1JNQVRfQkMyX1VOT1JNX0JMT0NLGVZLX0ZPUk1BVF9CQzNfVU5PUk1fQkxPQ0sdVktfRk9STUFUX1IxNkcxNkIxNkExNl9TRkxPQVQdVktfRk9STUFUX1IzMkczMkIzMkEzMl9TRkxPQVQSVktfRk9STUFUX1I4X1VOT1JNE1ZLX0ZPUk1BVF9SMTZfVU5PUk0UVktfRk9STUFUX1IzMl9TRkxPQVQcVktfRk9STUFUX0QzMl9TRkxPQVRfUzhfVUlOVBNWS19GT1JNQVRfRDE2X1VOT1JNG1ZLX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVCBWS19GT1JNQVRfRVRDMl9SOEc4QjhfU1JHQl9CTE9DSyFWS19GT1JNQVRfRVRDMl9SOEc4QjhfVU5PUk1fQkxPQ0siVktfRk9STUFUX0VUQzJfUjhHOEI4QThfU1JHQl9CTE9DSyNWS19GT1JNQVRfRVRDMl9SOEc4QjhBOF9VTk9STV9CTE9DSwoXBBkGGwQdBB8IBVN0YXRlBVN0YXRlBkltYWdlcwIGTGF5b3V0ARlWS19JTUFHRV9MQVlPVVRfVU5ERUZJTkVECiEEIwYlBCcEKQgFU3RhdGUFU3RhdGUGSW1hZ2VzAgdTYW1wbGVzARVWS19TQU1QTEVfQ09VTlRfMV9CSVQKKwQtBi8EMQQzCAVTdGF0ZQVTdGF0ZQZJbWFnZXMCBFR5cGUBEFZLX0lNQUdFX1RZUEVfMkQKNQQ3BjkEOwQ9Bj8EQQRDCAVTdGF0ZQVTdGF0ZQ9QaHlzaWNhbERldmljZXMCEE1lbW9yeVByb3BlcnRpZXMLbWVtb3J5VHlwZXMCDXByb3BlcnR5RmxhZ3MBJFZLX01FTU9SWV9QUk9QRVJUWV9IT1NUX0NPSEVSRU5UX0JJVA==`
diff --git a/gapid/gfxapi/vulkan/state.go b/gapid/gfxapi/vulkan/state.go
index c16cdb3..63c8e5c 100644
--- a/gapid/gfxapi/vulkan/state.go
+++ b/gapid/gfxapi/vulkan/state.go
@@ -20,7 +20,7 @@
"android.googlesource.com/platform/tools/gpu/gapid/gfxapi"
)
-func (st *State) getFramebufferAttachmentInfo(attachment gfxapi.FramebufferAttachment) (w, h uint32, f VkFormat, err error) {
+func (st *State) getFramebufferAttachmentInfo(attachment gfxapi.FramebufferAttachment) (w, h uint32, f VkFormat, attachmentIndex uint32, err error) {
s := st.State
if fb, ok := s.Framebuffers[s.LastUsedFramebuffer]; ok {
var index int
@@ -34,10 +34,12 @@
index = 2
case gfxapi.FramebufferAttachment_Color3:
index = 3
- case gfxapi.FramebufferAttachment_Depth, gfxapi.FramebufferAttachment_Stencil:
+ case gfxapi.FramebufferAttachment_Depth:
+ break
+ case gfxapi.FramebufferAttachment_Stencil:
fallthrough
default:
- return 0, 0, VkFormat_VK_FORMAT_UNDEFINED, fmt.Errorf("Framebuffer attachment %v currently unsupported", attachment)
+ return 0, 0, VkFormat_VK_FORMAT_UNDEFINED, 0, fmt.Errorf("Framebuffer attachment %v currently unsupported", attachment)
}
currentColorIndex := 0
@@ -50,23 +52,27 @@
switch attachment {
case gfxapi.FramebufferAttachment_Depth:
if 0 != (uint32(i.Usage) & uint32(VkImageUsageFlagBits_VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT)) {
- return level0.Width, level0.Height, i.Format, nil
+ // Use the first-found depth image that is not multi-sampled.
+ if i.Samples != VkSampleCountFlagBits_VK_SAMPLE_COUNT_1_BIT {
+ continue
+ }
+ return level0.Width, level0.Height, i.Format, a, nil
}
case gfxapi.FramebufferAttachment_Stencil:
if 0 != (uint32(i.Usage) & uint32(VkImageUsageFlagBits_VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT)) {
- return level0.Width, level0.Height, i.Format, nil
+ return level0.Width, level0.Height, i.Format, a, nil
}
default:
if 0 != (uint32(i.Usage) & uint32(VkImageUsageFlagBits_VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT)) {
continue
}
if currentColorIndex == index {
- return level0.Width, level0.Height, i.Format, nil
+ return level0.Width, level0.Height, i.Format, a, nil
} else {
currentColorIndex += 1
}
}
}
}
- return 0, 0, VkFormat_VK_FORMAT_UNDEFINED, fmt.Errorf("%s is not bound", attachment)
+ return 0, 0, VkFormat_VK_FORMAT_UNDEFINED, 0, fmt.Errorf("%s is not bound", attachment)
}
diff --git a/gapid/gfxapi/vulkan/vulkan.api b/gapid/gfxapi/vulkan/vulkan.api
index 6a8fb8c..c8078c2 100644
--- a/gapid/gfxapi/vulkan/vulkan.api
+++ b/gapid/gfxapi/vulkan/vulkan.api
@@ -272,6 +272,11 @@
//@extension("VK_EXT_debug_report")
VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = 1000011000,
+
+ //@extension("VK_NV_dedicated_allocation")
+ VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000,
+ VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001,
+ VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002,
}
enum VkSystemAllocationScope {
@@ -2331,6 +2336,46 @@
u32 firstInstance
}
+////////////////////////////////////////////////////////////////////////////////
+////////// Extensions //////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////
+
+// VK_NV_dedicated_allocation
+
+/// Format capability flags
+bitfield VkExternalMemoryHandleTypeFlagBitsNV {
+ VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 0x00000001,
+ VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 0x00000002,
+ VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 0x00000004,
+ VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 0x00000008,
+}
+type VkFlags VkExternalMemoryHandleTypeFlagsNV
+
+@serialize
+class VkDedicatedAllocationImageCreateInfoNV {
+ VkStructureType sType
+ const void* pNext
+ VkBool32 dedicatedAllocation
+}
+
+@serialize
+class VkDedicatedAllocationBufferCreateInfoNV {
+ VkStructureType sType
+ const void* pNext
+ VkBool32 dedicatedAllocation
+}
+
+@serialize
+class VkDedicatedAllocationMemoryAllocateInfoNV {
+ VkStructureType sType
+ const void* pNext
+ VkImage image
+ VkBuffer buffer
+}
+
+////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////
+
@custom
@threadSafety("system")
@@ -2668,6 +2713,14 @@
const VkAllocationCallbacks* pAllocator,
VkDeviceMemory* pMemory) {
allocateInfo := pAllocateInfo[0]
+ if (allocateInfo.pNext != null) {
+ t := as!VkStructureType*(allocateInfo.pNext)[0]
+ switch(t) {
+ case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV:
+ _ = as!VkDedicatedAllocationMemoryAllocateInfoNV*(allocateInfo.pNext)[0]
+ }
+ }
+
memoryObject := new!DeviceMemoryObject()
memoryObject.Device = device
memoryObject.AllocationSize = allocateInfo.allocationSize
@@ -2808,6 +2861,7 @@
VkDeviceMemory memory,
VkDeviceSize memoryOffset) {
State.Buffers[buffer].Memory = memory
+ State.Buffers[buffer].MemoryOffset = memoryOffset
State.DeviceMemories[memory].BoundObjects[as!u64(buffer)] = memoryOffset
return ?
}
@@ -2920,6 +2974,7 @@
VkDevice device,
u32 fenceCount,
const VkFence* pFences) {
+ read(pFences[0:fenceCount])
return ?
}
@@ -3061,12 +3116,22 @@
const VkBufferCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkBuffer* pBuffer) {
+ buffer_create_info := pCreateInfo[0]
bufferObject := new!BufferObject()
bufferObject.Device = device
bufferObject.Memory = 0
bufferObject.MemoryOffset = 0
+ bufferObject.MemorySize = buffer_create_info.size
- buffer_create_info := pCreateInfo[0]
+ if (buffer_create_info.pNext != null) {
+ t := as!VkStructureType*(buffer_create_info.pNext)[0]
+ switch(t) {
+ case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV:
+ _ = as!VkDedicatedAllocationBufferCreateInfoNV*(buffer_create_info.pNext)[0]
+ }
+ }
+
+
read(buffer_create_info.pQueueFamilyIndices[
0:buffer_create_info.queueFamilyIndexCount])
buffer := ?
@@ -3126,9 +3191,16 @@
const VkAllocationCallbacks* pAllocator,
VkImage* pImage) {
// TODO: pAllocator
- // TODO: pNext
info := pCreateInfo[0]
+ if (info.pNext != null) {
+ t := as!VkStructureType*(info.pNext)[0]
+ switch(t) {
+ case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV:
+ _ = as!VkDedicatedAllocationImageCreateInfoNV*(info.pNext)[0]
+ }
+ }
+
read(info.pQueueFamilyIndices[0:info.queueFamilyIndexCount])
handle := ?
@@ -3253,7 +3325,8 @@
const VkAllocationCallbacks* pAllocator,
VkPipelineCache* pPipelineCache) {
//TODO(awoloszyn): Add Allocator support
- _ = pCreateInfo[0]
+ create_info := pCreateInfo[0]
+ read(as!u8*(create_info.pInitialData)[0:create_info.initialDataSize])
pPipelineCache[0] = ?
return ?
}
@@ -3940,11 +4013,13 @@
bindBuffer := CmdBindBuffer()
for i in (0 .. descriptorSetCount) {
- set := State.DescriptorSets[sets[i]]
- for _, _, buffers in set.BufferInfo {
- length := len(bindBuffer.Buffers)
- for j, _, v in buffers {
- bindBuffer.Buffers[as!u32(length + j)] = BoundBuffer(v.buffer, v.offset)
+ if sets[i] in State.DescriptorSets {
+ set := State.DescriptorSets[sets[i]]
+ for _, _, buffers in set.BufferInfo {
+ length := len(bindBuffer.Buffers)
+ for j, _, v in buffers {
+ bindBuffer.Buffers[as!u32(length + j)] = BoundBuffer(v.buffer, v.offset)
+ }
}
}
}
@@ -3958,6 +4033,10 @@
VkBuffer buffer,
VkDeviceSize offset,
VkIndexType indexType) {
+
+ bindBuffer := CmdBindBuffer()
+ bindBuffer.Buffers[0] = BoundBuffer(buffer, offset)
+ addCmd(commandBuffer, bindBuffer, doCmdBindBuffers)
}
@threadSafety("app")
@@ -3990,7 +4069,7 @@
sub void doCmdBindBuffers(CmdBindBuffer bind) {
for _, _, v in bind.Buffers {
buffer := State.Buffers[v.Buffer]
- ReadMemoryIfCoherent(buffer.Memory, v.Offset, as!VkDeviceSize(0xFFFFFFFFFFFFFFFF))
+ ReadMemoryIfCoherent(buffer.Memory, v.Offset, buffer.MemorySize)
}
}
@@ -4063,6 +4142,75 @@
read(pRegions[0:regionCount])
}
+@internal
+class CmdCopyImage {
+ VkImage SrcImage
+ VkImage DstImage
+ map!(u64, VkImageCopy) Regions
+}
+
+sub void doCmdCopyImage(CmdCopyImage args) {
+ srcImageObject := State.Images[args.SrcImage]
+ dstImageObject := State.Images[args.DstImage]
+ srcFormat := srcImageObject.Format
+ srcElementAndTexelBlockSize := getElementAndTexelBlockSize(srcFormat)
+ dstFormat := dstImageObject.Format
+ dstElementAndTexelBlockSize := getElementAndTexelBlockSize(dstFormat)
+ for r in (0 .. len(args.Regions)) {
+ // TODO: (qining) Handle the apsect mask
+ region := args.Regions[as!u64(r)]
+ srcBaseLayer := region.srcSubresource.baseArrayLayer
+ dstBaseLayer := region.srcSubresource.baseArrayLayer
+ srcMipLevel := region.srcSubresource.mipLevel
+ dstMipLevel := region.dstSubresource.mipLevel
+
+ srcElementSize := as!u64(srcElementAndTexelBlockSize.ElementSize)
+ srcBlockWidth := as!u64(srcElementAndTexelBlockSize.TexelBlockSize.Width)
+ srcBlockHeight := as!u64(srcElementAndTexelBlockSize.TexelBlockSize.Height)
+ dstElementSize := as!u64(dstElementAndTexelBlockSize.ElementSize)
+ dstBlockWidth := as!u64(dstElementAndTexelBlockSize.TexelBlockSize.Width)
+ dstBlockHeight := as!u64(dstElementAndTexelBlockSize.TexelBlockSize.Height)
+
+ srcXStartInBlocks := as!u64(as!u64(region.srcOffset.x) / srcBlockWidth)
+ srcYStartInBlocks := as!u64(as!u64(region.srcOffset.y) / srcBlockHeight)
+ srcZStart := as!u64(region.srcOffset.z)
+ dstXStartInBlocks := as!u64(as!u64(region.dstOffset.x) / dstBlockWidth)
+ dstYStartInBlocks := as!u64(as!u64(region.dstOffset.y) / dstBlockHeight)
+ dstZStart := as!u64(region.dstOffset.z)
+
+ extentXInBlocks := roundUpTo(region.extent.width, as!u32(srcBlockWidth))
+ extentYInBlocks := roundUpTo(region.extent.height, as!u32(srcBlockHeight))
+ extentZ := region.extent.depth
+
+ for l in (0 .. region.srcSubresource.layerCount) {
+ srcImageLevel := srcImageObject.Layers[srcBaseLayer + l].Levels[srcMipLevel]
+ dstImageLevel := dstImageObject.Layers[dstBaseLayer + l].Levels[dstMipLevel]
+
+ srcImageLevelWidthInBlocks := as!u64(roundUpTo(srcImageLevel.Width, as!u32(srcBlockWidth)))
+ srcImageLevelHeightInBlocks := as!u64(roundUpTo(srcImageLevel.Height, as!u32(srcBlockHeight)))
+ dstImageLevelWidthInBlocks := as!u64(roundUpTo(dstImageLevel.Width, as!u32(dstBlockWidth)))
+ dstImageLevelHeightInBlocks := as!u64(roundUpTo(dstImageLevel.Height, as!u32(dstBlockHeight)))
+
+ srcData := srcImageLevel.Data
+ dstData := dstImageLevel.Data
+
+ for z in (0 .. extentZ) {
+ for y in (0 .. extentYInBlocks) {
+ copySize := as!u64(extentXInBlocks) * srcElementSize
+ dstY := dstYStartInBlocks + as!u64(y)
+ dstZ := dstZStart + as!u64(z)
+ srcY := srcYStartInBlocks + as!u64(y)
+ srcZ := srcZStart + as!u64(z)
+ dstStart := ((((dstZ * dstImageLevelHeightInBlocks) + dstY) * dstImageLevelWidthInBlocks) + dstXStartInBlocks) * dstElementSize
+ srcStart := ((((srcZ * srcImageLevelHeightInBlocks) + srcY) * srcImageLevelWidthInBlocks) + srcXStartInBlocks) * srcElementSize
+ ReadMemoryIfCoherent(srcImageObject.BoundMemory, as!VkDeviceSize(srcStart), as!VkDeviceSize(copySize))
+ copy(dstData[dstStart:dstStart + copySize], srcData[srcStart:srcStart + copySize])
+ }
+ }
+ }
+ }
+}
+
@threadSafety("app")
@indirect("VkCommandBuffer", "VkDevice")
cmd void vkCmdCopyImage(
@@ -4073,6 +4221,12 @@
VkImageLayout dstImageLayout,
u32 regionCount,
const VkImageCopy* pRegions) {
+ regions := pRegions[0:regionCount]
+ copyArgs := CmdCopyImage(srcImage, dstImage)
+ for i in (0 .. regionCount) {
+ copyArgs.Regions[as!u64(i)] = regions[i]
+ }
+ addCmd(commandBuffer, copyArgs, doCmdCopyImage)
}
@threadSafety("app")
@@ -4106,6 +4260,10 @@
case VK_FORMAT_R8G8B8_UNORM: ElementAndTexelBlockSize(3, TexelBlockSizePair(1, 1))
case VK_FORMAT_R8G8B8A8_UNORM: ElementAndTexelBlockSize(4, TexelBlockSizePair(1, 1))
case VK_FORMAT_B8G8R8A8_UNORM: ElementAndTexelBlockSize(4, TexelBlockSizePair(1, 1))
+ case VK_FORMAT_BC1_RGB_UNORM_BLOCK,
+ VK_FORMAT_BC1_RGB_SRGB_BLOCK,
+ VK_FORMAT_BC1_RGBA_UNORM_BLOCK,
+ VK_FORMAT_BC1_RGBA_SRGB_BLOCK : ElementAndTexelBlockSize(8, TexelBlockSizePair(4, 4))
case VK_FORMAT_BC2_UNORM_BLOCK: ElementAndTexelBlockSize(16, TexelBlockSizePair(4, 4))
case VK_FORMAT_BC3_UNORM_BLOCK: ElementAndTexelBlockSize(16, TexelBlockSizePair(4, 4))
case VK_FORMAT_R16G16B16A16_SFLOAT: ElementAndTexelBlockSize(8, TexelBlockSizePair(1, 1))
@@ -4171,23 +4329,26 @@
// When multiple layers are specified in the buffer image copy region,
// Vulkan assumes the data of all the layers are placed continuously in
// the source buffer memory.
- // TODO: (qining) Update the ImageObject to handle both 2D and 3D
- // textures. Following is wrong if the image is 3D type, as
- // VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT is only valid when the image
- // type is VK_IMAGE_TYPE_2D.
+ // TODO: (qining) Handle aspect mask
for j in (0 .. region.imageSubresource.layerCount) {
layerIndex := region.imageSubresource.baseArrayLayer + j
bufferLayerOffset := as!u64(j) * layerSize
imageLevel := imageObject.Layers[layerIndex].Levels[region.imageSubresource.mipLevel]
+ imageLevelWidthInBlocks := as!u64(imageLevel.Width / elementAndTexelBlockSize.TexelBlockSize.Width)
+ imageLevelHeightInBlocks := as!u64(imageLevel.Height / elementAndTexelBlockSize.TexelBlockSize.Height)
dstData := imageLevel.Data
// Iterate through depths and rows to copy
for z in (zStart .. zEnd) {
for y in (yStart .. yEnd) {
copySize := (xEnd - xStart) * elementSize
- dstStart := (((z * imageHeight) + y) * rowLength + xStart) * elementSize
+ dstStart := ((((z * imageLevelHeightInBlocks) + y) * imageLevelWidthInBlocks) + xStart) * elementSize
dstEnd := dstStart + copySize
- srcStart := as!u64(bufferObject.MemoryOffset) + as!u64(region.bufferOffset) + bufferLayerOffset + dstStart
+ zInExtent := z - zStart
+ yInExtent := y - yStart
+ rowStartInExtent := (((zInExtent * imageHeight) + yInExtent) * rowLength) * elementSize
+ srcStart := as!u64(bufferObject.MemoryOffset) + as!u64(region.bufferOffset) + bufferLayerOffset + rowStartInExtent
srcEnd := srcStart + copySize
+ ReadMemoryIfCoherent(bufferObject.Memory, as!VkDeviceSize(srcStart), as!VkDeviceSize(copySize))
copy(dstData[dstStart:dstEnd], srcData[srcStart:srcEnd])
}
}
@@ -4254,6 +4415,8 @@
const VkClearColorValue* pColor,
u32 rangeCount,
const VkImageSubresourceRange* pRanges) {
+ _ = pColor[0]
+ read(pRanges[0:rangeCount])
}
@threadSafety("app")
@@ -4275,6 +4438,8 @@
const VkClearAttachment* pAttachments,
u32 rectCount,
const VkClearRect* pRects) {
+ read(pAttachments[0:attachmentCount])
+ read(pRects[0:rectCount])
}
@threadSafety("app")
@@ -5388,6 +5553,7 @@
VkDevice Device
VkDeviceMemory Memory
VkDeviceSize MemoryOffset
+ VkDeviceSize MemorySize
}
@internal class BufferViewObject {
diff --git a/gapid/gfxapi/vulkan/vulkan.go b/gapid/gfxapi/vulkan/vulkan.go
index fe0f939..f35a539 100644
--- a/gapid/gfxapi/vulkan/vulkan.go
+++ b/gapid/gfxapi/vulkan/vulkan.go
@@ -44,36 +44,21 @@
}
func (api) GetFramebufferAttachmentInfo(state *gfxapi.State, attachment gfxapi.FramebufferAttachment) (w, h uint32, f image.Format, err error) {
- w, h, form, err := GetState(state).getFramebufferAttachmentInfo(attachment)
-
- if attachment == gfxapi.FramebufferAttachment_Depth ||
- attachment == gfxapi.FramebufferAttachment_Stencil {
- return 0, 0, nil, fmt.Errorf("Unsupported Depth")
- }
-
- if err != nil {
- return 0, 0, nil, err
- }
-
- var format image.Format
- switch form {
- case VkFormat_VK_FORMAT_R8G8B8A8_UNORM:
- format = image.RGBA()
- case VkFormat_VK_FORMAT_BC2_UNORM_BLOCK:
- format = image.S3_DXT3_RGBA()
- case VkFormat_VK_FORMAT_BC3_UNORM_BLOCK:
- format = image.S3_DXT5_RGBA()
- case VkFormat_VK_FORMAT_R16G16B16A16_SFLOAT:
- format = image.RGBAF16()
- case VkFormat_VK_FORMAT_B8G8R8A8_UNORM:
- format = image.BGRA()
- case VkFormat_VK_FORMAT_R32_SFLOAT:
- format = image.RedF32()
- case VkFormat_VK_FORMAT_R8_UNORM:
- format = image.Red()
+ w, h, form, _, err := GetState(state).getFramebufferAttachmentInfo(attachment)
+ switch attachment {
+ case gfxapi.FramebufferAttachment_Stencil:
+ return 0, 0, nil, fmt.Errorf("Unsupported Stencil")
+ case gfxapi.FramebufferAttachment_Depth:
+ format, err := getDepthImageFormatFromVulkanFormat(form)
+ if err != nil {
+ return 0, 0, nil, fmt.Errorf("Unknown format for Depth attachment")
+ }
+ return w, h, format, err
default:
- return 0, 0, nil, fmt.Errorf("Unknown Format")
+ format, err := getImageFormatFromVulkanFormat(form)
+ if err != nil {
+ return 0, 0, nil, fmt.Errorf("Unknown format for Color attachment")
+ }
+ return w, h, format, err
}
-
- return w, h, format, err
}
diff --git a/gapid/gfxapi/vulkan/vulkan_binary.go b/gapid/gfxapi/vulkan/vulkan_binary.go
index faccbd2..70f8eb5 100644
--- a/gapid/gfxapi/vulkan/vulkan_binary.go
+++ b/gapid/gfxapi/vulkan/vulkan_binary.go
@@ -42,6 +42,8 @@
ixǁVkExtent3D
ixǁVkBufferImageCopy
ixǁCmdCopyBufferToImage
+ ixǁVkImageCopy
+ ixǁCmdCopyImage
ixǁVoidᶜᵖ
ixǁVkImageSubresourceRange
ixǁVkImageMemoryBarrier
@@ -393,6 +395,15 @@
ixǁVkDebugReportCallbackCreateInfoEXTᵖ
ixǁVkDebugReportCallbackEXTˢ
ixǁVkDebugReportMessageEXT
+ ixǁVkDedicatedAllocationBufferCreateInfoNV
+ ixǁVkDedicatedAllocationBufferCreateInfoNVˢ
+ ixǁVkDedicatedAllocationBufferCreateInfoNVᵖ
+ ixǁVkDedicatedAllocationImageCreateInfoNV
+ ixǁVkDedicatedAllocationImageCreateInfoNVˢ
+ ixǁVkDedicatedAllocationImageCreateInfoNVᵖ
+ ixǁVkDedicatedAllocationMemoryAllocateInfoNV
+ ixǁVkDedicatedAllocationMemoryAllocateInfoNVˢ
+ ixǁVkDedicatedAllocationMemoryAllocateInfoNVᵖ
ixǁVkDescriptorBufferInfoˢ
ixǁVkDescriptorBufferInfoᵖ
ixǁVkDescriptorBufferInfoᶜᵖ
@@ -589,7 +600,6 @@
ixǁVkImageBlit
ixǁVkImageBlitˢ
ixǁVkImageBlitᵖ
- ixǁVkImageCopy
ixǁVkImageCopyˢ
ixǁVkImageCopyᵖ
ixǁVkImageCreateInfo
@@ -776,6 +786,8 @@
ixǁVkSpecializationMapEntry
ixǁVkSpecializationMapEntryˢ
ixǁVkSpecializationMapEntryᵖ
+ ixǁVkStructureTypeˢ
+ ixǁVkStructureTypeᵖ
ixǁVkSubmitInfo
ixǁVkSubmitInfoˢ
ixǁVkSubmitInfoᵖ
@@ -832,7 +844,7 @@
ixǁxcb_connection_t
)
-var entities [809]binary.Entity
+var entities [821]binary.Entity
var Namespace = registry.NewNamespace()
@@ -859,6 +871,8 @@
Namespace.AddClassOf((*VkExtent3D)(nil))
Namespace.AddClassOf((*VkBufferImageCopy)(nil))
Namespace.AddClassOf((*CmdCopyBufferToImage)(nil))
+ Namespace.AddClassOf((*VkImageCopy)(nil))
+ Namespace.AddClassOf((*CmdCopyImage)(nil))
Namespace.AddClassOf((*Voidᶜᵖ)(nil))
Namespace.AddClassOf((*VkImageSubresourceRange)(nil))
Namespace.AddClassOf((*VkImageMemoryBarrier)(nil))
@@ -1210,6 +1224,15 @@
Namespace.AddClassOf((*VkDebugReportCallbackCreateInfoEXTᵖ)(nil))
Namespace.AddClassOf((*VkDebugReportCallbackEXTˢ)(nil))
Namespace.AddClassOf((*VkDebugReportMessageEXT)(nil))
+ Namespace.AddClassOf((*VkDedicatedAllocationBufferCreateInfoNV)(nil))
+ Namespace.AddClassOf((*VkDedicatedAllocationBufferCreateInfoNVˢ)(nil))
+ Namespace.AddClassOf((*VkDedicatedAllocationBufferCreateInfoNVᵖ)(nil))
+ Namespace.AddClassOf((*VkDedicatedAllocationImageCreateInfoNV)(nil))
+ Namespace.AddClassOf((*VkDedicatedAllocationImageCreateInfoNVˢ)(nil))
+ Namespace.AddClassOf((*VkDedicatedAllocationImageCreateInfoNVᵖ)(nil))
+ Namespace.AddClassOf((*VkDedicatedAllocationMemoryAllocateInfoNV)(nil))
+ Namespace.AddClassOf((*VkDedicatedAllocationMemoryAllocateInfoNVˢ)(nil))
+ Namespace.AddClassOf((*VkDedicatedAllocationMemoryAllocateInfoNVᵖ)(nil))
Namespace.AddClassOf((*VkDescriptorBufferInfoˢ)(nil))
Namespace.AddClassOf((*VkDescriptorBufferInfoᵖ)(nil))
Namespace.AddClassOf((*VkDescriptorBufferInfoᶜᵖ)(nil))
@@ -1406,7 +1429,6 @@
Namespace.AddClassOf((*VkImageBlit)(nil))
Namespace.AddClassOf((*VkImageBlitˢ)(nil))
Namespace.AddClassOf((*VkImageBlitᵖ)(nil))
- Namespace.AddClassOf((*VkImageCopy)(nil))
Namespace.AddClassOf((*VkImageCopyˢ)(nil))
Namespace.AddClassOf((*VkImageCopyᵖ)(nil))
Namespace.AddClassOf((*VkImageCreateInfo)(nil))
@@ -1593,6 +1615,8 @@
Namespace.AddClassOf((*VkSpecializationMapEntry)(nil))
Namespace.AddClassOf((*VkSpecializationMapEntryˢ)(nil))
Namespace.AddClassOf((*VkSpecializationMapEntryᵖ)(nil))
+ Namespace.AddClassOf((*VkStructureTypeˢ)(nil))
+ Namespace.AddClassOf((*VkStructureTypeᵖ)(nil))
Namespace.AddClassOf((*VkSubmitInfo)(nil))
Namespace.AddClassOf((*VkSubmitInfoˢ)(nil))
Namespace.AddClassOf((*VkSubmitInfoᵖ)(nil))
@@ -1793,16 +1817,19 @@
e.Uint64(uint64(o.Device))
e.Uint64(uint64(o.Memory))
e.Uint64(uint64(o.MemoryOffset))
+ e.Uint64(uint64(o.MemorySize))
}
func doDecodeBufferObject(d binary.Reader, o *BufferObject) {
o.Device = VkDevice(d.Uint64())
o.Memory = VkDeviceMemory(d.Uint64())
o.MemoryOffset = VkDeviceSize(d.Uint64())
+ o.MemorySize = VkDeviceSize(d.Uint64())
}
func doDecodeRawBufferObject(d binary.Reader, o *BufferObject) {
o.Device = VkDevice(d.Uint64())
o.Memory = VkDeviceMemory(d.Uint64())
o.MemoryOffset = VkDeviceSize(d.Uint64())
+ o.MemorySize = VkDeviceSize(d.Uint64())
}
func (*binaryClassBufferObject) Encode(e binary.Encoder, obj binary.Object) {
doEncodeBufferObject(e, obj.(*BufferObject))
@@ -2470,6 +2497,115 @@
return &entities[ixǁCmdCopyBufferToImage]
}
+type binaryClassVkImageCopy struct{}
+
+func (*VkImageCopy) Class() binary.Class {
+ return (*binaryClassVkImageCopy)(nil)
+}
+func doEncodeVkImageCopy(e binary.Writer, o *VkImageCopy) {
+ e.Simple(&o.SrcSubresource)
+ e.Simple(&o.SrcOffset)
+ e.Simple(&o.DstSubresource)
+ e.Simple(&o.DstOffset)
+ e.Simple(&o.Extent)
+}
+func doDecodeVkImageCopy(d binary.Reader, o *VkImageCopy) {
+ d.Simple(&o.SrcSubresource)
+ d.Simple(&o.SrcOffset)
+ d.Simple(&o.DstSubresource)
+ d.Simple(&o.DstOffset)
+ d.Simple(&o.Extent)
+}
+func doDecodeRawVkImageCopy(d binary.Reader, o *VkImageCopy) {
+ d.Simple(&o.SrcSubresource)
+ d.Simple(&o.SrcOffset)
+ d.Simple(&o.DstSubresource)
+ d.Simple(&o.DstOffset)
+ d.Simple(&o.Extent)
+}
+func (*binaryClassVkImageCopy) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeVkImageCopy(e, obj.(*VkImageCopy))
+}
+func (*binaryClassVkImageCopy) New() binary.Object {
+ return &VkImageCopy{}
+}
+func (*binaryClassVkImageCopy) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeVkImageCopy(d, obj.(*VkImageCopy))
+}
+func (o *VkImageCopy) WriteSimple(w binary.Writer) {
+ doEncodeVkImageCopy(w, o)
+}
+func (o *VkImageCopy) ReadSimple(r binary.Reader) {
+ doDecodeVkImageCopy(r, o)
+}
+func (c *binaryClassVkImageCopy) Schema() *binary.Entity {
+ return &entities[ixǁVkImageCopy]
+}
+
+type binaryClassCmdCopyImage struct{}
+
+func (*CmdCopyImage) Class() binary.Class {
+ return (*binaryClassCmdCopyImage)(nil)
+}
+func doEncodeCmdCopyImage(e binary.Writer, o *CmdCopyImage) {
+ e.Uint64(uint64(o.SrcImage))
+ e.Uint64(uint64(o.DstImage))
+ e.Uint32(uint32(len(o.Regions)))
+ for _, k := range (o.Regions).KeysSorted() {
+ v := (o.Regions)[k]
+ e.Uint64(k)
+ e.Simple(&v)
+ }
+}
+func doDecodeCmdCopyImage(d binary.Reader, o *CmdCopyImage) {
+ o.SrcImage = VkImage(d.Uint64())
+ o.DstImage = VkImage(d.Uint64())
+ if count := d.Count(); count > 0 {
+ o.Regions = make(U64ːVkImageCopyᵐ, count)
+ m := o.Regions
+ for i := uint32(0); i < count; i++ {
+ var k uint64
+ var v VkImageCopy
+ k = uint64(d.Uint64())
+ d.Simple(&v)
+ m[k] = v
+ }
+ }
+}
+func doDecodeRawCmdCopyImage(d binary.Reader, o *CmdCopyImage) {
+ o.SrcImage = VkImage(d.Uint64())
+ o.DstImage = VkImage(d.Uint64())
+ if count := d.Count(); count > 0 {
+ o.Regions = make(U64ːVkImageCopyᵐ, count)
+ m := o.Regions
+ for i := uint32(0); i < count; i++ {
+ var k uint64
+ var v VkImageCopy
+ k = uint64(d.Uint64())
+ d.Simple(&v)
+ m[k] = v
+ }
+ }
+}
+func (*binaryClassCmdCopyImage) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeCmdCopyImage(e, obj.(*CmdCopyImage))
+}
+func (*binaryClassCmdCopyImage) New() binary.Object {
+ return &CmdCopyImage{}
+}
+func (*binaryClassCmdCopyImage) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeCmdCopyImage(d, obj.(*CmdCopyImage))
+}
+func (o *CmdCopyImage) WriteSimple(w binary.Writer) {
+ doEncodeCmdCopyImage(w, o)
+}
+func (o *CmdCopyImage) ReadSimple(r binary.Reader) {
+ doDecodeCmdCopyImage(r, o)
+}
+func (c *binaryClassCmdCopyImage) Schema() *binary.Entity {
+ return &entities[ixǁCmdCopyImage]
+}
+
type binaryClassVoidᶜᵖ struct{}
func (*Voidᶜᵖ) Class() binary.Class {
@@ -18950,6 +19086,333 @@
return &entities[ixǁVkDebugReportMessageEXT]
}
+type binaryClassVkDedicatedAllocationBufferCreateInfoNV struct{}
+
+func (*VkDedicatedAllocationBufferCreateInfoNV) Class() binary.Class {
+ return (*binaryClassVkDedicatedAllocationBufferCreateInfoNV)(nil)
+}
+func doEncodeVkDedicatedAllocationBufferCreateInfoNV(e binary.Writer, o *VkDedicatedAllocationBufferCreateInfoNV) {
+ e.Uint32(uint32(o.SType))
+ e.Simple(&o.PNext)
+ e.Uint32(uint32(o.DedicatedAllocation))
+}
+func doDecodeVkDedicatedAllocationBufferCreateInfoNV(d binary.Reader, o *VkDedicatedAllocationBufferCreateInfoNV) {
+ o.SType = VkStructureType(d.Uint32())
+ d.Simple(&o.PNext)
+ o.DedicatedAllocation = VkBool32(d.Uint32())
+}
+func doDecodeRawVkDedicatedAllocationBufferCreateInfoNV(d binary.Reader, o *VkDedicatedAllocationBufferCreateInfoNV) {
+ o.SType = VkStructureType(d.Uint32())
+ d.Simple(&o.PNext)
+ o.DedicatedAllocation = VkBool32(d.Uint32())
+}
+func (*binaryClassVkDedicatedAllocationBufferCreateInfoNV) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeVkDedicatedAllocationBufferCreateInfoNV(e, obj.(*VkDedicatedAllocationBufferCreateInfoNV))
+}
+func (*binaryClassVkDedicatedAllocationBufferCreateInfoNV) New() binary.Object {
+ return &VkDedicatedAllocationBufferCreateInfoNV{}
+}
+func (*binaryClassVkDedicatedAllocationBufferCreateInfoNV) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeVkDedicatedAllocationBufferCreateInfoNV(d, obj.(*VkDedicatedAllocationBufferCreateInfoNV))
+}
+func (o *VkDedicatedAllocationBufferCreateInfoNV) WriteSimple(w binary.Writer) {
+ doEncodeVkDedicatedAllocationBufferCreateInfoNV(w, o)
+}
+func (o *VkDedicatedAllocationBufferCreateInfoNV) ReadSimple(r binary.Reader) {
+ doDecodeVkDedicatedAllocationBufferCreateInfoNV(r, o)
+}
+func (c *binaryClassVkDedicatedAllocationBufferCreateInfoNV) Schema() *binary.Entity {
+ return &entities[ixǁVkDedicatedAllocationBufferCreateInfoNV]
+}
+
+type binaryClassVkDedicatedAllocationBufferCreateInfoNVˢ struct{}
+
+func (*VkDedicatedAllocationBufferCreateInfoNVˢ) Class() binary.Class {
+ return (*binaryClassVkDedicatedAllocationBufferCreateInfoNVˢ)(nil)
+}
+func doEncodeVkDedicatedAllocationBufferCreateInfoNVˢ(e binary.Writer, o *VkDedicatedAllocationBufferCreateInfoNVˢ) {
+ e.Simple(&o.SliceInfo)
+}
+func doDecodeVkDedicatedAllocationBufferCreateInfoNVˢ(d binary.Reader, o *VkDedicatedAllocationBufferCreateInfoNVˢ) {
+ d.Simple(&o.SliceInfo)
+}
+func doDecodeRawVkDedicatedAllocationBufferCreateInfoNVˢ(d binary.Reader, o *VkDedicatedAllocationBufferCreateInfoNVˢ) {
+ d.Simple(&o.SliceInfo)
+}
+func (*binaryClassVkDedicatedAllocationBufferCreateInfoNVˢ) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeVkDedicatedAllocationBufferCreateInfoNVˢ(e, obj.(*VkDedicatedAllocationBufferCreateInfoNVˢ))
+}
+func (*binaryClassVkDedicatedAllocationBufferCreateInfoNVˢ) New() binary.Object {
+ return &VkDedicatedAllocationBufferCreateInfoNVˢ{}
+}
+func (*binaryClassVkDedicatedAllocationBufferCreateInfoNVˢ) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeVkDedicatedAllocationBufferCreateInfoNVˢ(d, obj.(*VkDedicatedAllocationBufferCreateInfoNVˢ))
+}
+func (o *VkDedicatedAllocationBufferCreateInfoNVˢ) WriteSimple(w binary.Writer) {
+ doEncodeVkDedicatedAllocationBufferCreateInfoNVˢ(w, o)
+}
+func (o *VkDedicatedAllocationBufferCreateInfoNVˢ) ReadSimple(r binary.Reader) {
+ doDecodeVkDedicatedAllocationBufferCreateInfoNVˢ(r, o)
+}
+func (c *binaryClassVkDedicatedAllocationBufferCreateInfoNVˢ) Schema() *binary.Entity {
+ return &entities[ixǁVkDedicatedAllocationBufferCreateInfoNVˢ]
+}
+
+type binaryClassVkDedicatedAllocationBufferCreateInfoNVᵖ struct{}
+
+func (*VkDedicatedAllocationBufferCreateInfoNVᵖ) Class() binary.Class {
+ return (*binaryClassVkDedicatedAllocationBufferCreateInfoNVᵖ)(nil)
+}
+func doEncodeVkDedicatedAllocationBufferCreateInfoNVᵖ(e binary.Writer, o *VkDedicatedAllocationBufferCreateInfoNVᵖ) {
+ e.Uint64(o.Address)
+ e.Uint32(uint32(o.Pool))
+}
+func doDecodeVkDedicatedAllocationBufferCreateInfoNVᵖ(d binary.Reader, o *VkDedicatedAllocationBufferCreateInfoNVᵖ) {
+ o.Address = uint64(d.Uint64())
+ o.Pool = memory.PoolID(d.Uint32())
+}
+func doDecodeRawVkDedicatedAllocationBufferCreateInfoNVᵖ(d binary.Reader, o *VkDedicatedAllocationBufferCreateInfoNVᵖ) {
+ o.Address = uint64(d.Uint64())
+ o.Pool = memory.PoolID(d.Uint32())
+}
+func (*binaryClassVkDedicatedAllocationBufferCreateInfoNVᵖ) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeVkDedicatedAllocationBufferCreateInfoNVᵖ(e, obj.(*VkDedicatedAllocationBufferCreateInfoNVᵖ))
+}
+func (*binaryClassVkDedicatedAllocationBufferCreateInfoNVᵖ) New() binary.Object {
+ return &VkDedicatedAllocationBufferCreateInfoNVᵖ{}
+}
+func (*binaryClassVkDedicatedAllocationBufferCreateInfoNVᵖ) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeVkDedicatedAllocationBufferCreateInfoNVᵖ(d, obj.(*VkDedicatedAllocationBufferCreateInfoNVᵖ))
+}
+func (o *VkDedicatedAllocationBufferCreateInfoNVᵖ) WriteSimple(w binary.Writer) {
+ doEncodeVkDedicatedAllocationBufferCreateInfoNVᵖ(w, o)
+}
+func (o *VkDedicatedAllocationBufferCreateInfoNVᵖ) ReadSimple(r binary.Reader) {
+ doDecodeVkDedicatedAllocationBufferCreateInfoNVᵖ(r, o)
+}
+func (c *binaryClassVkDedicatedAllocationBufferCreateInfoNVᵖ) Schema() *binary.Entity {
+ return &entities[ixǁVkDedicatedAllocationBufferCreateInfoNVᵖ]
+}
+
+type binaryClassVkDedicatedAllocationImageCreateInfoNV struct{}
+
+func (*VkDedicatedAllocationImageCreateInfoNV) Class() binary.Class {
+ return (*binaryClassVkDedicatedAllocationImageCreateInfoNV)(nil)
+}
+func doEncodeVkDedicatedAllocationImageCreateInfoNV(e binary.Writer, o *VkDedicatedAllocationImageCreateInfoNV) {
+ e.Uint32(uint32(o.SType))
+ e.Simple(&o.PNext)
+ e.Uint32(uint32(o.DedicatedAllocation))
+}
+func doDecodeVkDedicatedAllocationImageCreateInfoNV(d binary.Reader, o *VkDedicatedAllocationImageCreateInfoNV) {
+ o.SType = VkStructureType(d.Uint32())
+ d.Simple(&o.PNext)
+ o.DedicatedAllocation = VkBool32(d.Uint32())
+}
+func doDecodeRawVkDedicatedAllocationImageCreateInfoNV(d binary.Reader, o *VkDedicatedAllocationImageCreateInfoNV) {
+ o.SType = VkStructureType(d.Uint32())
+ d.Simple(&o.PNext)
+ o.DedicatedAllocation = VkBool32(d.Uint32())
+}
+func (*binaryClassVkDedicatedAllocationImageCreateInfoNV) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeVkDedicatedAllocationImageCreateInfoNV(e, obj.(*VkDedicatedAllocationImageCreateInfoNV))
+}
+func (*binaryClassVkDedicatedAllocationImageCreateInfoNV) New() binary.Object {
+ return &VkDedicatedAllocationImageCreateInfoNV{}
+}
+func (*binaryClassVkDedicatedAllocationImageCreateInfoNV) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeVkDedicatedAllocationImageCreateInfoNV(d, obj.(*VkDedicatedAllocationImageCreateInfoNV))
+}
+func (o *VkDedicatedAllocationImageCreateInfoNV) WriteSimple(w binary.Writer) {
+ doEncodeVkDedicatedAllocationImageCreateInfoNV(w, o)
+}
+func (o *VkDedicatedAllocationImageCreateInfoNV) ReadSimple(r binary.Reader) {
+ doDecodeVkDedicatedAllocationImageCreateInfoNV(r, o)
+}
+func (c *binaryClassVkDedicatedAllocationImageCreateInfoNV) Schema() *binary.Entity {
+ return &entities[ixǁVkDedicatedAllocationImageCreateInfoNV]
+}
+
+type binaryClassVkDedicatedAllocationImageCreateInfoNVˢ struct{}
+
+func (*VkDedicatedAllocationImageCreateInfoNVˢ) Class() binary.Class {
+ return (*binaryClassVkDedicatedAllocationImageCreateInfoNVˢ)(nil)
+}
+func doEncodeVkDedicatedAllocationImageCreateInfoNVˢ(e binary.Writer, o *VkDedicatedAllocationImageCreateInfoNVˢ) {
+ e.Simple(&o.SliceInfo)
+}
+func doDecodeVkDedicatedAllocationImageCreateInfoNVˢ(d binary.Reader, o *VkDedicatedAllocationImageCreateInfoNVˢ) {
+ d.Simple(&o.SliceInfo)
+}
+func doDecodeRawVkDedicatedAllocationImageCreateInfoNVˢ(d binary.Reader, o *VkDedicatedAllocationImageCreateInfoNVˢ) {
+ d.Simple(&o.SliceInfo)
+}
+func (*binaryClassVkDedicatedAllocationImageCreateInfoNVˢ) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeVkDedicatedAllocationImageCreateInfoNVˢ(e, obj.(*VkDedicatedAllocationImageCreateInfoNVˢ))
+}
+func (*binaryClassVkDedicatedAllocationImageCreateInfoNVˢ) New() binary.Object {
+ return &VkDedicatedAllocationImageCreateInfoNVˢ{}
+}
+func (*binaryClassVkDedicatedAllocationImageCreateInfoNVˢ) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeVkDedicatedAllocationImageCreateInfoNVˢ(d, obj.(*VkDedicatedAllocationImageCreateInfoNVˢ))
+}
+func (o *VkDedicatedAllocationImageCreateInfoNVˢ) WriteSimple(w binary.Writer) {
+ doEncodeVkDedicatedAllocationImageCreateInfoNVˢ(w, o)
+}
+func (o *VkDedicatedAllocationImageCreateInfoNVˢ) ReadSimple(r binary.Reader) {
+ doDecodeVkDedicatedAllocationImageCreateInfoNVˢ(r, o)
+}
+func (c *binaryClassVkDedicatedAllocationImageCreateInfoNVˢ) Schema() *binary.Entity {
+ return &entities[ixǁVkDedicatedAllocationImageCreateInfoNVˢ]
+}
+
+type binaryClassVkDedicatedAllocationImageCreateInfoNVᵖ struct{}
+
+func (*VkDedicatedAllocationImageCreateInfoNVᵖ) Class() binary.Class {
+ return (*binaryClassVkDedicatedAllocationImageCreateInfoNVᵖ)(nil)
+}
+func doEncodeVkDedicatedAllocationImageCreateInfoNVᵖ(e binary.Writer, o *VkDedicatedAllocationImageCreateInfoNVᵖ) {
+ e.Uint64(o.Address)
+ e.Uint32(uint32(o.Pool))
+}
+func doDecodeVkDedicatedAllocationImageCreateInfoNVᵖ(d binary.Reader, o *VkDedicatedAllocationImageCreateInfoNVᵖ) {
+ o.Address = uint64(d.Uint64())
+ o.Pool = memory.PoolID(d.Uint32())
+}
+func doDecodeRawVkDedicatedAllocationImageCreateInfoNVᵖ(d binary.Reader, o *VkDedicatedAllocationImageCreateInfoNVᵖ) {
+ o.Address = uint64(d.Uint64())
+ o.Pool = memory.PoolID(d.Uint32())
+}
+func (*binaryClassVkDedicatedAllocationImageCreateInfoNVᵖ) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeVkDedicatedAllocationImageCreateInfoNVᵖ(e, obj.(*VkDedicatedAllocationImageCreateInfoNVᵖ))
+}
+func (*binaryClassVkDedicatedAllocationImageCreateInfoNVᵖ) New() binary.Object {
+ return &VkDedicatedAllocationImageCreateInfoNVᵖ{}
+}
+func (*binaryClassVkDedicatedAllocationImageCreateInfoNVᵖ) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeVkDedicatedAllocationImageCreateInfoNVᵖ(d, obj.(*VkDedicatedAllocationImageCreateInfoNVᵖ))
+}
+func (o *VkDedicatedAllocationImageCreateInfoNVᵖ) WriteSimple(w binary.Writer) {
+ doEncodeVkDedicatedAllocationImageCreateInfoNVᵖ(w, o)
+}
+func (o *VkDedicatedAllocationImageCreateInfoNVᵖ) ReadSimple(r binary.Reader) {
+ doDecodeVkDedicatedAllocationImageCreateInfoNVᵖ(r, o)
+}
+func (c *binaryClassVkDedicatedAllocationImageCreateInfoNVᵖ) Schema() *binary.Entity {
+ return &entities[ixǁVkDedicatedAllocationImageCreateInfoNVᵖ]
+}
+
+type binaryClassVkDedicatedAllocationMemoryAllocateInfoNV struct{}
+
+func (*VkDedicatedAllocationMemoryAllocateInfoNV) Class() binary.Class {
+ return (*binaryClassVkDedicatedAllocationMemoryAllocateInfoNV)(nil)
+}
+func doEncodeVkDedicatedAllocationMemoryAllocateInfoNV(e binary.Writer, o *VkDedicatedAllocationMemoryAllocateInfoNV) {
+ e.Uint32(uint32(o.SType))
+ e.Simple(&o.PNext)
+ e.Uint64(uint64(o.Image))
+ e.Uint64(uint64(o.Buffer))
+}
+func doDecodeVkDedicatedAllocationMemoryAllocateInfoNV(d binary.Reader, o *VkDedicatedAllocationMemoryAllocateInfoNV) {
+ o.SType = VkStructureType(d.Uint32())
+ d.Simple(&o.PNext)
+ o.Image = VkImage(d.Uint64())
+ o.Buffer = VkBuffer(d.Uint64())
+}
+func doDecodeRawVkDedicatedAllocationMemoryAllocateInfoNV(d binary.Reader, o *VkDedicatedAllocationMemoryAllocateInfoNV) {
+ o.SType = VkStructureType(d.Uint32())
+ d.Simple(&o.PNext)
+ o.Image = VkImage(d.Uint64())
+ o.Buffer = VkBuffer(d.Uint64())
+}
+func (*binaryClassVkDedicatedAllocationMemoryAllocateInfoNV) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeVkDedicatedAllocationMemoryAllocateInfoNV(e, obj.(*VkDedicatedAllocationMemoryAllocateInfoNV))
+}
+func (*binaryClassVkDedicatedAllocationMemoryAllocateInfoNV) New() binary.Object {
+ return &VkDedicatedAllocationMemoryAllocateInfoNV{}
+}
+func (*binaryClassVkDedicatedAllocationMemoryAllocateInfoNV) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeVkDedicatedAllocationMemoryAllocateInfoNV(d, obj.(*VkDedicatedAllocationMemoryAllocateInfoNV))
+}
+func (o *VkDedicatedAllocationMemoryAllocateInfoNV) WriteSimple(w binary.Writer) {
+ doEncodeVkDedicatedAllocationMemoryAllocateInfoNV(w, o)
+}
+func (o *VkDedicatedAllocationMemoryAllocateInfoNV) ReadSimple(r binary.Reader) {
+ doDecodeVkDedicatedAllocationMemoryAllocateInfoNV(r, o)
+}
+func (c *binaryClassVkDedicatedAllocationMemoryAllocateInfoNV) Schema() *binary.Entity {
+ return &entities[ixǁVkDedicatedAllocationMemoryAllocateInfoNV]
+}
+
+type binaryClassVkDedicatedAllocationMemoryAllocateInfoNVˢ struct{}
+
+func (*VkDedicatedAllocationMemoryAllocateInfoNVˢ) Class() binary.Class {
+ return (*binaryClassVkDedicatedAllocationMemoryAllocateInfoNVˢ)(nil)
+}
+func doEncodeVkDedicatedAllocationMemoryAllocateInfoNVˢ(e binary.Writer, o *VkDedicatedAllocationMemoryAllocateInfoNVˢ) {
+ e.Simple(&o.SliceInfo)
+}
+func doDecodeVkDedicatedAllocationMemoryAllocateInfoNVˢ(d binary.Reader, o *VkDedicatedAllocationMemoryAllocateInfoNVˢ) {
+ d.Simple(&o.SliceInfo)
+}
+func doDecodeRawVkDedicatedAllocationMemoryAllocateInfoNVˢ(d binary.Reader, o *VkDedicatedAllocationMemoryAllocateInfoNVˢ) {
+ d.Simple(&o.SliceInfo)
+}
+func (*binaryClassVkDedicatedAllocationMemoryAllocateInfoNVˢ) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeVkDedicatedAllocationMemoryAllocateInfoNVˢ(e, obj.(*VkDedicatedAllocationMemoryAllocateInfoNVˢ))
+}
+func (*binaryClassVkDedicatedAllocationMemoryAllocateInfoNVˢ) New() binary.Object {
+ return &VkDedicatedAllocationMemoryAllocateInfoNVˢ{}
+}
+func (*binaryClassVkDedicatedAllocationMemoryAllocateInfoNVˢ) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeVkDedicatedAllocationMemoryAllocateInfoNVˢ(d, obj.(*VkDedicatedAllocationMemoryAllocateInfoNVˢ))
+}
+func (o *VkDedicatedAllocationMemoryAllocateInfoNVˢ) WriteSimple(w binary.Writer) {
+ doEncodeVkDedicatedAllocationMemoryAllocateInfoNVˢ(w, o)
+}
+func (o *VkDedicatedAllocationMemoryAllocateInfoNVˢ) ReadSimple(r binary.Reader) {
+ doDecodeVkDedicatedAllocationMemoryAllocateInfoNVˢ(r, o)
+}
+func (c *binaryClassVkDedicatedAllocationMemoryAllocateInfoNVˢ) Schema() *binary.Entity {
+ return &entities[ixǁVkDedicatedAllocationMemoryAllocateInfoNVˢ]
+}
+
+type binaryClassVkDedicatedAllocationMemoryAllocateInfoNVᵖ struct{}
+
+func (*VkDedicatedAllocationMemoryAllocateInfoNVᵖ) Class() binary.Class {
+ return (*binaryClassVkDedicatedAllocationMemoryAllocateInfoNVᵖ)(nil)
+}
+func doEncodeVkDedicatedAllocationMemoryAllocateInfoNVᵖ(e binary.Writer, o *VkDedicatedAllocationMemoryAllocateInfoNVᵖ) {
+ e.Uint64(o.Address)
+ e.Uint32(uint32(o.Pool))
+}
+func doDecodeVkDedicatedAllocationMemoryAllocateInfoNVᵖ(d binary.Reader, o *VkDedicatedAllocationMemoryAllocateInfoNVᵖ) {
+ o.Address = uint64(d.Uint64())
+ o.Pool = memory.PoolID(d.Uint32())
+}
+func doDecodeRawVkDedicatedAllocationMemoryAllocateInfoNVᵖ(d binary.Reader, o *VkDedicatedAllocationMemoryAllocateInfoNVᵖ) {
+ o.Address = uint64(d.Uint64())
+ o.Pool = memory.PoolID(d.Uint32())
+}
+func (*binaryClassVkDedicatedAllocationMemoryAllocateInfoNVᵖ) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeVkDedicatedAllocationMemoryAllocateInfoNVᵖ(e, obj.(*VkDedicatedAllocationMemoryAllocateInfoNVᵖ))
+}
+func (*binaryClassVkDedicatedAllocationMemoryAllocateInfoNVᵖ) New() binary.Object {
+ return &VkDedicatedAllocationMemoryAllocateInfoNVᵖ{}
+}
+func (*binaryClassVkDedicatedAllocationMemoryAllocateInfoNVᵖ) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeVkDedicatedAllocationMemoryAllocateInfoNVᵖ(d, obj.(*VkDedicatedAllocationMemoryAllocateInfoNVᵖ))
+}
+func (o *VkDedicatedAllocationMemoryAllocateInfoNVᵖ) WriteSimple(w binary.Writer) {
+ doEncodeVkDedicatedAllocationMemoryAllocateInfoNVᵖ(w, o)
+}
+func (o *VkDedicatedAllocationMemoryAllocateInfoNVᵖ) ReadSimple(r binary.Reader) {
+ doDecodeVkDedicatedAllocationMemoryAllocateInfoNVᵖ(r, o)
+}
+func (c *binaryClassVkDedicatedAllocationMemoryAllocateInfoNVᵖ) Schema() *binary.Entity {
+ return &entities[ixǁVkDedicatedAllocationMemoryAllocateInfoNVᵖ]
+}
+
type binaryClassVkDescriptorBufferInfoˢ struct{}
func (*VkDescriptorBufferInfoˢ) Class() binary.Class {
@@ -27413,51 +27876,6 @@
return &entities[ixǁVkImageBlitᵖ]
}
-type binaryClassVkImageCopy struct{}
-
-func (*VkImageCopy) Class() binary.Class {
- return (*binaryClassVkImageCopy)(nil)
-}
-func doEncodeVkImageCopy(e binary.Writer, o *VkImageCopy) {
- e.Simple(&o.SrcSubresource)
- e.Simple(&o.SrcOffset)
- e.Simple(&o.DstSubresource)
- e.Simple(&o.DstOffset)
- e.Simple(&o.Extent)
-}
-func doDecodeVkImageCopy(d binary.Reader, o *VkImageCopy) {
- d.Simple(&o.SrcSubresource)
- d.Simple(&o.SrcOffset)
- d.Simple(&o.DstSubresource)
- d.Simple(&o.DstOffset)
- d.Simple(&o.Extent)
-}
-func doDecodeRawVkImageCopy(d binary.Reader, o *VkImageCopy) {
- d.Simple(&o.SrcSubresource)
- d.Simple(&o.SrcOffset)
- d.Simple(&o.DstSubresource)
- d.Simple(&o.DstOffset)
- d.Simple(&o.Extent)
-}
-func (*binaryClassVkImageCopy) Encode(e binary.Encoder, obj binary.Object) {
- doEncodeVkImageCopy(e, obj.(*VkImageCopy))
-}
-func (*binaryClassVkImageCopy) New() binary.Object {
- return &VkImageCopy{}
-}
-func (*binaryClassVkImageCopy) DecodeTo(d binary.Decoder, obj binary.Object) {
- doDecodeVkImageCopy(d, obj.(*VkImageCopy))
-}
-func (o *VkImageCopy) WriteSimple(w binary.Writer) {
- doEncodeVkImageCopy(w, o)
-}
-func (o *VkImageCopy) ReadSimple(r binary.Reader) {
- doDecodeVkImageCopy(r, o)
-}
-func (c *binaryClassVkImageCopy) Schema() *binary.Entity {
- return &entities[ixǁVkImageCopy]
-}
-
type binaryClassVkImageCopyˢ struct{}
func (*VkImageCopyˢ) Class() binary.Class {
@@ -35116,6 +35534,75 @@
return &entities[ixǁVkSpecializationMapEntryᵖ]
}
+type binaryClassVkStructureTypeˢ struct{}
+
+func (*VkStructureTypeˢ) Class() binary.Class {
+ return (*binaryClassVkStructureTypeˢ)(nil)
+}
+func doEncodeVkStructureTypeˢ(e binary.Writer, o *VkStructureTypeˢ) {
+ e.Simple(&o.SliceInfo)
+}
+func doDecodeVkStructureTypeˢ(d binary.Reader, o *VkStructureTypeˢ) {
+ d.Simple(&o.SliceInfo)
+}
+func doDecodeRawVkStructureTypeˢ(d binary.Reader, o *VkStructureTypeˢ) {
+ d.Simple(&o.SliceInfo)
+}
+func (*binaryClassVkStructureTypeˢ) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeVkStructureTypeˢ(e, obj.(*VkStructureTypeˢ))
+}
+func (*binaryClassVkStructureTypeˢ) New() binary.Object {
+ return &VkStructureTypeˢ{}
+}
+func (*binaryClassVkStructureTypeˢ) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeVkStructureTypeˢ(d, obj.(*VkStructureTypeˢ))
+}
+func (o *VkStructureTypeˢ) WriteSimple(w binary.Writer) {
+ doEncodeVkStructureTypeˢ(w, o)
+}
+func (o *VkStructureTypeˢ) ReadSimple(r binary.Reader) {
+ doDecodeVkStructureTypeˢ(r, o)
+}
+func (c *binaryClassVkStructureTypeˢ) Schema() *binary.Entity {
+ return &entities[ixǁVkStructureTypeˢ]
+}
+
+type binaryClassVkStructureTypeᵖ struct{}
+
+func (*VkStructureTypeᵖ) Class() binary.Class {
+ return (*binaryClassVkStructureTypeᵖ)(nil)
+}
+func doEncodeVkStructureTypeᵖ(e binary.Writer, o *VkStructureTypeᵖ) {
+ e.Uint64(o.Address)
+ e.Uint32(uint32(o.Pool))
+}
+func doDecodeVkStructureTypeᵖ(d binary.Reader, o *VkStructureTypeᵖ) {
+ o.Address = uint64(d.Uint64())
+ o.Pool = memory.PoolID(d.Uint32())
+}
+func doDecodeRawVkStructureTypeᵖ(d binary.Reader, o *VkStructureTypeᵖ) {
+ o.Address = uint64(d.Uint64())
+ o.Pool = memory.PoolID(d.Uint32())
+}
+func (*binaryClassVkStructureTypeᵖ) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodeVkStructureTypeᵖ(e, obj.(*VkStructureTypeᵖ))
+}
+func (*binaryClassVkStructureTypeᵖ) New() binary.Object {
+ return &VkStructureTypeᵖ{}
+}
+func (*binaryClassVkStructureTypeᵖ) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodeVkStructureTypeᵖ(d, obj.(*VkStructureTypeᵖ))
+}
+func (o *VkStructureTypeᵖ) WriteSimple(w binary.Writer) {
+ doEncodeVkStructureTypeᵖ(w, o)
+}
+func (o *VkStructureTypeᵖ) ReadSimple(r binary.Reader) {
+ doDecodeVkStructureTypeᵖ(r, o)
+}
+func (c *binaryClassVkStructureTypeᵖ) Schema() *binary.Entity {
+ return &entities[ixǁVkStructureTypeᵖ]
+}
+
type binaryClassVkSubmitInfo struct{}
func (*VkSubmitInfo) Class() binary.Class {
diff --git a/gapid/image/df32s8.go b/gapid/image/df32s8.go
new file mode 100644
index 0000000..fa2ba92
--- /dev/null
+++ b/gapid/image/df32s8.go
@@ -0,0 +1,54 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package image
+
+import (
+ "bytes"
+
+ "android.googlesource.com/platform/tools/gpu/framework/binary"
+ "android.googlesource.com/platform/tools/gpu/framework/binary/endian"
+ "android.googlesource.com/platform/tools/gpu/framework/device"
+)
+
+type fmtDF32S8 struct{ binary.Generate }
+
+func (f *fmtDF32S8) Key() interface{} { return *f }
+func (*fmtDF32S8) String() string { return "DF32S8" }
+func (*fmtDF32S8) Size(w, h int) int { return w * h * 5 }
+func (*fmtDF32S8) Check(d []byte, w, h int) error { return checkSize(d, w, h, 40) }
+
+// DF32S8 returns a format containing an 32-bit signed float point depth and 8-bit
+// unsigned integer stencil value per pixel.
+func DF32S8() *fmtDF32S8 { return &fmtDF32S8{} }
+
+func init() {
+ RegisterConverter(DF32S8(), RGBA(),
+ func(src []byte, width, height int) ([]byte, error) {
+ r := endian.Reader(bytes.NewBuffer(src), device.LittleEndian)
+ dst, i := make([]byte, width*height*4), 0
+ for y := 0; y < height; y++ {
+ for x := 0; x < width; x++ {
+ d := r.Float32()
+ s := byte(r.Int8())
+ dst[i+0] = uint8(d * float32(255))
+ dst[i+1] = 0
+ dst[i+2] = s
+ dst[i+3] = 255
+ i += 4
+ }
+ }
+ return dst, nil
+ })
+}
diff --git a/gapid/image/image_binary.go b/gapid/image/image_binary.go
index 38e7399..ece6739 100644
--- a/gapid/image/image_binary.go
+++ b/gapid/image/image_binary.go
@@ -29,6 +29,7 @@
ixǁfmtAlpha
ixǁfmtBGRA
ixǁfmtD24S8
+ ixǁfmtDF32S8
ixǁfmtDepth16
ixǁfmtDepthF16
ixǁfmtDepthF32
@@ -63,7 +64,7 @@
ixǁfmtS3_DXT5_RGBA
)
-var entities [42]binary.Entity
+var entities [43]binary.Entity
var Namespace = registry.NewNamespace()
@@ -79,6 +80,7 @@
Namespace.AddClassOf((*fmtAlpha)(nil))
Namespace.AddClassOf((*fmtBGRA)(nil))
Namespace.AddClassOf((*fmtD24S8)(nil))
+ Namespace.AddClassOf((*fmtDF32S8)(nil))
Namespace.AddClassOf((*fmtDepth16)(nil))
Namespace.AddClassOf((*fmtDepthF16)(nil))
Namespace.AddClassOf((*fmtDepthF32)(nil))
@@ -468,6 +470,36 @@
return &entities[ixǁfmtD24S8]
}
+type binaryClassfmtDF32S8 struct{}
+
+func (*fmtDF32S8) Class() binary.Class {
+ return (*binaryClassfmtDF32S8)(nil)
+}
+func doEncodefmtDF32S8(e binary.Writer, o *fmtDF32S8) {
+}
+func doDecodefmtDF32S8(d binary.Reader, o *fmtDF32S8) {
+}
+func doDecodeRawfmtDF32S8(d binary.Reader, o *fmtDF32S8) {
+}
+func (*binaryClassfmtDF32S8) Encode(e binary.Encoder, obj binary.Object) {
+ doEncodefmtDF32S8(e, obj.(*fmtDF32S8))
+}
+func (*binaryClassfmtDF32S8) New() binary.Object {
+ return &fmtDF32S8{}
+}
+func (*binaryClassfmtDF32S8) DecodeTo(d binary.Decoder, obj binary.Object) {
+ doDecodefmtDF32S8(d, obj.(*fmtDF32S8))
+}
+func (o *fmtDF32S8) WriteSimple(w binary.Writer) {
+ doEncodefmtDF32S8(w, o)
+}
+func (o *fmtDF32S8) ReadSimple(r binary.Reader) {
+ doDecodefmtDF32S8(r, o)
+}
+func (c *binaryClassfmtDF32S8) Schema() *binary.Entity {
+ return &entities[ixǁfmtDF32S8]
+}
+
type binaryClassfmtDepth16 struct{}
func (*fmtDepth16) Class() binary.Class {
diff --git a/gapid/pkgdata/layout.go b/gapid/pkgdata/layout.go
index 2629154..c40dd77 100644
--- a/gapid/pkgdata/layout.go
+++ b/gapid/pkgdata/layout.go
@@ -35,6 +35,13 @@
device.Android: "android",
}
+var pkgABIToDir = map[string]string{
+ "armeabi": "armeabi-v7a",
+ "armeabi-v7a": "armeabi-v7a",
+ "arm64-v8a": "arm64-v8a",
+ "x86": "x86",
+}
+
// pkgLayout is the file layout used when running executables from a packaged
// build.
type pkgLayout struct {
@@ -42,7 +49,7 @@
}
func (l pkgLayout) File(ctx log.Context, abi device.ABI, name string) (file.Path, error) {
- return l.root.Join(packageOSToDir[abi.OS], abi.Name, name), nil
+ return l.root.Join(packageOSToDir[abi.OS], pkgABIToDir[abi.Name], name), nil
}
func (l pkgLayout) Strings(ctx log.Context) (file.Path, error) {
diff --git a/gapid/robot/build/CMakeFiles.cmake b/gapid/robot/build/CMakeFiles.cmake
index d4ebf58..504f10d 100644
--- a/gapid/robot/build/CMakeFiles.cmake
+++ b/gapid/robot/build/CMakeFiles.cmake
@@ -22,6 +22,7 @@
build.go
build.pb.go
build.proto
+ doc.go
local.go
package.go
remote.go
diff --git a/gapid/robot/master/CMakeFiles.cmake b/gapid/robot/master/CMakeFiles.cmake
index 831932e..9be95e0 100644
--- a/gapid/robot/master/CMakeFiles.cmake
+++ b/gapid/robot/master/CMakeFiles.cmake
@@ -19,6 +19,7 @@
set(files
client.go
+ doc.go
local.go
master.go
master.pb.go
diff --git a/gapid/robot/subject/CMakeFiles.cmake b/gapid/robot/subject/CMakeFiles.cmake
index 25fdc7c..2e97981 100644
--- a/gapid/robot/subject/CMakeFiles.cmake
+++ b/gapid/robot/subject/CMakeFiles.cmake
@@ -18,6 +18,7 @@
# build and the file will be recreated, check in the new version.
set(files
+ doc.go
local.go
remote.go
server.go
diff --git a/gapid/robot/web/CMakeFiles.cmake b/gapid/robot/web/CMakeFiles.cmake
index 06287f8..1718597 100644
--- a/gapid/robot/web/CMakeFiles.cmake
+++ b/gapid/robot/web/CMakeFiles.cmake
@@ -19,6 +19,7 @@
set(files
build.go
+ doc.go
embed.go
master.go
static.go
diff --git a/signatures.txt b/signatures.txt
index f93e842..cadb530 100644
--- a/signatures.txt
+++ b/signatures.txt
@@ -221,9 +221,18 @@
ActiveUniform : pod : full 94 compact 27
gles.ActiveUniform{String,Uint32,Int32,Int32}
+AndroidNativeBufferExtra : pod : full 150 compact 39
+gles.AndroidNativeBufferExtra{Uint32,Uint32,Uint32,Uint32,Uint32}
+
BlendState : pod : full 147 compact 27
gles.BlendState{Uint8,Uint32,Uint32,Uint32,Uint32,Uint32,Uint32}
+Boolˢ : pod : full 38 compact 18
+gles.Boolˢ{$}
+
+Boolᵖ : pod : full 55 compact 19
+gles.Boolᵖ{Uint64,Uint32}
+
BoundingBox : pod : full 47 compact 25
gles.BoundingBox{$,$}
@@ -476,12 +485,15 @@
EglCopyBuffers : entity : full 154 compact 33
gles.EglCopyBuffers{[]?,$,$,$,Int64}
-EglCreateContext : entity : full 169 compact 38
+EglCreateContext : entity : full 172 compact 38
gles.EglCreateContext{[]?,$,$,$,$,$}
EglCreateImageKHR : entity : full 183 compact 40
gles.EglCreateImageKHR{[]?,$,$,Uint32,$,$,$}
+EglCreateNativeClientBufferANDROID : entity : full 129 compact 50
+gles.EglCreateNativeClientBufferANDROID{[]?,$,$}
+
EglCreatePbufferFromClientBuffer : entity : full 204 compact 55
gles.EglCreatePbufferFromClientBuffer{[]?,$,Uint32,$,$,$,$}
@@ -695,6 +707,15 @@
GLfloatᶜᵖ : pod : full 61 compact 25
gles.GLfloatᶜᵖ{Uint64,Uint32}
+GLint64EXTˢ : pod : full 44 compact 24
+gles.GLint64EXTˢ{$}
+
+GLint64EXTᵖ : pod : full 61 compact 25
+gles.GLint64EXTᵖ{Uint64,Uint32}
+
+GLint64EXTᶜᵖ : pod : full 64 compact 28
+gles.GLint64EXTᶜᵖ{Uint64,Uint32}
+
GLint64ˢ : pod : full 41 compact 21
gles.GLint64ˢ{$}
@@ -752,6 +773,15 @@
GLubyteᶜᵖ : pod : full 61 compact 25
gles.GLubyteᶜᵖ{Uint64,Uint32}
+GLuint64EXTˢ : pod : full 45 compact 25
+gles.GLuint64EXTˢ{$}
+
+GLuint64EXTᵖ : pod : full 62 compact 26
+gles.GLuint64EXTᵖ{Uint64,Uint32}
+
+GLuint64EXTᶜᵖ : pod : full 65 compact 29
+gles.GLuint64EXTᶜᵖ{Uint64,Uint32}
+
GLuint64ˢ : pod : full 42 compact 22
gles.GLuint64ˢ{$}
@@ -1019,9 +1049,18 @@
GlClearDepthx : entity : full 72 compact 26
gles.GlClearDepthx{[]?,Int32}
+GlClearPixelLocalStorageuiEXT : entity : full 122 compact 45
+gles.GlClearPixelLocalStorageuiEXT{[]?,Int32,Int32,$}
+
GlClearStencil : entity : full 73 compact 27
gles.GlClearStencil{[]?,Int32}
+GlClearTexImageEXT : entity : full 137 compact 36
+gles.GlClearTexImageEXT{[]?,Uint32,Int32,Uint32,Uint32,$}
+
+GlClearTexSubImageEXT : entity : full 231 compact 45
+gles.GlClearTexSubImageEXT{[]?,Uint32,Int32,Int32,Int32,Int32,Int32,Int32,Int32,Uint32,Uint32,$}
+
GlClear : entity : full 68 compact 20
gles.GlClear{[]?,Uint32}
@@ -1103,6 +1142,9 @@
GlCompressedTexSubImage3D : entity : full 244 compact 49
gles.GlCompressedTexSubImage3D{[]?,Uint32,Int32,Int32,Int32,Int32,Int32,Int32,Int32,Uint32,Int32,$}
+GlConservativeRasterParameteriNV : entity : full 103 compact 46
+gles.GlConservativeRasterParameteriNV{[]?,Uint32,Int32}
+
GlCopyBufferSubDataNV : entity : full 164 compact 38
gles.GlCopyBufferSubDataNV{[]?,Uint32,Uint32,Int32,Int32,Int32}
@@ -1274,9 +1316,15 @@
GlDepthRangeArrayfvNV : entity : full 112 compact 37
gles.GlDepthRangeArrayfvNV{[]?,Uint32,Int32,$}
+GlDepthRangeArrayfvOES : entity : full 113 compact 38
+gles.GlDepthRangeArrayfvOES{[]?,Uint32,Int32,$}
+
GlDepthRangeIndexedfNV : entity : full 102 compact 37
gles.GlDepthRangeIndexedfNV{[]?,Uint32,Float32,Float32}
+GlDepthRangeIndexedfOES : entity : full 103 compact 38
+gles.GlDepthRangeIndexedfOES{[]?,Uint32,Float32,Float32}
+
GlDepthRangefOES : entity : full 84 compact 30
gles.GlDepthRangefOES{[]?,Float32,Float32}
@@ -1436,6 +1484,12 @@
GlDrawTexxvOES : entity : full 81 compact 28
gles.GlDrawTexxvOES{[]?,$}
+GlDrawTransformFeedbackEXT : entity : full 94 compact 40
+gles.GlDrawTransformFeedbackEXT{[]?,Uint32,Uint32}
+
+GlDrawTransformFeedbackInstancedEXT : entity : full 126 compact 50
+gles.GlDrawTransformFeedbackInstancedEXT{[]?,Uint32,Uint32,Int32}
+
GlEGLImageTargetRenderbufferStorageOES : entity : full 119 compact 53
gles.GlEGLImageTargetRenderbufferStorageOES{[]?,Uint32,$}
@@ -1568,6 +1622,9 @@
GlFramebufferParameteri : entity : full 109 compact 38
gles.GlFramebufferParameteri{[]?,Uint32,Uint32,Int32}
+GlFramebufferPixelLocalStorageSizeEXT : entity : full 110 compact 51
+gles.GlFramebufferPixelLocalStorageSizeEXT{[]?,Uint32,Int32}
+
GlFramebufferRenderbufferOES : entity : full 154 compact 44
gles.GlFramebufferRenderbufferOES{[]?,Uint32,Uint32,Uint32,Uint32}
@@ -1577,6 +1634,9 @@
GlFramebufferSampleLocationsfvNV : entity : full 138 compact 49
gles.GlFramebufferSampleLocationsfvNV{[]?,Uint32,Uint32,Int32,$}
+GlFramebufferTexture2DDownsampleIMG : entity : full 188 compact 54
+gles.GlFramebufferTexture2DDownsampleIMG{[]?,Uint32,Uint32,Uint32,Uint32,Int32,Int32,Int32}
+
GlFramebufferTexture2DMultisampleEXT : entity : full 181 compact 54
gles.GlFramebufferTexture2DMultisampleEXT{[]?,Uint32,Uint32,Uint32,Uint32,Int32,Int32}
@@ -1595,9 +1655,15 @@
GlFramebufferTextureEXT : entity : full 133 compact 39
gles.GlFramebufferTextureEXT{[]?,Uint32,Uint32,Uint32,Int32}
+GlFramebufferTextureLayerDownsampleIMG : entity : full 186 compact 57
+gles.GlFramebufferTextureLayerDownsampleIMG{[]?,Uint32,Uint32,Uint32,Int32,Int32,Int32,Int32}
+
GlFramebufferTextureLayer : entity : full 148 compact 42
gles.GlFramebufferTextureLayer{[]?,Uint32,Uint32,Uint32,Int32,Int32}
+GlFramebufferTextureMultisampleMultiviewOVR : entity : full 206 compact 62
+gles.GlFramebufferTextureMultisampleMultiviewOVR{[]?,Uint32,Uint32,Uint32,Int32,Int32,Int32,Int32}
+
GlFramebufferTextureMultiviewOVR : entity : full 181 compact 50
gles.GlFramebufferTextureMultiviewOVR{[]?,Uint32,Uint32,Uint32,Int32,Int32,Int32}
@@ -1763,6 +1829,9 @@
GlGetFloati_vNV : entity : full 106 compact 31
gles.GlGetFloati_vNV{[]?,Uint32,Uint32,$}
+GlGetFloati_vOES : entity : full 107 compact 32
+gles.GlGetFloati_vOES{[]?,Uint32,Uint32,$}
+
GlGetFloatv : entity : full 89 compact 26
gles.GlGetFloatv{[]?,Uint32,$}
@@ -1781,6 +1850,9 @@
GlGetFramebufferParameteriv : entity : full 118 compact 43
gles.GlGetFramebufferParameteriv{[]?,Uint32,Uint32,$}
+GlGetFramebufferPixelLocalStorageSizeEXT : entity : full 115 compact 54
+gles.GlGetFramebufferPixelLocalStorageSizeEXT{[]?,Uint32,Int32}
+
GlGetGraphicsResetStatusEXT : entity : full 86 compact 40
gles.GlGetGraphicsResetStatusEXT{[]?,Uint32}
@@ -2102,9 +2174,15 @@
GlGetTexParameterxv : entity : full 112 compact 35
gles.GlGetTexParameterxv{[]?,Uint32,Uint32,$}
+GlGetTextureHandleIMG : entity : full 98 compact 35
+gles.GlGetTextureHandleIMG{[]?,Uint32,Uint64}
+
GlGetTextureHandleNV : entity : full 100 compact 34
gles.GlGetTextureHandleNV{[]?,Uint32,Uint64}
+GlGetTextureSamplerHandleIMG : entity : full 121 compact 43
+gles.GlGetTextureSamplerHandleIMG{[]?,Uint32,Uint32,Uint64}
+
GlGetTextureSamplerHandleNV : entity : full 126 compact 42
gles.GlGetTextureSamplerHandleNV{[]?,Uint32,Uint32,Uint64}
@@ -2126,6 +2204,9 @@
GlGetUniformfv : entity : full 123 compact 30
gles.GlGetUniformfv{[]?,Uint32,Int32,$}
+GlGetUniformi64vNV : entity : full 117 compact 34
+gles.GlGetUniformi64vNV{[]?,Uint32,Int32,$}
+
GlGetUniformiv : entity : full 121 compact 30
gles.GlGetUniformiv{[]?,Uint32,Int32,$}
@@ -2609,6 +2690,9 @@
GlPolygonModeNV : entity : full 85 compact 29
gles.GlPolygonModeNV{[]?,Uint32,Uint32}
+GlPolygonOffsetClampEXT : entity : full 113 compact 38
+gles.GlPolygonOffsetClampEXT{[]?,Float32,Float32,Float32}
+
GlPolygonOffsetxOES : entity : full 94 compact 33
gles.GlPolygonOffsetxOES{[]?,Int32,Int32}
@@ -2666,6 +2750,12 @@
GlProgramUniform1f : entity : full 123 compact 33
gles.GlProgramUniform1f{[]?,Uint32,Int32,Float32}
+GlProgramUniform1i64NV : entity : full 112 compact 37
+gles.GlProgramUniform1i64NV{[]?,Uint32,Int32,Int64}
+
+GlProgramUniform1i64vNV : entity : full 139 compact 40
+gles.GlProgramUniform1i64vNV{[]?,Uint32,Int32,Int32,$}
+
GlProgramUniform1iEXT : entity : full 120 compact 36
gles.GlProgramUniform1iEXT{[]?,Uint32,Int32,Int32}
@@ -2678,6 +2768,12 @@
GlProgramUniform1i : entity : full 121 compact 33
gles.GlProgramUniform1i{[]?,Uint32,Int32,Int32}
+GlProgramUniform1ui64NV : entity : full 114 compact 38
+gles.GlProgramUniform1ui64NV{[]?,Uint32,Int32,Uint64}
+
+GlProgramUniform1ui64vNV : entity : full 141 compact 41
+gles.GlProgramUniform1ui64vNV{[]?,Uint32,Int32,Int32,$}
+
GlProgramUniform1uiEXT : entity : full 122 compact 37
gles.GlProgramUniform1uiEXT{[]?,Uint32,Int32,Uint32}
@@ -2702,6 +2798,12 @@
GlProgramUniform2f : entity : full 139 compact 34
gles.GlProgramUniform2f{[]?,Uint32,Int32,Float32,Float32}
+GlProgramUniform2i64NV : entity : full 126 compact 38
+gles.GlProgramUniform2i64NV{[]?,Uint32,Int32,Int64,Int64}
+
+GlProgramUniform2i64vNV : entity : full 139 compact 40
+gles.GlProgramUniform2i64vNV{[]?,Uint32,Int32,Int32,$}
+
GlProgramUniform2iEXT : entity : full 130 compact 37
gles.GlProgramUniform2iEXT{[]?,Uint32,Int32,Int32,Int32}
@@ -2714,6 +2816,12 @@
GlProgramUniform2i : entity : full 135 compact 34
gles.GlProgramUniform2i{[]?,Uint32,Int32,Int32,Int32}
+GlProgramUniform2ui64NV : entity : full 129 compact 39
+gles.GlProgramUniform2ui64NV{[]?,Uint32,Int32,Uint64,Uint64}
+
+GlProgramUniform2ui64vNV : entity : full 141 compact 41
+gles.GlProgramUniform2ui64vNV{[]?,Uint32,Int32,Int32,$}
+
GlProgramUniform2uiEXT : entity : full 133 compact 38
gles.GlProgramUniform2uiEXT{[]?,Uint32,Int32,Uint32,Uint32}
@@ -2738,6 +2846,12 @@
GlProgramUniform3f : entity : full 155 compact 35
gles.GlProgramUniform3f{[]?,Uint32,Int32,Float32,Float32,Float32}
+GlProgramUniform3i64NV : entity : full 140 compact 39
+gles.GlProgramUniform3i64NV{[]?,Uint32,Int32,Int64,Int64,Int64}
+
+GlProgramUniform3i64vNV : entity : full 139 compact 40
+gles.GlProgramUniform3i64vNV{[]?,Uint32,Int32,Int32,$}
+
GlProgramUniform3iEXT : entity : full 140 compact 38
gles.GlProgramUniform3iEXT{[]?,Uint32,Int32,Int32,Int32,Int32}
@@ -2750,6 +2864,12 @@
GlProgramUniform3i : entity : full 149 compact 35
gles.GlProgramUniform3i{[]?,Uint32,Int32,Int32,Int32,Int32}
+GlProgramUniform3ui64NV : entity : full 144 compact 40
+gles.GlProgramUniform3ui64NV{[]?,Uint32,Int32,Uint64,Uint64,Uint64}
+
+GlProgramUniform3ui64vNV : entity : full 141 compact 41
+gles.GlProgramUniform3ui64vNV{[]?,Uint32,Int32,Int32,$}
+
GlProgramUniform3uiEXT : entity : full 144 compact 39
gles.GlProgramUniform3uiEXT{[]?,Uint32,Int32,Uint32,Uint32,Uint32}
@@ -2774,6 +2894,12 @@
GlProgramUniform4f : entity : full 171 compact 36
gles.GlProgramUniform4f{[]?,Uint32,Int32,Float32,Float32,Float32,Float32}
+GlProgramUniform4i64NV : entity : full 154 compact 40
+gles.GlProgramUniform4i64NV{[]?,Uint32,Int32,Int64,Int64,Int64,Int64}
+
+GlProgramUniform4i64vNV : entity : full 139 compact 40
+gles.GlProgramUniform4i64vNV{[]?,Uint32,Int32,Int32,$}
+
GlProgramUniform4iEXT : entity : full 150 compact 39
gles.GlProgramUniform4iEXT{[]?,Uint32,Int32,Int32,Int32,Int32,Int32}
@@ -2786,6 +2912,12 @@
GlProgramUniform4i : entity : full 163 compact 36
gles.GlProgramUniform4i{[]?,Uint32,Int32,Int32,Int32,Int32,Int32}
+GlProgramUniform4ui64NV : entity : full 159 compact 41
+gles.GlProgramUniform4ui64NV{[]?,Uint32,Int32,Uint64,Uint64,Uint64,Uint64}
+
+GlProgramUniform4ui64vNV : entity : full 141 compact 41
+gles.GlProgramUniform4ui64vNV{[]?,Uint32,Int32,Int32,$}
+
GlProgramUniform4uiEXT : entity : full 155 compact 40
gles.GlProgramUniform4uiEXT{[]?,Uint32,Int32,Uint32,Uint32,Uint32,Uint32}
@@ -2798,9 +2930,15 @@
GlProgramUniform4ui : entity : full 168 compact 37
gles.GlProgramUniform4ui{[]?,Uint32,Int32,Uint32,Uint32,Uint32,Uint32}
+GlProgramUniformHandleui64IMG : entity : full 121 compact 44
+gles.GlProgramUniformHandleui64IMG{[]?,Uint32,Int32,Uint64}
+
GlProgramUniformHandleui64NV : entity : full 133 compact 43
gles.GlProgramUniformHandleui64NV{[]?,Uint32,Int32,Uint64}
+GlProgramUniformHandleui64vIMG : entity : full 145 compact 47
+gles.GlProgramUniformHandleui64vIMG{[]?,Uint32,Int32,Int32,$}
+
GlProgramUniformHandleui64vNV : entity : full 157 compact 46
gles.GlProgramUniformHandleui64vNV{[]?,Uint32,Int32,Int32,$}
@@ -2999,12 +3137,21 @@
GlScissorArrayvNV : entity : full 106 compact 33
gles.GlScissorArrayvNV{[]?,Uint32,Int32,$}
+GlScissorArrayvOES : entity : full 107 compact 34
+gles.GlScissorArrayvOES{[]?,Uint32,Int32,$}
+
GlScissorIndexedNV : entity : full 133 compact 35
gles.GlScissorIndexedNV{[]?,Uint32,Int32,Int32,Int32,Int32}
+GlScissorIndexedOES : entity : full 134 compact 36
+gles.GlScissorIndexedOES{[]?,Uint32,Int32,Int32,Int32,Int32}
+
GlScissorIndexedvNV : entity : full 93 compact 34
gles.GlScissorIndexedvNV{[]?,Uint32,$}
+GlScissorIndexedvOES : entity : full 94 compact 35
+gles.GlScissorIndexedvOES{[]?,Uint32,$}
+
GlScissor : entity : full 102 compact 25
gles.GlScissor{[]?,Int32,Int32,Int32,Int32}
@@ -3266,12 +3413,24 @@
GlUniform1f : entity : full 96 compact 25
gles.GlUniform1f{[]?,Int32,Float32}
+GlUniform1i64NV : entity : full 89 compact 29
+gles.GlUniform1i64NV{[]?,Int32,Int64}
+
+GlUniform1i64vNV : entity : full 116 compact 32
+gles.GlUniform1i64vNV{[]?,Int32,Int32,$}
+
GlUniform1iv : entity : full 118 compact 28
gles.GlUniform1iv{[]?,Int32,Int32,$}
GlUniform1i : entity : full 94 compact 25
gles.GlUniform1i{[]?,Int32,Int32}
+GlUniform1ui64NV : entity : full 91 compact 30
+gles.GlUniform1ui64NV{[]?,Int32,Uint64}
+
+GlUniform1ui64vNV : entity : full 118 compact 33
+gles.GlUniform1ui64vNV{[]?,Int32,Int32,$}
+
GlUniform1uiv : entity : full 120 compact 29
gles.GlUniform1uiv{[]?,Int32,Int32,$}
@@ -3284,12 +3443,24 @@
GlUniform2f : entity : full 113 compact 26
gles.GlUniform2f{[]?,Int32,Float32,Float32}
+GlUniform2i64NV : entity : full 103 compact 30
+gles.GlUniform2i64NV{[]?,Int32,Int64,Int64}
+
+GlUniform2i64vNV : entity : full 116 compact 32
+gles.GlUniform2i64vNV{[]?,Int32,Int32,$}
+
GlUniform2iv : entity : full 118 compact 28
gles.GlUniform2iv{[]?,Int32,Int32,$}
GlUniform2i : entity : full 109 compact 26
gles.GlUniform2i{[]?,Int32,Int32,Int32}
+GlUniform2ui64NV : entity : full 106 compact 31
+gles.GlUniform2ui64NV{[]?,Int32,Uint64,Uint64}
+
+GlUniform2ui64vNV : entity : full 118 compact 33
+gles.GlUniform2ui64vNV{[]?,Int32,Int32,$}
+
GlUniform2uiv : entity : full 120 compact 29
gles.GlUniform2uiv{[]?,Int32,Int32,$}
@@ -3302,12 +3473,24 @@
GlUniform3f : entity : full 129 compact 27
gles.GlUniform3f{[]?,Int32,Float32,Float32,Float32}
+GlUniform3i64NV : entity : full 117 compact 31
+gles.GlUniform3i64NV{[]?,Int32,Int64,Int64,Int64}
+
+GlUniform3i64vNV : entity : full 116 compact 32
+gles.GlUniform3i64vNV{[]?,Int32,Int32,$}
+
GlUniform3iv : entity : full 118 compact 28
gles.GlUniform3iv{[]?,Int32,Int32,$}
GlUniform3i : entity : full 123 compact 27
gles.GlUniform3i{[]?,Int32,Int32,Int32,Int32}
+GlUniform3ui64NV : entity : full 121 compact 32
+gles.GlUniform3ui64NV{[]?,Int32,Uint64,Uint64,Uint64}
+
+GlUniform3ui64vNV : entity : full 118 compact 33
+gles.GlUniform3ui64vNV{[]?,Int32,Int32,$}
+
GlUniform3uiv : entity : full 120 compact 29
gles.GlUniform3uiv{[]?,Int32,Int32,$}
@@ -3320,12 +3503,24 @@
GlUniform4f : entity : full 145 compact 28
gles.GlUniform4f{[]?,Int32,Float32,Float32,Float32,Float32}
+GlUniform4i64NV : entity : full 131 compact 32
+gles.GlUniform4i64NV{[]?,Int32,Int64,Int64,Int64,Int64}
+
+GlUniform4i64vNV : entity : full 116 compact 32
+gles.GlUniform4i64vNV{[]?,Int32,Int32,$}
+
GlUniform4iv : entity : full 118 compact 28
gles.GlUniform4iv{[]?,Int32,Int32,$}
GlUniform4i : entity : full 137 compact 28
gles.GlUniform4i{[]?,Int32,Int32,Int32,Int32,Int32}
+GlUniform4ui64NV : entity : full 136 compact 33
+gles.GlUniform4ui64NV{[]?,Int32,Uint64,Uint64,Uint64,Uint64}
+
+GlUniform4ui64vNV : entity : full 118 compact 33
+gles.GlUniform4ui64vNV{[]?,Int32,Int32,$}
+
GlUniform4uiv : entity : full 120 compact 29
gles.GlUniform4uiv{[]?,Int32,Int32,$}
@@ -3335,9 +3530,15 @@
GlUniformBlockBinding : entity : full 146 compact 36
gles.GlUniformBlockBinding{[]?,Uint32,Uint32,Uint32}
+GlUniformHandleui64IMG : entity : full 98 compact 36
+gles.GlUniformHandleui64IMG{[]?,Int32,Uint64}
+
GlUniformHandleui64NV : entity : full 107 compact 35
gles.GlUniformHandleui64NV{[]?,Int32,Uint64}
+GlUniformHandleui64vIMG : entity : full 121 compact 39
+gles.GlUniformHandleui64vIMG{[]?,Int32,Int32,$}
+
GlUniformHandleui64vNV : entity : full 130 compact 38
gles.GlUniformHandleui64vNV{[]?,Int32,Int32,$}
@@ -3485,12 +3686,24 @@
GlViewportArrayvNV : entity : full 109 compact 34
gles.GlViewportArrayvNV{[]?,Uint32,Int32,$}
+GlViewportArrayvOES : entity : full 110 compact 35
+gles.GlViewportArrayvOES{[]?,Uint32,Int32,$}
+
GlViewportIndexedfNV : entity : full 122 compact 37
gles.GlViewportIndexedfNV{[]?,Uint32,Float32,Float32,Float32,Float32}
+GlViewportIndexedfOES : entity : full 123 compact 38
+gles.GlViewportIndexedfOES{[]?,Uint32,Float32,Float32,Float32,Float32}
+
GlViewportIndexedfvNV : entity : full 97 compact 36
gles.GlViewportIndexedfvNV{[]?,Uint32,$}
+GlViewportIndexedfvOES : entity : full 98 compact 37
+gles.GlViewportIndexedfvOES{[]?,Uint32,$}
+
+GlViewportSwizzleNV : entity : full 145 compact 36
+gles.GlViewportSwizzleNV{[]?,Uint32,Uint32,Uint32,Uint32,Uint32}
+
GlViewport : entity : full 103 compact 26
gles.GlViewport{[]?,Int32,Int32,Int32,Int32}
@@ -3509,6 +3722,9 @@
GlWeightPointerOES : entity : full 124 compact 35
gles.GlWeightPointerOES{[]?,Int32,Uint32,Int32,$}
+GlWindowRectanglesEXT : entity : full 111 compact 37
+gles.GlWindowRectanglesEXT{[]?,Uint32,Int32,$}
+
GlXCreateContext : entity : full 144 compact 37
gles.GlXCreateContext{[]?,$,$,$,Bool,$}
@@ -3722,8 +3938,8 @@
SamplerIdᶜᵖ : pod : full 63 compact 27
gles.SamplerIdᶜᵖ{Uint64,Uint32}
-Sampler : pod : full 203 compact 29
-gles.Sampler{$,Uint32,Uint32,Uint32,Uint32,Uint32,Float32,Float32,Uint32,Uint32,String}
+Sampler : pod : full 226 compact 30
+gles.Sampler{$,Uint32,Uint32,Uint32,Uint32,Uint32,Float32,Float32,Uint32,Uint32,String,Float32}
ScissorState : pod : full 51 compact 25
gles.ScissorState{Uint8,$}
@@ -3746,8 +3962,8 @@
StartTimer : entity : full 67 compact 23
gles.StartTimer{[]?,Uint8}
-State : entity : full 364 compact 46
-gles.State{map[$]*$,Uint32,Uint64,map[Uint64]*$,map[$]*$,map[$]*$,map[$]*$}
+State : entity : full 460 compact 52
+gles.State{map[$]*$,map[$]*$,Uint32,Uint64,map[Uint64]*$,map[$]*$,map[$]*$,map[$]*$}
StaticContextState : simple : full 52 compact 30
gles.StaticContextState{$}
@@ -3779,8 +3995,8 @@
TextureUnit : pod : full 298 compact 31
gles.TextureUnit{Uint32,Uint32,Uint32,Uint32,Uint32,Uint32,Uint32,Uint32,Uint32,Uint32}
-Texture : entity : full 571 compact 51
-gles.Texture{Uint32,Uint32,Uint32,Uint32,map[Int32]$,map[Int32]$,Uint32,Uint32,Uint32,Uint32,$,Uint32,Uint32,Uint32,Uint32,Uint32,Float32,Float32,Int32,Int32,Uint32,Uint32,Uint32,Uint8,Uint32,String,Float32}
+Texture : entity : full 596 compact 53
+gles.Texture{Uint32,Uint32,Uint32,Uint32,map[Int32]$,map[Int32]$,Uint32,Uint32,Uint32,Uint32,$,Uint32,Uint32,Uint32,Uint32,Uint32,Float32,Float32,Int32,Int32,Uint32,Uint32,Uint32,Uint8,Uint32,String,Float32,$}
TransformFeedbackIdˢ : pod : full 53 compact 33
gles.TransformFeedbackIdˢ{$}
@@ -4040,6 +4256,9 @@
fmtD24S8 : pod : full 21 compact 19
image.fmtD24S8{}
+fmtDF32S8 : pod : full 22 compact 20
+image.fmtDF32S8{}
+
fmtDepth16 : pod : full 23 compact 21
image.fmtDepth16{}
@@ -5120,8 +5339,8 @@
BoundBuffer : pod : full 63 compact 25
vulkan.BoundBuffer{Uint64,Uint64}
-BufferObject : pod : full 93 compact 27
-vulkan.BufferObject{Uint64,Uint64,Uint64}
+BufferObject : pod : full 118 compact 28
+vulkan.BufferObject{Uint64,Uint64,Uint64,Uint64}
BufferViewObject : pod : full 64 compact 30
vulkan.BufferViewObject{Uint64,Uint64}
@@ -5159,6 +5378,9 @@
CmdCopyBufferToImage : simple : full 135 compact 38
vulkan.CmdCopyBufferToImage{Uint64,Uint64,map[Uint64]$}
+CmdCopyImage : simple : full 113 compact 30
+vulkan.CmdCopyImage{Uint64,Uint64,map[Uint64]$}
+
CmdPipelineBarrier : simple : full 107 compact 34
vulkan.CmdPipelineBarrier{map[Uint32]$}
@@ -5972,6 +6194,33 @@
VkDebugReportMessageEXT : entity : full 247 compact 45
vulkan.VkDebugReportMessageEXT{[]?,Uint64,Uint32,Uint32,Uint64,Uint64,Int32,String,String}
+VkDedicatedAllocationBufferCreateInfoNV : pod : full 125 compact 55
+vulkan.VkDedicatedAllocationBufferCreateInfoNV{Uint32,$,Uint32}
+
+VkDedicatedAllocationBufferCreateInfoNVˢ : pod : full 75 compact 55
+vulkan.VkDedicatedAllocationBufferCreateInfoNVˢ{$}
+
+VkDedicatedAllocationBufferCreateInfoNVᵖ : pod : full 92 compact 56
+vulkan.VkDedicatedAllocationBufferCreateInfoNVᵖ{Uint64,Uint32}
+
+VkDedicatedAllocationImageCreateInfoNV : pod : full 124 compact 54
+vulkan.VkDedicatedAllocationImageCreateInfoNV{Uint32,$,Uint32}
+
+VkDedicatedAllocationImageCreateInfoNVˢ : pod : full 74 compact 54
+vulkan.VkDedicatedAllocationImageCreateInfoNVˢ{$}
+
+VkDedicatedAllocationImageCreateInfoNVᵖ : pod : full 91 compact 55
+vulkan.VkDedicatedAllocationImageCreateInfoNVᵖ{Uint64,Uint32}
+
+VkDedicatedAllocationMemoryAllocateInfoNV : pod : full 129 compact 58
+vulkan.VkDedicatedAllocationMemoryAllocateInfoNV{Uint32,$,Uint64,Uint64}
+
+VkDedicatedAllocationMemoryAllocateInfoNVˢ : pod : full 77 compact 57
+vulkan.VkDedicatedAllocationMemoryAllocateInfoNVˢ{$}
+
+VkDedicatedAllocationMemoryAllocateInfoNVᵖ : pod : full 94 compact 58
+vulkan.VkDedicatedAllocationMemoryAllocateInfoNVᵖ{Uint64,Uint32}
+
VkDescriptorBufferInfo : pod : full 94 compact 37
vulkan.VkDescriptorBufferInfo{Uint64,Uint64,Uint64}
@@ -7307,6 +7556,12 @@
VkStencilOpState : pod : full 174 compact 35
vulkan.VkStencilOpState{Uint32,Uint32,Uint32,Uint32,Uint32,Uint32,Uint32}
+VkStructureTypeˢ : pod : full 51 compact 31
+vulkan.VkStructureTypeˢ{$}
+
+VkStructureTypeᵖ : pod : full 68 compact 32
+vulkan.VkStructureTypeᵖ{Uint64,Uint32}
+
VkSubmitInfo : pod : full 312 compact 38
vulkan.VkSubmitInfo{Uint32,$,Uint32,$,$,Uint32,$,Uint32,$}
@@ -7536,12 +7791,12 @@
vulkan.xcb_connection_t{}
Schema stats:
-Count: 2512
-Full: 273276
-Total: 271528
+Count: 2597
+Full: 283166
+Total: 281373
Average: 108
Largest: 5196
-Compact: 85930
-Total: 84189
+Compact: 89279
+Total: 87493
Average: 33
Largest: 187