am 6272fa1b: Merge "DO NOT MERGE Fix vulnerability in mediaserver" into klp-dev

* commit '6272fa1baf361a6a89607243638cc592047947b3':
  DO NOT MERGE Fix vulnerability in mediaserver
diff --git a/cmds/screenrecord/Android.mk b/cmds/screenrecord/Android.mk
index b4a5947..6747e60 100644
--- a/cmds/screenrecord/Android.mk
+++ b/cmds/screenrecord/Android.mk
@@ -18,10 +18,15 @@
 
 LOCAL_SRC_FILES := \
 	screenrecord.cpp \
+	EglWindow.cpp \
+	FrameOutput.cpp \
+	TextRenderer.cpp \
+	Overlay.cpp \
+	Program.cpp
 
 LOCAL_SHARED_LIBRARIES := \
 	libstagefright libmedia libutils libbinder libstagefright_foundation \
-	libjpeg libgui libcutils liblog
+	libjpeg libgui libcutils liblog libEGL libGLESv2
 
 LOCAL_C_INCLUDES := \
 	frameworks/av/media/libstagefright \
@@ -30,6 +35,7 @@
 	external/jpeg
 
 LOCAL_CFLAGS += -Wno-multichar
+#LOCAL_CFLAGS += -UNDEBUG
 
 LOCAL_MODULE_TAGS := optional
 
diff --git a/cmds/screenrecord/EglWindow.cpp b/cmds/screenrecord/EglWindow.cpp
new file mode 100644
index 0000000..c16f2ad
--- /dev/null
+++ b/cmds/screenrecord/EglWindow.cpp
@@ -0,0 +1,190 @@
+/*
+ * Copyright 2013 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.
+ */
+
+#define LOG_TAG "ScreenRecord"
+//#define LOG_NDEBUG 0
+#include <utils/Log.h>
+
+#define EGL_EGLEXT_PROTOTYPES
+
+#include <gui/BufferQueue.h>
+#include <gui/GraphicBufferAlloc.h>
+#include <gui/Surface.h>
+
+#include "EglWindow.h"
+
+#include <EGL/egl.h>
+#include <EGL/eglext.h>
+
+#include <assert.h>
+
+using namespace android;
+
+
+status_t EglWindow::createWindow(const sp<IGraphicBufferProducer>& surface) {
+    if (mEglSurface != EGL_NO_SURFACE) {
+        ALOGE("surface already created");
+        return UNKNOWN_ERROR;
+    }
+    status_t err = eglSetupContext(false);
+    if (err != NO_ERROR) {
+        return err;
+    }
+
+    // Cache the current dimensions.  We're not expecting these to change.
+    surface->query(NATIVE_WINDOW_WIDTH, &mWidth);
+    surface->query(NATIVE_WINDOW_HEIGHT, &mHeight);
+
+    // Output side (EGL surface to draw on).
+    sp<ANativeWindow> anw = new Surface(surface);
+    mEglSurface = eglCreateWindowSurface(mEglDisplay, mEglConfig, anw.get(),
+            NULL);
+    if (mEglSurface == EGL_NO_SURFACE) {
+        ALOGE("eglCreateWindowSurface error: %#x", eglGetError());
+        eglRelease();
+        return UNKNOWN_ERROR;
+    }
+
+    return NO_ERROR;
+}
+
+status_t EglWindow::createPbuffer(int width, int height) {
+    if (mEglSurface != EGL_NO_SURFACE) {
+        ALOGE("surface already created");
+        return UNKNOWN_ERROR;
+    }
+    status_t err = eglSetupContext(true);
+    if (err != NO_ERROR) {
+        return err;
+    }
+
+    mWidth = width;
+    mHeight = height;
+
+    EGLint pbufferAttribs[] = {
+            EGL_WIDTH, width,
+            EGL_HEIGHT, height,
+            EGL_NONE
+    };
+    mEglSurface = eglCreatePbufferSurface(mEglDisplay, mEglConfig, pbufferAttribs);
+    if (mEglSurface == EGL_NO_SURFACE) {
+        ALOGE("eglCreatePbufferSurface error: %#x", eglGetError());
+        eglRelease();
+        return UNKNOWN_ERROR;
+    }
+
+    return NO_ERROR;
+}
+
+status_t EglWindow::makeCurrent() const {
+    if (!eglMakeCurrent(mEglDisplay, mEglSurface, mEglSurface, mEglContext)) {
+        ALOGE("eglMakeCurrent failed: %#x", eglGetError());
+        return UNKNOWN_ERROR;
+    }
+    return NO_ERROR;
+}
+
+status_t EglWindow::eglSetupContext(bool forPbuffer) {
+    EGLBoolean result;
+
+    mEglDisplay = eglGetDisplay(EGL_DEFAULT_DISPLAY);
+    if (mEglDisplay == EGL_NO_DISPLAY) {
+        ALOGE("eglGetDisplay failed: %#x", eglGetError());
+        return UNKNOWN_ERROR;
+    }
+
+    EGLint majorVersion, minorVersion;
+    result = eglInitialize(mEglDisplay, &majorVersion, &minorVersion);
+    if (result != EGL_TRUE) {
+        ALOGE("eglInitialize failed: %#x", eglGetError());
+        return UNKNOWN_ERROR;
+    }
+    ALOGV("Initialized EGL v%d.%d", majorVersion, minorVersion);
+
+    EGLint numConfigs = 0;
+    EGLint windowConfigAttribs[] = {
+            EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
+            EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
+            EGL_RECORDABLE_ANDROID, 1,
+            EGL_RED_SIZE, 8,
+            EGL_GREEN_SIZE, 8,
+            EGL_BLUE_SIZE, 8,
+            // no alpha
+            EGL_NONE
+    };
+    EGLint pbufferConfigAttribs[] = {
+            EGL_SURFACE_TYPE, EGL_PBUFFER_BIT,
+            EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
+            EGL_RED_SIZE, 8,
+            EGL_GREEN_SIZE, 8,
+            EGL_BLUE_SIZE, 8,
+            EGL_ALPHA_SIZE, 8,
+            EGL_NONE
+    };
+    result = eglChooseConfig(mEglDisplay,
+            forPbuffer ? pbufferConfigAttribs : windowConfigAttribs,
+            &mEglConfig, 1, &numConfigs);
+    if (result != EGL_TRUE) {
+        ALOGE("eglChooseConfig error: %#x", eglGetError());
+        return UNKNOWN_ERROR;
+    }
+
+    EGLint contextAttribs[] = {
+        EGL_CONTEXT_CLIENT_VERSION, 2,
+        EGL_NONE
+    };
+    mEglContext = eglCreateContext(mEglDisplay, mEglConfig, EGL_NO_CONTEXT,
+            contextAttribs);
+    if (mEglContext == EGL_NO_CONTEXT) {
+        ALOGE("eglCreateContext error: %#x", eglGetError());
+        return UNKNOWN_ERROR;
+    }
+
+    return NO_ERROR;
+}
+
+void EglWindow::eglRelease() {
+    ALOGV("EglWindow::eglRelease");
+    if (mEglDisplay != EGL_NO_DISPLAY) {
+        eglMakeCurrent(mEglDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE,
+                EGL_NO_CONTEXT);
+
+        if (mEglContext != EGL_NO_CONTEXT) {
+            eglDestroyContext(mEglDisplay, mEglContext);
+        }
+
+        if (mEglSurface != EGL_NO_SURFACE) {
+            eglDestroySurface(mEglDisplay, mEglSurface);
+        }
+    }
+
+    mEglDisplay = EGL_NO_DISPLAY;
+    mEglContext = EGL_NO_CONTEXT;
+    mEglSurface = EGL_NO_SURFACE;
+    mEglConfig = NULL;
+
+    eglReleaseThread();
+}
+
+// Sets the presentation time on the current EGL buffer.
+void EglWindow::presentationTime(nsecs_t whenNsec) const {
+    eglPresentationTimeANDROID(mEglDisplay, mEglSurface, whenNsec);
+}
+
+// Swaps the EGL buffer.
+void EglWindow::swapBuffers() const {
+    eglSwapBuffers(mEglDisplay, mEglSurface);
+}
diff --git a/cmds/screenrecord/EglWindow.h b/cmds/screenrecord/EglWindow.h
new file mode 100644
index 0000000..69d0c31
--- /dev/null
+++ b/cmds/screenrecord/EglWindow.h
@@ -0,0 +1,87 @@
+/*
+ * Copyright 2013 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.
+ */
+
+#ifndef SCREENRECORD_EGL_WINDOW_H
+#define SCREENRECORD_EGL_WINDOW_H
+
+#include <gui/BufferQueue.h>
+#include <utils/Errors.h>
+
+#include <EGL/egl.h>
+
+namespace android {
+
+/*
+ * Wraps EGL display, context, surface, config for a window surface.
+ *
+ * Not thread safe.
+ */
+class EglWindow {
+public:
+    EglWindow() :
+        mEglDisplay(EGL_NO_DISPLAY),
+        mEglContext(EGL_NO_CONTEXT),
+        mEglSurface(EGL_NO_SURFACE),
+        mEglConfig(NULL),
+        mWidth(0),
+        mHeight(0)
+        {}
+    ~EglWindow() { eglRelease(); }
+
+    // Creates an EGL window for the supplied surface.
+    status_t createWindow(const sp<IGraphicBufferProducer>& surface);
+
+    // Creates an EGL pbuffer surface.
+    status_t createPbuffer(int width, int height);
+
+    // Return width and height values (obtained from IGBP).
+    int getWidth() const { return mWidth; }
+    int getHeight() const { return mHeight; }
+
+    // Release anything we created.
+    void release() { eglRelease(); }
+
+    // Make this context current.
+    status_t makeCurrent() const;
+
+    // Sets the presentation time on the current EGL buffer.
+    void presentationTime(nsecs_t whenNsec) const;
+
+    // Swaps the EGL buffer.
+    void swapBuffers() const;
+
+private:
+    EglWindow(const EglWindow&);
+    EglWindow& operator=(const EglWindow&);
+
+    // Init display, create config and context.
+    status_t eglSetupContext(bool forPbuffer);
+    void eglRelease();
+
+    // Basic EGL goodies.
+    EGLDisplay mEglDisplay;
+    EGLContext mEglContext;
+    EGLSurface mEglSurface;
+    EGLConfig mEglConfig;
+
+    // Surface dimensions.
+    int mWidth;
+    int mHeight;
+};
+
+}; // namespace android
+
+#endif /*SCREENRECORD_EGL_WINDOW_H*/
diff --git a/cmds/screenrecord/FontBitmap.h b/cmds/screenrecord/FontBitmap.h
new file mode 100644
index 0000000..2b94f35
--- /dev/null
+++ b/cmds/screenrecord/FontBitmap.h
@@ -0,0 +1,6571 @@
+// auto-generated from Android default system font at 24pts
+class FontBitmap {
+public:
+    static const uint32_t width = 256;
+    static const uint32_t height = 204;
+    static const uint32_t numGlyphs = 95;
+    static const uint32_t firstGlyphChar = 32;
+    static const uint32_t maxGlyphHeight = 34;
+    static const uint32_t outlineWidth = 1;
+    static const uint8_t pixels[];
+    static const uint16_t yoffset[];
+    static const uint16_t glyphWidth[];
+};
+const uint8_t FontBitmap::pixels[] = {
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x64, 0xca, 0xd2,
+    0xb4, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0xe, 0x40, 0x68, 0x62, 0x4a,
+    0x4a, 0x6a, 0x5c, 0x30, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0xb4, 0x9b, 0xd7,
+    0x4b, 0x48, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0xe, 0x40, 0x68, 0x66, 0x3e, 0xa, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x2, 0x66, 0x9a, 0x98,
+    0x56, 0x0, 0x1c, 0xa0, 0xa8, 0x9c, 0x16, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x4, 0xe, 0x1a, 0x20, 0x16, 0xc,
+    0x0, 0x0, 0x0, 0x3e, 0x27, 0x67, 0x67, 0x13,
+    0x39, 0x67, 0x61, 0xde, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x6, 0x12, 0x16, 0x10, 0x6,
+    0xc, 0x16, 0x14, 0xa, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x14, 0xe4, 0xbb, 0xff,
+    0x5b, 0x78, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x10, 0x3e, 0x5a, 0x54, 0x2c,
+    0x6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x1a, 0x4a, 0x6c, 0x62, 0x38, 0xa,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x3e, 0x27, 0x67, 0x67, 0x21, 0x32, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x6, 0x9c, 0xd, 0x9d, 0x8d,
+    0xcc, 0x0, 0x74, 0x43, 0xc7, 0x39, 0xdc, 0x24,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x8, 0x14, 0x18, 0x10, 0x4, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0xa, 0x14, 0x1a, 0x12, 0x6, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x1c, 0x4a, 0x6c, 0x68, 0x40,
+    0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x4, 0x2a, 0x58, 0x76,
+    0x68, 0x3e, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x54, 0x11, 0x23, 0x23, 0x23, 0xfe,
+    0x0, 0x0, 0x0, 0x64, 0x63, 0xff, 0xff, 0x35,
+    0x8d, 0xff, 0xf1, 0xf8, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x9c, 0x19, 0x23, 0x15, 0x7e,
+    0xb, 0x23, 0x21, 0xb8, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x2e, 0xba, 0xfe, 0x35, 0xcb, 0xff,
+    0x77, 0x5, 0xd8, 0x4a, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x2, 0x78, 0xfc, 0x2f, 0x5f, 0x51, 0x19,
+    0xe0, 0x3c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x20, 0xba, 0xfe, 0x41, 0x67, 0x5f, 0x21, 0xf2,
+    0x60, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x64, 0x63, 0xff, 0xff, 0x57, 0x4e, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x88, 0x15, 0xcb, 0xff, 0xdb,
+    0xd4, 0x0, 0x7a, 0x9b, 0xff, 0xef, 0x4f, 0xd8,
+    0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x9c, 0x1d, 0x23, 0x13, 0x56, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12,
+    0xfa, 0x21, 0x23, 0x17, 0x5a, 0x0, 0x0, 0x0,
+    0x0, 0x3e, 0xd0, 0xfe, 0x43, 0x67, 0x61, 0x33,
+    0xfe, 0xae, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x16, 0x4e, 0x98, 0xd4, 0xf8,
+    0x5, 0xde, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x6, 0x70, 0xf0, 0x11, 0x53, 0x69,
+    0x5f, 0x2f, 0xfe, 0xb2, 0x26, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x8c, 0x89, 0xff, 0xff, 0xff, 0xfe,
+    0x0, 0x0, 0x0, 0x7a, 0x63, 0xff, 0xff, 0x27,
+    0x8d, 0xff, 0xeb, 0xfc, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0xec, 0xcb, 0xff, 0x89, 0xbe,
+    0x71, 0xff, 0xdf, 0xdc, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x38, 0xf6, 0x5d, 0xd9, 0xff, 0xff, 0xff,
+    0xff, 0xe9, 0x7f, 0xfe, 0x5e, 0x0, 0x0, 0x0,
+    0x0, 0x58, 0xb, 0xaf, 0xff, 0xff, 0xff, 0xf1,
+    0x71, 0xec, 0x16, 0x4, 0x38, 0x38, 0x36, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12,
+    0xde, 0x49, 0xdb, 0xff, 0xff, 0xff, 0xf9, 0x97,
+    0xfe, 0x52, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x7a, 0x63, 0xff, 0xff, 0x4d, 0x4c, 0x0, 0x0,
+    0x0, 0x0, 0x42, 0xfe, 0xbb, 0xff, 0xfb, 0x5f,
+    0xc0, 0x0, 0x6a, 0x25, 0xdf, 0xff, 0xed, 0x33,
+    0x9e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xd2, 0xcb, 0xff, 0x89, 0x84, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x62,
+    0x31, 0xff, 0xff, 0x8d, 0x66, 0x0, 0x0, 0x0,
+    0x4e, 0xfe, 0x71, 0xe5, 0xff, 0xff, 0xff, 0xff,
+    0xd1, 0x4b, 0xe8, 0x24, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x78, 0xe8, 0xfe, 0x37, 0x73, 0xa3, 0xcf,
+    0xf5, 0x15, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x4, 0xa6, 0x15, 0xa5, 0xf7, 0xff, 0xff,
+    0xff, 0xff, 0xd3, 0x53, 0xf2, 0x2e, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+    0x0, 0x0, 0x0, 0x7a, 0x63, 0xff, 0xf5, 0xfe,
+    0x8d, 0xff, 0xd1, 0xf6, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0xe, 0xfe, 0xef, 0xff, 0x5b, 0xe2,
+    0x9b, 0xff, 0xbb, 0xe8, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xd4, 0x6b, 0xfd, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0x95, 0xf6, 0x16, 0x0, 0x0,
+    0x0, 0xc4, 0x8f, 0xff, 0xff, 0xbf, 0xdb, 0xff,
+    0xf9, 0x39, 0x5e, 0x68, 0x13, 0x67, 0xfe, 0x6c,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x72,
+    0x31, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0x89, 0xda, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x7a, 0x63, 0xff, 0xff, 0x19, 0x2a, 0x0, 0x0,
+    0x0, 0x4, 0xda, 0x77, 0xff, 0xff, 0x89, 0xf4,
+    0x30, 0x0, 0xc, 0xc0, 0x41, 0xf9, 0xff, 0xc9,
+    0xfe, 0x3c, 0x0, 0x0, 0x0, 0x6, 0x2e, 0x2e,
+    0x2a, 0xe8, 0xbf, 0xff, 0x7b, 0x9e, 0x1a, 0x1a,
+    0x1a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2,
+    0x1a, 0x32, 0x46, 0x34, 0x1c, 0x4, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc8,
+    0x8d, 0xff, 0xff, 0x31, 0x62, 0x0, 0x0, 0x12,
+    0xf0, 0x83, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xf7, 0x4f, 0xbc, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xd6, 0xaf, 0xef, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x64, 0x11, 0xd1, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xfb, 0x5d, 0xc8, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+    0x0, 0x0, 0x0, 0x7a, 0x63, 0xff, 0xdb, 0xfe,
+    0x8d, 0xff, 0xb5, 0xe2, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x3c, 0x29, 0xff, 0xff, 0x23, 0xf2,
+    0xc3, 0xff, 0x93, 0xc2, 0x0, 0x0, 0x0, 0x0,
+    0x22, 0x9, 0xe9, 0xff, 0xff, 0xef, 0x93, 0x89,
+    0xe5, 0xff, 0xff, 0xfd, 0x39, 0x68, 0x0, 0x0,
+    0x0, 0xf2, 0xd5, 0xff, 0xa7, 0xfe, 0xf, 0xeb,
+    0xff, 0x87, 0xac, 0xf4, 0x9b, 0xff, 0xa3, 0x7a,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc8,
+    0x9f, 0xff, 0xff, 0xed, 0x85, 0x9d, 0xfd, 0xff,
+    0xeb, 0xfe, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x7a, 0x63, 0xff, 0xe7, 0xfe, 0x6, 0x0, 0x0,
+    0x0, 0x4c, 0x11, 0xed, 0xff, 0xdf, 0x9, 0x52,
+    0x0, 0x0, 0x0, 0x1a, 0xf4, 0xa3, 0xff, 0xff,
+    0x6f, 0xc0, 0x0, 0x0, 0x0, 0x42, 0x17, 0x57,
+    0xfe, 0xf8, 0xb5, 0xff, 0x6d, 0xec, 0x5, 0x41,
+    0xd0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12,
+    0xb, 0x3f, 0x3f, 0x3f, 0xf, 0x1c, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0xfe,
+    0xd5, 0xff, 0xd1, 0xfc, 0x12, 0x0, 0x0, 0x68,
+    0x31, 0xf9, 0xff, 0xff, 0xdf, 0x89, 0x95, 0xf3,
+    0xff, 0xff, 0xdd, 0xfe, 0x2a, 0x0, 0x0, 0x0,
+    0x0, 0xe4, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xe0, 0x9b, 0xff, 0xff, 0xff, 0xbd, 0x7f,
+    0x9f, 0xf9, 0xff, 0xff, 0xe3, 0xfe, 0x20, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+    0x0, 0x0, 0x0, 0x7a, 0x63, 0xff, 0xbf, 0xf8,
+    0x8d, 0xff, 0x95, 0xc2, 0x0, 0x0, 0x0, 0x14,
+    0x34, 0x50, 0xaa, 0x5f, 0xff, 0xeb, 0xfe, 0xfe,
+    0xe5, 0xff, 0x69, 0xb0, 0x36, 0x16, 0x0, 0x0,
+    0x4e, 0x4d, 0xff, 0xff, 0xff, 0x73, 0xf2, 0xe6,
+    0x3b, 0xfd, 0xff, 0xff, 0x93, 0xb4, 0x0, 0x0,
+    0x0, 0xfa, 0xeb, 0xff, 0x83, 0xbe, 0xf8, 0xcd,
+    0xff, 0xa1, 0xea, 0x43, 0xfb, 0xf9, 0x3d, 0x7a,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe8,
+    0xcd, 0xff, 0xff, 0x83, 0xf4, 0xfe, 0xc1, 0xff,
+    0xff, 0x15, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x7a, 0x63, 0xff, 0xc7, 0xf0, 0x0, 0x0, 0x0,
+    0x0, 0xbc, 0x7f, 0xff, 0xff, 0x7f, 0xcc, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x74, 0x2d, 0xfd, 0xff,
+    0xd9, 0xfe, 0x22, 0x0, 0x0, 0x82, 0x71, 0xff,
+    0xdb, 0x85, 0xb1, 0xff, 0x71, 0x8f, 0xe5, 0xeb,
+    0x5, 0x1c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20,
+    0x2f, 0xff, 0xff, 0xff, 0x3f, 0x34, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x66, 0x37,
+    0xff, 0xff, 0x89, 0xc4, 0x0, 0x0, 0x0, 0xbe,
+    0x93, 0xff, 0xff, 0xf5, 0x27, 0xe0, 0xf2, 0x61,
+    0xff, 0xff, 0xff, 0x57, 0x76, 0x0, 0x0, 0x0,
+    0x0, 0xcc, 0x8f, 0xa7, 0xa7, 0xc9, 0xff, 0xff,
+    0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x14, 0xfe, 0xed, 0xff, 0xff, 0xbf, 0xfe, 0xcc,
+    0xfa, 0x89, 0xff, 0xff, 0xff, 0x47, 0x4e, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+    0x0, 0x0, 0x0, 0x60, 0x63, 0xff, 0xa1, 0xe4,
+    0x8d, 0xff, 0x75, 0x8a, 0x0, 0x0, 0x0, 0x7e,
+    0x33, 0x4d, 0x4d, 0xa1, 0xff, 0xd5, 0x4d, 0x55,
+    0xff, 0xff, 0x6b, 0x4d, 0x37, 0x8e, 0x0, 0x0,
+    0x64, 0x63, 0xff, 0xff, 0xff, 0x49, 0x8a, 0x18,
+    0xfc, 0xe1, 0xff, 0xff, 0xb7, 0xb6, 0x0, 0x0,
+    0x0, 0xf8, 0xdf, 0xff, 0x91, 0xf4, 0xfe, 0xdb,
+    0xff, 0x93, 0xfe, 0xcf, 0xff, 0x97, 0xf2, 0x1a,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xea,
+    0xcf, 0xff, 0xff, 0x7d, 0xe0, 0xfe, 0xd3, 0xff,
+    0xf5, 0xfe, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x60, 0x63, 0xff, 0xa3, 0xc4, 0x0, 0x0, 0x0,
+    0x8, 0xfa, 0xcf, 0xff, 0xfb, 0x21, 0x50, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x10, 0xfc, 0xcb, 0xff,
+    0xff, 0x4d, 0x78, 0x0, 0x0, 0x80, 0x8f, 0xf9,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
+    0x43, 0x1c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2e,
+    0x2f, 0xff, 0xff, 0xff, 0x3f, 0x46, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xcc, 0x91,
+    0xff, 0xff, 0x2f, 0x5e, 0x0, 0x0, 0x0, 0xec,
+    0xc7, 0xff, 0xff, 0xc3, 0xf8, 0xc, 0x30, 0xfe,
+    0xef, 0xff, 0xff, 0x93, 0xb6, 0x0, 0x0, 0x0,
+    0x0, 0x58, 0xa0, 0xc8, 0xee, 0x7f, 0xff, 0xff,
+    0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x1a, 0x33, 0xff, 0xff, 0xff, 0x77, 0xac, 0x0,
+    0x80, 0x43, 0xff, 0xff, 0xff, 0x67, 0x68, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+    0x0, 0x0, 0x0, 0x3a, 0x1f, 0x51, 0x2d, 0xa8,
+    0x2d, 0x51, 0x1d, 0x46, 0x0, 0x0, 0x0, 0xac,
+    0xa9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xbb, 0xbc, 0x0, 0x0,
+    0x4c, 0x49, 0xff, 0xff, 0xff, 0x85, 0xf6, 0x60,
+    0xc2, 0x47, 0x57, 0x57, 0x41, 0x8e, 0x0, 0x0,
+    0x0, 0xdc, 0xb1, 0xff, 0xeb, 0x7b, 0x99, 0xff,
+    0xff, 0x5d, 0x7d, 0xff, 0xdf, 0xf, 0x60, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xce,
+    0xa7, 0xff, 0xff, 0xcb, 0xb, 0x9b, 0xff, 0xff,
+    0xaf, 0xee, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x3a, 0x1d, 0x4d, 0x29, 0x74, 0x0, 0x0, 0x0,
+    0x32, 0x1f, 0xfb, 0xff, 0xd5, 0xfc, 0xa, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0xcc, 0x95, 0xff,
+    0xff, 0x9b, 0xc6, 0x0, 0x0, 0x58, 0xee, 0x13,
+    0x67, 0xbd, 0xff, 0xff, 0xf7, 0xaf, 0x6b, 0x19,
+    0xee, 0x1c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2e,
+    0x2f, 0xff, 0xff, 0xff, 0x3f, 0x46, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0xfe, 0xd9,
+    0xff, 0xcf, 0xfc, 0x10, 0x0, 0x0, 0x0, 0xf8,
+    0xdf, 0xff, 0xff, 0xa9, 0xda, 0x0, 0x0, 0xfa,
+    0xd7, 0xff, 0xff, 0xaf, 0xd6, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0xa2, 0x7f, 0xff, 0xff,
+    0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x1a, 0x1b, 0x63, 0x63, 0x63, 0x27, 0x4a, 0x0,
+    0xa2, 0x5b, 0xff, 0xff, 0xff, 0x51, 0x58, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+    0x0, 0x0, 0x0, 0x8, 0x2e, 0x3a, 0x34, 0x1e,
+    0x34, 0x3a, 0x2e, 0x8, 0x0, 0x0, 0x0, 0xa4,
+    0x93, 0xdd, 0xdd, 0xfb, 0xff, 0xe7, 0xdd, 0xed,
+    0xff, 0xf5, 0xdd, 0xdd, 0xa1, 0xb6, 0x0, 0x0,
+    0x20, 0x9, 0xe9, 0xff, 0xff, 0xf9, 0x93, 0x1b,
+    0xee, 0x9a, 0x6c, 0x5e, 0x40, 0x1a, 0x0, 0x0,
+    0x0, 0x82, 0x2d, 0xe7, 0xff, 0xff, 0xff, 0xff,
+    0xb5, 0x27, 0xf1, 0xff, 0x59, 0xc4, 0x4, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7c,
+    0x3d, 0xfb, 0xff, 0xff, 0xe9, 0xff, 0xff, 0xdf,
+    0x21, 0x7c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x8, 0x2a, 0x36, 0x30, 0xe, 0x0, 0x0, 0x0,
+    0x6e, 0x59, 0xff, 0xff, 0xaf, 0xe2, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x8c, 0x65, 0xff,
+    0xff, 0xc9, 0xf0, 0x0, 0x0, 0x0, 0x4, 0x8e,
+    0xd, 0xd1, 0xff, 0xfb, 0xfd, 0x5b, 0xee, 0x48,
+    0x6, 0x0, 0x0, 0x20, 0x7a, 0xb0, 0xc8, 0xd4,
+    0x2f, 0xff, 0xff, 0xff, 0x3f, 0xd8, 0xc8, 0xb0,
+    0x7c, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x6c, 0x3b, 0xff,
+    0xff, 0x87, 0xc2, 0x0, 0x0, 0x0, 0x0, 0xfc,
+    0xe9, 0xff, 0xff, 0xa3, 0xd0, 0x0, 0x0, 0xf4,
+    0xd1, 0xff, 0xff, 0xbb, 0xe0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0xa2, 0x7f, 0xff, 0xff,
+    0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x8, 0x38, 0x60, 0x7a, 0x62, 0x3c, 0xc, 0x30,
+    0xfc, 0xb7, 0xff, 0xff, 0xf3, 0x17, 0x2c, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5a,
+    0xce, 0xf0, 0x5, 0xf9, 0xff, 0x4f, 0xfe, 0xa9,
+    0xff, 0xb1, 0xfe, 0xf2, 0xd2, 0x68, 0x0, 0x0,
+    0x0, 0xd2, 0x67, 0xfb, 0xff, 0xff, 0xff, 0xf3,
+    0xa5, 0x2f, 0xf0, 0x5a, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x10, 0xc8, 0x19, 0x85, 0xab, 0xa1, 0x69,
+    0xfe, 0xb7, 0xff, 0xb1, 0xfc, 0x2c, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2e,
+    0xfc, 0x9b, 0xff, 0xff, 0xff, 0xff, 0xc5, 0x23,
+    0xbc, 0x46, 0x6a, 0x7a, 0x52, 0x1c, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0xa0, 0x81, 0xff, 0xff, 0x95, 0xc2, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x54, 0x43, 0xff,
+    0xff, 0xe9, 0xfe, 0x0, 0x0, 0x0, 0x38, 0xfe,
+    0xa7, 0xff, 0xd9, 0x7d, 0xff, 0xeb, 0x29, 0x9e,
+    0x0, 0x0, 0x0, 0x5a, 0x49, 0x9f, 0x9f, 0x9f,
+    0xa9, 0xff, 0xff, 0xff, 0xad, 0x9f, 0x9f, 0x9f,
+    0x4d, 0x5e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x50, 0xa6, 0xd0,
+    0xdc, 0xdc, 0xdc, 0xda, 0xb8, 0x74, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0xd0, 0x93, 0xff,
+    0xfd, 0x2d, 0x5a, 0x0, 0x0, 0x0, 0x0, 0xfc,
+    0xeb, 0xff, 0xff, 0xa3, 0xce, 0x0, 0x0, 0xf2,
+    0xd1, 0xff, 0xff, 0xbd, 0xe4, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0xa2, 0x7f, 0xff, 0xff,
+    0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0xe0,
+    0x5f, 0xff, 0xff, 0xff, 0x99, 0xe8, 0x6, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x4e, 0x3d, 0xff, 0xfd, 0x15, 0xf8, 0xcf,
+    0xff, 0x89, 0xb4, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x36, 0xf2, 0x53, 0xdb, 0xff, 0xff, 0xff,
+    0xff, 0xf9, 0x93, 0x5, 0x84, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x6, 0x52, 0xa0, 0xc6, 0xc0, 0xe6,
+    0x5d, 0xff, 0xef, 0x25, 0xd6, 0xd4, 0xd4, 0xaa,
+    0x54, 0x4, 0x0, 0x0, 0x0, 0x0, 0x1c, 0xda,
+    0x3b, 0xdb, 0xff, 0xff, 0xff, 0xfb, 0x47, 0xec,
+    0x36, 0xf, 0x6f, 0x6f, 0x43, 0x6e, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0xbc, 0x95, 0xff, 0xff, 0x83, 0xac, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x2c, 0x27, 0xff,
+    0xff, 0xfb, 0xfe, 0x6, 0x0, 0x0, 0x40, 0x6b,
+    0xff, 0xff, 0x51, 0xfe, 0xd1, 0xff, 0xcb, 0xb4,
+    0x0, 0x0, 0x0, 0x86, 0x77, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0x7b, 0x8a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0xb0, 0x87, 0xb3,
+    0xb3, 0xb3, 0xb3, 0xb3, 0xab, 0xec, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x1a, 0xfe, 0xdb, 0xff,
+    0xcd, 0xfc, 0x10, 0x0, 0x0, 0x0, 0x0, 0xfc,
+    0xeb, 0xff, 0xff, 0xa3, 0xce, 0x0, 0x0, 0xf2,
+    0xd1, 0xff, 0xff, 0xbd, 0xe4, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0xa2, 0x7f, 0xff, 0xff,
+    0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0xe, 0xc6, 0x37,
+    0xf1, 0xff, 0xff, 0xd5, 0xf, 0x64, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x42, 0xc0,
+    0xea, 0xfa, 0x6f, 0xff, 0xe3, 0xfe, 0xfe, 0xf1,
+    0xff, 0x5b, 0xf6, 0xd2, 0x78, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x26, 0xbc, 0x5, 0x6d, 0xc9, 0xff,
+    0xff, 0xff, 0xff, 0xb9, 0xfe, 0x34, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x64, 0x11,
+    0xe3, 0xff, 0x79, 0x13, 0x8b, 0xb7, 0xb7, 0x89,
+    0x11, 0xb0, 0x4, 0x0, 0x0, 0x0, 0xb6, 0x41,
+    0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, 0x2d,
+    0xca, 0x43, 0xff, 0xff, 0x93, 0x96, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0xc8, 0xa1, 0xff, 0xff, 0x7b, 0xa0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x17, 0xff,
+    0xff, 0xff, 0x15, 0xe, 0x0, 0x0, 0x40, 0x21,
+    0xb7, 0xad, 0xfa, 0xbc, 0x4b, 0xf1, 0x71, 0xb0,
+    0x0, 0x0, 0x0, 0x82, 0x77, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0x7b, 0x88, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0xdc, 0xc1, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xf5, 0xfc, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x6e, 0x3f, 0xff, 0xff,
+    0x85, 0xbe, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfc,
+    0xeb, 0xff, 0xff, 0xa3, 0xce, 0x0, 0x0, 0xf2,
+    0xd1, 0xff, 0xff, 0xbd, 0xe4, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0xa2, 0x7f, 0xff, 0xff,
+    0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0xa, 0xb6, 0x2b, 0xe3,
+    0xff, 0xff, 0xeb, 0x31, 0xb0, 0x4, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x8e, 0x89, 0xff, 0xff, 0xff, 0xfe,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x82, 0x77,
+    0xd7, 0xd7, 0xe9, 0xff, 0xf5, 0xd7, 0xd7, 0xff,
+    0xff, 0xdb, 0xd7, 0xaf, 0xce, 0x0, 0x0, 0x0,
+    0x3a, 0x6a, 0x90, 0x80, 0x7c, 0xb8, 0xfc, 0x47,
+    0xd3, 0xff, 0xff, 0xff, 0x65, 0x8e, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x1a, 0xf4, 0x9b,
+    0xff, 0xcb, 0x17, 0xdd, 0xff, 0xff, 0xff, 0xff,
+    0xd9, 0x11, 0x56, 0x0, 0x0, 0x1c, 0xfe, 0xd9,
+    0xff, 0xff, 0xd3, 0x4f, 0xf3, 0xff, 0xff, 0xd7,
+    0x15, 0x77, 0xff, 0xff, 0x7b, 0x96, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0xca, 0xa3, 0xff, 0xff, 0x79, 0x9e, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x12, 0xf, 0xff,
+    0xff, 0xff, 0x1d, 0xe, 0x0, 0x0, 0xa, 0x86,
+    0xbe, 0xd, 0x76, 0x22, 0xda, 0x1f, 0xe0, 0x3e,
+    0x0, 0x0, 0x0, 0x56, 0x41, 0x8d, 0x8d, 0x8d,
+    0x99, 0xff, 0xff, 0xff, 0x9f, 0x8d, 0x8d, 0x8d,
+    0x43, 0x5a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0xcc, 0xc1, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xf5, 0xfa, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0xd4, 0x97, 0xff, 0xfd,
+    0x29, 0x58, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfc,
+    0xe9, 0xff, 0xff, 0xa3, 0xd0, 0x0, 0x0, 0xf4,
+    0xd1, 0xff, 0xff, 0xbb, 0xe0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0xa2, 0x7f, 0xff, 0xff,
+    0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x6, 0xa8, 0x21, 0xdb, 0xff,
+    0xff, 0xf3, 0x49, 0xd4, 0x12, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x58, 0x1b, 0x35, 0x35, 0x35, 0xfe,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x88, 0x8d,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xd1, 0xd2, 0x0, 0x0, 0x0,
+    0xd4, 0x6d, 0x73, 0x73, 0x47, 0x88, 0x1e, 0xb2,
+    0x21, 0xf3, 0xff, 0xff, 0xa7, 0xc8, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0xa8, 0x41, 0xfb,
+    0xf9, 0x3d, 0x93, 0xff, 0xf3, 0x73, 0x79, 0xf7,
+    0xff, 0x8b, 0xae, 0x0, 0x0, 0x48, 0x43, 0xff,
+    0xff, 0xff, 0x67, 0xf8, 0x61, 0xfb, 0xff, 0xff,
+    0xbf, 0xcf, 0xff, 0xff, 0x41, 0x5a, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0xc2, 0x9b, 0xff, 0xff, 0x7f, 0xa6, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x20, 0x21, 0xff,
+    0xff, 0xff, 0x5, 0x8, 0x0, 0x0, 0x0, 0x0,
+    0x2, 0x2, 0x2, 0x0, 0x8, 0x8, 0x8, 0x0,
+    0x0, 0x0, 0x0, 0x1c, 0x68, 0x9c, 0xb6, 0xc2,
+    0x2f, 0xff, 0xff, 0xff, 0x3f, 0xc8, 0xb6, 0x9c,
+    0x6a, 0x1c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x8c, 0x9, 0xd,
+    0xd, 0xd, 0xd, 0xd, 0xb, 0xde, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x1c, 0xfe, 0xdd, 0xff, 0xcb,
+    0xfc, 0xe, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf8,
+    0xdf, 0xff, 0xff, 0xa9, 0xdc, 0x0, 0x0, 0xfa,
+    0xd7, 0xff, 0xff, 0xaf, 0xd4, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0xa2, 0x7f, 0xff, 0xff,
+    0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x4, 0x9a, 0x17, 0xd1, 0xff, 0xff,
+    0xf9, 0x5b, 0xe4, 0x20, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x8, 0x1a, 0x2c, 0x36, 0x26, 0x14,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x60, 0x2b,
+    0x4d, 0x4d, 0xe9, 0xff, 0x8b, 0x4d, 0xa7, 0xff,
+    0xd3, 0x4d, 0x4d, 0x3f, 0xaa, 0x0, 0x0, 0x0,
+    0xee, 0xe9, 0xff, 0xff, 0xaf, 0xe6, 0x6, 0x14,
+    0xfe, 0xd9, 0xff, 0xff, 0xb9, 0xd8, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x48, 0xfe, 0xcf, 0xff,
+    0x97, 0xfe, 0xc1, 0xff, 0xb1, 0xfa, 0xfa, 0xb9,
+    0xff, 0xbb, 0xdc, 0x0, 0x0, 0x5c, 0x5f, 0xff,
+    0xff, 0xff, 0x4f, 0xa8, 0xf6, 0x7f, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xd9, 0xfe, 0x1c, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0xac, 0x8b, 0xff, 0xff, 0x8b, 0xb8, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x35, 0xff,
+    0xff, 0xf3, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2e,
+    0x2f, 0xff, 0xff, 0xff, 0x3f, 0x46, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x4,
+    0x6, 0x6, 0x6, 0x6, 0x4, 0x2, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x74, 0x43, 0xff, 0xff, 0x81,
+    0xba, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xea,
+    0xc5, 0xff, 0xff, 0xc5, 0xf8, 0x10, 0x32, 0xfe,
+    0xf1, 0xff, 0xff, 0x91, 0xb4, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0xa2, 0x7f, 0xff, 0xff,
+    0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x88, 0xf, 0xc7, 0xff, 0xff, 0xfd,
+    0x6b, 0xf0, 0x2c, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x52, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe, 0x30,
+    0x68, 0x13, 0xfd, 0xff, 0x3f, 0xf2, 0xb3, 0xff,
+    0xa7, 0xe4, 0x54, 0x3a, 0x1a, 0x0, 0x0, 0x0,
+    0xee, 0xc9, 0xff, 0xff, 0xeb, 0x19, 0xe2, 0xe0,
+    0x21, 0xf3, 0xff, 0xff, 0xa7, 0xc6, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x8, 0xe0, 0x7d, 0xff, 0xdf,
+    0xf, 0xf0, 0xcb, 0xff, 0xa7, 0xe4, 0xe6, 0xad,
+    0xff, 0xc5, 0xe2, 0x0, 0x0, 0x48, 0x43, 0xff,
+    0xff, 0xff, 0x99, 0xfc, 0xd8, 0xfe, 0x9f, 0xff,
+    0xff, 0xff, 0xff, 0x63, 0xca, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x84, 0x69, 0xff, 0xff, 0xa5, 0xd4, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x72, 0x57, 0xff,
+    0xff, 0xd5, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2e,
+    0x2f, 0xff, 0xff, 0xff, 0x3f, 0x46, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x3c, 0xcc, 0xf2, 0xf6,
+    0xdc, 0x78, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x3c, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x14,
+    0x0, 0x0, 0x0, 0xd8, 0x9b, 0xff, 0xfb, 0x27,
+    0x54, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xba,
+    0x8f, 0xff, 0xff, 0xf7, 0x2d, 0xe8, 0xf4, 0x63,
+    0xff, 0xff, 0xff, 0x53, 0x72, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0xa2, 0x7f, 0xff, 0xff,
+    0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x74, 0x9, 0xbd, 0xff, 0xff, 0xff, 0x7d,
+    0xfe, 0xe6, 0xe0, 0xe0, 0xda, 0xb4, 0x66, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x8a, 0x89, 0xff, 0xff, 0xff, 0xfe,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x64, 0x4d, 0xff, 0xf9, 0x9, 0xfa, 0xd7, 0xff,
+    0x7d, 0xa6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0xb2, 0x77, 0xff, 0xff, 0xff, 0xe1, 0x95, 0x91,
+    0xdd, 0xff, 0xff, 0xff, 0x5f, 0x8a, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x8, 0x1f, 0xf1, 0xff, 0x59,
+    0xc4, 0xd4, 0xb1, 0xff, 0xd1, 0x5, 0xfe, 0xcd,
+    0xff, 0xab, 0xce, 0x0, 0x0, 0x1c, 0xfe, 0xdf,
+    0xff, 0xff, 0xff, 0xb1, 0x87, 0x9f, 0xe3, 0xff,
+    0xff, 0xff, 0xfd, 0x63, 0xea, 0x1e, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x48, 0x39, 0xff, 0xff, 0xc5, 0xf4, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0xb0, 0x7f, 0xff,
+    0xff, 0xb1, 0xdc, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22,
+    0x2f, 0xff, 0xff, 0xff, 0x3f, 0x36, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x74, 0x71, 0xe3, 0xe3,
+    0xaf, 0xc4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x68, 0x6f, 0xff, 0xff, 0xff, 0x35, 0x26,
+    0x0, 0x0, 0x20, 0xfe, 0xe1, 0xff, 0xc9, 0xfa,
+    0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x60,
+    0x2b, 0xf7, 0xff, 0xff, 0xe5, 0x93, 0x9d, 0xf5,
+    0xff, 0xff, 0xd9, 0xfe, 0x26, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0xa2, 0x7f, 0xff, 0xff,
+    0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xda, 0xab, 0xff, 0xff, 0xff, 0xed, 0xb7,
+    0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0x9d, 0xd0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0xa4, 0x7b, 0xff, 0xd9, 0xfc, 0x5, 0xf7, 0xff,
+    0x4f, 0x66, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x42, 0x5, 0xb9, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xb5, 0xfe, 0x30, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x8, 0xdc, 0x55, 0x8d, 0xfc,
+    0x2c, 0x94, 0x5f, 0xff, 0xff, 0xdb, 0xd5, 0xff,
+    0xff, 0x59, 0x8a, 0x0, 0x0, 0x0, 0xc2, 0x55,
+    0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xf5, 0x45, 0xce, 0x10, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x16, 0xfe, 0xe5, 0xff, 0xef, 0x5, 0x2a, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x2, 0xee, 0xb3, 0xff,
+    0xff, 0x6d, 0x9a, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14,
+    0x11, 0x67, 0x67, 0x67, 0x19, 0x20, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x9c, 0x7f, 0xff, 0xff,
+    0xc5, 0xe4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x8c, 0x6f, 0xff, 0xff, 0xff, 0x35, 0x36,
+    0x0, 0x0, 0x78, 0x47, 0xff, 0xff, 0x7f, 0xb8,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe,
+    0xea, 0x79, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xf3, 0x47, 0xb6, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0xa2, 0x7f, 0xff, 0xff,
+    0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xf6, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xf0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x8a, 0x89, 0xff, 0xff, 0xff, 0xfe,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x94, 0xa5, 0xff, 0xb5, 0xda, 0x3d, 0xff, 0xff,
+    0x15, 0x2a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x84, 0xfe, 0x7f, 0xe1, 0xff, 0xff, 0xff,
+    0xff, 0xdf, 0x7b, 0xfe, 0x80, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x28, 0x72, 0x72, 0x56,
+    0x0, 0x30, 0xfe, 0x83, 0xf5, 0xff, 0xff, 0xf5,
+    0x81, 0xfc, 0x2a, 0x0, 0x0, 0x0, 0x28, 0xec,
+    0x47, 0xc9, 0xfd, 0xff, 0xff, 0xff, 0xf3, 0xa7,
+    0x41, 0xe3, 0xff, 0xff, 0xe9, 0x35, 0x10, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xde, 0xa5, 0xff, 0xff, 0x59, 0x98, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x44, 0xb, 0xef, 0xff,
+    0xf3, 0x17, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4,
+    0x38, 0x62, 0x80, 0x64, 0x3a, 0x6, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0xa6, 0x7f, 0xff, 0xff,
+    0xc1, 0xe4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x68, 0x6f, 0xff, 0xff, 0xff, 0x35, 0x26,
+    0x0, 0x0, 0xdc, 0x9d, 0xff, 0xfb, 0x23, 0x50,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x44, 0xf8, 0x63, 0xd9, 0xff, 0xff, 0xff, 0xfd,
+    0xc7, 0x41, 0xe2, 0x20, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x7c, 0x7f, 0xff, 0xff,
+    0xff, 0x15, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xee, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xe8, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x52, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x6c, 0xfe, 0xfe, 0xfe, 0x8c, 0xfe, 0xfe, 0xfe,
+    0xf6, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x4a, 0xcc, 0xfe, 0x2f, 0xed, 0xff,
+    0x27, 0xfe, 0xca, 0x46, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x4c, 0xe8, 0xf, 0x43, 0x43, 0xf,
+    0xe8, 0x4c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20,
+    0xa4, 0xfa, 0x1f, 0x4f, 0x59, 0x41, 0x9, 0xec,
+    0xde, 0xfe, 0xfe, 0xfe, 0xfe, 0xc8, 0x10, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x7a, 0x39, 0xfd, 0xff, 0xbb, 0xfa, 0x24,
+    0x0, 0x0, 0x0, 0x4, 0xce, 0x77, 0xff, 0xff,
+    0x9f, 0xea, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0xbe, 0x89, 0xff, 0xff,
+    0xa7, 0xca, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x3c, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x14,
+    0x0, 0x8, 0xe6, 0xe3, 0xff, 0xc7, 0xf8, 0xc,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x32, 0xbe, 0xfe, 0x31, 0x55, 0x51, 0x23,
+    0xfc, 0xa0, 0x1c, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x48, 0xfe, 0xfe, 0xfe,
+    0xfe, 0xfe, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xbc, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+    0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xb2, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x10, 0xf8, 0xe9, 0xff,
+    0xfe, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x4, 0x20, 0x38, 0x38, 0x20,
+    0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x8, 0x2c, 0x50, 0x5e, 0x42, 0x1c, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x16, 0xf8, 0xad, 0xff, 0xfd, 0x4d, 0xc2,
+    0x8, 0x0, 0x0, 0x74, 0x11, 0xe3, 0xff, 0xef,
+    0x25, 0x6e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x6, 0xf0, 0xaf, 0xff, 0xff,
+    0x5d, 0x88, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x8, 0x21, 0x95, 0x95, 0x55, 0xa4, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x12, 0x38, 0x54, 0x52, 0x30,
+    0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0xda, 0x91, 0x9f,
+    0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x7c, 0x21, 0xe9, 0xff, 0xdf, 0x1d,
+    0x9e, 0x0, 0x52, 0xfe, 0xa9, 0xff, 0xff, 0x71,
+    0xde, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x18, 0x17, 0xf1, 0xff, 0xd1,
+    0xfe, 0x2e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x8, 0x62, 0x9c, 0xa8, 0x76, 0x28, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x58, 0x9c, 0x9c,
+    0x68, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0xa, 0xd0, 0x4b, 0xf5, 0xff, 0xcb,
+    0xce, 0x0, 0x78, 0x89, 0xff, 0xff, 0x9b, 0xfe,
+    0x3c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x18, 0x37, 0xd9, 0xf1, 0x41,
+    0xae, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x22, 0xe6, 0x4b, 0xe7, 0xb5,
+    0xd0, 0x0, 0x78, 0x6b, 0xfb, 0x8d, 0xfe, 0x64,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x14, 0xb4, 0x5, 0x31, 0xde,
+    0x1c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x22, 0xcc, 0x17, 0x39,
+    0x88, 0x0, 0x3a, 0xb, 0x3b, 0xf2, 0x56, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x10, 0x10,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x6, 0x18, 0x18,
+    0x14, 0x0, 0x2, 0x18, 0x18, 0x16, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x8, 0x30, 0x5c, 0x76,
+    0x66, 0x3c, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x2, 0xe, 0x18, 0x20, 0x18, 0xc, 0x2, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x4, 0xe, 0x1a, 0x20,
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x16, 0xc,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x1c, 0x48, 0x6c, 0x6a, 0x46, 0x1c, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x2, 0xe, 0x18, 0x20,
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x1e, 0x14, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x2, 0x22, 0x52, 0x74, 0x6e, 0x46, 0x18,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x22, 0x50, 0x70, 0x60, 0x36,
+    0xa, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x28, 0x56,
+    0x76, 0x6e, 0x46, 0x18, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc,
+    0x16, 0x20, 0x1c, 0x10, 0x6, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0xe, 0x86, 0xf6, 0x1b, 0x57, 0x6b,
+    0x5f, 0x2f, 0xfe, 0xba, 0x30, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x7e, 0xd, 0x23, 0x23, 0x23, 0xb, 0x24, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x62, 0x11, 0x23, 0x23,
+    0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x5,
+    0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x52,
+    0xda, 0xfe, 0x41, 0x63, 0x61, 0x41, 0x5, 0xd4,
+    0x2c, 0x0, 0x0, 0x0, 0x3a, 0xd, 0x23, 0x23,
+    0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
+    0x23, 0x1d, 0xa8, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x5a, 0xe4, 0xb, 0x4b, 0x69, 0x63, 0x3d, 0xfe,
+    0xc8, 0x38, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x44, 0xd8, 0x5, 0x4b, 0x69, 0x5b, 0x21,
+    0xf8, 0x8c, 0xe, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x6, 0x70, 0xec, 0x11, 0x51,
+    0x69, 0x63, 0x3d, 0xfe, 0xcc, 0x3e, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0xa, 0x46, 0x8c, 0xbe, 0xd2, 0xd2, 0xc4, 0x9a,
+    0x56, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x24, 0xfe,
+    0x23, 0x23, 0x23, 0x15, 0x94, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x12, 0xca, 0x29, 0xb5, 0xfb, 0xff, 0xff,
+    0xff, 0xff, 0xd7, 0x5f, 0xfa, 0x40, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2c,
+    0xfc, 0xb3, 0xff, 0xff, 0xff, 0x4d, 0x42, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0xac, 0x97, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f,
+    0x20, 0x0, 0x0, 0x0, 0x0, 0x4, 0x98, 0x9,
+    0x89, 0xe9, 0xff, 0xff, 0xff, 0xff, 0xeb, 0x5b,
+    0x44, 0x0, 0x0, 0x0, 0x66, 0x6b, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xd3, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x78,
+    0x9, 0x93, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xe1,
+    0x6b, 0xfc, 0x44, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x5c, 0xfe, 0x79, 0xeb, 0xff, 0xff, 0xff, 0xfd,
+    0xbb, 0x2b, 0xc8, 0xe, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0xa4, 0x19, 0xa5, 0xf5, 0xff,
+    0xff, 0xff, 0xff, 0xe3, 0x71, 0xfe, 0x4c, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x92,
+    0xf8, 0x21, 0x73, 0x99, 0xab, 0xaf, 0x9d, 0x7f,
+    0x35, 0xfe, 0xac, 0x26, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x82, 0x4f,
+    0xff, 0xff, 0xff, 0xc5, 0xf8, 0xa, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x8a, 0x31, 0xe7, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0x75, 0xe0, 0x4, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0xc6,
+    0x5b, 0xff, 0xff, 0xff, 0xff, 0x4d, 0x5c, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0xda, 0xaf, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f,
+    0x2a, 0x0, 0x0, 0x0, 0x0, 0x7c, 0x13, 0xc7,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x43,
+    0x44, 0x0, 0x0, 0x0, 0x76, 0x6b, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xd3, 0xf2, 0x0, 0x0, 0x0, 0x20, 0xfe,
+    0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0x79, 0xe0, 0x4, 0x0, 0x0, 0x0, 0x26,
+    0xfa, 0x93, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xe5, 0x2b, 0x8e, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x42, 0x9, 0xd1, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0x81, 0xe8, 0x8,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x42, 0xf2, 0x3d,
+    0xbb, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xcf, 0x51, 0xf8, 0x48, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe2, 0xa5,
+    0xff, 0xff, 0xff, 0xfb, 0x21, 0x50, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xf0, 0xb7, 0xff, 0xff, 0xff, 0xb7, 0x7d,
+    0x99, 0xf3, 0xff, 0xff, 0xf1, 0x13, 0x32, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x62, 0xf,
+    0xe1, 0xff, 0xff, 0xff, 0xff, 0x4d, 0x5c, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0xec, 0xc3, 0xff, 0xff,
+    0xd7, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0x23,
+    0x1c, 0x0, 0x0, 0x0, 0x1e, 0xfc, 0xb1, 0xff,
+    0xff, 0xff, 0xd1, 0x8d, 0x89, 0xa7, 0xcf, 0xfe,
+    0x1c, 0x0, 0x0, 0x0, 0x50, 0x47, 0xad, 0xad,
+    0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xe9, 0xff,
+    0xff, 0xc5, 0xdc, 0x0, 0x0, 0x0, 0x6c, 0x49,
+    0xff, 0xff, 0xff, 0xe1, 0x85, 0x93, 0xf3, 0xff,
+    0xff, 0xf1, 0xf, 0x2a, 0x0, 0x0, 0x0, 0x9a,
+    0x53, 0xff, 0xff, 0xff, 0xdb, 0x85, 0xa5, 0xfd,
+    0xff, 0xff, 0xbd, 0xfa, 0x14, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0xa0, 0x77, 0xff, 0xff, 0xff, 0xd7,
+    0x8b, 0x9b, 0xf3, 0xff, 0xff, 0xf5, 0x1f, 0x3e,
+    0x0, 0x0, 0x0, 0x0, 0x4a, 0xfc, 0x77, 0xfb,
+    0xff, 0xf3, 0xb5, 0x7b, 0x5f, 0x5b, 0x73, 0xa3,
+    0xe5, 0xff, 0xfd, 0x7f, 0xfc, 0x3c, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x2a, 0x5, 0xe9,
+    0xff, 0xff, 0xff, 0xff, 0x7f, 0xba, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xf4, 0xf7, 0xff, 0xff, 0xb5, 0xfe, 0xc8,
+    0xf4, 0x73, 0xff, 0xff, 0xff, 0x5d, 0x64, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x1a, 0xf2, 0x97,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0x4d, 0x5c, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0xf8, 0xd9, 0xff, 0xff,
+    0x65, 0xf2, 0xe8, 0xe8, 0xe8, 0xe8, 0xce, 0x92,
+    0xc, 0x0, 0x0, 0x0, 0x78, 0x45, 0xff, 0xff,
+    0xff, 0xaf, 0xfe, 0xd6, 0xbe, 0xda, 0xc8, 0x9e,
+    0x0, 0x0, 0x0, 0x0, 0x20, 0x86, 0xbe, 0xd6,
+    0xd6, 0xd6, 0xd6, 0xda, 0xfa, 0x67, 0xff, 0xff,
+    0xef, 0x35, 0x9a, 0x0, 0x0, 0x0, 0xa4, 0x8d,
+    0xff, 0xff, 0xff, 0x39, 0xe2, 0xf4, 0x7b, 0xff,
+    0xff, 0xff, 0x55, 0x56, 0x0, 0x0, 0x0, 0xec,
+    0xbd, 0xff, 0xff, 0xef, 0x21, 0xe0, 0xfa, 0x8d,
+    0xff, 0xff, 0xfd, 0x33, 0x52, 0x0, 0x0, 0x0,
+    0x3c, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x14, 0x0,
+    0x0, 0x0, 0x3c, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+    0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x6, 0x52, 0x9e, 0x9c, 0x72,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x60, 0x98, 0x9c, 0x62,
+    0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0xb2, 0xb3, 0xff, 0xff, 0xef, 0x19,
+    0xdc, 0xf2, 0x67, 0xff, 0xff, 0xff, 0x6b, 0x78,
+    0x0, 0x0, 0x0, 0x20, 0xf2, 0x7f, 0xff, 0xff,
+    0xb7, 0x27, 0xf2, 0xb2, 0x82, 0x7e, 0xa4, 0xe4,
+    0xd, 0x91, 0xff, 0xff, 0x6f, 0xdc, 0xa, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x8c, 0x59, 0xff,
+    0xff, 0xf9, 0xff, 0xff, 0xcb, 0xfa, 0xe, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x9, 0x7b, 0x7b, 0x7b, 0x41, 0x8c, 0x0,
+    0x6a, 0x31, 0xff, 0xff, 0xff, 0x73, 0x78, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0xa6, 0x3d, 0xf9,
+    0xff, 0xeb, 0xff, 0xff, 0xff, 0x4d, 0x5c, 0x0,
+    0x0, 0x0, 0x0, 0x2, 0xfe, 0xed, 0xff, 0xff,
+    0x43, 0x6a, 0x3a, 0x34, 0x16, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0xc8, 0x9d, 0xff, 0xff,
+    0xf5, 0x19, 0xb0, 0x98, 0x9c, 0x74, 0x34, 0x2,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x92, 0x2d, 0xf1, 0xff, 0xff,
+    0x63, 0xde, 0x14, 0x0, 0x0, 0x0, 0xb6, 0x9d,
+    0xff, 0xff, 0xf1, 0xfe, 0x1e, 0x78, 0x41, 0xff,
+    0xff, 0xff, 0x67, 0x68, 0x0, 0x0, 0x2, 0xfe,
+    0xef, 0xff, 0xff, 0xa7, 0xee, 0xa, 0x5c, 0x21,
+    0xff, 0xff, 0xff, 0x79, 0x94, 0x0, 0x0, 0x0,
+    0x68, 0x6f, 0xff, 0xff, 0xff, 0x35, 0x26, 0x0,
+    0x0, 0x0, 0x68, 0x6f, 0xff, 0xff, 0xff, 0x35,
+    0x26, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x18, 0x7a, 0xec, 0x19, 0x83, 0xa9, 0xc8,
+    0x0, 0x0, 0x0, 0x26, 0x7e, 0xb2, 0xc8, 0xc8,
+    0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xa8, 0x6c,
+    0x8, 0x0, 0x0, 0x0, 0xae, 0x97, 0x91, 0x27,
+    0xf6, 0x90, 0x24, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x98, 0x67, 0x87, 0x87, 0x6f, 0xde,
+    0x6, 0x4e, 0x19, 0xff, 0xff, 0xff, 0x83, 0x92,
+    0x0, 0x0, 0x0, 0xac, 0x49, 0xf9, 0xff, 0xa5,
+    0xfe, 0x88, 0x2c, 0x64, 0x92, 0x9c, 0x74, 0x38,
+    0x5e, 0xfc, 0x89, 0xff, 0xef, 0x21, 0x5a, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0xea, 0xad, 0xff,
+    0xff, 0x9d, 0xf9, 0xff, 0xfd, 0x2b, 0x5a, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x46, 0x78, 0x9c, 0x86, 0x58, 0x1a, 0x1c,
+    0xc2, 0x57, 0xff, 0xff, 0xff, 0x4d, 0x5a, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x46, 0xfe, 0xcd, 0xff,
+    0xf9, 0x79, 0xff, 0xff, 0xff, 0x4d, 0x5c, 0x0,
+    0x0, 0x0, 0x0, 0x14, 0xb, 0xfd, 0xff, 0xff,
+    0x19, 0x1b, 0x49, 0x39, 0xfe, 0xde, 0x52, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0xec, 0xcb, 0xff, 0xff,
+    0xc7, 0xfe, 0x53, 0x85, 0x89, 0x63, 0xd, 0xc4,
+    0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x2e, 0xfe, 0xbf, 0xff, 0xff, 0xab,
+    0xfc, 0x32, 0x0, 0x0, 0x0, 0x0, 0x94, 0x7f,
+    0xff, 0xff, 0xfd, 0x1f, 0xa4, 0xd0, 0x63, 0xff,
+    0xff, 0xff, 0x41, 0x4c, 0x0, 0x0, 0x2, 0xb,
+    0xff, 0xff, 0xff, 0x87, 0xbe, 0x0, 0xa, 0xfe,
+    0xf1, 0xff, 0xff, 0x9b, 0xbe, 0x0, 0x0, 0x0,
+    0x8c, 0x6f, 0xff, 0xff, 0xff, 0x35, 0x36, 0x0,
+    0x0, 0x0, 0x8c, 0x6f, 0xff, 0xff, 0xff, 0x35,
+    0x36, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x32,
+    0xa6, 0xfc, 0x3b, 0xa5, 0xf3, 0xff, 0xcd, 0xea,
+    0x0, 0x0, 0x0, 0x6a, 0x53, 0x9f, 0x9f, 0x9f,
+    0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x1d,
+    0x18, 0x0, 0x0, 0x0, 0xd6, 0xb3, 0xff, 0xf9,
+    0xb5, 0x4f, 0xfe, 0xbe, 0x46, 0x4, 0x0, 0x0,
+    0x0, 0x0, 0x34, 0x74, 0xa0, 0xa2, 0x78, 0x3c,
+    0x0, 0x88, 0x3d, 0xff, 0xff, 0xff, 0x69, 0x7a,
+    0x0, 0x0, 0x28, 0xfe, 0xcf, 0xff, 0xd3, 0x9,
+    0x70, 0x86, 0xfe, 0x49, 0x83, 0x83, 0x63, 0x13,
+    0xe0, 0x84, 0x5, 0xd5, 0xff, 0x8b, 0xca, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x32, 0x9, 0xef, 0xff,
+    0xff, 0x45, 0xc3, 0xff, 0xff, 0x87, 0xc2, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x48, 0xf8, 0xfe, 0x9,
+    0x43, 0xd5, 0xff, 0xff, 0xcd, 0xfe, 0x24, 0x0,
+    0x0, 0x0, 0x0, 0xc, 0xe0, 0x7b, 0xff, 0xff,
+    0x95, 0x57, 0xff, 0xff, 0xff, 0x4d, 0x5c, 0x0,
+    0x0, 0x0, 0x0, 0x38, 0x31, 0xff, 0xff, 0xf9,
+    0xc3, 0xff, 0xff, 0xff, 0xed, 0x89, 0xfe, 0x64,
+    0x0, 0x0, 0x0, 0x0, 0xf6, 0xdb, 0xff, 0xff,
+    0xcb, 0xd5, 0xff, 0xff, 0xff, 0xff, 0xe3, 0x47,
+    0xd4, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0xb2, 0x5d, 0xff, 0xff, 0xef, 0x21,
+    0x78, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4e, 0x1f,
+    0xf1, 0xff, 0xff, 0xbb, 0x3d, 0x4d, 0xd9, 0xff,
+    0xff, 0xcd, 0xfe, 0x1c, 0x0, 0x0, 0x2, 0xfe,
+    0xfd, 0xff, 0xff, 0x8f, 0xc8, 0x0, 0x0, 0xfc,
+    0xe5, 0xff, 0xff, 0xa7, 0xce, 0x0, 0x0, 0x0,
+    0x68, 0x6f, 0xff, 0xff, 0xff, 0x35, 0x26, 0x0,
+    0x0, 0x0, 0x68, 0x6f, 0xff, 0xff, 0xff, 0x35,
+    0x26, 0x0, 0x0, 0x0, 0x8, 0x58, 0xd0, 0xfe,
+    0x63, 0xc5, 0xff, 0xff, 0xff, 0xff, 0xcd, 0xe0,
+    0x0, 0x0, 0x0, 0x98, 0x87, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f,
+    0x26, 0x0, 0x0, 0x0, 0xc6, 0xb3, 0xff, 0xff,
+    0xff, 0xff, 0xd5, 0x79, 0x11, 0xe6, 0x72, 0x14,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x52, 0xfe, 0xaf, 0xff, 0xff, 0xf5, 0x21, 0x40,
+    0x0, 0x0, 0x86, 0x55, 0xff, 0xff, 0x53, 0xb2,
+    0x82, 0x11, 0xbb, 0xff, 0xff, 0xff, 0xff, 0xef,
+    0x81, 0xc8, 0xc4, 0x7d, 0xff, 0xd9, 0xfa, 0x4,
+    0x0, 0x0, 0x0, 0x0, 0x96, 0x63, 0xff, 0xff,
+    0xe5, 0xfe, 0x7d, 0xff, 0xff, 0xd1, 0xfc, 0x12,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x7c, 0x7d, 0xfd, 0xff,
+    0xff, 0xff, 0xff, 0xd1, 0x25, 0xa0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x84, 0x25, 0xef, 0xff, 0xdf,
+    0xd, 0x57, 0xff, 0xff, 0xff, 0x4d, 0x5c, 0x0,
+    0x0, 0x0, 0x0, 0x64, 0x53, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9d, 0xf8,
+    0x16, 0x0, 0x0, 0x0, 0xfa, 0xe3, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xeb,
+    0x21, 0x68, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x22, 0xfe, 0xd1, 0xff, 0xff, 0x8f, 0xe4,
+    0xa, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0xdc,
+    0x53, 0xeb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xd7, 0x2b, 0xa2, 0x0, 0x0, 0x0, 0x0, 0xfe,
+    0xe7, 0xff, 0xff, 0xbb, 0xfa, 0x32, 0x5e, 0xfe,
+    0xe5, 0xff, 0xff, 0xa9, 0xd4, 0x0, 0x0, 0x0,
+    0x3c, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x14, 0x0,
+    0x0, 0x0, 0x3c, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+    0x14, 0x0, 0x0, 0x30, 0xe6, 0x1d, 0x89, 0xe1,
+    0xff, 0xff, 0xff, 0xff, 0xfd, 0xc7, 0x69, 0xb2,
+    0x0, 0x0, 0x0, 0x8c, 0x87, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f,
+    0x22, 0x0, 0x0, 0x0, 0x90, 0x53, 0xb7, 0xf5,
+    0xff, 0xff, 0xff, 0xff, 0xef, 0x9d, 0x33, 0xf6,
+    0x5a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6c,
+    0xfe, 0x89, 0xff, 0xff, 0xff, 0x8f, 0xea, 0xa,
+    0x0, 0x0, 0xdc, 0xa7, 0xff, 0xd7, 0xfe, 0x4c,
+    0xfe, 0xb7, 0xff, 0xff, 0xcd, 0xb1, 0xe9, 0xff,
+    0xdd, 0xea, 0x52, 0x29, 0xff, 0xfb, 0x11, 0x24,
+    0x0, 0x0, 0x0, 0x4, 0xee, 0xb3, 0xff, 0xff,
+    0xa5, 0xea, 0x27, 0xfd, 0xff, 0xff, 0x31, 0x62,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x90, 0x7f, 0xff, 0xff,
+    0xff, 0xff, 0xf7, 0x79, 0xfe, 0x7c, 0x0, 0x0,
+    0x0, 0x0, 0x2e, 0xfc, 0xb3, 0xff, 0xff, 0x55,
+    0xda, 0x57, 0xff, 0xff, 0xff, 0x4d, 0x5c, 0x0,
+    0x0, 0x0, 0x0, 0x6e, 0x6f, 0xff, 0xff, 0xff,
+    0xb5, 0x75, 0x8b, 0xed, 0xff, 0xff, 0xfd, 0x39,
+    0x66, 0x0, 0x0, 0x0, 0xfa, 0xe3, 0xff, 0xff,
+    0xfd, 0xa1, 0x55, 0x53, 0xb5, 0xff, 0xff, 0xff,
+    0x9b, 0xd0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x7c, 0x4d, 0xff, 0xff, 0xf9, 0x21, 0x5e,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6, 0xb0,
+    0x11, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
+    0x77, 0xfe, 0x74, 0x0, 0x0, 0x0, 0x0, 0xe2,
+    0xb1, 0xff, 0xff, 0xf9, 0x5f, 0xfe, 0xd, 0x95,
+    0xff, 0xff, 0xff, 0xa9, 0xd4, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x68, 0x5f, 0xf5, 0xff, 0xff,
+    0xff, 0xff, 0xd7, 0x8b, 0x2b, 0xfa, 0xac, 0x38,
+    0x0, 0x0, 0x0, 0x58, 0x25, 0x49, 0x49, 0x49,
+    0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0xd,
+    0x12, 0x0, 0x0, 0x0, 0x26, 0x94, 0xf2, 0x15,
+    0x75, 0xc3, 0xfb, 0xff, 0xff, 0xff, 0xfd, 0x93,
+    0xac, 0x0, 0x0, 0x0, 0x0, 0x0, 0x68, 0x5,
+    0xa5, 0xff, 0xff, 0xff, 0xad, 0xfe, 0x58, 0x0,
+    0x0, 0x4, 0xfe, 0xdf, 0xff, 0x9d, 0xd6, 0x9c,
+    0x5b, 0xff, 0xff, 0x97, 0xfe, 0xfc, 0xbf, 0xff,
+    0xcb, 0xf0, 0xe, 0xfe, 0xf1, 0xff, 0x4b, 0x4a,
+    0x0, 0x0, 0x0, 0x3a, 0xf, 0xf3, 0xff, 0xff,
+    0x59, 0x8a, 0xfc, 0xcf, 0xff, 0xff, 0x8d, 0xca,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x66, 0x55, 0xad, 0xaf,
+    0xcb, 0xff, 0xff, 0xff, 0xad, 0xfe, 0x2c, 0x0,
+    0x0, 0x4, 0xc6, 0x5b, 0xff, 0xff, 0xad, 0xfe,
+    0xce, 0x57, 0xff, 0xff, 0xff, 0x4d, 0xaa, 0x4a,
+    0x8, 0x0, 0x0, 0x54, 0x49, 0x9b, 0xab, 0x99,
+    0xfe, 0xbe, 0xea, 0x4f, 0xff, 0xff, 0xff, 0x8f,
+    0xb2, 0x0, 0x0, 0x0, 0xfa, 0xe3, 0xff, 0xff,
+    0xb5, 0xfe, 0x94, 0xa4, 0xfe, 0xdb, 0xff, 0xff,
+    0xdb, 0xfa, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xdc, 0xa1, 0xff, 0xff, 0xc3, 0xf8, 0xa,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x64, 0x17,
+    0xcf, 0xff, 0xff, 0xf1, 0xb7, 0xc1, 0xfb, 0xff,
+    0xff, 0xa3, 0xfe, 0x2c, 0x0, 0x0, 0x0, 0x8a,
+    0x43, 0xfb, 0xff, 0xff, 0xff, 0xeb, 0xf7, 0xff,
+    0xff, 0xff, 0xff, 0xa9, 0xd4, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x90, 0x7b, 0xff, 0xff, 0xff,
+    0xaf, 0x41, 0xfe, 0xd8, 0x62, 0xe, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x2c, 0x88, 0xba, 0xce, 0xce,
+    0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xae, 0x72,
+    0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6, 0x46,
+    0xbe, 0xfc, 0x23, 0x8d, 0xf7, 0xff, 0xff, 0xb3,
+    0xd4, 0x0, 0x0, 0x0, 0x0, 0x6, 0xf0, 0x9f,
+    0xff, 0xff, 0xfd, 0x89, 0xfe, 0x76, 0x0, 0x0,
+    0x0, 0x1a, 0xf, 0xff, 0xff, 0x67, 0x94, 0xf0,
+    0xbb, 0xff, 0xf3, 0x13, 0x62, 0xf4, 0xd1, 0xff,
+    0xb9, 0xe2, 0x0, 0xfc, 0xe3, 0xff, 0x5b, 0x6c,
+    0x0, 0x0, 0x0, 0xa0, 0x6b, 0xff, 0xff, 0xef,
+    0x9, 0xac, 0xea, 0x8d, 0xff, 0xff, 0xd7, 0xfe,
+    0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x28, 0x8c, 0xc2, 0xe2,
+    0xfe, 0x6d, 0xff, 0xff, 0xff, 0x5b, 0x84, 0x0,
+    0x0, 0x3a, 0x11, 0xe1, 0xff, 0xfd, 0x89, 0x7b,
+    0x7b, 0x9b, 0xff, 0xff, 0xff, 0x97, 0x7b, 0x1b,
+    0x1e, 0x0, 0x0, 0x20, 0x78, 0xb4, 0xca, 0xa8,
+    0x60, 0x0, 0x24, 0xfe, 0xe5, 0xff, 0xff, 0xb5,
+    0xd8, 0x0, 0x0, 0x0, 0xf8, 0xdf, 0xff, 0xff,
+    0xb1, 0xe2, 0x0, 0x0, 0xe0, 0x9d, 0xff, 0xff,
+    0xf9, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x1c, 0xfe, 0xe3, 0xff, 0xff, 0x85, 0xba, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd2, 0x99,
+    0xff, 0xff, 0xf1, 0x2f, 0xf6, 0xfc, 0x5f, 0xff,
+    0xff, 0xff, 0x5b, 0x8e, 0x0, 0x0, 0x0, 0x1c,
+    0xf2, 0x73, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xd5,
+    0xed, 0xff, 0xff, 0xa7, 0xce, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x7c, 0x7b, 0xff, 0xff, 0xff,
+    0xfd, 0xc9, 0x7b, 0x1b, 0xf6, 0xa2, 0x3a, 0x4,
+    0x0, 0x0, 0x0, 0x68, 0x4d, 0x91, 0x91, 0x91,
+    0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x19,
+    0x16, 0x0, 0x0, 0x0, 0x0, 0x2a, 0x8c, 0xec,
+    0xd, 0x6b, 0xbb, 0xf9, 0xff, 0xff, 0xff, 0xb3,
+    0xc2, 0x0, 0x0, 0x0, 0x0, 0x22, 0x17, 0xf9,
+    0xff, 0xff, 0x9f, 0xfc, 0x52, 0x0, 0x0, 0x0,
+    0x0, 0x3c, 0x39, 0xff, 0xff, 0x47, 0x66, 0x5,
+    0xf3, 0xff, 0xc3, 0xf6, 0x4, 0xfa, 0xe3, 0xff,
+    0xa7, 0xd2, 0x0, 0xfc, 0xe1, 0xff, 0x63, 0x72,
+    0x0, 0x0, 0x6, 0xf4, 0xb9, 0xff, 0xff, 0xd7,
+    0x7b, 0x7b, 0x7b, 0x95, 0xff, 0xff, 0xff, 0x39,
+    0x6c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x1c, 0x92, 0xca, 0xe2, 0xca, 0x90, 0x1a, 0x0,
+    0x3a, 0xfe, 0xed, 0xff, 0xff, 0xa1, 0xbe, 0x0,
+    0x0, 0x5c, 0x69, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x39,
+    0x30, 0x0, 0x0, 0x60, 0xba, 0xe4, 0xe6, 0xc6,
+    0x6a, 0x0, 0x0, 0xfa, 0xd3, 0xff, 0xff, 0xbf,
+    0xe0, 0x0, 0x0, 0x0, 0xf2, 0xd3, 0xff, 0xff,
+    0xc3, 0xf0, 0x0, 0x0, 0xc8, 0x8f, 0xff, 0xff,
+    0xff, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x5a, 0x43, 0xff, 0xff, 0xff, 0x47, 0x64, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf6, 0xdd,
+    0xff, 0xff, 0xaf, 0xf4, 0x10, 0x30, 0xfe, 0xdd,
+    0xff, 0xff, 0xad, 0xcc, 0x0, 0x0, 0x0, 0x0,
+    0x40, 0xec, 0x31, 0x93, 0xb7, 0xb7, 0x83, 0xf,
+    0xf7, 0xff, 0xff, 0x99, 0xbe, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x4a, 0x19, 0x85, 0xdf, 0xff,
+    0xff, 0xff, 0xff, 0xf9, 0xbb, 0x6b, 0xf, 0x96,
+    0x0, 0x0, 0x0, 0x96, 0x87, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f,
+    0x26, 0x0, 0x0, 0x0, 0x74, 0xfe, 0x57, 0xad,
+    0xf1, 0xff, 0xff, 0xff, 0xff, 0xed, 0x9b, 0x2f,
+    0x86, 0x0, 0x0, 0x0, 0x0, 0x26, 0x41, 0xff,
+    0xff, 0xff, 0x5d, 0x84, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x54, 0x51, 0xff, 0xff, 0x2d, 0x66, 0x35,
+    0xff, 0xff, 0x9f, 0xd2, 0x4, 0xfe, 0xf3, 0xff,
+    0x93, 0xbc, 0xa, 0xfe, 0xef, 0xff, 0x57, 0x5e,
+    0x0, 0x0, 0x44, 0x17, 0xf7, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x95,
+    0xd2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x30, 0x41, 0xbb, 0xbb, 0xbb, 0x3d, 0x74, 0x0,
+    0x20, 0xfe, 0xe5, 0xff, 0xff, 0xaf, 0xcc, 0x0,
+    0x0, 0x5e, 0x5b, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x39,
+    0x30, 0x0, 0x0, 0xb4, 0x99, 0xc3, 0xcf, 0xa1,
+    0xe2, 0x8, 0x24, 0xfe, 0xe3, 0xff, 0xff, 0xb1,
+    0xd6, 0x0, 0x0, 0x0, 0xdc, 0xb1, 0xff, 0xff,
+    0xe7, 0x5, 0x3c, 0xc, 0xf0, 0xad, 0xff, 0xff,
+    0xed, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0xa0, 0x7b, 0xff, 0xff, 0xf9, 0xb, 0x20, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfa, 0xef,
+    0xff, 0xff, 0xa9, 0xec, 0x4, 0x16, 0xfc, 0xd7,
+    0xff, 0xff, 0xc1, 0xde, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x12, 0x66, 0xb4, 0xd6, 0xd4, 0xdc, 0x41,
+    0xff, 0xff, 0xff, 0x75, 0x90, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x6, 0x52, 0xcc, 0xfe, 0x5f,
+    0xc1, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xd6,
+    0x0, 0x0, 0x0, 0x8e, 0x87, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f,
+    0x22, 0x0, 0x0, 0x0, 0xb8, 0xab, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xd3, 0x77, 0xf, 0xe4, 0x6e,
+    0x10, 0x0, 0x0, 0x0, 0x0, 0x20, 0x13, 0x3f,
+    0x3f, 0x3f, 0x13, 0x32, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x5a, 0x4f, 0xff, 0xff, 0x2f, 0x7c, 0x57,
+    0xff, 0xff, 0x8d, 0xc0, 0x1a, 0xf, 0xff, 0xff,
+    0x7d, 0xa4, 0x54, 0x21, 0xff, 0xff, 0x29, 0x36,
+    0x0, 0x0, 0xaa, 0x73, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdd,
+    0xfe, 0x1c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x30, 0x3b, 0xff, 0xff, 0xff, 0x9d, 0xfe, 0xce,
+    0xf0, 0x49, 0xff, 0xff, 0xff, 0x91, 0xae, 0x0,
+    0x0, 0x34, 0x1f, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b,
+    0x6b, 0x91, 0xff, 0xff, 0xff, 0x8b, 0x6b, 0x17,
+    0x1c, 0x0, 0x0, 0xc4, 0xbb, 0xff, 0xff, 0xed,
+    0x1b, 0xe0, 0xee, 0x4f, 0xff, 0xff, 0xff, 0x83,
+    0xa6, 0x0, 0x0, 0x0, 0x9a, 0x71, 0xff, 0xff,
+    0xff, 0x6f, 0xf8, 0xe4, 0x25, 0xf1, 0xff, 0xff,
+    0xbf, 0xec, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0xd2, 0xa3, 0xff, 0xff, 0xdb, 0xfc, 0x2, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf6, 0xdb,
+    0xff, 0xff, 0xe3, 0xf, 0xdc, 0xec, 0x39, 0xf9,
+    0xff, 0xff, 0xab, 0xcc, 0x0, 0x0, 0x0, 0x0,
+    0x1c, 0xb0, 0xd0, 0xdc, 0xbc, 0xd8, 0x9, 0xbf,
+    0xff, 0xff, 0xf9, 0x27, 0x4a, 0x0, 0x0, 0x0,
+    0x3c, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x14, 0x0,
+    0x0, 0x0, 0x3c, 0xcc, 0xf2, 0xf6, 0xdc, 0x78,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x30, 0xa2,
+    0xfa, 0x35, 0xa1, 0xf1, 0xff, 0xff, 0xcd, 0xee,
+    0x0, 0x0, 0x0, 0x5a, 0x2d, 0x57, 0x57, 0x57,
+    0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0xf,
+    0x14, 0x0, 0x0, 0x0, 0xda, 0xb3, 0xff, 0xff,
+    0xf9, 0xb1, 0x4b, 0xfe, 0xbc, 0x44, 0x4, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x2a, 0xe4, 0xfa,
+    0xfe, 0xfc, 0xe6, 0x2e, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x42, 0x45, 0xff, 0xff, 0x3f, 0x90, 0x59,
+    0xff, 0xff, 0x95, 0xda, 0x9e, 0x39, 0xff, 0xff,
+    0x6b, 0x96, 0xd8, 0x85, 0xff, 0xd9, 0xfe, 0xe,
+    0x0, 0x8, 0xf6, 0xc1, 0xff, 0xff, 0xcd, 0x63,
+    0x63, 0x63, 0x63, 0x63, 0x7f, 0xff, 0xff, 0xff,
+    0x43, 0x76, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x18, 0xfe, 0xd9, 0xff, 0xff, 0xff, 0xbb, 0x89,
+    0x9f, 0xf1, 0xff, 0xff, 0xf9, 0x39, 0x68, 0x0,
+    0x0, 0x8, 0x3e, 0x6a, 0x86, 0x86, 0x86, 0x86,
+    0xb8, 0x57, 0xff, 0xff, 0xff, 0x4d, 0x9e, 0x3e,
+    0x6, 0x0, 0x0, 0xa0, 0x6d, 0xff, 0xff, 0xff,
+    0xdd, 0x8f, 0x99, 0xef, 0xff, 0xff, 0xf3, 0x21,
+    0x54, 0x0, 0x0, 0x0, 0x3e, 0xb, 0xdf, 0xff,
+    0xff, 0xf9, 0xa1, 0x8f, 0xdf, 0xff, 0xff, 0xff,
+    0x57, 0x9c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0xf0, 0xc9, 0xff, 0xff, 0xc1, 0xec, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd0, 0x99,
+    0xff, 0xff, 0xff, 0xd9, 0x8f, 0x97, 0xeb, 0xff,
+    0xff, 0xff, 0x5f, 0x8e, 0x0, 0x0, 0x0, 0x0,
+    0x52, 0x43, 0xd5, 0xa1, 0x89, 0x91, 0xd5, 0xff,
+    0xff, 0xff, 0xa1, 0xf2, 0xe, 0x0, 0x0, 0x0,
+    0x68, 0x6f, 0xff, 0xff, 0xff, 0x35, 0x26, 0x0,
+    0x0, 0x0, 0x74, 0x71, 0xe3, 0xe3, 0xaf, 0xc4,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x14, 0x76, 0xe8, 0x15, 0x7f, 0xdb, 0xcd, 0xdc,
+    0x0, 0x0, 0x0, 0x10, 0x36, 0x58, 0x6a, 0x6a,
+    0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x4e, 0x2c,
+    0x4, 0x0, 0x0, 0x0, 0xc2, 0xb3, 0xe5, 0x8f,
+    0x23, 0xf4, 0x8c, 0x22, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x4a, 0x51, 0xf5,
+    0xf5, 0xf5, 0x57, 0x4e, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x24, 0x1b, 0xff, 0xff, 0x6b, 0xac, 0x2d,
+    0xff, 0xff, 0xd5, 0xb, 0x1b, 0xc3, 0xff, 0xff,
+    0x6d, 0xfa, 0x27, 0xe7, 0xff, 0x7b, 0xc4, 0x0,
+    0x0, 0x4c, 0x1f, 0xf9, 0xff, 0xff, 0x7b, 0xd2,
+    0x7a, 0x7a, 0x7a, 0x8a, 0xfe, 0xe9, 0xff, 0xff,
+    0x9b, 0xda, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xb6, 0x49, 0xf1, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0x7f, 0xf0, 0x16, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x6a, 0x57, 0xff, 0xff, 0xff, 0x4d, 0x5c, 0x0,
+    0x0, 0x0, 0x0, 0x3a, 0xfe, 0xb3, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x71, 0xe4,
+    0xa, 0x0, 0x0, 0x0, 0x2, 0xc0, 0x47, 0xef,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x97,
+    0xfc, 0x2a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0xfc, 0xe5, 0xff, 0xff, 0xa7, 0xd6, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x64, 0x19,
+    0xd7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xb1, 0xfe, 0x30, 0x0, 0x0, 0x0, 0x0,
+    0x76, 0x71, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xc5, 0xd, 0x6c, 0x0, 0x0, 0x0, 0x0,
+    0x8c, 0x6f, 0xff, 0xff, 0xff, 0x35, 0x36, 0x0,
+    0x0, 0x0, 0x9c, 0x7f, 0xff, 0xff, 0xc5, 0xe4,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x6, 0x4e, 0xc8, 0xec, 0x3f, 0xa4,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x88, 0x3f, 0x5, 0xd6,
+    0x5e, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x68, 0x57, 0xff,
+    0xff, 0xff, 0x5b, 0x6e, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x8, 0xfe, 0xe3, 0xff, 0xa1, 0xe6, 0xfe,
+    0xcf, 0xff, 0xff, 0xf3, 0xf9, 0xe9, 0xe1, 0xff,
+    0xdb, 0xa7, 0xeb, 0xff, 0xc3, 0xfe, 0x44, 0x0,
+    0x0, 0xb4, 0x7b, 0xff, 0xff, 0xfd, 0x27, 0x50,
+    0x0, 0x0, 0x0, 0x0, 0xe6, 0xad, 0xff, 0xff,
+    0xe3, 0xfe, 0x24, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x20, 0xdc, 0x31, 0xb3, 0xf7, 0xff, 0xff,
+    0xff, 0xfd, 0xcb, 0x57, 0xfa, 0x4a, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x4c, 0x57, 0xff, 0xff, 0xff, 0x4d, 0x42, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x7c, 0xfe, 0x7f, 0xe1,
+    0xff, 0xff, 0xff, 0xff, 0xd9, 0x61, 0xf8, 0x3e,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x1e, 0xda, 0x37,
+    0xbb, 0xfb, 0xff, 0xff, 0xff, 0xe3, 0x75, 0xfe,
+    0x5e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0xf8, 0xf7, 0xff, 0xff, 0x93, 0xa4, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6, 0xae,
+    0x17, 0x9d, 0xef, 0xff, 0xff, 0xff, 0xff, 0xe3,
+    0x83, 0x5, 0x7a, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x64, 0x65, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xe5,
+    0x87, 0x5, 0x92, 0x2, 0x0, 0x0, 0x0, 0x0,
+    0x68, 0x6f, 0xff, 0xff, 0xff, 0x35, 0x26, 0x0,
+    0x0, 0x0, 0xa6, 0x7f, 0xff, 0xff, 0xc1, 0xe4,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x16, 0x16,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x16, 0x16, 0x16, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x4c, 0x57, 0xff,
+    0xff, 0xff, 0x5b, 0x52, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0xde, 0xa7, 0xff, 0xe9, 0xd, 0xc6,
+    0x39, 0xdf, 0xff, 0xff, 0xe5, 0x4b, 0x5b, 0xf3,
+    0xff, 0xff, 0xf5, 0xa3, 0x13, 0x92, 0x0, 0x0,
+    0x0, 0xb2, 0xc7, 0xff, 0xff, 0xcf, 0xfc, 0xc,
+    0x0, 0x0, 0x0, 0x0, 0x90, 0x63, 0xff, 0xff,
+    0xff, 0x4d, 0x24, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x12, 0x86, 0xf2, 0xd, 0x47, 0x59,
+    0x4d, 0x1b, 0xfc, 0xaa, 0x2a, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x2a, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x24, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x48, 0xcc, 0xfe,
+    0x31, 0x57, 0x55, 0x2d, 0xfe, 0xbc, 0x30, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x90,
+    0xf6, 0x19, 0x4d, 0x57, 0x39, 0xfe, 0xce, 0x40,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0xe4, 0xfe, 0xfe, 0xfe, 0xfe, 0x5c, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6,
+    0x68, 0xe4, 0xfe, 0x3d, 0x57, 0x55, 0x31, 0xfe,
+    0xd0, 0x4c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x34, 0xca, 0xfe, 0x2f, 0x4f, 0x55, 0x35, 0xfe,
+    0xd4, 0x50, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x3c, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x14, 0x0,
+    0x0, 0x0, 0xbe, 0x89, 0xff, 0xff, 0xa7, 0xca,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x2a, 0xfe, 0xfe,
+    0xfe, 0xfe, 0xfe, 0x2c, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x82, 0x47, 0xff, 0xff, 0x91, 0xf4,
+    0xca, 0x5, 0x45, 0x43, 0x9, 0xd2, 0xe6, 0x1f,
+    0x55, 0x49, 0xf, 0xec, 0x6e, 0x4, 0x0, 0x0,
+    0x0, 0x94, 0xfe, 0xfe, 0xfe, 0xfe, 0xa0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x32, 0xfe, 0xfe, 0xfe,
+    0xfe, 0xfe, 0x24, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x2, 0x22, 0x48, 0x5e,
+    0x4e, 0x2a, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12,
+    0x38, 0x58, 0x56, 0x34, 0x10, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x6, 0x2a, 0x4c, 0x58, 0x3c, 0x16, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x18, 0x3e, 0x5c, 0x58, 0x38, 0x12,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x10, 0x32, 0x54, 0x54, 0x38, 0x14,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x6, 0xf0, 0xaf, 0xff, 0xff, 0x5d, 0x88,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x1e, 0xfe, 0xaf, 0xff, 0xfb, 0x6b,
+    0xfa, 0x8c, 0x46, 0x36, 0x1c, 0x0, 0x2c, 0x58,
+    0x6e, 0x52, 0x22, 0x4, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x18, 0x17, 0xf1, 0xff, 0xd1, 0xfe, 0x2e,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x7c, 0x1b, 0xd9, 0xff, 0xfd,
+    0xab, 0x35, 0xfe, 0xf2, 0xee, 0xf8, 0xfe, 0x4f,
+    0x2f, 0x5c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x18, 0x37, 0xd9, 0xf1, 0x41, 0xae, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x8, 0xb4, 0x1f, 0xc7, 0xff,
+    0xff, 0xff, 0xdf, 0xc7, 0xbf, 0xd3, 0xef, 0xff,
+    0x87, 0x78, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x14, 0xb4, 0x5, 0x31, 0xde, 0x1c, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x8, 0x98, 0xfe, 0x67,
+    0xc7, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd3,
+    0x5d, 0x70, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x10, 0x10, 0x10, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x36, 0xac,
+    0xf6, 0x13, 0x49, 0x5f, 0x6b, 0x57, 0x23, 0xfc,
+    0xb6, 0x2e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x4, 0x24, 0x4c, 0x72, 0x78, 0x60, 0x34, 0xc,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x4, 0xe, 0x1a, 0x20, 0x20, 0x20, 0x1e,
+    0x14, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x20, 0x4e, 0x72, 0x72, 0x4e, 0x20, 0x2, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0xe, 0x1a,
+    0x20, 0x20, 0x20, 0x1c, 0x10, 0x6, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x4, 0xe, 0x1a, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x20, 0x18, 0xe, 0x2, 0x0,
+    0x0, 0x4, 0xe, 0x1a, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0xe, 0x2,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1e,
+    0x4a, 0x70, 0x74, 0x54, 0x28, 0x4, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0xe, 0x1a,
+    0x20, 0x16, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0xc, 0x16, 0x20, 0x1a, 0xe, 0x4, 0x0, 0x0,
+    0x0, 0x2, 0xc, 0x18, 0x20, 0x18, 0xc, 0x2,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x2, 0xe, 0x18, 0x20, 0x16, 0xc,
+    0x0, 0x0, 0x0, 0x0, 0x4, 0xe, 0x1a, 0x20,
+    0x16, 0xc, 0x0, 0x0, 0x0, 0x0, 0xa, 0x16,
+    0x20, 0x20, 0x18, 0xc, 0x2, 0x0, 0x0, 0x4,
+    0xe, 0x1a, 0x20, 0x16, 0xc, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4,
+    0xe, 0x1a, 0x20, 0x20, 0x16, 0xc, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0xc, 0x16, 0x20,
+    0x20, 0x1a, 0xe, 0x4, 0x0, 0x0, 0x0, 0x4,
+    0xe, 0x1a, 0x20, 0x16, 0xc, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0xc, 0x16, 0x20, 0x1a, 0xe, 0x4,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x14, 0x3e, 0x66, 0x72, 0x56, 0x28, 0x4, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x52, 0x11, 0x23, 0x23, 0x23, 0x23, 0x23,
+    0x1f, 0x9, 0xfe, 0xea, 0x9e, 0x30, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x60, 0xe2,
+    0x5, 0x49, 0x65, 0x65, 0x49, 0xb, 0xec, 0x76,
+    0x8, 0x0, 0x0, 0x0, 0x0, 0x52, 0x11, 0x23,
+    0x23, 0x23, 0x23, 0x23, 0x15, 0xfe, 0xf8, 0xc2,
+    0x5c, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x52, 0x11, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
+    0x23, 0x23, 0x23, 0x23, 0x23, 0xd, 0x32, 0x0,
+    0x0, 0x52, 0x11, 0x23, 0x23, 0x23, 0x23, 0x23,
+    0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0xd, 0x34,
+    0x0, 0x0, 0x0, 0x0, 0x4, 0x5c, 0xe0, 0x5,
+    0x45, 0x65, 0x67, 0x4f, 0x13, 0xf6, 0x8e, 0x14,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x52, 0x11, 0x23,
+    0x23, 0x23, 0xfe, 0x2, 0x0, 0x0, 0x0, 0x2,
+    0xfe, 0x23, 0x23, 0x23, 0x11, 0x4e, 0x0, 0x0,
+    0x0, 0x24, 0xb, 0x23, 0x23, 0x23, 0xb, 0x2e,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x32, 0xd, 0x23, 0x23, 0x23, 0x9,
+    0x1c, 0x0, 0x0, 0x0, 0x52, 0x11, 0x23, 0x23,
+    0x23, 0xfe, 0x2, 0x0, 0x0, 0x40, 0xfe, 0x21,
+    0x23, 0x23, 0x23, 0xf, 0x4, 0x0, 0x0, 0x52,
+    0x11, 0x23, 0x23, 0x23, 0xfe, 0x2, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x52,
+    0x11, 0x23, 0x23, 0x23, 0x23, 0x5, 0x30, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x40, 0x9, 0x23, 0x23,
+    0x23, 0x23, 0xf, 0x44, 0x0, 0x0, 0x0, 0x52,
+    0x11, 0x23, 0x23, 0x23, 0xfe, 0x42, 0x0, 0x0,
+    0x0, 0x2, 0xfe, 0x23, 0x23, 0x23, 0x11, 0x4e,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0xc8,
+    0xfe, 0x35, 0x5d, 0x67, 0x51, 0x11, 0xf2, 0x8a,
+    0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x88, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xeb, 0xbd, 0x5f, 0xfe, 0x70, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x8, 0xa6, 0x11, 0x97,
+    0xef, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xa7, 0x1f,
+    0xc2, 0xe, 0x0, 0x0, 0x0, 0x88, 0x87, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xd1, 0x8d,
+    0x1b, 0xd6, 0x2c, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x88, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x58, 0x0,
+    0x0, 0x88, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x63, 0x5c,
+    0x0, 0x0, 0x0, 0x6, 0xa4, 0xf, 0x91, 0xed,
+    0xff, 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x35, 0xdc,
+    0x1c, 0x0, 0x0, 0x0, 0x0, 0x88, 0x87, 0xff,
+    0xff, 0xff, 0xd, 0x4, 0x0, 0x0, 0x0, 0x4,
+    0xd, 0xff, 0xff, 0xff, 0x83, 0x82, 0x0, 0x0,
+    0x0, 0x42, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x52,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x58, 0x5f, 0xff, 0xff, 0xff, 0x43,
+    0x36, 0x0, 0x0, 0x0, 0x88, 0x87, 0xff, 0xff,
+    0xff, 0xd, 0x4, 0x0, 0xe, 0xe0, 0x75, 0xff,
+    0xff, 0xff, 0xd9, 0x15, 0x4, 0x0, 0x0, 0x88,
+    0x87, 0xff, 0xff, 0xff, 0xd, 0x4, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x88,
+    0x87, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x94, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0xac, 0x75, 0xff, 0xff,
+    0xff, 0xff, 0x77, 0x76, 0x0, 0x0, 0x0, 0x88,
+    0x87, 0xff, 0xff, 0xff, 0x77, 0xda, 0x8, 0x0,
+    0x0, 0x4, 0xd, 0xff, 0xff, 0xff, 0x83, 0x82,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x7a, 0xfe, 0x75,
+    0xdf, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xb5, 0x35,
+    0xde, 0x2a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xa7, 0xfe, 0x36,
+    0x0, 0x0, 0x0, 0x0, 0x86, 0x1b, 0xd1, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3,
+    0x29, 0x94, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xed, 0x59, 0xee, 0x26, 0x0, 0x0, 0x0, 0x0,
+    0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x68, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x63, 0x6e,
+    0x0, 0x0, 0x0, 0x86, 0x19, 0xcf, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0x43,
+    0xb8, 0x0, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+    0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0x6,
+    0xd, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+    0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x43,
+    0x4c, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+    0xff, 0xd, 0x6, 0x0, 0x8a, 0x27, 0xef, 0xff,
+    0xff, 0xf9, 0x43, 0xb8, 0x4, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xff, 0xff, 0xb1, 0xee, 0x4,
+    0x0, 0x0, 0x0, 0xa, 0xf8, 0xc3, 0xff, 0xff,
+    0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xff, 0xeb, 0x1b, 0x6e, 0x0,
+    0x0, 0x6, 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6,
+    0x0, 0x0, 0x0, 0x0, 0x60, 0x5, 0xb1, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1,
+    0x57, 0xde, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xad, 0xad,
+    0xb1, 0xc7, 0xfb, 0xff, 0xff, 0xff, 0x67, 0x9a,
+    0x0, 0x0, 0x0, 0x20, 0xfe, 0xb7, 0xff, 0xff,
+    0xff, 0xbf, 0x7d, 0x89, 0xbd, 0xff, 0xff, 0xff,
+    0xc3, 0xfe, 0x1c, 0x0, 0x0, 0xac, 0x87, 0xff,
+    0xff, 0xff, 0xad, 0xad, 0xb7, 0xd7, 0xff, 0xff,
+    0xff, 0xf9, 0x51, 0xc6, 0x2, 0x0, 0x0, 0x0,
+    0xac, 0x87, 0xff, 0xff, 0xff, 0xad, 0xad, 0xad,
+    0xad, 0xad, 0xad, 0xad, 0xad, 0x41, 0x44, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xad, 0xad,
+    0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0x43, 0x4a,
+    0x0, 0x0, 0x24, 0xfe, 0xb9, 0xff, 0xff, 0xff,
+    0xcd, 0x85, 0x81, 0xb1, 0xfd, 0xff, 0xff, 0xdb,
+    0x9, 0x32, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+    0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0x6,
+    0xd, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+    0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x43,
+    0x4c, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+    0xff, 0xd, 0x6, 0x36, 0xfe, 0xb9, 0xff, 0xff,
+    0xff, 0x87, 0xf0, 0x1c, 0x0, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xf, 0x3a,
+    0x0, 0x0, 0x0, 0x50, 0x21, 0xfb, 0xff, 0xff,
+    0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xff, 0xff, 0xa1, 0xf6, 0x1a,
+    0x0, 0x6, 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6,
+    0x0, 0x0, 0x0, 0x12, 0xf4, 0x97, 0xff, 0xff,
+    0xff, 0xd9, 0x91, 0x83, 0xad, 0xf9, 0xff, 0xff,
+    0xf1, 0x35, 0x8e, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xd8,
+    0xe0, 0xfa, 0x43, 0xf7, 0xff, 0xff, 0xb5, 0xd6,
+    0x0, 0x0, 0x0, 0x7c, 0x49, 0xff, 0xff, 0xff,
+    0xa3, 0xfe, 0xc6, 0xc6, 0xfe, 0x95, 0xff, 0xff,
+    0xff, 0x43, 0x6a, 0x0, 0x0, 0xac, 0x87, 0xff,
+    0xff, 0xff, 0xd, 0xda, 0xe8, 0xfe, 0x53, 0xed,
+    0xff, 0xff, 0xe3, 0xb, 0x40, 0x0, 0x0, 0x0,
+    0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xd8, 0xd6,
+    0xd6, 0xd6, 0xd6, 0xd6, 0xbc, 0x84, 0x1a, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xd8,
+    0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xbc, 0x84, 0x1c,
+    0x0, 0x0, 0x80, 0x4f, 0xff, 0xff, 0xff, 0xb1,
+    0xfe, 0xce, 0xbe, 0xfa, 0x77, 0xff, 0xff, 0xff,
+    0x63, 0x8c, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+    0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0x6,
+    0xd, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+    0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x43,
+    0x4c, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+    0xff, 0xd, 0xe, 0xd6, 0x69, 0xff, 0xff, 0xff,
+    0xc7, 0xfe, 0x50, 0x0, 0x0, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6b, 0xa0,
+    0x0, 0x0, 0x0, 0xba, 0x7f, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x41, 0xa2,
+    0x0, 0x6, 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6,
+    0x0, 0x0, 0x0, 0x68, 0x31, 0xfb, 0xff, 0xff,
+    0xc1, 0x9, 0xda, 0xc0, 0xf8, 0x51, 0xf9, 0xff,
+    0xff, 0xb9, 0xf8, 0x8, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+    0x0, 0x1c, 0xfc, 0xcf, 0xff, 0xff, 0xcb, 0xe6,
+    0x0, 0x0, 0x0, 0xca, 0xa1, 0xff, 0xff, 0xf7,
+    0x21, 0x72, 0x0, 0x0, 0x60, 0x13, 0xfb, 0xff,
+    0xff, 0x91, 0x98, 0x0, 0x0, 0xac, 0x87, 0xff,
+    0xff, 0xff, 0xd, 0x6, 0x0, 0x26, 0xde, 0x67,
+    0xff, 0xff, 0xff, 0x73, 0x9c, 0x0, 0x0, 0x0,
+    0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0xce, 0xa3, 0xff, 0xff, 0xf7, 0x27,
+    0x80, 0x0, 0x0, 0x42, 0xfe, 0xe3, 0xff, 0xff,
+    0xa7, 0x9a, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+    0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0x6,
+    0xd, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+    0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x43,
+    0x4c, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+    0xff, 0xd, 0x7e, 0x1f, 0xeb, 0xff, 0xff, 0xef,
+    0x2d, 0x9a, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xeb, 0xff, 0xff, 0xbb, 0xf4,
+    0x6, 0x0, 0x10, 0xfc, 0xcb, 0xff, 0xff, 0xeb,
+    0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc9, 0xfe,
+    0x3a, 0x6, 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6,
+    0x0, 0x0, 0x0, 0xbe, 0x93, 0xff, 0xff, 0xfb,
+    0x37, 0x96, 0x0, 0x0, 0x26, 0xf6, 0xa9, 0xff,
+    0xff, 0xfd, 0x1f, 0x3a, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+    0x6, 0x5e, 0xfe, 0xd9, 0xff, 0xff, 0xb5, 0xd4,
+    0x0, 0x0, 0x0, 0xec, 0xcb, 0xff, 0xff, 0xcb,
+    0xf8, 0xa, 0x0, 0x0, 0x4, 0xf4, 0xa3, 0xbd,
+    0xbd, 0x83, 0x8a, 0x0, 0x0, 0xac, 0x87, 0xff,
+    0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x34, 0xfe,
+    0xe7, 0xff, 0xff, 0xb1, 0xd8, 0x0, 0x0, 0x0,
+    0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x4c, 0x46,
+    0x46, 0x46, 0x46, 0x30, 0x1a, 0x0, 0x0, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0xee, 0xcd, 0xff, 0xff, 0xcd, 0xfa,
+    0xc, 0x0, 0x0, 0x0, 0xc4, 0x49, 0x63, 0x63,
+    0x49, 0x82, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+    0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0x6,
+    0xd, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+    0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x43,
+    0x4c, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+    0xff, 0xd, 0xfc, 0xaf, 0xff, 0xff, 0xff, 0x6b,
+    0xde, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xcb, 0xe3, 0xff, 0xf7, 0x17,
+    0x44, 0x0, 0x5e, 0x2d, 0xfd, 0xff, 0xd3, 0xdb,
+    0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0x6d,
+    0xd0, 0xa, 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6,
+    0x0, 0x0, 0x0, 0xe8, 0xc5, 0xff, 0xff, 0xd3,
+    0xfc, 0x16, 0x0, 0x0, 0x0, 0x8e, 0x53, 0xff,
+    0xff, 0xff, 0x65, 0x72, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xfe,
+    0xfe, 0x17, 0x91, 0xff, 0xff, 0xff, 0x5b, 0x96,
+    0x0, 0x0, 0x0, 0xf6, 0xdb, 0xff, 0xff, 0xb3,
+    0xe2, 0x0, 0x0, 0x0, 0x0, 0x6c, 0xba, 0xde,
+    0xd8, 0xac, 0x4c, 0x0, 0x0, 0xac, 0x87, 0xff,
+    0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0xf2,
+    0xc3, 0xff, 0xff, 0xcf, 0xf0, 0x0, 0x0, 0x0,
+    0xac, 0x87, 0xff, 0xff, 0xff, 0x43, 0x3f, 0x3f,
+    0x3f, 0x3f, 0x3f, 0x3f, 0x9, 0xe, 0x0, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xf0,
+    0xf0, 0xf0, 0xf0, 0xf0, 0xda, 0xa0, 0xa, 0x0,
+    0x0, 0x0, 0xf6, 0xdb, 0xff, 0xff, 0xb3, 0xe4,
+    0x0, 0x0, 0x0, 0x0, 0x20, 0x4c, 0x70, 0x70,
+    0x4c, 0x20, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+    0xff, 0xff, 0xd, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
+    0xd, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+    0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x43,
+    0x4c, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+    0xff, 0x33, 0x69, 0xff, 0xff, 0xff, 0xb1, 0xfe,
+    0x38, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xd5, 0x99, 0xff, 0xff, 0x75,
+    0xac, 0x0, 0xc6, 0x89, 0xff, 0xff, 0x85, 0xe3,
+    0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xff, 0x5f, 0xff, 0xff, 0xe5,
+    0x13, 0x66, 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6,
+    0x0, 0x0, 0x0, 0xf4, 0xd9, 0xff, 0xff, 0xb7,
+    0xe6, 0x0, 0x0, 0x0, 0x0, 0x32, 0x27, 0xff,
+    0xff, 0xff, 0x7d, 0x9a, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xf1, 0xf1,
+    0xf3, 0xff, 0xff, 0xff, 0xf5, 0x81, 0xfc, 0x2c,
+    0x0, 0x0, 0x0, 0xf8, 0xdf, 0xff, 0xff, 0xad,
+    0xd8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+    0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0xe4,
+    0xb7, 0xff, 0xff, 0xdb, 0xf6, 0x0, 0x0, 0x0,
+    0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0x29, 0x1c, 0x0, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xcf, 0xcd,
+    0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x21, 0x18, 0x0,
+    0x0, 0x0, 0xf8, 0xdf, 0xff, 0xff, 0xad, 0xd8,
+    0x0, 0x68, 0xc0, 0xe4, 0xec, 0xec, 0xec, 0xe4,
+    0xbe, 0x62, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+    0xff, 0xff, 0xcf, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
+    0xcf, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+    0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x43,
+    0x4c, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xe5, 0x19, 0x82,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xdd, 0x3b, 0xff, 0xff, 0xc3,
+    0xf8, 0x20, 0xfe, 0xd5, 0xff, 0xfb, 0x25, 0xeb,
+    0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xff, 0xd, 0xbb, 0xff, 0xff,
+    0x99, 0xf0, 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6,
+    0x0, 0x0, 0x0, 0xf8, 0xdf, 0xff, 0xff, 0xad,
+    0xda, 0x0, 0x0, 0x0, 0x0, 0x10, 0xd, 0xff,
+    0xff, 0xff, 0x87, 0xa8, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xe3, 0x81, 0xfe, 0x6a,
+    0x0, 0x0, 0x0, 0xfa, 0xdf, 0xff, 0xff, 0xad,
+    0xd6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+    0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0xe0,
+    0xb7, 0xff, 0xff, 0xdd, 0xf8, 0x0, 0x0, 0x0,
+    0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0x29, 0x22, 0x0, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0x29, 0x22, 0x0,
+    0x0, 0x0, 0xfa, 0xdf, 0xff, 0xff, 0xad, 0xd6,
+    0x0, 0xc4, 0x9f, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
+    0x9b, 0xbe, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+    0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x43,
+    0x4c, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x27, 0x90,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xe5, 0xfe, 0xd3, 0xff, 0xfb,
+    0x21, 0x98, 0x39, 0xff, 0xff, 0xc3, 0xfe, 0xf3,
+    0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xff, 0xd, 0x31, 0xf7, 0xff,
+    0xf9, 0x37, 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6,
+    0x0, 0x0, 0x0, 0xfa, 0xdf, 0xff, 0xff, 0xad,
+    0xd6, 0x0, 0x0, 0x0, 0x0, 0x6, 0xd, 0xff,
+    0xff, 0xff, 0x87, 0xac, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0x93, 0x91,
+    0x91, 0x95, 0xbb, 0xff, 0xff, 0xff, 0xa1, 0xf6,
+    0x12, 0x0, 0x0, 0xf8, 0xdf, 0xff, 0xff, 0xad,
+    0xda, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+    0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0xe4,
+    0xb7, 0xff, 0xff, 0xdb, 0xf6, 0x0, 0x0, 0x0,
+    0xac, 0x87, 0xff, 0xff, 0xff, 0x9d, 0x9b, 0x9b,
+    0x9b, 0x9b, 0x9b, 0x9b, 0x19, 0x14, 0x0, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xef, 0xef,
+    0xef, 0xef, 0xef, 0xef, 0xef, 0x27, 0x1a, 0x0,
+    0x0, 0x0, 0xf8, 0xdf, 0xff, 0xff, 0xad, 0xda,
+    0x0, 0xda, 0xcd, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xc7, 0xe4, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+    0xff, 0xff, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef,
+    0xef, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+    0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x43,
+    0x4c, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+    0xff, 0xe9, 0xe9, 0xff, 0xff, 0xff, 0xbb, 0xfe,
+    0x3c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xef, 0xfe, 0x85, 0xff, 0xff,
+    0x7d, 0xf2, 0x93, 0xff, 0xff, 0x71, 0xfe, 0xfb,
+    0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xff, 0xd, 0xec, 0x93, 0xff,
+    0xff, 0xbf, 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6,
+    0x0, 0x0, 0x0, 0xf8, 0xdf, 0xff, 0xff, 0xad,
+    0xda, 0x0, 0x0, 0x0, 0x0, 0x12, 0xd, 0xff,
+    0xff, 0xff, 0x87, 0xa8, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xba,
+    0xba, 0xcc, 0xfe, 0x8b, 0xff, 0xff, 0xfb, 0x31,
+    0x46, 0x0, 0x0, 0xf6, 0xdb, 0xff, 0xff, 0xb5,
+    0xe4, 0x0, 0x0, 0x0, 0x0, 0x6c, 0xb8, 0xdc,
+    0xd6, 0xa8, 0x4c, 0x0, 0x0, 0xac, 0x87, 0xff,
+    0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0xf4,
+    0xc5, 0xff, 0xff, 0xcd, 0xee, 0x0, 0x0, 0x0,
+    0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xc8, 0xc6,
+    0xc6, 0xc6, 0xc6, 0xa4, 0x68, 0x6, 0x0, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xfe,
+    0xfe, 0xfe, 0xfe, 0xfe, 0xf8, 0xd4, 0xc, 0x0,
+    0x0, 0x0, 0xf6, 0xdb, 0xff, 0xff, 0xb5, 0xe6,
+    0x0, 0xc2, 0x9b, 0xc1, 0xc1, 0xef, 0xff, 0xff,
+    0xc7, 0xec, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+    0xff, 0xff, 0xd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+    0xd, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+    0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x43,
+    0x4c, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+    0xff, 0xd, 0xfe, 0xc1, 0xff, 0xff, 0xff, 0x71,
+    0xde, 0xe, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xf7, 0xfe, 0x25, 0xfb, 0xff,
+    0xcb, 0xfe, 0xdd, 0xff, 0xf3, 0x11, 0xf, 0xff,
+    0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xff, 0xd, 0x60, 0xf, 0xe3,
+    0xff, 0xff, 0x67, 0xff, 0xff, 0xff, 0x83, 0xa6,
+    0x0, 0x0, 0x0, 0xf4, 0xd9, 0xff, 0xff, 0xbb,
+    0xe8, 0x0, 0x0, 0x0, 0x0, 0x36, 0x2b, 0xff,
+    0xff, 0xff, 0x7b, 0x98, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+    0x0, 0x0, 0x70, 0x35, 0xff, 0xff, 0xff, 0x6b,
+    0x74, 0x0, 0x0, 0xec, 0xcb, 0xff, 0xff, 0xcd,
+    0xfa, 0xc, 0x0, 0x0, 0x6, 0xf6, 0xa3, 0xbb,
+    0xbb, 0x81, 0x8e, 0x0, 0x0, 0xac, 0x87, 0xff,
+    0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x3c, 0x5,
+    0xeb, 0xff, 0xff, 0xaf, 0xd6, 0x0, 0x0, 0x0,
+    0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0xec, 0xcb, 0xff, 0xff, 0xcf, 0xfa,
+    0x12, 0x62, 0xb8, 0xe0, 0xfe, 0xcb, 0xff, 0xff,
+    0xc7, 0xec, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+    0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0x6,
+    0xd, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+    0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+    0x0, 0x0, 0x34, 0xe8, 0xfc, 0xfe, 0xfc, 0xe6,
+    0x1a, 0x0, 0x80, 0x5f, 0xff, 0xff, 0xff, 0x43,
+    0x44, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+    0xff, 0xd, 0x98, 0x31, 0xf3, 0xff, 0xff, 0xef,
+    0x27, 0x8e, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xff, 0x5, 0xfa, 0xc1, 0xff,
+    0xfd, 0x5d, 0xff, 0xff, 0xb1, 0xf0, 0x21, 0xff,
+    0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xff, 0xd, 0xa, 0xca, 0x65,
+    0xff, 0xff, 0xe3, 0xff, 0xff, 0xff, 0x83, 0xa6,
+    0x0, 0x0, 0x0, 0xe8, 0xc3, 0xff, 0xff, 0xd5,
+    0xfe, 0x1a, 0x0, 0x0, 0x0, 0x92, 0x55, 0xff,
+    0xff, 0xff, 0x61, 0x6e, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+    0x0, 0x0, 0x8c, 0x3b, 0xff, 0xff, 0xff, 0x75,
+    0x7e, 0x0, 0x0, 0xca, 0xa1, 0xff, 0xff, 0xf7,
+    0x23, 0x72, 0x0, 0x0, 0x6a, 0x17, 0xfb, 0xff,
+    0xff, 0x95, 0x9c, 0x0, 0x0, 0xac, 0x87, 0xff,
+    0xff, 0xff, 0xd, 0x6, 0x0, 0x32, 0xe6, 0x71,
+    0xff, 0xff, 0xff, 0x6d, 0x98, 0x0, 0x0, 0x0,
+    0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0xc8, 0x9d, 0xff, 0xff, 0xf9, 0x31,
+    0x92, 0x0, 0x0, 0x0, 0xf0, 0xcb, 0xff, 0xff,
+    0xc7, 0xec, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+    0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0x6,
+    0xd, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+    0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+    0x0, 0x0, 0x4c, 0x67, 0xf7, 0xf7, 0xf7, 0x3f,
+    0x5e, 0x0, 0xb2, 0x75, 0xff, 0xff, 0xff, 0x31,
+    0x2c, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+    0xff, 0xd, 0x18, 0xe8, 0x83, 0xff, 0xff, 0xff,
+    0xbd, 0xfe, 0x3e, 0x0, 0x0, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xff, 0xd, 0xac, 0x71, 0xff,
+    0xff, 0xe9, 0xff, 0xff, 0x5b, 0xa0, 0x29, 0xff,
+    0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x34, 0xfe,
+    0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0x83, 0xa6,
+    0x0, 0x0, 0x0, 0xba, 0x8f, 0xff, 0xff, 0xfd,
+    0x3f, 0xa2, 0x4, 0x0, 0x2a, 0xf8, 0xad, 0xff,
+    0xff, 0xfb, 0x1b, 0x36, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xe0,
+    0xe2, 0xf0, 0x9, 0xad, 0xff, 0xff, 0xff, 0x4d,
+    0x5a, 0x0, 0x0, 0x7c, 0x49, 0xff, 0xff, 0xff,
+    0xa5, 0xfe, 0xd0, 0xd0, 0xfe, 0x9f, 0xff, 0xff,
+    0xff, 0x4b, 0x72, 0x0, 0x0, 0xac, 0x87, 0xff,
+    0xff, 0xff, 0xd, 0xe4, 0xf0, 0xfe, 0x63, 0xf1,
+    0xff, 0xff, 0xdf, 0x9, 0x3a, 0x0, 0x0, 0x0,
+    0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xe0, 0xe0,
+    0xe0, 0xe0, 0xe0, 0xe0, 0xc8, 0x92, 0x20, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x74, 0x41, 0xfd, 0xff, 0xff, 0xbf,
+    0x9, 0xdc, 0xb6, 0xd6, 0xfe, 0xd1, 0xff, 0xff,
+    0xc7, 0xec, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+    0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0x6,
+    0xd, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+    0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+    0x0, 0x0, 0x4c, 0x47, 0xff, 0xff, 0xff, 0x81,
+    0xf6, 0xd0, 0xfe, 0xb7, 0xff, 0xff, 0xf1, 0x9,
+    0x12, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+    0xff, 0xd, 0x6, 0x4c, 0x5, 0xcf, 0xff, 0xff,
+    0xff, 0x73, 0xe0, 0xe, 0x0, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xff, 0xd, 0xe0, 0xe0, 0xe0,
+    0xe0, 0xe0, 0xd2, 0xa6, 0x4a, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xff, 0xd, 0x44, 0x11, 0xf3,
+    0xff, 0xff, 0xff, 0xe7, 0x5, 0x4e, 0x29, 0xff,
+    0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x98,
+    0x39, 0xf9, 0xff, 0xff, 0xff, 0xff, 0x83, 0xa6,
+    0x0, 0x0, 0x0, 0x62, 0x2d, 0xf9, 0xff, 0xff,
+    0xc9, 0x11, 0xe6, 0xce, 0xfa, 0x57, 0xfb, 0xff,
+    0xff, 0xb5, 0xf6, 0x8, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xb7, 0xb7,
+    0xb7, 0xbf, 0xe3, 0xff, 0xff, 0xff, 0xdb, 0xfe,
+    0x22, 0x0, 0x0, 0x20, 0xfe, 0xb9, 0xff, 0xff,
+    0xff, 0xc7, 0x89, 0x93, 0xc9, 0xff, 0xff, 0xff,
+    0xc5, 0xfe, 0x22, 0x0, 0x0, 0xac, 0x87, 0xff,
+    0xff, 0xff, 0xb7, 0xb7, 0xbf, 0xe1, 0xff, 0xff,
+    0xff, 0xf7, 0x49, 0xc0, 0x0, 0x0, 0x0, 0x0,
+    0xac, 0x87, 0xff, 0xff, 0xff, 0xb7, 0xb7, 0xb7,
+    0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0x49, 0x50, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x1c, 0xfa, 0xa7, 0xff, 0xff, 0xff,
+    0xdb, 0x93, 0x83, 0x95, 0xd1, 0xff, 0xff, 0xff,
+    0xc3, 0xd4, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+    0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0x6,
+    0xd, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+    0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+    0x0, 0x0, 0x1e, 0xfe, 0xe3, 0xff, 0xff, 0xf7,
+    0xa5, 0x89, 0xbb, 0xff, 0xff, 0xff, 0xa7, 0xea,
+    0x0, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+    0xff, 0xd, 0x6, 0x0, 0xaa, 0x3f, 0xf9, 0xff,
+    0xff, 0xef, 0x29, 0x90, 0x0, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xff, 0xb7, 0xb7, 0xb7, 0xb7,
+    0xb7, 0xb7, 0xb7, 0x7f, 0xa2, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xff, 0xd, 0xa, 0xee, 0xb1,
+    0xff, 0xff, 0xff, 0x9f, 0xde, 0x2a, 0x29, 0xff,
+    0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x16,
+    0xf2, 0x9b, 0xff, 0xff, 0xff, 0xff, 0x83, 0xa6,
+    0x0, 0x0, 0x0, 0x10, 0xee, 0x8f, 0xff, 0xff,
+    0xff, 0xe3, 0x9f, 0x91, 0xb7, 0xfb, 0xff, 0xff,
+    0xef, 0x31, 0x88, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0x45, 0xba,
+    0x0, 0x0, 0x0, 0x0, 0x88, 0x1d, 0xcf, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf,
+    0x27, 0x98, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xe5, 0x4d, 0xe8, 0x20, 0x0, 0x0, 0x0, 0x0,
+    0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0x67, 0x74, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x70, 0xb, 0xb7, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf,
+    0x37, 0x98, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+    0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0x6,
+    0xd, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+    0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+    0x0, 0x0, 0x0, 0xc8, 0x5d, 0xfb, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xd9, 0x1d, 0x74,
+    0x0, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+    0xff, 0xd, 0x6, 0x0, 0x1a, 0xf2, 0x93, 0xff,
+    0xff, 0xff, 0xbf, 0xfe, 0x40, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xb3, 0xd0, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x90, 0x59,
+    0xff, 0xff, 0xff, 0x41, 0x76, 0x2a, 0x29, 0xff,
+    0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+    0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x0,
+    0x66, 0x15, 0xe9, 0xff, 0xff, 0xff, 0x83, 0xa6,
+    0x0, 0x0, 0x0, 0x0, 0x58, 0xfe, 0xa7, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef,
+    0x51, 0xda, 0x12, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x86, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xfd, 0xf3, 0xd3, 0x95, 0x21, 0xd4, 0x1e,
+    0x0, 0x0, 0x0, 0x0, 0x8, 0xa4, 0x11, 0x91,
+    0xe9, 0xff, 0xff, 0xff, 0xff, 0xeb, 0x9b, 0x17,
+    0xba, 0xe, 0x0, 0x0, 0x0, 0x86, 0x87, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xf9, 0xeb, 0xc3, 0x7f,
+    0xf, 0xca, 0x24, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x86, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0x67, 0x60, 0x0,
+    0x0, 0x86, 0x87, 0xff, 0xff, 0xff, 0xd, 0x4,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x2, 0x82, 0xfe, 0x73, 0xd7,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xd5, 0x89, 0xd,
+    0xbc, 0x16, 0x0, 0x0, 0x0, 0x86, 0x87, 0xff,
+    0xff, 0xff, 0xd, 0x4, 0x0, 0x0, 0x0, 0x4,
+    0xd, 0xff, 0xff, 0xff, 0x83, 0x82, 0x0, 0x0,
+    0x0, 0x42, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x52,
+    0x0, 0x0, 0x0, 0x2e, 0xf0, 0x4d, 0xc9, 0xfd,
+    0xff, 0xff, 0xff, 0xf3, 0xa5, 0x19, 0xb2, 0x8,
+    0x0, 0x0, 0x0, 0x0, 0x86, 0x87, 0xff, 0xff,
+    0xff, 0xd, 0x4, 0x0, 0x0, 0x5e, 0xd, 0xdb,
+    0xff, 0xff, 0xff, 0x75, 0x40, 0x0, 0x0, 0x86,
+    0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xb3, 0xbc, 0x0, 0x0, 0x86,
+    0x87, 0xff, 0xff, 0xff, 0xd, 0x4, 0x2c, 0xfe,
+    0xe7, 0xff, 0xd9, 0xfe, 0x1c, 0x1c, 0x29, 0xff,
+    0xff, 0xff, 0x77, 0x74, 0x0, 0x0, 0x0, 0x86,
+    0x87, 0xff, 0xff, 0xff, 0xd, 0x4, 0x0, 0x0,
+    0x6, 0xd4, 0x6f, 0xff, 0xff, 0xff, 0x83, 0x82,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x6e, 0xfe, 0x69,
+    0xd3, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xab, 0x2d,
+    0xd8, 0x26, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x50, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+    0xfe, 0xfe, 0xfe, 0xf6, 0xc8, 0x64, 0xa, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x5a, 0xda,
+    0xfe, 0x39, 0x55, 0x55, 0x35, 0xfe, 0xe0, 0x68,
+    0x6, 0x0, 0x0, 0x0, 0x0, 0x50, 0xfe, 0xfe,
+    0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xee, 0xb0,
+    0x4a, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x50, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+    0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x36, 0x0,
+    0x0, 0x50, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x2,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0xbe, 0xfe,
+    0x25, 0x4f, 0x57, 0x43, 0x21, 0xfc, 0xc4, 0x54,
+    0x2, 0x0, 0x0, 0x0, 0x0, 0x50, 0xfe, 0xfe,
+    0xfe, 0xfe, 0xfe, 0x2, 0x0, 0x0, 0x0, 0x2,
+    0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x4c, 0x0, 0x0,
+    0x0, 0x24, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x2c,
+    0x0, 0x0, 0x0, 0x0, 0x24, 0xa6, 0xfa, 0x1b,
+    0x4d, 0x59, 0x47, 0xb, 0xea, 0x70, 0x6, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x50, 0xfe, 0xfe, 0xfe,
+    0xfe, 0xfe, 0x2, 0x0, 0x0, 0x2, 0xb0, 0xfe,
+    0xfe, 0xfe, 0xfe, 0xfe, 0x40, 0x0, 0x0, 0x50,
+    0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+    0xfe, 0xfe, 0xfe, 0xfe, 0x7e, 0x0, 0x0, 0x50,
+    0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x2, 0x0, 0xc2,
+    0xfe, 0xfe, 0xfe, 0xac, 0x0, 0xe, 0xfe, 0xfe,
+    0xfe, 0xfe, 0xfe, 0x42, 0x0, 0x0, 0x0, 0x50,
+    0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x2, 0x0, 0x0,
+    0x0, 0x3c, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x4c,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x36, 0xb8,
+    0xfc, 0x23, 0x4d, 0x57, 0x41, 0x9, 0xea, 0x7e,
+    0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x16, 0x3c, 0x5a, 0x58, 0x38, 0x14, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc,
+    0x2e, 0x50, 0x5c, 0x48, 0x24, 0xa, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x2a,
+    0x4e, 0x5e, 0x46, 0x20, 0x2, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0xc, 0x2e, 0x50, 0x5a, 0x40, 0x1a, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x62, 0xd0, 0xf0, 0xf8, 0xf8, 0xee, 0xca,
+    0x4c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x90,
+    0xde, 0xf4, 0xf8, 0xf8, 0xea, 0xbc, 0x24, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xb0, 0x9b, 0xdd, 0xdd, 0xdd, 0xdd, 0x83,
+    0x90, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe2,
+    0xc3, 0xdd, 0xdd, 0xdd, 0xdd, 0x4d, 0x4a, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x4, 0xe, 0x1a, 0x20, 0x20, 0x20, 0x20,
+    0x1e, 0x14, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x14, 0x3e, 0x66, 0x72, 0x56, 0x28, 0x4,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x4, 0xe, 0x1a, 0x20, 0x20, 0x20, 0x20, 0x1e,
+    0x14, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa,
+    0x32, 0x5e, 0x78, 0x6c, 0x44, 0x18, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x4, 0x10, 0x1a, 0x20,
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x1e, 0x12, 0x8, 0x0, 0x0, 0x6,
+    0x12, 0x1c, 0x1e, 0x14, 0x8, 0x0, 0x0, 0x0,
+    0x0, 0x4, 0xe, 0x1a, 0x20, 0x16, 0xc, 0x0,
+    0x0, 0x8, 0x14, 0x1e, 0x1e, 0x14, 0x8, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x4, 0xe, 0x1a, 0x20,
+    0x18, 0xc, 0x2, 0x2, 0xe, 0x18, 0x20, 0x16,
+    0xc, 0x0, 0x0, 0x0, 0x8, 0x14, 0x1a, 0x12,
+    0x8, 0x0, 0x0, 0x0, 0xc, 0x16, 0x20, 0x18,
+    0xc, 0x2, 0x0, 0x6, 0x12, 0x1c, 0x20, 0x1a,
+    0xe, 0x4, 0x0, 0x0, 0x0, 0x2, 0xe, 0x18,
+    0x20, 0x1c, 0x12, 0x6, 0x0, 0xa, 0x14, 0x20,
+    0x1e, 0x14, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x6, 0x12, 0x1c, 0x20, 0x16, 0xc, 0x0, 0x0,
+    0xc, 0x16, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x20, 0x18, 0xc, 0x2, 0x0,
+    0x0, 0xd6, 0xb3, 0xff, 0xff, 0xff, 0xff, 0x99,
+    0xae, 0x0, 0xa, 0x16, 0x20, 0x1a, 0xe, 0x4,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf0,
+    0xe3, 0xff, 0xff, 0xff, 0xff, 0x5b, 0x6a, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0xa, 0x16, 0x1a,
+    0x10, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x52, 0x11, 0x23, 0x23, 0x23, 0x23, 0x23,
+    0x23, 0x1d, 0xfe, 0xfc, 0xd2, 0x6a, 0xc, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40,
+    0xc8, 0xfe, 0x35, 0x5d, 0x67, 0x51, 0x11, 0xf2,
+    0x8a, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x52, 0x11, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
+    0x1d, 0xfe, 0xfc, 0xd4, 0x6a, 0xa, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x28, 0xa8, 0xfc,
+    0x21, 0x57, 0x69, 0x61, 0x3b, 0xfe, 0xd4, 0x4e,
+    0x0, 0x0, 0x0, 0x0, 0x60, 0x13, 0x23, 0x23,
+    0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
+    0x23, 0x23, 0x23, 0x1b, 0x98, 0x0, 0x0, 0x7c,
+    0x17, 0x23, 0x23, 0x1f, 0xbe, 0x0, 0x0, 0x0,
+    0x0, 0x44, 0xf, 0x23, 0x23, 0x23, 0x5, 0x10,
+    0x0, 0x92, 0x1f, 0x23, 0x23, 0x1d, 0xd2, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x6c, 0xf, 0x23, 0x23,
+    0x23, 0xb, 0xe, 0x1c, 0xd, 0x23, 0x23, 0x23,
+    0xfe, 0x1c, 0x0, 0x0, 0xd6, 0x1d, 0x23, 0x1b,
+    0xbe, 0x0, 0x0, 0x26, 0x5, 0x23, 0x23, 0x23,
+    0xb, 0x10, 0x0, 0x36, 0x17, 0x23, 0x23, 0x23,
+    0x11, 0x8c, 0x0, 0x0, 0x0, 0x76, 0xd, 0x23,
+    0x23, 0x23, 0x19, 0x4c, 0x0, 0x86, 0x21, 0x23,
+    0x23, 0x1f, 0xf0, 0x14, 0x0, 0x0, 0x0, 0x4,
+    0xcc, 0x19, 0x23, 0x23, 0x23, 0x7, 0x0, 0xe,
+    0x5, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
+    0x23, 0x23, 0x23, 0x23, 0x23, 0xb, 0x24, 0x0,
+    0x0, 0xdc, 0xb3, 0xff, 0xff, 0xf7, 0xcb, 0x79,
+    0x8a, 0x0, 0xa6, 0x21, 0x23, 0x23, 0x11, 0x82,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdc,
+    0xb3, 0xd5, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x28, 0xfe, 0x21, 0x23,
+    0x15, 0x9e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x88, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xfd, 0xdd, 0x9b, 0x25, 0xd4, 0x20,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7a, 0xfe,
+    0x75, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xb5,
+    0x35, 0xde, 0x2a, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x88, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xfd, 0xdd, 0x9b, 0x21, 0xce, 0x16, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x4a, 0xfa, 0x55, 0xcb,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xe5, 0x85, 0x5,
+    0x8c, 0x2, 0x0, 0x0, 0x9a, 0x95, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xc7, 0xd4, 0x0, 0x0, 0xba,
+    0xb1, 0xff, 0xff, 0xe3, 0xee, 0x0, 0x0, 0x0,
+    0x0, 0x76, 0x77, 0xff, 0xff, 0xff, 0x2f, 0x20,
+    0x0, 0xae, 0xc3, 0xff, 0xff, 0xef, 0x5, 0x26,
+    0x0, 0x0, 0x0, 0x0, 0xd4, 0xa1, 0xff, 0xff,
+    0xfd, 0x29, 0xe, 0x1c, 0x41, 0xff, 0xff, 0xff,
+    0x41, 0x54, 0x0, 0x20, 0x5, 0xf1, 0xff, 0xe3,
+    0xfe, 0x12, 0x0, 0x66, 0x51, 0xff, 0xff, 0xff,
+    0x2b, 0x10, 0x0, 0x36, 0x63, 0xff, 0xff, 0xff,
+    0xbf, 0xfc, 0x24, 0x0, 0x18, 0xf8, 0xad, 0xff,
+    0xff, 0xff, 0x7b, 0x4c, 0x0, 0x90, 0xb7, 0xff,
+    0xff, 0xfb, 0x35, 0x7e, 0x0, 0x0, 0x0, 0x4c,
+    0xf, 0xeb, 0xff, 0xff, 0xdb, 0x7, 0x0, 0x1c,
+    0x29, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0x4d, 0x3c, 0x0,
+    0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfe, 0xb4,
+    0x44, 0x0, 0xbe, 0xd1, 0xff, 0xff, 0xb7, 0xf2,
+    0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7c,
+    0xdc, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x96, 0x55, 0xff, 0xff,
+    0xcd, 0xfc, 0x1a, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xeb, 0x49, 0xce,
+    0x6, 0x0, 0x0, 0x0, 0x0, 0x60, 0x5, 0xb1,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xf1, 0x57, 0xde, 0x14, 0x0, 0x0, 0x0, 0x0,
+    0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xe9, 0x37, 0x9e, 0x0,
+    0x0, 0x0, 0x0, 0x1a, 0xf4, 0x7f, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf,
+    0xd, 0x5e, 0x0, 0x0, 0xac, 0x95, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xc7, 0xe0, 0x0, 0x0, 0xda,
+    0xb1, 0xff, 0xff, 0xe3, 0xfa, 0x0, 0x0, 0x0,
+    0x0, 0x98, 0x77, 0xff, 0xff, 0xff, 0x2f, 0x2e,
+    0x0, 0xae, 0x77, 0xff, 0xff, 0xff, 0x53, 0x7c,
+    0x0, 0x0, 0x0, 0x16, 0xfe, 0xdf, 0xff, 0xff,
+    0xc9, 0xfc, 0xe, 0x1a, 0xfe, 0xf3, 0xff, 0xff,
+    0x75, 0x9a, 0x0, 0x6a, 0x49, 0xff, 0xff, 0xff,
+    0x31, 0x52, 0x0, 0xac, 0x81, 0xff, 0xff, 0xe7,
+    0xfe, 0xe, 0x0, 0x32, 0xfe, 0xbf, 0xff, 0xff,
+    0xff, 0x4f, 0xa4, 0x0, 0x8e, 0x3b, 0xfb, 0xff,
+    0xff, 0xd3, 0xfe, 0x46, 0x0, 0x8c, 0x39, 0xfb,
+    0xff, 0xff, 0xab, 0xf2, 0xe, 0x0, 0x0, 0xd0,
+    0x81, 0xff, 0xff, 0xff, 0x67, 0xc0, 0x0, 0x22,
+    0x29, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0x41, 0x3a, 0x0,
+    0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+    0x0, 0x0, 0xbe, 0x7d, 0xff, 0xff, 0xf7, 0x1f,
+    0x52, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+    0x0, 0x0, 0x0, 0xc, 0xf6, 0xb7, 0xff, 0xff,
+    0xff, 0x41, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xad, 0xad,
+    0xad, 0xb3, 0xd5, 0xff, 0xff, 0xff, 0xe9, 0x17,
+    0x50, 0x0, 0x0, 0x0, 0x12, 0xf4, 0x97, 0xff,
+    0xff, 0xff, 0xd9, 0x91, 0x83, 0xad, 0xf9, 0xff,
+    0xff, 0xf1, 0x35, 0x8e, 0x0, 0x0, 0x0, 0x0,
+    0xac, 0x87, 0xff, 0xff, 0xff, 0xad, 0xad, 0xad,
+    0xb9, 0xe5, 0xff, 0xff, 0xff, 0xc7, 0xfc, 0xc,
+    0x0, 0x0, 0x0, 0x70, 0x3f, 0xfb, 0xff, 0xff,
+    0xef, 0x99, 0x75, 0x87, 0xd5, 0xff, 0xff, 0xff,
+    0x95, 0xde, 0x0, 0x0, 0x7e, 0x65, 0xad, 0xad,
+    0xad, 0xad, 0xb7, 0xff, 0xff, 0xff, 0xc7, 0xad,
+    0xad, 0xad, 0xad, 0x87, 0xb6, 0x0, 0x0, 0xda,
+    0xb1, 0xff, 0xff, 0xe3, 0xfa, 0x0, 0x0, 0x0,
+    0x0, 0x98, 0x77, 0xff, 0xff, 0xff, 0x2f, 0x2e,
+    0x0, 0x48, 0x1b, 0xf9, 0xff, 0xff, 0x9b, 0xd4,
+    0x0, 0x0, 0x0, 0x62, 0x39, 0xff, 0xff, 0xff,
+    0x7f, 0xb8, 0x0, 0x0, 0xf6, 0xc9, 0xff, 0xff,
+    0xa1, 0xd0, 0x0, 0xbe, 0x8b, 0xff, 0xff, 0xff,
+    0x79, 0xa6, 0x0, 0xdc, 0xad, 0xff, 0xff, 0xbd,
+    0xec, 0x0, 0x0, 0x0, 0x92, 0x33, 0xf7, 0xff,
+    0xff, 0xc9, 0xfe, 0x46, 0xfc, 0xb9, 0xff, 0xff,
+    0xfd, 0x4b, 0xb0, 0x0, 0x0, 0x16, 0xf6, 0xab,
+    0xff, 0xff, 0xf9, 0x29, 0x70, 0x0, 0x40, 0x9,
+    0xe3, 0xff, 0xff, 0xd1, 0xfe, 0x36, 0x0, 0x16,
+    0x1b, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
+    0xb7, 0xff, 0xff, 0xff, 0xb9, 0xfe, 0x1a, 0x0,
+    0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+    0x0, 0x0, 0x4c, 0x19, 0xf5, 0xff, 0xff, 0x83,
+    0xc4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+    0x0, 0x0, 0x0, 0x60, 0x27, 0xf9, 0xff, 0xff,
+    0xff, 0xa7, 0xec, 0x6, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xd8,
+    0xd8, 0xe6, 0xfe, 0x87, 0xff, 0xff, 0xff, 0x81,
+    0xa8, 0x0, 0x0, 0x0, 0x68, 0x31, 0xfb, 0xff,
+    0xff, 0xc1, 0x9, 0xda, 0xc0, 0xf8, 0x51, 0xf9,
+    0xff, 0xff, 0xb9, 0xf8, 0x8, 0x0, 0x0, 0x0,
+    0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xd8, 0xda,
+    0xee, 0xd, 0xc3, 0xff, 0xff, 0xff, 0x25, 0x2e,
+    0x0, 0x0, 0x0, 0xb2, 0x97, 0xff, 0xff, 0xfb,
+    0x3d, 0xea, 0xae, 0xd0, 0x5, 0xcf, 0xff, 0xff,
+    0xeb, 0x5, 0xc, 0x0, 0x34, 0x92, 0xc4, 0xd6,
+    0xd6, 0xe0, 0x35, 0xff, 0xff, 0xff, 0x6f, 0xec,
+    0xd6, 0xd6, 0xcc, 0xa0, 0x50, 0x0, 0x0, 0xda,
+    0xb1, 0xff, 0xff, 0xe3, 0xfa, 0x0, 0x0, 0x0,
+    0x0, 0x98, 0x77, 0xff, 0xff, 0xff, 0x2f, 0x2e,
+    0x0, 0x8, 0xf6, 0xbf, 0xff, 0xff, 0xd9, 0xfe,
+    0x10, 0x0, 0x0, 0xbe, 0x89, 0xff, 0xff, 0xfb,
+    0x23, 0x50, 0x0, 0x0, 0xce, 0x9d, 0xff, 0xff,
+    0xc7, 0xf2, 0x0, 0xf2, 0xc3, 0xff, 0xff, 0xff,
+    0xb3, 0xe8, 0x0, 0xf8, 0xd3, 0xff, 0xff, 0x8d,
+    0xbc, 0x0, 0x0, 0x0, 0x14, 0xee, 0x93, 0xff,
+    0xff, 0xff, 0x59, 0xe2, 0x47, 0xff, 0xff, 0xff,
+    0xab, 0xfa, 0x22, 0x0, 0x0, 0x0, 0x7c, 0x2d,
+    0xf7, 0xff, 0xff, 0x9f, 0xec, 0x8, 0xc4, 0x75,
+    0xff, 0xff, 0xff, 0x59, 0xb2, 0x0, 0x0, 0x8,
+    0x7a, 0xb6, 0xd6, 0xd6, 0xd6, 0xd6, 0xde, 0xfe,
+    0xad, 0xff, 0xff, 0xf1, 0x29, 0x8a, 0x0, 0x0,
+    0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+    0x0, 0x0, 0x6, 0xf0, 0xb1, 0xff, 0xff, 0xd5,
+    0xfe, 0x1c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+    0x0, 0x0, 0x0, 0xd8, 0x91, 0xff, 0xff, 0xd5,
+    0xff, 0xf3, 0x17, 0x4e, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+    0x0, 0x0, 0x50, 0xfe, 0xe5, 0xff, 0xff, 0xb5,
+    0xd6, 0x0, 0x0, 0x0, 0xbe, 0x93, 0xff, 0xff,
+    0xfb, 0x37, 0x96, 0x0, 0x0, 0x26, 0xf6, 0xa9,
+    0xff, 0xff, 0xfd, 0x1f, 0x3a, 0x0, 0x0, 0x0,
+    0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0,
+    0x2, 0xb6, 0x63, 0xff, 0xff, 0xff, 0x4f, 0x44,
+    0x0, 0x0, 0x0, 0xc8, 0xad, 0xff, 0xff, 0xe7,
+    0xfe, 0x46, 0x0, 0x0, 0xb8, 0x7b, 0xf5, 0xf5,
+    0xf5, 0x27, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x36, 0x35, 0xff, 0xff, 0xff, 0x6f, 0x8c,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xda,
+    0xb1, 0xff, 0xff, 0xe3, 0xfa, 0x0, 0x0, 0x0,
+    0x0, 0x98, 0x77, 0xff, 0xff, 0xff, 0x2f, 0x2e,
+    0x0, 0x0, 0xa8, 0x71, 0xff, 0xff, 0xff, 0x2f,
+    0x56, 0x0, 0x6, 0xf8, 0xc9, 0xff, 0xff, 0xc5,
+    0xfa, 0xc, 0x0, 0x0, 0x8c, 0x69, 0xff, 0xff,
+    0xeb, 0xfe, 0x30, 0x5, 0xf3, 0xff, 0xff, 0xff,
+    0xe7, 0xfe, 0x2c, 0x5, 0xf5, 0xff, 0xff, 0x57,
+    0x76, 0x0, 0x0, 0x0, 0x0, 0x5e, 0xf, 0xe3,
+    0xff, 0xff, 0xd1, 0xfe, 0xc3, 0xff, 0xff, 0xef,
+    0x21, 0x7a, 0x0, 0x0, 0x0, 0x0, 0x10, 0xf0,
+    0x9d, 0xff, 0xff, 0xf3, 0x1f, 0x82, 0xfe, 0xdb,
+    0xff, 0xff, 0xc5, 0xfe, 0x2a, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0xc4, 0x57,
+    0xff, 0xff, 0xff, 0x7b, 0xe2, 0xe, 0x0, 0x0,
+    0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+    0x0, 0x0, 0x0, 0x90, 0x55, 0xff, 0xff, 0xff,
+    0x43, 0x7e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+    0x0, 0x0, 0x34, 0x5, 0xe5, 0xff, 0xd5, 0x65,
+    0xff, 0xff, 0x81, 0xc6, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+    0x0, 0x0, 0x4, 0xfa, 0xcf, 0xff, 0xff, 0xc1,
+    0xe0, 0x0, 0x0, 0x0, 0xe8, 0xc5, 0xff, 0xff,
+    0xd3, 0xfc, 0x16, 0x0, 0x0, 0x0, 0x8e, 0x53,
+    0xff, 0xff, 0xff, 0x65, 0x72, 0x0, 0x0, 0x0,
+    0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0,
+    0x0, 0xa2, 0x5b, 0xff, 0xff, 0xff, 0x41, 0x3e,
+    0x0, 0x0, 0x0, 0xb2, 0x97, 0xff, 0xff, 0xff,
+    0x63, 0xfc, 0x9a, 0x2e, 0x44, 0xe6, 0xfc, 0xfe,
+    0xfa, 0xde, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x36, 0x35, 0xff, 0xff, 0xff, 0x6f, 0x8c,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xda,
+    0xb1, 0xff, 0xff, 0xe3, 0xfa, 0x0, 0x0, 0x0,
+    0x0, 0x98, 0x77, 0xff, 0xff, 0xff, 0x2f, 0x2e,
+    0x0, 0x0, 0x42, 0x15, 0xf7, 0xff, 0xff, 0x81,
+    0xb4, 0x0, 0x40, 0x19, 0xf9, 0xff, 0xff, 0x7b,
+    0xb2, 0x0, 0x0, 0x0, 0x42, 0x29, 0xff, 0xff,
+    0xff, 0x29, 0x90, 0x4d, 0xff, 0xff, 0xfb, 0xff,
+    0xff, 0x37, 0x8c, 0x3d, 0xff, 0xff, 0xfb, 0x15,
+    0x2e, 0x0, 0x0, 0x0, 0x0, 0x4, 0xca, 0x63,
+    0xff, 0xff, 0xff, 0x9b, 0xff, 0xff, 0xff, 0x7d,
+    0xe0, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6c,
+    0x21, 0xf1, 0xff, 0xff, 0x93, 0xf6, 0x67, 0xff,
+    0xff, 0xff, 0x49, 0xa0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x66, 0x11, 0xe1,
+    0xff, 0xff, 0xc9, 0xfe, 0x44, 0x0, 0x0, 0x0,
+    0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+    0x0, 0x0, 0x0, 0x28, 0xfe, 0xdf, 0xff, 0xff,
+    0xa5, 0xe8, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+    0x0, 0x0, 0xa6, 0x65, 0xff, 0xff, 0x7f, 0x5,
+    0xe7, 0xff, 0xd9, 0xfe, 0x26, 0x0, 0x0, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+    0x0, 0x6, 0x82, 0x11, 0xef, 0xff, 0xff, 0xad,
+    0xd0, 0x0, 0x0, 0x0, 0xf4, 0xd9, 0xff, 0xff,
+    0xb7, 0xe6, 0x0, 0x0, 0x0, 0x0, 0x32, 0x27,
+    0xff, 0xff, 0xff, 0x7d, 0x9a, 0x0, 0x0, 0x0,
+    0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xba, 0xbe,
+    0xda, 0xfe, 0xab, 0xff, 0xff, 0xe7, 0xd, 0x1e,
+    0x0, 0x0, 0x0, 0x6e, 0x3d, 0xfb, 0xff, 0xff,
+    0xfd, 0xbb, 0x5d, 0x5, 0xe8, 0x88, 0x22, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x36, 0x35, 0xff, 0xff, 0xff, 0x6f, 0x8c,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xda,
+    0xb1, 0xff, 0xff, 0xe3, 0xfa, 0x0, 0x0, 0x0,
+    0x0, 0x98, 0x77, 0xff, 0xff, 0xff, 0x2f, 0x2e,
+    0x0, 0x0, 0x6, 0xf4, 0xbb, 0xff, 0xff, 0xc3,
+    0xf6, 0x4, 0x9c, 0x6d, 0xff, 0xff, 0xf9, 0x1f,
+    0x4a, 0x0, 0x0, 0x0, 0xe, 0xfe, 0xe5, 0xff,
+    0xff, 0x63, 0xde, 0x8f, 0xff, 0xff, 0xad, 0xff,
+    0xff, 0x7f, 0xdc, 0x71, 0xff, 0xff, 0xd9, 0xfc,
+    0x6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x32, 0xfe,
+    0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x5,
+    0x48, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa,
+    0xe6, 0x91, 0xff, 0xff, 0xef, 0x15, 0xd1, 0xff,
+    0xff, 0xbb, 0xfc, 0x20, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x1e, 0xf6, 0x9b, 0xff,
+    0xff, 0xf7, 0x39, 0xa0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0xd2, 0x8f, 0xff, 0xff,
+    0xef, 0xd, 0x3e, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+    0x0, 0x14, 0xfc, 0xc3, 0xff, 0xf5, 0x1b, 0xe6,
+    0x97, 0xff, 0xff, 0x53, 0x94, 0x0, 0x0, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xfa,
+    0xfa, 0xfe, 0x19, 0xb3, 0xff, 0xff, 0xff, 0x6d,
+    0x96, 0x0, 0x0, 0x0, 0xf8, 0xdf, 0xff, 0xff,
+    0xad, 0xda, 0x0, 0x0, 0x0, 0x0, 0x10, 0xd,
+    0xff, 0xff, 0xff, 0x87, 0xa8, 0x0, 0x0, 0x0,
+    0xac, 0x87, 0xff, 0xff, 0xff, 0x93, 0x91, 0x91,
+    0x9f, 0xcf, 0xff, 0xff, 0xf7, 0x5f, 0xce, 0x2,
+    0x0, 0x0, 0x0, 0x1a, 0xf4, 0x7b, 0xfb, 0xff,
+    0xff, 0xff, 0xff, 0xed, 0xad, 0x4b, 0xfe, 0x96,
+    0x12, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x36, 0x35, 0xff, 0xff, 0xff, 0x6f, 0x8c,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xda,
+    0xb1, 0xff, 0xff, 0xe3, 0xfa, 0x0, 0x0, 0x0,
+    0x0, 0x98, 0x77, 0xff, 0xff, 0xff, 0x2f, 0x2e,
+    0x0, 0x0, 0x0, 0xa2, 0x6d, 0xff, 0xff, 0xf7,
+    0x11, 0x36, 0xea, 0xb1, 0xff, 0xff, 0xc1, 0xf8,
+    0x8, 0x0, 0x0, 0x0, 0x0, 0xec, 0xbb, 0xff,
+    0xff, 0x91, 0xfc, 0xc5, 0xff, 0xf9, 0x31, 0xff,
+    0xff, 0xb7, 0xfa, 0x9d, 0xff, 0xff, 0xad, 0xde,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x94,
+    0x35, 0xf7, 0xff, 0xff, 0xff, 0xfd, 0x4d, 0xb2,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x5c, 0x15, 0xeb, 0xff, 0xff, 0xb9, 0xff, 0xff,
+    0xfb, 0x3d, 0x90, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0xb2, 0x47, 0xfb, 0xff,
+    0xff, 0x8d, 0xee, 0x16, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x60, 0x2b, 0xfb, 0xff,
+    0xff, 0x6f, 0xac, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+    0x0, 0x32, 0x35, 0xfd, 0xff, 0xaf, 0xf0, 0x6e,
+    0x31, 0xfd, 0xff, 0xb7, 0xb6, 0x0, 0x0, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xdf, 0xdf,
+    0xdf, 0xe5, 0xfb, 0xff, 0xff, 0xff, 0xd1, 0x5,
+    0x3a, 0x0, 0x0, 0x0, 0xfa, 0xdf, 0xff, 0xff,
+    0xad, 0xd6, 0x0, 0x0, 0x0, 0x0, 0x6, 0xd,
+    0xff, 0xff, 0xff, 0x87, 0xac, 0x0, 0x0, 0x0,
+    0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xd1, 0x3d, 0xf4, 0x32, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x46, 0xf4, 0x49, 0xc7,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc3, 0x31,
+    0xd4, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x36, 0x35, 0xff, 0xff, 0xff, 0x6f, 0x8c,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xda,
+    0xb1, 0xff, 0xff, 0xe3, 0xfa, 0x0, 0x0, 0x0,
+    0x0, 0x98, 0x77, 0xff, 0xff, 0xff, 0x2f, 0x2e,
+    0x0, 0x0, 0x0, 0x3c, 0x11, 0xf3, 0xff, 0xff,
+    0x63, 0xa0, 0xfe, 0xed, 0xff, 0xff, 0x75, 0xac,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0xba, 0x8b, 0xff,
+    0xff, 0xb9, 0x9, 0xf3, 0xff, 0xcb, 0xfe, 0xdb,
+    0xff, 0xeb, 0xfe, 0xc5, 0xff, 0xff, 0x7b, 0xa6,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x36,
+    0xfe, 0xc3, 0xff, 0xff, 0xff, 0xd9, 0xfe, 0x58,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x6, 0xda, 0x83, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xad, 0xf8, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x54, 0x9, 0xd5, 0xff, 0xff,
+    0xd9, 0x9, 0x56, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0xe, 0xfa, 0xc1, 0xff,
+    0xff, 0xc5, 0xfa, 0x10, 0x0, 0x0, 0x0, 0x0,
+    0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+    0x0, 0x32, 0x4b, 0x91, 0x91, 0x3d, 0x86, 0x12,
+    0xf6, 0x7b, 0x91, 0x89, 0xa8, 0x0, 0x0, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xcb, 0x25, 0xa6,
+    0x0, 0x0, 0x0, 0x0, 0xf8, 0xdf, 0xff, 0xff,
+    0xad, 0xda, 0x0, 0x0, 0x0, 0x0, 0x12, 0xd,
+    0xff, 0xff, 0xff, 0x87, 0xa6, 0x0, 0x0, 0x0,
+    0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xb9, 0xf, 0x6e, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x20, 0xa2, 0xfc,
+    0x41, 0x9d, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xed,
+    0x39, 0x9a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x36, 0x35, 0xff, 0xff, 0xff, 0x6f, 0x8c,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xda,
+    0xb1, 0xff, 0xff, 0xe3, 0xfa, 0x0, 0x0, 0x0,
+    0x0, 0x98, 0x77, 0xff, 0xff, 0xff, 0x2f, 0x2e,
+    0x0, 0x0, 0x0, 0x4, 0xf0, 0xb5, 0xff, 0xff,
+    0xa9, 0xf0, 0x4f, 0xff, 0xff, 0xf7, 0x19, 0x46,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x72, 0x55, 0xff,
+    0xff, 0xdf, 0x51, 0xff, 0xff, 0x95, 0xf8, 0xa7,
+    0xff, 0xff, 0x3d, 0xeb, 0xff, 0xff, 0x43, 0x5a,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xba,
+    0x53, 0xff, 0xff, 0xff, 0xff, 0xff, 0x73, 0xda,
+    0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x4e, 0xb, 0xe3, 0xff, 0xff, 0xff, 0xf9,
+    0x2f, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x16, 0xee, 0x8b, 0xff, 0xff, 0xfb,
+    0x4b, 0xb8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0xa6, 0x6b, 0xff,
+    0xff, 0xfd, 0x2f, 0x66, 0x0, 0x0, 0x0, 0x0,
+    0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+    0x0, 0x20, 0x6e, 0xa0, 0x9e, 0x6a, 0x1a, 0x0,
+    0x46, 0x86, 0xac, 0x8e, 0x52, 0x0, 0x0, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xdd, 0xdd,
+    0xdd, 0xdb, 0xcf, 0xab, 0x5f, 0xfe, 0x9e, 0xc,
+    0x0, 0x0, 0x0, 0x0, 0xf4, 0xd9, 0xff, 0xff,
+    0xbb, 0xe8, 0x0, 0x0, 0x0, 0x0, 0x36, 0x2b,
+    0xff, 0xff, 0xff, 0x7b, 0x96, 0x0, 0x0, 0x0,
+    0xac, 0x87, 0xff, 0xff, 0xff, 0x4d, 0x49, 0x49,
+    0x5b, 0xa5, 0xff, 0xff, 0xff, 0xa3, 0xe4, 0x0,
+    0x0, 0x0, 0x6, 0x3a, 0x62, 0x80, 0x6a, 0x56,
+    0x7e, 0xd8, 0xfe, 0x47, 0xb7, 0xff, 0xff, 0xff,
+    0xc3, 0xf8, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x36, 0x35, 0xff, 0xff, 0xff, 0x6f, 0x8c,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd8,
+    0xb1, 0xff, 0xff, 0xe3, 0xfc, 0x0, 0x0, 0x0,
+    0x0, 0x9c, 0x77, 0xff, 0xff, 0xff, 0x2f, 0x2a,
+    0x0, 0x0, 0x0, 0x0, 0x9a, 0x67, 0xff, 0xff,
+    0xe5, 0xfe, 0x9b, 0xff, 0xff, 0xbd, 0xf6, 0x6,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x2c, 0x13, 0xfb,
+    0xff, 0xfb, 0x97, 0xff, 0xff, 0x55, 0xc4, 0x6b,
+    0xff, 0xff, 0x93, 0xff, 0xff, 0xf3, 0x5, 0x1c,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x50, 0x9,
+    0xd9, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xeb, 0x1f,
+    0x78, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x2, 0xd2, 0x75, 0xff, 0xff, 0xff, 0xa1,
+    0xf4, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x9e, 0x37, 0xf7, 0xff, 0xff, 0xa1,
+    0xf8, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x38, 0xb, 0xed,
+    0xff, 0xff, 0x93, 0xd6, 0x0, 0x0, 0x0, 0x0,
+    0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xf8,
+    0xf8, 0xf6, 0xee, 0xd4, 0x8e, 0x30, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0xe8, 0xc3, 0xff, 0xff,
+    0xd5, 0xfe, 0x1a, 0x0, 0x0, 0x0, 0x92, 0x55,
+    0xff, 0xff, 0xff, 0x5f, 0x6a, 0x0, 0x0, 0x0,
+    0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x58, 0x5e,
+    0x94, 0xfe, 0xb7, 0xff, 0xff, 0xef, 0xfe, 0x6,
+    0x0, 0x0, 0xe, 0x15, 0x67, 0x67, 0x67, 0x2d,
+    0x5e, 0x0, 0x1e, 0x90, 0xfe, 0xb3, 0xff, 0xff,
+    0xfb, 0x13, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x36, 0x35, 0xff, 0xff, 0xff, 0x6f, 0x8c,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd0,
+    0xab, 0xff, 0xff, 0xeb, 0xfe, 0x8, 0x0, 0x0,
+    0x0, 0xb2, 0x81, 0xff, 0xff, 0xff, 0x25, 0x1c,
+    0x0, 0x0, 0x0, 0x0, 0x36, 0xd, 0xf1, 0xff,
+    0xff, 0x41, 0xd9, 0xff, 0xff, 0x71, 0xa6, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0xfc, 0xd9,
+    0xff, 0xff, 0xeb, 0xff, 0xf5, 0xb, 0x5c, 0x1f,
+    0xfd, 0xff, 0xeb, 0xff, 0xff, 0xcb, 0xf6, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0xe, 0xe6, 0x87,
+    0xff, 0xff, 0xff, 0x75, 0xf9, 0xff, 0xff, 0xab,
+    0xfa, 0x26, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x68, 0x43, 0xff, 0xff, 0xff, 0x63,
+    0x9e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x44, 0xfe, 0xc7, 0xff, 0xff, 0xe3, 0x15,
+    0x6c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0xe4, 0xa1,
+    0xff, 0xff, 0xe3, 0xfe, 0x2c, 0x0, 0x0, 0x0,
+    0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0xba, 0x8f, 0xff, 0xff,
+    0xfd, 0x3f, 0xa2, 0x4, 0x0, 0x2a, 0xf8, 0xad,
+    0xff, 0xff, 0xf7, 0x15, 0x34, 0x0, 0x0, 0x0,
+    0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0,
+    0x0, 0xbc, 0x81, 0xff, 0xff, 0xff, 0x19, 0x14,
+    0x0, 0x0, 0xe, 0x1d, 0xff, 0xff, 0xff, 0x8b,
+    0xd0, 0x6, 0x0, 0x0, 0xcc, 0x77, 0xff, 0xff,
+    0xff, 0x31, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x36, 0x35, 0xff, 0xff, 0xff, 0x6f, 0x8c,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb6,
+    0x97, 0xff, 0xff, 0xff, 0x1d, 0x74, 0x0, 0x0,
+    0x16, 0xf2, 0xa5, 0xff, 0xff, 0xf9, 0x5, 0xc,
+    0x0, 0x0, 0x0, 0x0, 0x2, 0xee, 0xb1, 0xff,
+    0xff, 0x9f, 0xff, 0xff, 0xf7, 0x15, 0x40, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xde, 0xad,
+    0xff, 0xff, 0xff, 0xff, 0xc5, 0xf6, 0xa, 0xfc,
+    0xd5, 0xff, 0xff, 0xff, 0xff, 0x9d, 0xce, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x84, 0x29, 0xf3,
+    0xff, 0xff, 0xc3, 0xfe, 0xa5, 0xff, 0xff, 0xfd,
+    0x51, 0xba, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x4c, 0x43, 0xff, 0xff, 0xff, 0x63,
+    0x7a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0xe, 0xe2, 0x79, 0xff, 0xff, 0xff, 0x5d, 0xca,
+    0x6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x78, 0x41,
+    0xff, 0xff, 0xff, 0x5b, 0x96, 0x0, 0x0, 0x0,
+    0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x62, 0x2d, 0xf9, 0xff,
+    0xff, 0xc9, 0x11, 0xe6, 0xce, 0xfa, 0x57, 0xfb,
+    0xff, 0xff, 0xad, 0xf2, 0x6, 0x0, 0x0, 0x0,
+    0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0,
+    0x0, 0x94, 0x73, 0xff, 0xff, 0xff, 0x29, 0x2a,
+    0x0, 0x0, 0x8, 0xfe, 0xdf, 0xff, 0xff, 0xdd,
+    0x15, 0xe8, 0xb4, 0xc8, 0xfe, 0xb1, 0xff, 0xff,
+    0xfb, 0x11, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x36, 0x35, 0xff, 0xff, 0xff, 0x6f, 0x8c,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7a,
+    0x59, 0xff, 0xff, 0xff, 0xa7, 0xfe, 0xd8, 0xc4,
+    0xf4, 0x37, 0xf5, 0xff, 0xff, 0xcb, 0xf8, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x94, 0x5f, 0xff,
+    0xff, 0xf3, 0xff, 0xff, 0xb9, 0xf4, 0x6, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa4, 0x7b,
+    0xff, 0xff, 0xff, 0xff, 0x8d, 0xbe, 0x0, 0xd4,
+    0x9f, 0xff, 0xff, 0xff, 0xff, 0x6b, 0x8e, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x2a, 0xfc, 0xb3, 0xff,
+    0xff, 0xfd, 0x47, 0xca, 0x27, 0xf5, 0xff, 0xff,
+    0xd9, 0x9, 0x54, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x4c, 0x43, 0xff, 0xff, 0xff, 0x63,
+    0x7a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x8a, 0x27, 0xf1, 0xff, 0xff, 0xb3, 0xfe, 0xe4,
+    0xe0, 0xe0, 0xe0, 0xe0, 0xcc, 0x98, 0x2e, 0x0,
+    0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1a, 0xfe,
+    0xd1, 0xff, 0xff, 0xb5, 0xf4, 0x8, 0x0, 0x0,
+    0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x10, 0xee, 0x8f, 0xff,
+    0xff, 0xff, 0xe3, 0x9f, 0x91, 0xb7, 0xfb, 0xff,
+    0xff, 0xeb, 0x27, 0x7e, 0x0, 0x0, 0x0, 0x0,
+    0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0,
+    0x0, 0x7e, 0x69, 0xff, 0xff, 0xff, 0x39, 0x52,
+    0x0, 0x0, 0x0, 0xc8, 0x75, 0xff, 0xff, 0xff,
+    0xe9, 0x9f, 0x81, 0x89, 0xc3, 0xff, 0xff, 0xff,
+    0xbf, 0xf8, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x36, 0x35, 0xff, 0xff, 0xff, 0x6f, 0x8c,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2a,
+    0xfe, 0xd1, 0xff, 0xff, 0xff, 0xd1, 0x97, 0x89,
+    0xab, 0xf7, 0xff, 0xff, 0xff, 0x5f, 0xac, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x30, 0x9, 0xef,
+    0xff, 0xff, 0xff, 0xff, 0x6b, 0xa0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x58, 0x41,
+    0xff, 0xff, 0xff, 0xff, 0x49, 0x6a, 0x0, 0x86,
+    0x61, 0xff, 0xff, 0xff, 0xff, 0x2b, 0x42, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0xbc, 0x57, 0xff, 0xff,
+    0xff, 0xb5, 0xfa, 0x2a, 0xec, 0x95, 0xff, 0xff,
+    0xff, 0x8b, 0xec, 0x14, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x4c, 0x43, 0xff, 0xff, 0xff, 0x63,
+    0x7a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe,
+    0xfe, 0xb9, 0xff, 0xff, 0xff, 0xc3, 0xb7, 0xb7,
+    0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0x5d, 0x6c, 0x0,
+    0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbe,
+    0x7d, 0xff, 0xff, 0xf7, 0x1d, 0x52, 0x0, 0x0,
+    0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x58, 0xfe, 0xa7,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0x4f, 0xf2, 0x20, 0x0, 0x0, 0x0, 0x0,
+    0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0,
+    0x0, 0x58, 0x51, 0xff, 0xff, 0xff, 0x67, 0xba,
+    0x0, 0x0, 0x0, 0x40, 0xfe, 0x91, 0xfd, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe5,
+    0x31, 0x92, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x36, 0x35, 0xff, 0xff, 0xff, 0x6f, 0x8c,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0xaa, 0x31, 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xfd, 0x8b, 0xfe, 0x30, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xea, 0xad,
+    0xff, 0xff, 0xff, 0xf3, 0x11, 0x3c, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1a, 0xfe,
+    0xf3, 0xff, 0xff, 0xef, 0x5, 0x20, 0x0, 0x34,
+    0x15, 0xf9, 0xff, 0xff, 0xe7, 0xfe, 0xe, 0x0,
+    0x0, 0x0, 0x0, 0x52, 0x9, 0xdb, 0xff, 0xff,
+    0xfb, 0x35, 0x8a, 0x0, 0x62, 0x19, 0xed, 0xff,
+    0xff, 0xf7, 0x33, 0x94, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x4c, 0x43, 0xff, 0xff, 0xff, 0x63,
+    0x7a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1e,
+    0x29, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0x83, 0x98, 0x0,
+    0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4e,
+    0x19, 0xf5, 0xff, 0xff, 0x81, 0xc4, 0x0, 0x0,
+    0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x86, 0x87, 0xff, 0xff, 0xff, 0xd, 0x4,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6e, 0xfe,
+    0x69, 0xd3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xdb, 0x33, 0xd6, 0x22, 0x0, 0x0, 0x0,
+    0x86, 0x87, 0xff, 0xff, 0xff, 0xd, 0x4, 0x0,
+    0x0, 0x28, 0xf, 0xe9, 0xff, 0xff, 0xcf, 0xb4,
+    0x0, 0x0, 0x0, 0x0, 0x5a, 0xf8, 0x49, 0xbb,
+    0xf7, 0xff, 0xff, 0xff, 0xff, 0xed, 0xa1, 0x21,
+    0xc6, 0x12, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x26, 0x35, 0xff, 0xff, 0xff, 0x6f, 0x68,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x12, 0xc0, 0x17, 0x97, 0xe7, 0xff, 0xff, 0xff,
+    0xff, 0xf9, 0xc3, 0x55, 0xf8, 0x54, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8e, 0x5b,
+    0xff, 0xff, 0xff, 0xb7, 0xee, 0x4, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf0,
+    0xc9, 0xff, 0xff, 0xbf, 0xea, 0x0, 0x0, 0x6,
+    0xf6, 0xcf, 0xff, 0xff, 0xbd, 0xe2, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x52, 0x89, 0xff, 0xff, 0xff,
+    0xa7, 0xf4, 0x14, 0x0, 0x6, 0xde, 0x87, 0xff,
+    0xff, 0xff, 0xc1, 0x94, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x36, 0x43, 0xff, 0xff, 0xff, 0x63,
+    0x5a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1e,
+    0x2f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0x83, 0x82, 0x0,
+    0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6,
+    0xf2, 0xb1, 0xff, 0xff, 0xd5, 0xfe, 0x1c, 0x0,
+    0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x50, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x2,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x36,
+    0xb8, 0xfc, 0x23, 0x4d, 0x59, 0x3d, 0x63, 0xf5,
+    0xff, 0xff, 0xeb, 0x4d, 0x50, 0x0, 0x0, 0x0,
+    0x50, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x2, 0x0,
+    0x0, 0x4, 0xc8, 0xfe, 0xfe, 0xfe, 0xfe, 0xa0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x20, 0x94, 0xf2,
+    0x9, 0x43, 0x59, 0x55, 0x35, 0xfe, 0xe4, 0x70,
+    0xa, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x14, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x3c,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x6, 0x64, 0xda, 0xfe, 0x31, 0x53, 0x59,
+    0x47, 0xf, 0xf6, 0xa0, 0x28, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2c, 0xfe,
+    0xfe, 0xfe, 0xfe, 0xfe, 0x80, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x98,
+    0xfe, 0xfe, 0xfe, 0xfe, 0x8a, 0x0, 0x0, 0x0,
+    0x9e, 0xfe, 0xfe, 0xfe, 0xfe, 0x88, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x52, 0xfe, 0xfe, 0xfe, 0xfe,
+    0xfe, 0x6e, 0x0, 0x0, 0x0, 0x50, 0xfe, 0xfe,
+    0xfe, 0xfe, 0xfe, 0x8c, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x1c, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+    0x32, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10,
+    0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+    0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x4c, 0x0,
+    0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfe, 0x96,
+    0x36, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x90, 0x57, 0xff, 0xff, 0xff, 0x43, 0x3e, 0x64,
+    0xca, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xc, 0x2e, 0x50, 0x5a, 0x66, 0xea, 0x4b,
+    0xed, 0xff, 0xf5, 0x67, 0x50, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x1c, 0x42, 0x60, 0x5a, 0x3a, 0x14, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x12, 0x36, 0x58, 0x60,
+    0x48, 0x22, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xdc, 0xb3, 0xff, 0xff, 0xf3, 0xb1, 0x69,
+    0x82, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x2a, 0xfe, 0x8d, 0x95, 0x95, 0x51, 0x3e, 0xd6,
+    0x9b, 0xbf, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0xd8,
+    0x35, 0xc9, 0x49, 0xe8, 0x34, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xda, 0xb3, 0xff, 0xff, 0xff, 0xff, 0x99,
+    0xae, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x56, 0x94, 0xbc, 0xa8, 0x76, 0x26, 0xf2,
+    0xe3, 0xff, 0xff, 0xff, 0xff, 0x5b, 0x6e, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14,
+    0xa0, 0xac, 0xa4, 0x20, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xb8, 0xab, 0xf5, 0xf5, 0xf5, 0xf5, 0x91,
+    0x98, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xea,
+    0xd9, 0xf5, 0xf5, 0xf5, 0xf5, 0x57, 0x4e, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x74, 0xec, 0xfc, 0xfe, 0xfe, 0xfc, 0xe8,
+    0x5a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+    0xf4, 0xfe, 0xfe, 0xfe, 0xfc, 0xe2, 0x2a, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x24, 0x52, 0x76, 0x76, 0x52, 0x26,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xa, 0x3e, 0x66, 0x80, 0x66, 0x3e, 0xa,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x54,
+    0x98, 0xba, 0xb2, 0x80, 0x34, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x28, 0x56, 0x78, 0x74, 0x50, 0x22, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x1a, 0x4a, 0x70, 0x7e, 0x5c, 0x30, 0x0,
+    0x0, 0x0, 0x1a, 0x4a, 0x70, 0x7e, 0x5c, 0x32,
+    0x0, 0x0, 0x0, 0x24, 0x52, 0x76, 0x78, 0x54,
+    0x26, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x1a, 0x4a, 0x70, 0x7e, 0x5c,
+    0x30, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x3c,
+    0x6e, 0x90, 0x86, 0x5e, 0x2a, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0xa0, 0x4f, 0x67, 0x67, 0x51, 0xa8,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x32, 0x21, 0x67, 0x67, 0x67, 0x21, 0x32,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x4e, 0xf2, 0x2d,
+    0x7f, 0x9b, 0x99, 0x67, 0xaa, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0xb4, 0x55, 0x67, 0x67, 0x4d, 0x98, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x78, 0x41, 0x67, 0x67, 0x5f, 0xda, 0x0,
+    0x0, 0x0, 0x74, 0x3f, 0x67, 0x67, 0x63, 0xe4,
+    0x0, 0x0, 0x0, 0xa0, 0x4f, 0x67, 0x67, 0x51,
+    0xac, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x78, 0x41, 0x67, 0x67, 0x5f,
+    0xda, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x17,
+    0x71, 0x73, 0x73, 0x57, 0xf0, 0x22, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0xd4, 0xc3, 0xff, 0xff, 0xcb, 0xdc,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x54, 0x57, 0xff, 0xff, 0xff, 0x57, 0x54,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x28, 0xfc, 0x85, 0xfb,
+    0xff, 0xff, 0xff, 0xc7, 0xd2, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0xe4, 0xd3, 0xff, 0xff, 0xbd, 0xce, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xae, 0x9f, 0xff, 0xff, 0xef, 0xf8, 0x0,
+    0x0, 0x0, 0xaa, 0x9b, 0xff, 0xff, 0xf5, 0xfa,
+    0x0, 0x0, 0x0, 0xd4, 0xc3, 0xff, 0xff, 0xcd,
+    0xde, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0xae, 0x9f, 0xff, 0xff, 0xef,
+    0xf8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x6c,
+    0x77, 0xfb, 0xff, 0xfb, 0x4d, 0xc8, 0x8, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xee,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x6a, 0x57, 0xff, 0xff, 0xff, 0x57, 0x6a,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x8e, 0x55, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xb1, 0xcc, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0xf4, 0xd3, 0xff, 0xff, 0xbd, 0xe4, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xae, 0x9f, 0xff, 0xff, 0xef, 0xf8, 0x0,
+    0x0, 0x0, 0xaa, 0x9b, 0xff, 0xff, 0xf5, 0xfc,
+    0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcd,
+    0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+    0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40,
+    0xf6, 0x6d, 0xfb, 0xff, 0xe3, 0x1d, 0x5e, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xee,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x6a, 0x57, 0xff, 0xff, 0xff, 0x57, 0x6a,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0xd2, 0xaf, 0xff, 0xff,
+    0xfb, 0x7b, 0x45, 0x37, 0x86, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0xf4, 0xd3, 0xff, 0xff, 0xbd, 0xe4, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x78, 0x41, 0x67, 0x67, 0x5f, 0xda, 0x0,
+    0x0, 0x0, 0x74, 0x3d, 0x63, 0x63, 0x5d, 0xe4,
+    0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcd,
+    0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+    0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x3a, 0xf2, 0x65, 0xd9, 0xd9, 0x95, 0x5e, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xee,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x6a, 0x57, 0xff, 0xff, 0xff, 0x57, 0x6a,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0xec, 0xcd, 0xff, 0xff,
+    0xc9, 0xfe, 0x6a, 0x30, 0x16, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0xf4, 0xd3, 0xff, 0xff, 0xbd, 0xe4, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x1a, 0x4a, 0x70, 0x7e, 0x5c, 0x30, 0x0,
+    0x0, 0x0, 0x18, 0x46, 0x6a, 0x78, 0x58, 0x2e,
+    0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcd,
+    0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+    0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x34, 0xbe, 0xea, 0xee, 0xca, 0x58, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x3c, 0xa6, 0xe8, 0xfa,
+    0xfc, 0xf8, 0xe4, 0x98, 0x2a, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xf8,
+    0xea, 0xf8, 0xf8, 0xe2, 0x8e, 0x1c, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x8e, 0xde,
+    0xf8, 0xfc, 0xf8, 0xe4, 0x98, 0x2a, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x48, 0xbc, 0xf0, 0xfa,
+    0xf4, 0xe2, 0x57, 0xff, 0xff, 0xff, 0x57, 0x6a,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x74, 0xd4,
+    0xf6, 0xfa, 0xf8, 0xe6, 0x9e, 0x2e, 0x0, 0x0,
+    0x0, 0x0, 0x56, 0xb6, 0xfe, 0xd3, 0xff, 0xff,
+    0xbd, 0xfc, 0xd4, 0x9a, 0x18, 0x0, 0x0, 0x0,
+    0x0, 0x46, 0xba, 0xf0, 0xfa, 0xf6, 0xd2, 0xa4,
+    0xc0, 0xe2, 0xd4, 0x9e, 0x1e, 0x0, 0x0, 0x0,
+    0xf4, 0xd3, 0xff, 0xff, 0xbd, 0xf2, 0xe0, 0xf8,
+    0xf8, 0xea, 0xa2, 0x28, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x44, 0xae, 0xdc, 0xe6, 0xc8, 0x80, 0x0,
+    0x0, 0x0, 0x38, 0xa8, 0xd8, 0xea, 0xce, 0x90,
+    0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcd,
+    0xf0, 0x0, 0x5c, 0xb8, 0xe0, 0xea, 0xd4, 0x9e,
+    0x20, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+    0xfe, 0x0, 0x0, 0x0, 0x5e, 0xb8, 0xe0, 0xdc,
+    0xb2, 0x9c, 0xda, 0xf6, 0xf8, 0xee, 0xae, 0x34,
+    0x60, 0xce, 0xf4, 0xfa, 0xf2, 0xc0, 0x48, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x68, 0xbe, 0xe2, 0xda,
+    0xae, 0x92, 0xd6, 0xf6, 0xfa, 0xf0, 0xb6, 0x3c,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14,
+    0x78, 0xd4, 0xf6, 0xfa, 0xfa, 0xec, 0xb0, 0x44,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x4, 0x8e, 0xfe, 0x6f, 0xbf, 0xe3,
+    0xef, 0xe3, 0xb9, 0x57, 0xfc, 0x5c, 0x0, 0x0,
+    0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0x49,
+    0xc3, 0xeb, 0xe5, 0xb7, 0x41, 0xea, 0x26, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x52, 0xfa, 0x4d, 0xb3,
+    0xdf, 0xed, 0xe3, 0xb9, 0x57, 0xfc, 0x5c, 0x0,
+    0x0, 0x0, 0x0, 0x7a, 0xfe, 0x7d, 0xd1, 0xeb,
+    0xdd, 0x8f, 0x59, 0xff, 0xff, 0xff, 0x57, 0x6a,
+    0x0, 0x0, 0x0, 0x0, 0x2a, 0xe2, 0x2f, 0xa3,
+    0xdb, 0xed, 0xe3, 0xbd, 0x5d, 0xfe, 0x60, 0x0,
+    0x0, 0x0, 0xae, 0x8d, 0xc3, 0xf3, 0xff, 0xff,
+    0xeb, 0xc3, 0xc3, 0x3b, 0x38, 0x0, 0x0, 0x0,
+    0x76, 0xfe, 0x7b, 0xcf, 0xeb, 0xdf, 0x97, 0xd,
+    0xa5, 0xc3, 0xc3, 0x45, 0x44, 0x0, 0x0, 0x0,
+    0xf4, 0xd3, 0xff, 0xff, 0xbd, 0x2d, 0xb1, 0xe5,
+    0xe9, 0xc3, 0x55, 0xf2, 0x2e, 0x0, 0x0, 0x0,
+    0x0, 0x90, 0x79, 0xc3, 0xc3, 0xb7, 0xe8, 0x0,
+    0x0, 0x0, 0x78, 0x69, 0xc3, 0xc3, 0xc3, 0xfe,
+    0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcd,
+    0xf0, 0x24, 0xfa, 0x93, 0xc3, 0xc3, 0xc3, 0x53,
+    0x20, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+    0xfe, 0x0, 0x0, 0x0, 0xb8, 0x95, 0xc3, 0xc3,
+    0x79, 0x27, 0xa9, 0xe1, 0xeb, 0xcb, 0x61, 0xfc,
+    0x11, 0x95, 0xdb, 0xed, 0xd5, 0x7d, 0xfe, 0x5c,
+    0x0, 0x0, 0x0, 0x0, 0xc8, 0x9f, 0xc3, 0xc3,
+    0x71, 0x1d, 0xa1, 0xdf, 0xeb, 0xcf, 0x71, 0xfe,
+    0x4c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x38, 0xec,
+    0x35, 0xa5, 0xd9, 0xeb, 0xe5, 0xc5, 0x79, 0x5,
+    0x9e, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x62, 0x11, 0xc1, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0x93, 0xfa, 0x22, 0x0,
+    0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xe5, 0xf5,
+    0xff, 0xff, 0xff, 0xff, 0xf7, 0x53, 0xc4, 0x2,
+    0x0, 0x0, 0x0, 0x2c, 0xfa, 0x89, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0x93, 0xfe, 0x2e,
+    0x0, 0x0, 0x38, 0xfe, 0xb1, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xd9, 0xff, 0xff, 0xff, 0x57, 0x6a,
+    0x0, 0x0, 0x0, 0xe, 0xdc, 0x57, 0xf3, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0x97, 0xfc, 0x2e,
+    0x0, 0x0, 0xca, 0xbb, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0x4d, 0x4a, 0x0, 0x0, 0x36,
+    0xfe, 0xad, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc1,
+    0xf1, 0xff, 0xff, 0x5b, 0x66, 0x0, 0x0, 0x0,
+    0xf4, 0xd3, 0xff, 0xff, 0xd1, 0xeb, 0xff, 0xff,
+    0xff, 0xff, 0xfb, 0x5d, 0xbc, 0x0, 0x0, 0x0,
+    0x0, 0xbc, 0x9f, 0xff, 0xff, 0xef, 0xfa, 0x0,
+    0x0, 0x0, 0xa4, 0x89, 0xff, 0xff, 0xff, 0xfe,
+    0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcd,
+    0xf0, 0xb4, 0x4f, 0xff, 0xff, 0xff, 0xbf, 0xd4,
+    0x20, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+    0xfe, 0x0, 0x0, 0x0, 0xe0, 0xc3, 0xff, 0xff,
+    0xbf, 0xe5, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x61,
+    0xcb, 0xff, 0xff, 0xff, 0xff, 0xff, 0x93, 0xee,
+    0x8, 0x0, 0x0, 0x0, 0xea, 0xd1, 0xff, 0xff,
+    0xb1, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x83,
+    0xe0, 0x2, 0x0, 0x0, 0x0, 0x1c, 0xec, 0x6b,
+    0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcd,
+    0x1d, 0x88, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0xd2, 0x99, 0xff, 0xff, 0xff, 0xcb,
+    0xb7, 0xed, 0xff, 0xff, 0xff, 0x4b, 0x76, 0x0,
+    0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xff, 0xff,
+    0xdb, 0xe1, 0xff, 0xff, 0xff, 0xe1, 0xb, 0x34,
+    0x0, 0x0, 0x0, 0xac, 0x59, 0xff, 0xff, 0xff,
+    0xef, 0xd1, 0xf3, 0xff, 0xff, 0xff, 0x5d, 0x9c,
+    0x0, 0x0, 0xb0, 0x6b, 0xff, 0xff, 0xff, 0xf9,
+    0xd5, 0xef, 0xff, 0xff, 0xff, 0xff, 0x57, 0x6a,
+    0x0, 0x0, 0x0, 0x70, 0x29, 0xef, 0xff, 0xff,
+    0xf9, 0xd5, 0xed, 0xff, 0xff, 0xff, 0x5d, 0xa2,
+    0x0, 0x0, 0xb0, 0x93, 0xcb, 0xf3, 0xff, 0xff,
+    0xef, 0xcb, 0xcb, 0x3d, 0x38, 0x0, 0x0, 0xae,
+    0x67, 0xff, 0xff, 0xff, 0xf9, 0xd5, 0xed, 0xff,
+    0xff, 0xff, 0xff, 0x5b, 0x70, 0x0, 0x0, 0x0,
+    0xf4, 0xd3, 0xff, 0xff, 0xff, 0xf9, 0xd7, 0xeb,
+    0xff, 0xff, 0xff, 0xd9, 0xfe, 0x10, 0x0, 0x0,
+    0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef, 0xfe, 0x0,
+    0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+    0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcd,
+    0xf4, 0x5, 0xd5, 0xff, 0xff, 0xed, 0x27, 0x8e,
+    0x0, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+    0xfe, 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff,
+    0xff, 0xfb, 0xd7, 0xeb, 0xff, 0xff, 0xff, 0xf9,
+    0xff, 0xe5, 0xdb, 0xff, 0xff, 0xff, 0xf9, 0x1f,
+    0x3c, 0x0, 0x0, 0x0, 0xf2, 0xd1, 0xff, 0xff,
+    0xff, 0xfb, 0xd9, 0xe7, 0xff, 0xff, 0xff, 0xef,
+    0xb, 0x22, 0x0, 0x0, 0x0, 0x92, 0x41, 0xf9,
+    0xff, 0xff, 0xf9, 0xd1, 0xe3, 0xff, 0xff, 0xff,
+    0xb9, 0xfe, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0xd4, 0xdf, 0xff, 0xff, 0xbd, 0xfe,
+    0xf6, 0x31, 0xf9, 0xff, 0xff, 0x9b, 0xb8, 0x0,
+    0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xf7, 0x4f,
+    0xfe, 0xfe, 0x8f, 0xff, 0xff, 0xff, 0x63, 0x88,
+    0x0, 0x0, 0x8, 0xfa, 0xcb, 0xff, 0xff, 0xdb,
+    0x19, 0xfc, 0x23, 0xdf, 0xff, 0xff, 0xbb, 0xe2,
+    0x0, 0x4, 0xf8, 0xcb, 0xff, 0xff, 0xf1, 0x39,
+    0xfe, 0x11, 0xbb, 0xff, 0xff, 0xff, 0x57, 0x6a,
+    0x0, 0x0, 0x0, 0xda, 0xa1, 0xff, 0xff, 0xf9,
+    0x49, 0xfe, 0x15, 0xd5, 0xff, 0xff, 0xc3, 0xf0,
+    0x0, 0x0, 0x5a, 0xbc, 0xfe, 0xd3, 0xff, 0xff,
+    0xbd, 0xfe, 0xda, 0xa2, 0x18, 0x0, 0x2, 0xf8,
+    0xcb, 0xff, 0xff, 0xf1, 0x39, 0xfe, 0xb, 0xad,
+    0xff, 0xff, 0xff, 0x5b, 0x70, 0x0, 0x0, 0x0,
+    0xf4, 0xd3, 0xff, 0xff, 0xe3, 0x35, 0xfe, 0x9,
+    0xbb, 0xff, 0xff, 0xff, 0x2d, 0x36, 0x0, 0x0,
+    0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef, 0xfe, 0x0,
+    0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+    0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcd,
+    0xfe, 0x81, 0xff, 0xff, 0xff, 0x67, 0xda, 0xc,
+    0x0, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+    0xfe, 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff,
+    0xed, 0x43, 0xfe, 0xd, 0xcf, 0xff, 0xff, 0xff,
+    0x8f, 0xfe, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0x67,
+    0x78, 0x0, 0x0, 0x0, 0xf2, 0xd1, 0xff, 0xff,
+    0xeb, 0x43, 0xfe, 0xfe, 0xa7, 0xff, 0xff, 0xff,
+    0x49, 0x50, 0x0, 0x0, 0x2, 0xf2, 0xbb, 0xff,
+    0xff, 0xf1, 0x39, 0xfc, 0xfe, 0xa1, 0xff, 0xff,
+    0xff, 0x49, 0x76, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0xbc, 0x2b, 0x2f, 0x2f, 0x1d, 0xda,
+    0xc0, 0xfe, 0xdf, 0xff, 0xff, 0xb1, 0xd4, 0x0,
+    0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xfa,
+    0x24, 0x5a, 0x11, 0xf7, 0xff, 0xff, 0xa1, 0xca,
+    0x0, 0x0, 0x2a, 0x1b, 0xfd, 0xff, 0xff, 0x87,
+    0xd4, 0x12, 0xd0, 0x89, 0xff, 0xff, 0xdd, 0xdc,
+    0x0, 0x1e, 0xf, 0xfb, 0xff, 0xff, 0xa7, 0xee,
+    0x1a, 0xaa, 0x57, 0xff, 0xff, 0xff, 0x57, 0x6a,
+    0x0, 0x0, 0x4, 0xfe, 0xe3, 0xff, 0xff, 0xb5,
+    0xfe, 0xdc, 0xf8, 0x87, 0xff, 0xff, 0xf1, 0xfe,
+    0x2, 0x0, 0x0, 0x0, 0xf4, 0xd3, 0xff, 0xff,
+    0xbd, 0xe4, 0x0, 0x0, 0x0, 0x0, 0x1c, 0xd,
+    0xfb, 0xff, 0xff, 0xa7, 0xee, 0x18, 0x9c, 0x51,
+    0xff, 0xff, 0xff, 0x5b, 0x70, 0x0, 0x0, 0x0,
+    0xf4, 0xd3, 0xff, 0xff, 0xbd, 0xf2, 0x14, 0xa4,
+    0x5d, 0xff, 0xff, 0xff, 0x57, 0x60, 0x0, 0x0,
+    0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef, 0xfe, 0x0,
+    0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+    0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcd,
+    0x25, 0xf1, 0xff, 0xff, 0xaf, 0xfe, 0x36, 0x0,
+    0x0, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+    0xfe, 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff,
+    0xcb, 0xf8, 0x1e, 0xce, 0x87, 0xff, 0xff, 0xff,
+    0x25, 0x68, 0x4e, 0x1b, 0xff, 0xff, 0xff, 0x87,
+    0xa4, 0x0, 0x0, 0x0, 0xf2, 0xd1, 0xff, 0xff,
+    0xc1, 0xf6, 0x1c, 0x8e, 0x4f, 0xff, 0xff, 0xff,
+    0x67, 0x78, 0x0, 0x0, 0x1a, 0xb, 0xf7, 0xff,
+    0xff, 0xa3, 0xee, 0x16, 0x6e, 0x1d, 0xf7, 0xff,
+    0xff, 0x9b, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x14, 0x90, 0xfa, 0x2d, 0x6f, 0x8d,
+    0x97, 0x99, 0xef, 0xff, 0xff, 0xb3, 0xdc, 0x0,
+    0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xee,
+    0x0, 0x4, 0xfa, 0xd1, 0xff, 0xff, 0xc1, 0xe4,
+    0x0, 0x0, 0x52, 0x4f, 0xff, 0xff, 0xff, 0x59,
+    0x80, 0x0, 0x52, 0xfe, 0xfe, 0xfe, 0xfe, 0xb4,
+    0x0, 0x40, 0x41, 0xff, 0xff, 0xff, 0x6f, 0xa2,
+    0x0, 0x6a, 0x57, 0xff, 0xff, 0xff, 0x57, 0x6a,
+    0x0, 0x0, 0x12, 0x11, 0xff, 0xff, 0xff, 0xd3,
+    0xad, 0xad, 0xad, 0xc9, 0xff, 0xff, 0xff, 0xb,
+    0x6, 0x0, 0x0, 0x0, 0xf4, 0xd3, 0xff, 0xff,
+    0xbd, 0xe4, 0x0, 0x0, 0x0, 0x0, 0x3e, 0x41,
+    0xff, 0xff, 0xff, 0x6f, 0xa2, 0x0, 0x64, 0x51,
+    0xff, 0xff, 0xff, 0x5b, 0x70, 0x0, 0x0, 0x0,
+    0xf4, 0xd3, 0xff, 0xff, 0xbd, 0xe4, 0x0, 0x56,
+    0x41, 0xff, 0xff, 0xff, 0x65, 0x78, 0x0, 0x0,
+    0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef, 0xfe, 0x0,
+    0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+    0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xfb,
+    0xf3, 0xff, 0xff, 0xe5, 0x19, 0x7a, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+    0xfe, 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff,
+    0xcb, 0xee, 0x0, 0x9c, 0x75, 0xff, 0xff, 0xff,
+    0x29, 0x26, 0x8, 0xfe, 0xfb, 0xff, 0xff, 0x91,
+    0xb4, 0x0, 0x0, 0x0, 0xf2, 0xd1, 0xff, 0xff,
+    0xc1, 0xe8, 0x0, 0x48, 0x39, 0xff, 0xff, 0xff,
+    0x6f, 0x88, 0x0, 0x0, 0x3e, 0x3f, 0xff, 0xff,
+    0xff, 0x6d, 0xa0, 0x0, 0x8, 0xfa, 0xd5, 0xff,
+    0xff, 0xc1, 0xe4, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x8c, 0x19, 0xb5, 0xfd, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xb3, 0xdc, 0x0,
+    0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xee,
+    0x0, 0x0, 0xee, 0xc3, 0xff, 0xff, 0xcd, 0xec,
+    0x0, 0x0, 0x6a, 0x5f, 0xff, 0xff, 0xff, 0x47,
+    0x60, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x58, 0x51, 0xff, 0xff, 0xff, 0x59, 0x7a,
+    0x0, 0x6a, 0x57, 0xff, 0xff, 0xff, 0x57, 0x6a,
+    0x0, 0x0, 0x1c, 0x2b, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x15,
+    0xa, 0x0, 0x0, 0x0, 0xf4, 0xd3, 0xff, 0xff,
+    0xbd, 0xe4, 0x0, 0x0, 0x0, 0x0, 0x58, 0x51,
+    0xff, 0xff, 0xff, 0x59, 0x7a, 0x0, 0x64, 0x51,
+    0xff, 0xff, 0xff, 0x5b, 0x70, 0x0, 0x0, 0x0,
+    0xf4, 0xd3, 0xff, 0xff, 0xbd, 0xe4, 0x0, 0x46,
+    0x3f, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0, 0x0,
+    0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef, 0xfe, 0x0,
+    0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+    0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xd3, 0x5, 0x54, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+    0xfe, 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff,
+    0xcb, 0xee, 0x0, 0x94, 0x73, 0xff, 0xff, 0xff,
+    0x29, 0x2a, 0x0, 0xfe, 0xfb, 0xff, 0xff, 0x91,
+    0xb8, 0x0, 0x0, 0x0, 0xf2, 0xd1, 0xff, 0xff,
+    0xc1, 0xe8, 0x0, 0x3e, 0x39, 0xff, 0xff, 0xff,
+    0x6f, 0x8c, 0x0, 0x0, 0x54, 0x53, 0xff, 0xff,
+    0xff, 0x57, 0x7a, 0x0, 0x0, 0xf0, 0xc3, 0xff,
+    0xff, 0xcd, 0xec, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xc, 0xfc, 0xbd, 0xff, 0xff, 0xfb, 0xb5,
+    0x91, 0x8d, 0xed, 0xff, 0xff, 0xb3, 0xdc, 0x0,
+    0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xee,
+    0x0, 0x0, 0xf0, 0xc5, 0xff, 0xff, 0xcb, 0xec,
+    0x0, 0x0, 0x5e, 0x57, 0xff, 0xff, 0xff, 0x51,
+    0x6e, 0x0, 0x18, 0x54, 0x80, 0x92, 0x6c, 0x38,
+    0x0, 0x52, 0x4f, 0xff, 0xff, 0xff, 0x5d, 0x82,
+    0x0, 0x6a, 0x57, 0xff, 0xff, 0xff, 0x57, 0x6a,
+    0x0, 0x0, 0x18, 0x21, 0xff, 0xff, 0xff, 0xdb,
+    0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xf,
+    0x8, 0x0, 0x0, 0x0, 0xf4, 0xd3, 0xff, 0xff,
+    0xbd, 0xe4, 0x0, 0x0, 0x0, 0x0, 0x52, 0x4f,
+    0xff, 0xff, 0xff, 0x5d, 0x82, 0x0, 0x64, 0x51,
+    0xff, 0xff, 0xff, 0x5b, 0x70, 0x0, 0x0, 0x0,
+    0xf4, 0xd3, 0xff, 0xff, 0xbd, 0xe4, 0x0, 0x46,
+    0x3f, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0, 0x0,
+    0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef, 0xfe, 0x0,
+    0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+    0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xf1,
+    0xcd, 0xff, 0xff, 0xff, 0x87, 0xea, 0x12, 0x0,
+    0x0, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+    0xfe, 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff,
+    0xcb, 0xee, 0x0, 0x94, 0x73, 0xff, 0xff, 0xff,
+    0x29, 0x2a, 0x0, 0xfe, 0xfb, 0xff, 0xff, 0x91,
+    0xb8, 0x0, 0x0, 0x0, 0xf2, 0xd1, 0xff, 0xff,
+    0xc1, 0xe8, 0x0, 0x3e, 0x39, 0xff, 0xff, 0xff,
+    0x6f, 0x8c, 0x0, 0x0, 0x48, 0x49, 0xff, 0xff,
+    0xff, 0x65, 0x8a, 0x0, 0x0, 0xf6, 0xcf, 0xff,
+    0xff, 0xc7, 0xe8, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x2a, 0x27, 0xff, 0xff, 0xff, 0x91, 0xfc,
+    0xc8, 0xfe, 0xdd, 0xff, 0xff, 0xb3, 0xdc, 0x0,
+    0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xf4,
+    0x4, 0x1c, 0xfe, 0xdb, 0xff, 0xff, 0xb9, 0xde,
+    0x0, 0x0, 0x3a, 0x33, 0xff, 0xff, 0xff, 0x71,
+    0xb2, 0x0, 0x82, 0x3b, 0x77, 0x77, 0x69, 0xb6,
+    0x0, 0x34, 0x33, 0xff, 0xff, 0xff, 0x7d, 0xc4,
+    0x0, 0x7c, 0x57, 0xff, 0xff, 0xff, 0x57, 0x6a,
+    0x0, 0x0, 0xa, 0xfe, 0xf5, 0xff, 0xff, 0xab,
+    0xfe, 0xea, 0xe8, 0xe8, 0xea, 0xea, 0xd0, 0x8e,
+    0x4, 0x0, 0x0, 0x0, 0xf4, 0xd3, 0xff, 0xff,
+    0xbd, 0xe4, 0x0, 0x0, 0x0, 0x0, 0x34, 0x33,
+    0xff, 0xff, 0xff, 0x7d, 0xc4, 0x0, 0x74, 0x51,
+    0xff, 0xff, 0xff, 0x5b, 0x70, 0x0, 0x0, 0x0,
+    0xf4, 0xd3, 0xff, 0xff, 0xbd, 0xe4, 0x0, 0x46,
+    0x3f, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0, 0x0,
+    0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef, 0xfe, 0x0,
+    0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+    0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcd,
+    0xfe, 0xd1, 0xff, 0xff, 0xf5, 0x31, 0x96, 0x0,
+    0x0, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+    0xfe, 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff,
+    0xcb, 0xee, 0x0, 0x94, 0x73, 0xff, 0xff, 0xff,
+    0x29, 0x2a, 0x0, 0xfe, 0xfb, 0xff, 0xff, 0x91,
+    0xb8, 0x0, 0x0, 0x0, 0xf2, 0xd1, 0xff, 0xff,
+    0xc1, 0xe8, 0x0, 0x3e, 0x39, 0xff, 0xff, 0xff,
+    0x6f, 0x8c, 0x0, 0x0, 0x26, 0x1f, 0xff, 0xff,
+    0xff, 0x89, 0xd0, 0x0, 0x36, 0x5, 0xeb, 0xff,
+    0xff, 0xab, 0xd2, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x32, 0x47, 0xff, 0xff, 0xff, 0x65, 0xe8,
+    0xd4, 0x13, 0xe9, 0xff, 0xff, 0xb3, 0xe2, 0x0,
+    0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xe1, 0xf,
+    0xe2, 0xee, 0x43, 0xff, 0xff, 0xff, 0x8f, 0xb4,
+    0x0, 0x0, 0x14, 0xfe, 0xe5, 0xff, 0xff, 0xbd,
+    0xfe, 0xd8, 0xfe, 0xad, 0xff, 0xff, 0xd1, 0xce,
+    0x0, 0x14, 0xfe, 0xef, 0xff, 0xff, 0xcd, 0x5,
+    0xde, 0xfa, 0x7b, 0xff, 0xff, 0xff, 0x57, 0x6a,
+    0x0, 0x0, 0x0, 0xf2, 0xc1, 0xff, 0xff, 0xf5,
+    0x39, 0xf0, 0xbe, 0xd4, 0xfc, 0x3b, 0xf4, 0x10,
+    0x0, 0x0, 0x0, 0x0, 0xf4, 0xd3, 0xff, 0xff,
+    0xbd, 0xe4, 0x0, 0x0, 0x0, 0x0, 0x14, 0xfe,
+    0xed, 0xff, 0xff, 0xcd, 0x5, 0xdc, 0xf8, 0x71,
+    0xff, 0xff, 0xff, 0x5b, 0x70, 0x0, 0x0, 0x0,
+    0xf4, 0xd3, 0xff, 0xff, 0xbd, 0xe4, 0x0, 0x46,
+    0x3f, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0, 0x0,
+    0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef, 0xfe, 0x0,
+    0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+    0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcd,
+    0xfa, 0x47, 0xfb, 0xff, 0xff, 0xc3, 0xfe, 0x3e,
+    0x0, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+    0xfe, 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff,
+    0xcb, 0xee, 0x0, 0x94, 0x73, 0xff, 0xff, 0xff,
+    0x29, 0x2a, 0x0, 0xfe, 0xfb, 0xff, 0xff, 0x91,
+    0xb8, 0x0, 0x0, 0x0, 0xf2, 0xd1, 0xff, 0xff,
+    0xc1, 0xe8, 0x0, 0x3e, 0x39, 0xff, 0xff, 0xff,
+    0x6f, 0x8c, 0x0, 0x0, 0x8, 0xfc, 0xd5, 0xff,
+    0xff, 0xd7, 0x5, 0xd6, 0xf2, 0x69, 0xff, 0xff,
+    0xff, 0x6d, 0x94, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x28, 0x21, 0xff, 0xff, 0xff, 0xd9, 0x73,
+    0x81, 0xd9, 0xff, 0xff, 0xff, 0xbf, 0xec, 0x0,
+    0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xff, 0xd9,
+    0x95, 0xa1, 0xed, 0xff, 0xff, 0xfb, 0x35, 0x64,
+    0x0, 0x0, 0x0, 0xd4, 0x8b, 0xff, 0xff, 0xff,
+    0xbf, 0x8d, 0xb5, 0xff, 0xff, 0xff, 0x8d, 0xc2,
+    0x0, 0x0, 0xe6, 0xa7, 0xff, 0xff, 0xff, 0xcd,
+    0x93, 0xaf, 0xfb, 0xff, 0xff, 0xff, 0x57, 0x6a,
+    0x0, 0x0, 0x0, 0x9e, 0x55, 0xff, 0xff, 0xff,
+    0xf1, 0xa1, 0x87, 0x97, 0xcd, 0xfd, 0x2f, 0x5c,
+    0x0, 0x0, 0x0, 0x0, 0xf4, 0xd3, 0xff, 0xff,
+    0xbd, 0xe4, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe4,
+    0xa5, 0xff, 0xff, 0xff, 0xcd, 0x93, 0xab, 0xf9,
+    0xff, 0xff, 0xff, 0x5b, 0x70, 0x0, 0x0, 0x0,
+    0xf4, 0xd3, 0xff, 0xff, 0xbd, 0xe4, 0x0, 0x46,
+    0x3f, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0, 0x0,
+    0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef, 0xfe, 0x0,
+    0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+    0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcd,
+    0xf2, 0xf8, 0xa3, 0xff, 0xff, 0xff, 0x71, 0xdc,
+    0xa, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+    0xfe, 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff,
+    0xcb, 0xee, 0x0, 0x94, 0x73, 0xff, 0xff, 0xff,
+    0x29, 0x2a, 0x0, 0xfe, 0xfb, 0xff, 0xff, 0x91,
+    0xb8, 0x0, 0x0, 0x0, 0xf2, 0xd1, 0xff, 0xff,
+    0xc1, 0xe8, 0x0, 0x3e, 0x39, 0xff, 0xff, 0xff,
+    0x6f, 0x8c, 0x0, 0x0, 0x0, 0xba, 0x6f, 0xff,
+    0xff, 0xff, 0xcd, 0x89, 0x9d, 0xf3, 0xff, 0xff,
+    0xe1, 0x9, 0x3a, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xa, 0xfc, 0xbb, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xfb, 0xe5, 0xff, 0xff, 0xd7, 0xfc, 0x8,
+    0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xe3, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xf6, 0x14,
+    0x0, 0x0, 0x0, 0x54, 0xb, 0xcb, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xf, 0x58,
+    0x0, 0x0, 0x76, 0x27, 0xeb, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xe9, 0xfd, 0xff, 0xff, 0x57, 0x6a,
+    0x0, 0x0, 0x0, 0x28, 0xfa, 0x91, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x64,
+    0x0, 0x0, 0x0, 0x0, 0xf4, 0xd3, 0xff, 0xff,
+    0xbd, 0xe4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x72,
+    0x23, 0xe9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
+    0xff, 0xff, 0xff, 0x5b, 0x6e, 0x0, 0x0, 0x0,
+    0xf4, 0xd3, 0xff, 0xff, 0xbd, 0xe4, 0x0, 0x46,
+    0x3f, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0, 0x0,
+    0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef, 0xfe, 0x0,
+    0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+    0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcd,
+    0xf0, 0x70, 0x19, 0xe9, 0xff, 0xff, 0xed, 0x21,
+    0x80, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+    0xfe, 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff,
+    0xcb, 0xee, 0x0, 0x94, 0x73, 0xff, 0xff, 0xff,
+    0x29, 0x2a, 0x0, 0xfe, 0xfb, 0xff, 0xff, 0x91,
+    0xb8, 0x0, 0x0, 0x0, 0xf2, 0xd1, 0xff, 0xff,
+    0xc1, 0xe8, 0x0, 0x3e, 0x39, 0xff, 0xff, 0xff,
+    0x6f, 0x8c, 0x0, 0x0, 0x0, 0x3c, 0xfe, 0xad,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3,
+    0x4b, 0xc2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0xf4, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+    0xfe, 0xfe, 0xfe, 0xfe, 0x8c, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x8a, 0x1d, 0xb9, 0xff, 0xff, 0xff,
+    0xe9, 0x67, 0x8b, 0xff, 0xff, 0xfd, 0x1f, 0x8,
+    0x0, 0x0, 0xce, 0xc3, 0xff, 0xff, 0x77, 0x97,
+    0xf9, 0xff, 0xff, 0xf5, 0x99, 0x5, 0x66, 0x0,
+    0x0, 0x0, 0x0, 0x2, 0x9a, 0x11, 0x9d, 0xf1,
+    0xff, 0xff, 0xff, 0xf3, 0x9d, 0x13, 0xa2, 0x4,
+    0x0, 0x0, 0xc, 0xd0, 0x3d, 0xcd, 0xff, 0xff,
+    0xff, 0xd9, 0x3f, 0xe3, 0xff, 0xff, 0x57, 0x4c,
+    0x0, 0x0, 0x0, 0x0, 0x58, 0xfe, 0x6d, 0xdb,
+    0xff, 0xff, 0xff, 0xff, 0xeb, 0xa1, 0x23, 0x58,
+    0x0, 0x0, 0x0, 0x0, 0xe0, 0xd3, 0xff, 0xff,
+    0xbd, 0xc8, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc,
+    0xce, 0x39, 0xcb, 0xff, 0xff, 0xff, 0xdf, 0x81,
+    0xff, 0xff, 0xff, 0x59, 0x64, 0x0, 0x0, 0x0,
+    0xe0, 0xd3, 0xff, 0xff, 0xbd, 0xc8, 0x0, 0x30,
+    0x3f, 0xff, 0xff, 0xff, 0x67, 0x60, 0x0, 0x0,
+    0x0, 0xa4, 0x9f, 0xff, 0xff, 0xef, 0xf6, 0x0,
+    0x0, 0x0, 0xb2, 0x89, 0xff, 0xff, 0xff, 0xfe,
+    0x0, 0x0, 0x0, 0xce, 0xc3, 0xff, 0xff, 0xcd,
+    0xd8, 0x6, 0xd4, 0x6d, 0xff, 0xff, 0xff, 0xb1,
+    0x80, 0x0, 0x0, 0xa4, 0x9f, 0xff, 0xff, 0xef,
+    0xf6, 0x0, 0x0, 0x0, 0xce, 0xc3, 0xff, 0xff,
+    0xcb, 0xd6, 0x0, 0x70, 0x73, 0xff, 0xff, 0xff,
+    0x29, 0x1c, 0x0, 0xfe, 0xfb, 0xff, 0xff, 0x91,
+    0x94, 0x0, 0x0, 0x0, 0xdc, 0xd1, 0xff, 0xff,
+    0xc1, 0xcc, 0x0, 0x2a, 0x39, 0xff, 0xff, 0xff,
+    0x6f, 0x68, 0x0, 0x0, 0x0, 0x0, 0x76, 0xfe,
+    0x83, 0xe5, 0xff, 0xff, 0xff, 0xfb, 0xc1, 0x3f,
+    0xe0, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0xfe, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xc1, 0xcc, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x8, 0x88, 0xfa, 0x25, 0x53, 0x45,
+    0x9, 0xe0, 0xfe, 0xfe, 0xfe, 0xfe, 0xf2, 0x8,
+    0x0, 0x0, 0x90, 0xfe, 0xfe, 0xfe, 0xfe, 0xf4,
+    0x1d, 0x4f, 0x49, 0x11, 0xea, 0x60, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x4, 0x66, 0xe4, 0x5,
+    0x3f, 0x55, 0x45, 0xb, 0xe8, 0x68, 0x4, 0x0,
+    0x0, 0x0, 0x0, 0x18, 0xa4, 0xfc, 0x2d, 0x53,
+    0x3d, 0xfe, 0xec, 0xfe, 0xfe, 0xfe, 0xfe, 0x2a,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x3a, 0xc2, 0xfe,
+    0x2d, 0x51, 0x51, 0x31, 0xfe, 0xe2, 0x70, 0xc,
+    0x0, 0x0, 0x0, 0x0, 0xa6, 0xfe, 0xfe, 0xfe,
+    0xfe, 0x88, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x1e, 0xa6, 0xfc, 0x2d, 0x53, 0x41, 0xfe, 0x73,
+    0xff, 0xff, 0xff, 0x43, 0x42, 0x0, 0x0, 0x0,
+    0xa6, 0xfe, 0xfe, 0xfe, 0xfe, 0x88, 0x0, 0x1a,
+    0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x36, 0x0, 0x0,
+    0x0, 0x68, 0xfe, 0xfe, 0xfe, 0xfe, 0xd2, 0x0,
+    0x0, 0x0, 0xc2, 0x8d, 0xff, 0xff, 0xff, 0xfe,
+    0x0, 0x0, 0x0, 0x90, 0xfe, 0xfe, 0xfe, 0xfe,
+    0x9c, 0x0, 0x3a, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+    0x7c, 0x0, 0x0, 0x68, 0xfe, 0xfe, 0xfe, 0xfe,
+    0xd2, 0x0, 0x0, 0x0, 0x90, 0xfe, 0xfe, 0xfe,
+    0xfe, 0x98, 0x0, 0x40, 0xfe, 0xfe, 0xfe, 0xfe,
+    0xfe, 0xe, 0x0, 0xec, 0xfe, 0xfe, 0xfe, 0xfe,
+    0x5a, 0x0, 0x0, 0x0, 0xa2, 0xfe, 0xfe, 0xfe,
+    0xfe, 0x8c, 0x0, 0x16, 0xfe, 0xfe, 0xfe, 0xfe,
+    0xfe, 0x3c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4c,
+    0xd4, 0xfe, 0x35, 0x53, 0x49, 0x1b, 0xf8, 0x98,
+    0x1a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0xfe, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xc1, 0xda, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0xc, 0x30, 0x48, 0x40,
+    0x1e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8,
+    0x2c, 0x46, 0x42, 0x24, 0x4, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1a,
+    0x3e, 0x54, 0x42, 0x1e, 0x2, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x34, 0x48,
+    0x3c, 0x1a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10,
+    0x32, 0x50, 0x52, 0x36, 0x12, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x5a, 0x21, 0x15, 0xf6, 0xde, 0xe8, 0xb, 0xcf,
+    0xff, 0xff, 0xf3, 0xb, 0x1e, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x7a, 0xbe, 0xfe, 0xb1, 0xff, 0xff, 0xef, 0xfe,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x14, 0x38, 0x50, 0x48, 0x26, 0x8, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0xf8, 0xa7, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9,
+    0xa9, 0xa9, 0xa9, 0x7f, 0xac, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0xba, 0x8d, 0xf3, 0xb9, 0x9b, 0x9d, 0xdb, 0xff,
+    0xff, 0xff, 0xa1, 0xea, 0x2, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc,
+    0x5, 0xb1, 0xb9, 0xfd, 0xff, 0xff, 0xbf, 0xee,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x70, 0xb0, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4,
+    0xd4, 0xd4, 0xc8, 0x9a, 0x48, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0xc2, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xcd, 0x13, 0x6c, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20,
+    0x23, 0xff, 0xff, 0xff, 0xff, 0xf9, 0x4d, 0x9a,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0xa4, 0x55, 0xb1, 0xef, 0xff, 0xff, 0xfd, 0xdb,
+    0x89, 0xb, 0x9e, 0x4, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20,
+    0x37, 0xff, 0xff, 0xff, 0xd5, 0x57, 0xf0, 0x22,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x28, 0x90, 0xea, 0xfe, 0x21, 0x2d, 0x11, 0xfc,
+    0xc8, 0x52, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16,
+    0xfa, 0x1b, 0x35, 0x1b, 0xfc, 0xb4, 0x2a, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0xa, 0x1a, 0x1c, 0x14, 0x4,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x8, 0x1a, 0x22, 0x1a, 0x8, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x26,
+    0x86, 0x86, 0x72, 0x2, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x76,
+    0x84, 0x80, 0x1e, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x7a, 0xfe,
+    0x51, 0xa9, 0xd, 0x3a, 0x0, 0x0, 0x0, 0xa,
+    0x16, 0x16, 0xc, 0x0, 0x0, 0x0, 0x4e, 0x1f,
+    0xa7, 0x45, 0xfa, 0x68, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x62, 0xb, 0xb1,
+    0xff, 0xff, 0x69, 0x4e, 0x0, 0x0, 0x0, 0xec,
+    0x21, 0x23, 0x5, 0x10, 0x0, 0x0, 0x64, 0x7d,
+    0xff, 0xff, 0x9f, 0xfe, 0x4c, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0xaa,
+    0xe2, 0xf6, 0xe8, 0xbc, 0x3a, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x6, 0xe6, 0x99, 0xff,
+    0xff, 0xd9, 0x3f, 0x4c, 0x0, 0x0, 0x0, 0xfe,
+    0xfb, 0xff, 0x2f, 0x20, 0x0, 0x0, 0x60, 0x49,
+    0xe1, 0xff, 0xff, 0x83, 0xd4, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0xb,
+    0xd7, 0xd7, 0xd7, 0x6d, 0x76, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x2c, 0x17, 0xf1, 0xff,
+    0xff, 0x37, 0xba, 0x1a, 0x0, 0x0, 0x0, 0xfe,
+    0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x20, 0xca,
+    0x4f, 0xff, 0xff, 0xe7, 0x9, 0x16, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6, 0xd,
+    0xff, 0xff, 0xff, 0x83, 0x9e, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x60, 0x53, 0xff, 0xff,
+    0xdd, 0xfe, 0x16, 0x0, 0x0, 0x0, 0x0, 0xfe,
+    0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x24,
+    0xfe, 0xed, 0xff, 0xff, 0x39, 0x40, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x5e, 0xb8, 0xe0, 0xdc, 0xb6, 0xb6, 0xea,
+    0xf8, 0xf8, 0xe0, 0x88, 0x16, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x48, 0xbc, 0xf0, 0xfa,
+    0xf6, 0xd0, 0xa6, 0xc4, 0xe4, 0xd2, 0x9a, 0x16,
+    0x0, 0x0, 0x0, 0x5e, 0xb8, 0xe0, 0xdc, 0xb8,
+    0xbc, 0xec, 0xf0, 0xda, 0x46, 0x0, 0x0, 0x0,
+    0x4, 0x54, 0xbe, 0xf0, 0xfa, 0xfc, 0xf6, 0xd6,
+    0x80, 0x1a, 0x0, 0x0, 0x0, 0x64, 0xbc, 0xd,
+    0xff, 0xff, 0xff, 0x83, 0xf4, 0xb2, 0x4e, 0x0,
+    0x0, 0x6a, 0xbe, 0xe2, 0xde, 0xb6, 0x56, 0x0,
+    0x10, 0x98, 0xd2, 0xea, 0xd6, 0xa0, 0x24, 0x0,
+    0x0, 0x5e, 0xba, 0xe0, 0xe6, 0xc4, 0x78, 0x0,
+    0x0, 0x4e, 0xb2, 0xdc, 0xe8, 0xca, 0x86, 0x0,
+    0x4c, 0xb2, 0xdc, 0xde, 0xb4, 0x52, 0x0, 0x38,
+    0xa8, 0xd8, 0xd0, 0x92, 0x6, 0x2, 0x8e, 0xce,
+    0xea, 0xd4, 0x9a, 0x18, 0x0, 0x3a, 0xaa, 0xda,
+    0xea, 0xd8, 0xa4, 0x2e, 0xa, 0x92, 0xd0, 0xea,
+    0xe2, 0xbe, 0x68, 0x0, 0x72, 0xc2, 0xe4, 0xe4,
+    0xc2, 0x74, 0x0, 0x0, 0x4e, 0xb2, 0xde, 0xea,
+    0xd0, 0x94, 0xa, 0x0, 0x86, 0xca, 0xe8, 0xea,
+    0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xd4, 0x9c,
+    0x1c, 0x0, 0x0, 0x0, 0x88, 0x73, 0xff, 0xff,
+    0xcb, 0xf2, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+    0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x0,
+    0xfa, 0xdb, 0xff, 0xff, 0x5d, 0x68, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xb8, 0x95, 0xc3, 0xc3, 0x75, 0x49, 0xc3,
+    0xeb, 0xe3, 0xb3, 0x39, 0xe2, 0x20, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x7a, 0xfe, 0x7d, 0xd1, 0xeb,
+    0xdf, 0x93, 0xb, 0xad, 0xc3, 0xc3, 0x37, 0x32,
+    0x0, 0x0, 0x0, 0xb8, 0x95, 0xc3, 0xc3, 0x79,
+    0x43, 0xc9, 0xeb, 0x7b, 0x74, 0x0, 0x0, 0xc,
+    0xb2, 0x11, 0x89, 0xcf, 0xe9, 0xed, 0xd9, 0xa9,
+    0x3f, 0xf2, 0x40, 0x0, 0x0, 0xc4, 0x9d, 0xc5,
+    0xff, 0xff, 0xff, 0xdb, 0xc3, 0x83, 0xa0, 0x0,
+    0x0, 0xca, 0xa1, 0xc3, 0xc3, 0x8d, 0xae, 0x0,
+    0x28, 0x2f, 0xc3, 0xc3, 0xc3, 0x4f, 0x52, 0x0,
+    0x0, 0x90, 0x97, 0xc3, 0xc3, 0xaf, 0xfc, 0xe,
+    0x0, 0xc6, 0x83, 0xc3, 0xc3, 0xbb, 0xb, 0x0,
+    0x7c, 0x83, 0xc3, 0xc3, 0x89, 0xc6, 0x0, 0xa6,
+    0x6b, 0xc3, 0xc3, 0x17, 0x3c, 0x22, 0xb, 0xc1,
+    0xc3, 0xc3, 0x3f, 0x1c, 0x0, 0x40, 0x73, 0xc3,
+    0xc3, 0xc3, 0x5b, 0xb0, 0x64, 0x21, 0xc1, 0xc3,
+    0xc3, 0xa1, 0x84, 0x0, 0xaa, 0xa9, 0xc3, 0xc3,
+    0xab, 0xfc, 0x10, 0x0, 0xd0, 0x85, 0xc3, 0xc3,
+    0xc3, 0x27, 0xa, 0x0, 0xee, 0xbb, 0xc3, 0xc3,
+    0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x41,
+    0x40, 0x0, 0x0, 0x0, 0x98, 0x7b, 0xff, 0xff,
+    0xc7, 0xee, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+    0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x0,
+    0xf6, 0xd7, 0xff, 0xff, 0x67, 0x7c, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xe0, 0xc3, 0xff, 0xff, 0xcf, 0xf7, 0xff,
+    0xff, 0xff, 0xff, 0xf3, 0x49, 0xba, 0x0, 0x0,
+    0x0, 0x0, 0x38, 0xfe, 0xb1, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xbb, 0xfb, 0xff, 0xff, 0x49, 0x4c,
+    0x0, 0x0, 0x0, 0xe0, 0xc3, 0xff, 0xff, 0xb9,
+    0xeb, 0xff, 0xff, 0x75, 0x8c, 0x0, 0x0, 0x7c,
+    0x23, 0xd9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xfb, 0x73, 0xec, 0x10, 0x0, 0xdc, 0xcd, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xad, 0xbe, 0x0,
+    0x0, 0xec, 0xd3, 0xff, 0xff, 0xbb, 0xd8, 0x0,
+    0x3e, 0x3f, 0xff, 0xff, 0xff, 0x67, 0x76, 0x0,
+    0x0, 0x98, 0x87, 0xff, 0xff, 0xff, 0x2b, 0x4e,
+    0xc, 0xfc, 0xd9, 0xff, 0xff, 0xc1, 0xd6, 0x0,
+    0x86, 0x7b, 0xff, 0xff, 0xd7, 0xfa, 0x6, 0xf4,
+    0xc1, 0xff, 0xff, 0x69, 0x96, 0x64, 0x4b, 0xff,
+    0xff, 0xf7, 0xf, 0x1c, 0x0, 0x40, 0x1d, 0xeb,
+    0xff, 0xff, 0xcf, 0xfe, 0xe8, 0x97, 0xff, 0xff,
+    0xff, 0x5d, 0x84, 0x0, 0xb4, 0x9f, 0xff, 0xff,
+    0xff, 0x2d, 0x54, 0x1a, 0xfe, 0xe3, 0xff, 0xff,
+    0xd7, 0xe6, 0xa, 0x0, 0xfc, 0xf5, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x57,
+    0x4c, 0x0, 0x0, 0x0, 0xa2, 0x7b, 0xff, 0xff,
+    0xc7, 0xea, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+    0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x0,
+    0xf4, 0xd7, 0xff, 0xff, 0x67, 0x86, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xea, 0xc3, 0xff, 0xff, 0xff, 0xfd, 0xd9,
+    0xe5, 0xff, 0xff, 0xff, 0xdb, 0x5, 0x2e, 0x0,
+    0x0, 0x0, 0xb0, 0x6b, 0xff, 0xff, 0xff, 0xf7,
+    0xcf, 0xe9, 0xff, 0xff, 0xff, 0xff, 0x49, 0x54,
+    0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0x57, 0x64, 0x0, 0x0, 0xe2,
+    0xad, 0xff, 0xff, 0xf7, 0xa7, 0x9b, 0xe5, 0xff,
+    0xff, 0xf7, 0x2f, 0x54, 0x0, 0xc6, 0xa1, 0xcb,
+    0xff, 0xff, 0xff, 0xdf, 0xcb, 0x89, 0xa2, 0x0,
+    0x0, 0xf4, 0xd3, 0xff, 0xff, 0xbb, 0xe2, 0x0,
+    0x46, 0x3f, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0,
+    0x0, 0x5a, 0x2d, 0xfd, 0xff, 0xff, 0x79, 0xa6,
+    0x48, 0x25, 0xff, 0xff, 0xff, 0x75, 0xaa, 0x0,
+    0x52, 0x31, 0xff, 0xff, 0xf9, 0xf, 0x50, 0xd,
+    0xf5, 0xff, 0xff, 0xad, 0xe6, 0xaa, 0x81, 0xff,
+    0xff, 0xcb, 0xf8, 0x4, 0x0, 0x8, 0xd8, 0x73,
+    0xff, 0xff, 0xff, 0x55, 0x19, 0xf1, 0xff, 0xff,
+    0xb9, 0xfe, 0x2e, 0x0, 0x78, 0x45, 0xff, 0xff,
+    0xff, 0x7d, 0xb0, 0x68, 0x3f, 0xff, 0xff, 0xff,
+    0x8b, 0xca, 0x0, 0x0, 0xf8, 0xef, 0xfb, 0xfb,
+    0xfb, 0xfb, 0xfb, 0xff, 0xff, 0xff, 0xf3, 0x2d,
+    0x38, 0x0, 0x0, 0x0, 0xc2, 0x87, 0xff, 0xff,
+    0xbd, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+    0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x0,
+    0xec, 0xcd, 0xff, 0xff, 0x73, 0xaa, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x48, 0xa6, 0xd0, 0xd0,
+    0x9e, 0x42, 0x2, 0x0, 0x2, 0x18, 0x1a, 0x18,
+    0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xea, 0xc3, 0xff, 0xff, 0xf3, 0x49, 0xfe,
+    0xfe, 0xa5, 0xff, 0xff, 0xff, 0x5d, 0x82, 0x0,
+    0x0, 0x4, 0xf8, 0xcb, 0xff, 0xff, 0xef, 0x33,
+    0xfc, 0x9, 0xaf, 0xff, 0xff, 0xff, 0x49, 0x54,
+    0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xff,
+    0xbb, 0x77, 0x75, 0x1d, 0x30, 0x0, 0x0, 0xf8,
+    0xe9, 0xff, 0xff, 0x8f, 0xfc, 0xea, 0x39, 0xff,
+    0xff, 0xff, 0x7d, 0x5c, 0x0, 0x6a, 0xc4, 0xd,
+    0xff, 0xff, 0xff, 0x83, 0xf4, 0xb8, 0x52, 0x0,
+    0x0, 0xf4, 0xd3, 0xff, 0xff, 0xbb, 0xe2, 0x0,
+    0x46, 0x3f, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0,
+    0x0, 0x10, 0xfc, 0xcd, 0xff, 0xff, 0xb5, 0xea,
+    0x9c, 0x73, 0xff, 0xff, 0xf7, 0x19, 0x44, 0x0,
+    0x12, 0xfe, 0xe3, 0xff, 0xff, 0x4d, 0xb8, 0x5f,
+    0xff, 0xff, 0xff, 0xe7, 0xfe, 0xe2, 0xad, 0xff,
+    0xff, 0x93, 0xc8, 0x0, 0x0, 0x0, 0x3e, 0xfe,
+    0xc9, 0xff, 0xff, 0xc3, 0x8d, 0xff, 0xff, 0xf3,
+    0x2d, 0x8a, 0x0, 0x0, 0x1e, 0xfe, 0xdb, 0xff,
+    0xff, 0xbf, 0xf4, 0xc6, 0x8f, 0xff, 0xff, 0xfd,
+    0x2d, 0x60, 0x0, 0x0, 0xd2, 0xfc, 0xfe, 0xfe,
+    0xfe, 0xfe, 0x97, 0xff, 0xff, 0xff, 0x6d, 0xe4,
+    0x10, 0x0, 0x26, 0x98, 0xfe, 0xbb, 0xff, 0xff,
+    0x95, 0xb8, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+    0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x0,
+    0xce, 0xa7, 0xff, 0xff, 0xa9, 0xfc, 0x8c, 0x1e,
+    0x0, 0x0, 0x0, 0x86, 0x9, 0x7d, 0xb7, 0xb1,
+    0x77, 0xb, 0xbc, 0x1c, 0x26, 0xd, 0x39, 0xb,
+    0xf2, 0x2e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xfa, 0x20,
+    0x74, 0x23, 0xfb, 0xff, 0xff, 0x9f, 0xc6, 0x0,
+    0x0, 0x1e, 0xf, 0xfb, 0xff, 0xff, 0xa5, 0xec,
+    0x14, 0xa6, 0x5f, 0xff, 0xff, 0xff, 0x49, 0x54,
+    0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xd9,
+    0xfe, 0xba, 0x74, 0x46, 0x8, 0x0, 0x0, 0xf8,
+    0xeb, 0xff, 0xff, 0xb3, 0x5, 0xea, 0xfe, 0x41,
+    0x43, 0x43, 0x25, 0x50, 0x0, 0x0, 0x6, 0xd,
+    0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0, 0x0,
+    0x0, 0xf4, 0xd3, 0xff, 0xff, 0xbb, 0xe2, 0x0,
+    0x46, 0x3f, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0,
+    0x0, 0x0, 0xbc, 0x83, 0xff, 0xff, 0xe9, 0xfe,
+    0xe6, 0xaf, 0xff, 0xff, 0xbd, 0xf6, 0x6, 0x0,
+    0x0, 0xe6, 0xb1, 0xff, 0xff, 0x83, 0xf4, 0xa5,
+    0xff, 0xff, 0xff, 0xff, 0x41, 0xfc, 0xd7, 0xff,
+    0xff, 0x55, 0x76, 0x0, 0x0, 0x0, 0x0, 0xa2,
+    0x3d, 0xf9, 0xff, 0xff, 0xf1, 0xff, 0xff, 0x89,
+    0xe8, 0x10, 0x0, 0x0, 0x0, 0xd0, 0x91, 0xff,
+    0xff, 0xf5, 0xd, 0xfc, 0xcf, 0xff, 0xff, 0xcb,
+    0xfc, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10,
+    0xda, 0x5d, 0xfd, 0xff, 0xff, 0xa7, 0xfe, 0x3a,
+    0x0, 0x0, 0x70, 0x51, 0xbb, 0xff, 0xff, 0xef,
+    0x2d, 0x68, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+    0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x0,
+    0x7e, 0x3d, 0xf5, 0xff, 0xff, 0xb3, 0x45, 0x5a,
+    0x0, 0x0, 0x30, 0xfe, 0xbb, 0xff, 0xff, 0xff,
+    0xff, 0xdd, 0x43, 0xee, 0xca, 0x4f, 0xff, 0xfb,
+    0x5b, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xee, 0x0,
+    0xc, 0xfc, 0xd7, 0xff, 0xff, 0xbf, 0xe4, 0x0,
+    0x0, 0x40, 0x41, 0xff, 0xff, 0xff, 0x6f, 0xa2,
+    0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x49, 0x54,
+    0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb,
+    0xf2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe2,
+    0xad, 0xff, 0xff, 0xff, 0xe7, 0xb1, 0x7b, 0x2d,
+    0xfc, 0xac, 0x38, 0xc, 0x0, 0x0, 0x6, 0xd,
+    0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0, 0x0,
+    0x0, 0xf4, 0xd3, 0xff, 0xff, 0xbb, 0xe2, 0x0,
+    0x46, 0x3f, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0,
+    0x0, 0x0, 0x56, 0x27, 0xfb, 0xff, 0xff, 0x41,
+    0xfe, 0xe3, 0xff, 0xff, 0x6f, 0xa4, 0x0, 0x0,
+    0x0, 0xa2, 0x77, 0xff, 0xff, 0xb1, 0xfe, 0xdf,
+    0xff, 0xd1, 0xff, 0xff, 0x8d, 0xf, 0xf9, 0xff,
+    0xf5, 0xb, 0x28, 0x0, 0x0, 0x0, 0x0, 0x1a,
+    0xf4, 0x9b, 0xff, 0xff, 0xff, 0xff, 0xd9, 0x9,
+    0x52, 0x0, 0x0, 0x0, 0x0, 0x64, 0x31, 0xff,
+    0xff, 0xff, 0x5f, 0x21, 0xfb, 0xff, 0xff, 0x7f,
+    0xba, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa2,
+    0x2d, 0xed, 0xff, 0xff, 0xd5, 0xf, 0x72, 0x0,
+    0x0, 0x0, 0x9e, 0x8d, 0xff, 0xff, 0xeb, 0x43,
+    0xea, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+    0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x0,
+    0x1a, 0xf2, 0x4d, 0xed, 0xff, 0xff, 0x7b, 0x84,
+    0x0, 0x0, 0x92, 0x5f, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xf5, 0x85, 0x4d, 0xcb, 0xff, 0xff,
+    0x39, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xee, 0x0,
+    0x0, 0xf0, 0xc5, 0xff, 0xff, 0xcd, 0xec, 0x0,
+    0x0, 0x58, 0x51, 0xff, 0xff, 0xff, 0x59, 0x7a,
+    0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x49, 0x54,
+    0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb,
+    0xee, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x78,
+    0x19, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd,
+    0xbf, 0x33, 0xcc, 0x8, 0x0, 0x0, 0x6, 0xd,
+    0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0, 0x0,
+    0x0, 0xf4, 0xd3, 0xff, 0xff, 0xbb, 0xe2, 0x0,
+    0x46, 0x3f, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0,
+    0x0, 0x0, 0xc, 0xfa, 0xc9, 0xff, 0xff, 0x89,
+    0x35, 0xff, 0xff, 0xf5, 0x13, 0x3e, 0x0, 0x0,
+    0x0, 0x4e, 0x2d, 0xff, 0xff, 0xd9, 0x35, 0xff,
+    0xff, 0x7d, 0xd5, 0xff, 0xcb, 0x4f, 0xff, 0xff,
+    0xc7, 0xf6, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x94, 0x17, 0xf7, 0xff, 0xff, 0xff, 0x6b, 0xe4,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x12, 0xfc, 0xcf,
+    0xff, 0xff, 0xa5, 0x75, 0xff, 0xff, 0xf9, 0x21,
+    0x50, 0x0, 0x0, 0x0, 0x0, 0x0, 0x64, 0x9,
+    0xcd, 0xff, 0xff, 0xf3, 0x37, 0xb0, 0x4, 0x0,
+    0x0, 0x0, 0x8c, 0x89, 0xff, 0xff, 0xff, 0xa7,
+    0xfe, 0x34, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+    0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x0,
+    0x46, 0x5, 0xb5, 0xff, 0xff, 0xff, 0x77, 0x74,
+    0x0, 0x0, 0xc4, 0xaf, 0xff, 0xf9, 0x5d, 0x41,
+    0xb3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd3,
+    0xfe, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xee, 0x0,
+    0x0, 0xf4, 0xcb, 0xff, 0xff, 0xcb, 0xec, 0x0,
+    0x0, 0x52, 0x4f, 0xff, 0xff, 0xff, 0x5d, 0x82,
+    0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x49, 0x54,
+    0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb,
+    0xee, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc,
+    0x92, 0xfe, 0x4d, 0xa3, 0xd9, 0xff, 0xff, 0xff,
+    0xff, 0xe9, 0x1f, 0x4c, 0x0, 0x0, 0x6, 0xd,
+    0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0, 0x0,
+    0x0, 0xf2, 0xd3, 0xff, 0xff, 0xbb, 0xe6, 0x0,
+    0x46, 0x3f, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0,
+    0x0, 0x0, 0x0, 0xb6, 0x7d, 0xff, 0xff, 0xc3,
+    0x7f, 0xff, 0xff, 0xb9, 0xf2, 0x4, 0x0, 0x0,
+    0x0, 0x10, 0xfe, 0xe1, 0xff, 0xfb, 0x8b, 0xff,
+    0xff, 0x29, 0x95, 0xff, 0xfb, 0x8d, 0xff, 0xff,
+    0x8f, 0xc2, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe,
+    0xe6, 0x83, 0xff, 0xff, 0xff, 0xff, 0xc5, 0xfe,
+    0x3c, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbe, 0x81,
+    0xff, 0xff, 0xe1, 0xb9, 0xff, 0xff, 0xbf, 0xf8,
+    0xa, 0x0, 0x0, 0x0, 0x0, 0x30, 0xfa, 0x9b,
+    0xff, 0xff, 0xff, 0x6d, 0xe4, 0x16, 0x0, 0x0,
+    0x0, 0x0, 0x52, 0xfe, 0x43, 0xeb, 0xff, 0xff,
+    0x67, 0x94, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+    0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x0,
+    0xac, 0x7b, 0xff, 0xff, 0xdf, 0x37, 0xfe, 0x42,
+    0x0, 0x0, 0xb6, 0xab, 0xef, 0xc1, 0xf8, 0x9e,
+    0xfe, 0x7d, 0xf7, 0xff, 0xff, 0xff, 0xef, 0x43,
+    0xae, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xf2, 0x0,
+    0x2a, 0xfe, 0xe3, 0xff, 0xff, 0xb7, 0xde, 0x0,
+    0x0, 0x34, 0x33, 0xff, 0xff, 0xff, 0x7d, 0xc4,
+    0x0, 0x82, 0x5f, 0xff, 0xff, 0xff, 0x49, 0x54,
+    0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb,
+    0xee, 0x0, 0x0, 0x0, 0x0, 0x0, 0x32, 0x9,
+    0x15, 0x15, 0x13, 0xfc, 0xfe, 0x27, 0x9f, 0xff,
+    0xff, 0xff, 0x7b, 0x8c, 0x0, 0x0, 0x4, 0xd,
+    0xff, 0xff, 0xff, 0x83, 0xac, 0x0, 0x0, 0x0,
+    0x0, 0xee, 0xcf, 0xff, 0xff, 0xc3, 0xf2, 0x0,
+    0x56, 0x3f, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0,
+    0x0, 0x0, 0x0, 0x50, 0x21, 0xfb, 0xff, 0xf3,
+    0xb7, 0xff, 0xff, 0x6b, 0xa0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0xe2, 0xad, 0xff, 0xff, 0xe9, 0xff,
+    0xd3, 0xfe, 0x47, 0xff, 0xff, 0xe9, 0xff, 0xff,
+    0x4f, 0x6e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x88,
+    0x29, 0xf3, 0xff, 0xff, 0xfb, 0xff, 0xff, 0x71,
+    0xd8, 0x8, 0x0, 0x0, 0x0, 0x0, 0x54, 0x23,
+    0xfb, 0xff, 0xff, 0xf3, 0xff, 0xff, 0x71, 0xa8,
+    0x0, 0x0, 0x0, 0x0, 0x10, 0xdc, 0x61, 0xff,
+    0xff, 0xff, 0xa7, 0xfc, 0x3a, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x1c, 0xea, 0x99, 0xff, 0xff,
+    0xb1, 0xd2, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+    0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x0,
+    0xe2, 0xc1, 0xff, 0xff, 0x85, 0xdc, 0x16, 0x0,
+    0x0, 0x0, 0x74, 0xe6, 0xf4, 0x9, 0x8c, 0x0,
+    0x48, 0xea, 0x2b, 0x87, 0xa3, 0x8d, 0x29, 0xda,
+    0x1c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xea, 0xc3, 0xff, 0xff, 0xdb, 0x5, 0xd8,
+    0xf2, 0x59, 0xff, 0xff, 0xff, 0x8b, 0xb0, 0x0,
+    0x0, 0x14, 0xfe, 0xef, 0xff, 0xff, 0xcb, 0x5,
+    0xd6, 0xf8, 0x77, 0xff, 0xff, 0xff, 0x49, 0x54,
+    0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb,
+    0xee, 0x0, 0x0, 0x0, 0x0, 0x0, 0x38, 0x63,
+    0xff, 0xff, 0xfb, 0x17, 0xae, 0xb4, 0xfe, 0xeb,
+    0xff, 0xff, 0x91, 0xa0, 0x0, 0x0, 0x2, 0x5,
+    0xff, 0xff, 0xff, 0x8d, 0xf2, 0x80, 0x30, 0x0,
+    0x0, 0xe0, 0xbb, 0xff, 0xff, 0xe9, 0x9, 0xda,
+    0xf6, 0x5b, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0,
+    0x0, 0x0, 0x0, 0xa, 0xfa, 0xc5, 0xff, 0xff,
+    0xf3, 0xff, 0xf3, 0xf, 0x3a, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x9c, 0x73, 0xff, 0xff, 0xff, 0xff,
+    0x93, 0xd2, 0xfe, 0xe7, 0xff, 0xff, 0xff, 0xf3,
+    0x9, 0x24, 0x0, 0x0, 0x0, 0x0, 0x2e, 0xfe,
+    0xb7, 0xff, 0xff, 0xdd, 0x99, 0xff, 0xff, 0xeb,
+    0x1d, 0x74, 0x0, 0x0, 0x0, 0x0, 0xc, 0xf8,
+    0xc1, 0xff, 0xff, 0xff, 0xff, 0xf3, 0x13, 0x40,
+    0x0, 0x0, 0x0, 0x2, 0xa6, 0x2f, 0xef, 0xff,
+    0xff, 0xd5, 0xf, 0xee, 0xe0, 0xe0, 0xcc, 0x9a,
+    0x32, 0x0, 0x0, 0x0, 0xac, 0x7d, 0xff, 0xff,
+    0xc5, 0xe6, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+    0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x0,
+    0xf2, 0xd5, 0xff, 0xff, 0x69, 0x92, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xe, 0x5a, 0x9e, 0xba, 0xa2, 0x5e, 0xe,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xea, 0xc3, 0xff, 0xff, 0xff, 0xcf, 0x8b,
+    0x9f, 0xf1, 0xff, 0xff, 0xfb, 0x2f, 0x5e, 0x0,
+    0x0, 0x0, 0xe6, 0xa7, 0xff, 0xff, 0xff, 0xc7,
+    0x8d, 0xa5, 0xf7, 0xff, 0xff, 0xff, 0x49, 0x54,
+    0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb,
+    0xee, 0x0, 0x0, 0x0, 0x0, 0x0, 0x38, 0x19,
+    0xf3, 0xff, 0xff, 0xc1, 0x51, 0x3f, 0x8b, 0xff,
+    0xff, 0xff, 0x67, 0x7c, 0x0, 0x0, 0x0, 0xfe,
+    0xeb, 0xff, 0xff, 0xe9, 0x99, 0x5f, 0x8c, 0x0,
+    0x0, 0xb2, 0x89, 0xff, 0xff, 0xff, 0xcb, 0x91,
+    0xa9, 0xf5, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0xb2, 0x79, 0xff, 0xff,
+    0xff, 0xff, 0xb5, 0xf0, 0x4, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x4a, 0x29, 0xff, 0xff, 0xff, 0xff,
+    0x45, 0x70, 0xe4, 0xab, 0xff, 0xff, 0xff, 0xc3,
+    0xf4, 0x0, 0x0, 0x0, 0x0, 0x4, 0xc6, 0x5d,
+    0xff, 0xff, 0xff, 0x73, 0x21, 0xf3, 0xff, 0xff,
+    0xa7, 0xf8, 0x22, 0x0, 0x0, 0x0, 0x0, 0xaa,
+    0x71, 0xff, 0xff, 0xff, 0xff, 0xb5, 0xf0, 0x4,
+    0x0, 0x0, 0x0, 0x18, 0xb, 0xcf, 0xff, 0xff,
+    0xff, 0xcd, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0x63,
+    0x74, 0x0, 0x0, 0x0, 0x9e, 0x7b, 0xff, 0xff,
+    0xc7, 0xec, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+    0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x0,
+    0xf6, 0xd7, 0xff, 0xff, 0x67, 0x82, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xea, 0xc3, 0xff, 0xff, 0xfb, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0x95, 0xf4, 0x10, 0x0,
+    0x0, 0x0, 0x76, 0x27, 0xeb, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0x49, 0x54,
+    0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb,
+    0xee, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6, 0xe4,
+    0x73, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xc7, 0x5, 0x34, 0x0, 0x0, 0x0, 0xe4,
+    0xad, 0xff, 0xff, 0xff, 0xff, 0xa9, 0xc8, 0x0,
+    0x0, 0x5a, 0x25, 0xef, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xe7, 0xf7, 0xff, 0xff, 0x67, 0x80, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x4a, 0x1d, 0xf9, 0xff,
+    0xff, 0xff, 0x65, 0x9a, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0xe, 0xfe, 0xdd, 0xff, 0xff, 0xe5,
+    0xfe, 0x1e, 0x90, 0x63, 0xff, 0xff, 0xff, 0x8b,
+    0xbc, 0x0, 0x0, 0x0, 0x0, 0x60, 0xf, 0xe1,
+    0xff, 0xff, 0xdf, 0x5, 0xf0, 0x9d, 0xff, 0xff,
+    0xfd, 0x4b, 0xb2, 0x0, 0x0, 0x0, 0x0, 0x40,
+    0x13, 0xf5, 0xff, 0xff, 0xff, 0x63, 0x98, 0x0,
+    0x0, 0x0, 0x0, 0x2c, 0x39, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x89,
+    0xa0, 0x0, 0x0, 0x0, 0x92, 0x7b, 0xff, 0xff,
+    0xc7, 0xee, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+    0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x0,
+    0xf8, 0xd7, 0xff, 0xff, 0x65, 0x74, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0x9f, 0xfb,
+    0xff, 0xff, 0xf3, 0x8f, 0xfe, 0x5e, 0x0, 0x0,
+    0x0, 0x0, 0xc, 0xd0, 0x3d, 0xcd, 0xff, 0xff,
+    0xff, 0xdd, 0x87, 0xff, 0xff, 0xff, 0x49, 0x54,
+    0x0, 0x0, 0x0, 0xce, 0xc3, 0xff, 0xff, 0xcb,
+    0xd6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40,
+    0xfa, 0x5d, 0xd5, 0xff, 0xff, 0xff, 0xff, 0xed,
+    0x99, 0x11, 0x96, 0x0, 0x0, 0x0, 0x0, 0x7a,
+    0x21, 0xbd, 0xff, 0xff, 0xff, 0xb9, 0xba, 0x0,
+    0x0, 0xc, 0xd8, 0x4b, 0xdb, 0xff, 0xff, 0xff,
+    0xcf, 0x39, 0xdb, 0xff, 0xff, 0x67, 0x60, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x8, 0xf4, 0xc1, 0xff,
+    0xff, 0xf1, 0xd, 0x36, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0xd6, 0xa9, 0xff, 0xff, 0xa7,
+    0xdc, 0x0, 0x36, 0xf, 0xf5, 0xff, 0xff, 0x49,
+    0x68, 0x0, 0x0, 0x0, 0x0, 0x60, 0x95, 0xff,
+    0xff, 0xff, 0x77, 0xc8, 0x6c, 0x25, 0xf5, 0xff,
+    0xff, 0xd5, 0x7, 0x0, 0x0, 0x0, 0x0, 0x4,
+    0xf6, 0xb3, 0xff, 0xff, 0xed, 0x9, 0x32, 0x0,
+    0x0, 0x0, 0x0, 0x2a, 0x39, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x89,
+    0x8a, 0x0, 0x0, 0x0, 0x78, 0x65, 0xff, 0xff,
+    0xd1, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+    0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x8,
+    0xfc, 0xe3, 0xff, 0xff, 0x4d, 0x56, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xfe, 0x21,
+    0x51, 0x49, 0xf, 0xe8, 0x58, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x18, 0xa4, 0xfc, 0x2d, 0x53,
+    0x3f, 0xfe, 0x5f, 0xff, 0xff, 0xff, 0x49, 0x54,
+    0x0, 0x0, 0x0, 0x90, 0xfe, 0xfe, 0xfe, 0xfe,
+    0x98, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x2e, 0xb6, 0xfe, 0x25, 0x4f, 0x55, 0x39, 0xfe,
+    0xe2, 0x64, 0x4, 0x0, 0x0, 0x0, 0x0, 0xa,
+    0x8e, 0xfe, 0x25, 0x51, 0x43, 0x5, 0x84, 0x0,
+    0x0, 0x0, 0x22, 0xbc, 0xfe, 0x39, 0x55, 0x33,
+    0xfe, 0xe4, 0xfe, 0xfe, 0xfe, 0xfe, 0x36, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x8c, 0xfe, 0xfe,
+    0xfe, 0xfe, 0xd6, 0x2, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x72, 0xfe, 0xfe, 0xfe, 0xfe,
+    0x70, 0x0, 0x4, 0xde, 0xfe, 0xfe, 0xfe, 0xfe,
+    0x20, 0x0, 0x0, 0x0, 0x0, 0x5e, 0xfe, 0xfe,
+    0xfe, 0xfe, 0xfe, 0x42, 0xc, 0xe0, 0xfe, 0xfe,
+    0xfe, 0xfe, 0xa8, 0x0, 0x0, 0x0, 0x0, 0x1a,
+    0xfc, 0xbb, 0xff, 0xff, 0xa7, 0xe8, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x16, 0xfe, 0xfe, 0xfe, 0xfe,
+    0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+    0x52, 0x0, 0x0, 0x0, 0x46, 0x39, 0xff, 0xff,
+    0xf1, 0x9, 0x4e, 0x0, 0x0, 0x0, 0x0, 0xfe,
+    0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x66,
+    0x1b, 0xfb, 0xff, 0xfd, 0x1f, 0x2a, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xee, 0x2e,
+    0x48, 0x44, 0x22, 0x4, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x34, 0x48,
+    0x3c, 0x84, 0x5f, 0xff, 0xff, 0xff, 0x49, 0x54,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0xc, 0x2e, 0x4e, 0x56, 0x3a, 0x16,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xc, 0x30, 0x46, 0x3e, 0x1c, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x16, 0x3a, 0x48, 0x38,
+    0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0xa0, 0xee,
+    0x3d, 0xfb, 0xff, 0xff, 0x51, 0x86, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x16, 0xfe, 0xcd, 0xff,
+    0xff, 0x83, 0xfc, 0x40, 0x0, 0x0, 0x0, 0xfe,
+    0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x50, 0xfe,
+    0x99, 0xff, 0xff, 0xbb, 0xfa, 0x8, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xee, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x49, 0x54,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0xa8, 0x73, 0xb5,
+    0xef, 0xff, 0xff, 0xd5, 0xfe, 0x26, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0xaa, 0x4d, 0xf7,
+    0xff, 0xff, 0x73, 0x50, 0x0, 0x0, 0x0, 0xfe,
+    0xfb, 0xff, 0x2f, 0x22, 0x0, 0x0, 0x68, 0x87,
+    0xff, 0xff, 0xef, 0x3b, 0x90, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xe6, 0xc3, 0xff, 0xff, 0xcb, 0xea, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x72, 0x5f, 0xff, 0xff, 0xff, 0x49, 0x50,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0xe2, 0xc1, 0xff,
+    0xff, 0xff, 0xfb, 0x55, 0xb6, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x24, 0xe8, 0x41,
+    0xc7, 0xfd, 0x37, 0x50, 0x0, 0x0, 0x0, 0xee,
+    0x47, 0x49, 0xd, 0x12, 0x0, 0x0, 0x68, 0x4f,
+    0xfd, 0xbd, 0x35, 0xda, 0x18, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0xc6, 0xb1, 0xe9, 0xe9, 0xb7, 0xcc, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x52, 0x57, 0xe9, 0xe9, 0xe9, 0x41, 0x38,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0xd8, 0xd7, 0xff,
+    0xff, 0xdf, 0x63, 0xf2, 0x28, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1c, 0x9e,
+    0xfa, 0x29, 0xf6, 0x16, 0x0, 0x0, 0x0, 0x1e,
+    0x3a, 0x3c, 0x22, 0x2, 0x0, 0x0, 0x24, 0xf4,
+    0x29, 0xfa, 0x92, 0x14, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x7c, 0xe2, 0xf8, 0xf8, 0xe4, 0x82, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x2a, 0xd0, 0xf4, 0xfc, 0xf4, 0xcc, 0x1c,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0xaa, 0x9, 0x2f,
+    0x17, 0xfe, 0xc6, 0x32, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0xe, 0xe, 0xe, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe,
+    0xe, 0xe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x16,
+    0x16, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+};
+const uint16_t FontBitmap::glyphWidth[] = {
+    8, 9, 10, 16, 16, 20, 18, 6,
+    10, 10, 13, 15, 8, 11, 9, 11,
+    16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 9, 9, 14, 16, 14, 14,
+    23, 17, 17, 17, 18, 16, 16, 18,
+    19, 9, 16, 18, 15, 23, 19, 19,
+    18, 19, 18, 17, 17, 18, 17, 23,
+    17, 17, 16, 9, 12, 9, 13, 13,
+    10, 15, 16, 14, 16, 15, 11, 16,
+    16, 8, 8, 15, 8, 23, 16, 16,
+    16, 16, 11, 14, 10, 16, 14, 20,
+    14, 14, 14, 10, 8, 10, 18,
+};
+const uint16_t FontBitmap::yoffset[] = {
+    0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 34, 34, 34, 34, 34,
+    34, 34, 34, 34, 34, 34, 34, 34,
+    34, 34, 68, 68, 68, 68, 68, 68,
+    68, 68, 68, 68, 68, 68, 68, 68,
+    102, 102, 102, 102, 102, 102, 102, 102,
+    102, 102, 102, 102, 102, 102, 102, 136,
+    136, 136, 136, 136, 136, 136, 136, 136,
+    136, 136, 136, 136, 136, 136, 136, 136,
+    170, 170, 170, 170, 170, 170, 170, 170,
+    170, 170, 170, 170, 170, 170, 170,
+};
diff --git a/cmds/screenrecord/FrameOutput.cpp b/cmds/screenrecord/FrameOutput.cpp
new file mode 100644
index 0000000..6c37501
--- /dev/null
+++ b/cmds/screenrecord/FrameOutput.cpp
@@ -0,0 +1,211 @@
+/*
+ * Copyright 2014 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.
+ */
+
+#define LOG_TAG "ScreenRecord"
+//#define LOG_NDEBUG 0
+#include <utils/Log.h>
+
+#include <GLES2/gl2.h>
+#include <GLES2/gl2ext.h>
+
+#include "FrameOutput.h"
+
+using namespace android;
+
+static const bool kShowTiming = false;      // set to "true" for debugging
+static const int kGlBytesPerPixel = 4;      // GL_RGBA
+static const int kOutBytesPerPixel = 3;     // RGB only
+
+inline void FrameOutput::setValueLE(uint8_t* buf, uint32_t value) {
+    // Since we're running on an Android device, we're (almost) guaranteed
+    // to be little-endian, and (almost) guaranteed that unaligned 32-bit
+    // writes will work without any performance penalty... but do it
+    // byte-by-byte anyway.
+    buf[0] = (uint8_t) value;
+    buf[1] = (uint8_t) (value >> 8);
+    buf[2] = (uint8_t) (value >> 16);
+    buf[3] = (uint8_t) (value >> 24);
+}
+
+status_t FrameOutput::createInputSurface(int width, int height,
+        sp<IGraphicBufferProducer>* pBufferProducer) {
+    status_t err;
+
+    err = mEglWindow.createPbuffer(width, height);
+    if (err != NO_ERROR) {
+        return err;
+    }
+    mEglWindow.makeCurrent();
+
+    glViewport(0, 0, width, height);
+    glDisable(GL_DEPTH_TEST);
+    glDisable(GL_CULL_FACE);
+
+    // Shader for rendering the external texture.
+    err = mExtTexProgram.setup(Program::PROGRAM_EXTERNAL_TEXTURE);
+    if (err != NO_ERROR) {
+        return err;
+    }
+
+    // Input side (buffers from virtual display).
+    glGenTextures(1, &mExtTextureName);
+    if (mExtTextureName == 0) {
+        ALOGE("glGenTextures failed: %#x", glGetError());
+        return UNKNOWN_ERROR;
+    }
+
+    mBufferQueue = new BufferQueue(/*new GraphicBufferAlloc()*/);
+    mGlConsumer = new GLConsumer(mBufferQueue, mExtTextureName,
+                GL_TEXTURE_EXTERNAL_OES);
+    mGlConsumer->setName(String8("virtual display"));
+    mGlConsumer->setDefaultBufferSize(width, height);
+    mGlConsumer->setDefaultMaxBufferCount(5);
+    mGlConsumer->setConsumerUsageBits(GRALLOC_USAGE_HW_TEXTURE);
+
+    mGlConsumer->setFrameAvailableListener(this);
+
+    mPixelBuf = new uint8_t[width * height * kGlBytesPerPixel];
+
+    *pBufferProducer = mBufferQueue;
+
+    ALOGD("FrameOutput::createInputSurface OK");
+    return NO_ERROR;
+}
+
+status_t FrameOutput::copyFrame(FILE* fp, long timeoutUsec, bool rawFrames) {
+    Mutex::Autolock _l(mMutex);
+    ALOGV("copyFrame %ld\n", timeoutUsec);
+
+    if (!mFrameAvailable) {
+        nsecs_t timeoutNsec = (nsecs_t)timeoutUsec * 1000;
+        int cc = mEventCond.waitRelative(mMutex, timeoutNsec);
+        if (cc == -ETIMEDOUT) {
+            ALOGV("cond wait timed out");
+            return ETIMEDOUT;
+        } else if (cc != 0) {
+            ALOGW("cond wait returned error %d", cc);
+            return cc;
+        }
+    }
+    if (!mFrameAvailable) {
+        // This happens when Ctrl-C is hit.  Apparently POSIX says that the
+        // pthread wait call doesn't return EINTR, treating this instead as
+        // an instance of a "spurious wakeup".  We didn't get a frame, so
+        // we just treat it as a timeout.
+        return ETIMEDOUT;
+    }
+
+    // A frame is available.  Clear the flag for the next round.
+    mFrameAvailable = false;
+
+    float texMatrix[16];
+    mGlConsumer->updateTexImage();
+    mGlConsumer->getTransformMatrix(texMatrix);
+
+    // The data is in an external texture, so we need to render it to the
+    // pbuffer to get access to RGB pixel data.  We also want to flip it
+    // upside-down for easy conversion to a bitmap.
+    int width = mEglWindow.getWidth();
+    int height = mEglWindow.getHeight();
+    status_t err = mExtTexProgram.blit(mExtTextureName, texMatrix, 0, 0,
+            width, height, true);
+    if (err != NO_ERROR) {
+        return err;
+    }
+
+    // GLES only guarantees that glReadPixels() will work with GL_RGBA, so we
+    // need to get 4 bytes/pixel and reduce it.  Depending on the size of the
+    // screen and the device capabilities, this can take a while.
+    int64_t startWhenNsec, pixWhenNsec, endWhenNsec;
+    if (kShowTiming) {
+        startWhenNsec = systemTime(CLOCK_MONOTONIC);
+    }
+    GLenum glErr;
+    glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, mPixelBuf);
+    if ((glErr = glGetError()) != GL_NO_ERROR) {
+        ALOGE("glReadPixels failed: %#x", glErr);
+        return UNKNOWN_ERROR;
+    }
+    if (kShowTiming) {
+        pixWhenNsec = systemTime(CLOCK_MONOTONIC);
+    }
+    reduceRgbaToRgb(mPixelBuf, width * height);
+    if (kShowTiming) {
+        endWhenNsec = systemTime(CLOCK_MONOTONIC);
+        ALOGD("got pixels (get=%.3f ms, reduce=%.3fms)",
+                (pixWhenNsec - startWhenNsec) / 1000000.0,
+                (endWhenNsec - pixWhenNsec) / 1000000.0);
+    }
+
+    size_t rgbDataLen = width * height * kOutBytesPerPixel;
+
+    if (!rawFrames) {
+        // Fill out the header.
+        size_t headerLen = sizeof(uint32_t) * 5;
+        size_t packetLen = headerLen - sizeof(uint32_t) + rgbDataLen;
+        uint8_t header[headerLen];
+        setValueLE(&header[0], packetLen);
+        setValueLE(&header[4], width);
+        setValueLE(&header[8], height);
+        setValueLE(&header[12], width * kOutBytesPerPixel);
+        setValueLE(&header[16], HAL_PIXEL_FORMAT_RGB_888);
+        fwrite(header, 1, headerLen, fp);
+    }
+
+    // Currently using buffered I/O rather than writev().  Not expecting it
+    // to make much of a difference, but it might be worth a test for larger
+    // frame sizes.
+    if (kShowTiming) {
+        startWhenNsec = systemTime(CLOCK_MONOTONIC);
+    }
+    fwrite(mPixelBuf, 1, rgbDataLen, fp);
+    fflush(fp);
+    if (kShowTiming) {
+        endWhenNsec = systemTime(CLOCK_MONOTONIC);
+        ALOGD("wrote pixels (%.3f ms)",
+                (endWhenNsec - startWhenNsec) / 1000000.0);
+    }
+
+    if (ferror(fp)) {
+        // errno may not be useful; log it anyway
+        ALOGE("write failed (errno=%d)", errno);
+        return UNKNOWN_ERROR;
+    }
+
+    return NO_ERROR;
+}
+
+void FrameOutput::reduceRgbaToRgb(uint8_t* buf, unsigned int pixelCount) {
+    // Convert RGBA to RGB.
+    //
+    // Unaligned 32-bit accesses are allowed on ARM, so we could do this
+    // with 32-bit copies advancing at different rates (taking care at the
+    // end to not go one byte over).
+    const uint8_t* readPtr = buf;
+    for (unsigned int i = 0; i < pixelCount; i++) {
+        *buf++ = *readPtr++;
+        *buf++ = *readPtr++;
+        *buf++ = *readPtr++;
+        readPtr++;
+    }
+}
+
+// Callback; executes on arbitrary thread.
+void FrameOutput::onFrameAvailable() {
+    Mutex::Autolock _l(mMutex);
+    mFrameAvailable = true;
+    mEventCond.signal();
+}
diff --git a/cmds/screenrecord/FrameOutput.h b/cmds/screenrecord/FrameOutput.h
new file mode 100644
index 0000000..4ac3e8a
--- /dev/null
+++ b/cmds/screenrecord/FrameOutput.h
@@ -0,0 +1,101 @@
+/*
+ * Copyright 2014 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.
+ */
+
+#ifndef SCREENRECORD_FRAMEOUTPUT_H
+#define SCREENRECORD_FRAMEOUTPUT_H
+
+#include "Program.h"
+#include "EglWindow.h"
+
+#include <gui/BufferQueue.h>
+#include <gui/GLConsumer.h>
+
+namespace android {
+
+/*
+ * Support for "frames" output format.
+ */
+class FrameOutput : public GLConsumer::FrameAvailableListener {
+public:
+    FrameOutput() : mFrameAvailable(false),
+        mExtTextureName(0),
+        mPixelBuf(NULL)
+        {}
+    virtual ~FrameOutput() {
+        delete[] mPixelBuf;
+    }
+
+    // Create an "input surface", similar in purpose to a MediaCodec input
+    // surface, that the virtual display can send buffers to.  Also configures
+    // EGL with a pbuffer surface on the current thread.
+    status_t createInputSurface(int width, int height,
+            sp<IGraphicBufferProducer>* pBufferProducer);
+
+    // Copy one from input to output.  If no frame is available, this will wait up to the
+    // specified number of microseconds.
+    //
+    // Returns ETIMEDOUT if the timeout expired before we found a frame.
+    status_t copyFrame(FILE* fp, long timeoutUsec, bool rawFrames);
+
+    // Prepare to copy frames.  Makes the EGL context used by this object current.
+    void prepareToCopy() {
+        mEglWindow.makeCurrent();
+    }
+
+private:
+    FrameOutput(const FrameOutput&);
+    FrameOutput& operator=(const FrameOutput&);
+
+    // (overrides GLConsumer::FrameAvailableListener method)
+    virtual void onFrameAvailable();
+
+    // Reduces RGBA to RGB, in place.
+    static void reduceRgbaToRgb(uint8_t* buf, unsigned int pixelCount);
+
+    // Put a 32-bit value into a buffer, in little-endian byte order.
+    static void setValueLE(uint8_t* buf, uint32_t value);
+
+    // Used to wait for the FrameAvailableListener callback.
+    Mutex mMutex;
+    Condition mEventCond;
+
+    // Set by the FrameAvailableListener callback.
+    bool mFrameAvailable;
+
+    // Our queue.  The producer side is passed to the virtual display, the
+    // consumer side feeds into our GLConsumer.
+    sp<BufferQueue> mBufferQueue;
+
+    // This receives frames from the virtual display and makes them available
+    // as an external texture.
+    sp<GLConsumer> mGlConsumer;
+
+    // EGL display / context / surface.
+    EglWindow mEglWindow;
+
+    // GL rendering support.
+    Program mExtTexProgram;
+
+    // External texture, updated by GLConsumer.
+    GLuint mExtTextureName;
+
+    // Pixel data buffer.
+    uint8_t* mPixelBuf;
+};
+
+}; // namespace android
+
+#endif /*SCREENRECORD_FRAMEOUTPUT_H*/
diff --git a/cmds/screenrecord/Overlay.cpp b/cmds/screenrecord/Overlay.cpp
new file mode 100644
index 0000000..96e25b8
--- /dev/null
+++ b/cmds/screenrecord/Overlay.cpp
@@ -0,0 +1,401 @@
+/*
+ * Copyright 2013 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.
+ */
+
+#define LOG_TAG "ScreenRecord"
+//#define LOG_NDEBUG 0
+#include <utils/Log.h>
+
+#include <gui/BufferQueue.h>
+#include <gui/GraphicBufferAlloc.h>
+#include <gui/Surface.h>
+#include <cutils/properties.h>
+#include <utils/misc.h>
+
+#include <GLES2/gl2.h>
+#include <GLES2/gl2ext.h>
+
+#include <stdlib.h>
+#include <assert.h>
+
+#include "screenrecord.h"
+#include "Overlay.h"
+#include "TextRenderer.h"
+
+using namespace android;
+
+// System properties to look up and display on the info screen.
+const char* Overlay::kPropertyNames[] = {
+        "ro.build.description",
+        // includes ro.build.id, ro.build.product, ro.build.tags, ro.build.type,
+        // and ro.build.version.release
+        "ro.product.manufacturer",
+        "ro.product.model",
+        "ro.board.platform",
+        "ro.revision",
+        "dalvik.vm.heapgrowthlimit",
+        "dalvik.vm.heapsize",
+        "persist.sys.dalvik.vm.lib",
+        //"ro.product.cpu.abi",
+        //"ro.bootloader",
+        //"this-never-appears!",
+};
+
+
+status_t Overlay::start(const sp<IGraphicBufferProducer>& outputSurface,
+        sp<IGraphicBufferProducer>* pBufferProducer) {
+    ALOGV("Overlay::start");
+    mOutputSurface = outputSurface;
+
+    // Grab the current monotonic time and the current wall-clock time so we
+    // can map one to the other.  This allows the overlay counter to advance
+    // by the exact delay between frames, but if the wall clock gets adjusted
+    // we won't track it, which means we'll gradually go out of sync with the
+    // times in logcat.
+    mStartMonotonicNsecs = systemTime(CLOCK_MONOTONIC);
+    mStartRealtimeNsecs = systemTime(CLOCK_REALTIME);
+
+    Mutex::Autolock _l(mMutex);
+
+    // Start the thread.  Traffic begins immediately.
+    run("overlay");
+
+    mState = INIT;
+    while (mState == INIT) {
+        mStartCond.wait(mMutex);
+    }
+
+    if (mThreadResult != NO_ERROR) {
+        ALOGE("Failed to start overlay thread: err=%d", mThreadResult);
+        return mThreadResult;
+    }
+    assert(mState == RUNNING);
+
+    ALOGV("Overlay::start successful");
+    *pBufferProducer = mBufferQueue;
+    return NO_ERROR;
+}
+
+status_t Overlay::stop() {
+    ALOGV("Overlay::stop");
+    Mutex::Autolock _l(mMutex);
+    mState = STOPPING;
+    mEventCond.signal();
+    return NO_ERROR;
+}
+
+bool Overlay::threadLoop() {
+    Mutex::Autolock _l(mMutex);
+
+    mThreadResult = setup_l();
+
+    if (mThreadResult != NO_ERROR) {
+        ALOGW("Aborting overlay thread");
+        mState = STOPPED;
+        release_l();
+        mStartCond.broadcast();
+        return false;
+    }
+
+    ALOGV("Overlay thread running");
+    mState = RUNNING;
+    mStartCond.broadcast();
+
+    while (mState == RUNNING) {
+        mEventCond.wait(mMutex);
+        if (mFrameAvailable) {
+            ALOGV("Awake, frame available");
+            processFrame_l();
+            mFrameAvailable = false;
+        } else {
+            ALOGV("Awake, frame not available");
+        }
+    }
+
+    ALOGV("Overlay thread stopping");
+    release_l();
+    mState = STOPPED;
+    return false;       // stop
+}
+
+status_t Overlay::setup_l() {
+    status_t err;
+
+    err = mEglWindow.createWindow(mOutputSurface);
+    if (err != NO_ERROR) {
+        return err;
+    }
+    mEglWindow.makeCurrent();
+
+    int width = mEglWindow.getWidth();
+    int height = mEglWindow.getHeight();
+
+    glViewport(0, 0, width, height);
+    glDisable(GL_DEPTH_TEST);
+    glDisable(GL_CULL_FACE);
+
+    // Shaders for rendering from different types of textures.
+    err = mTexProgram.setup(Program::PROGRAM_TEXTURE_2D);
+    if (err != NO_ERROR) {
+        return err;
+    }
+    err = mExtTexProgram.setup(Program::PROGRAM_EXTERNAL_TEXTURE);
+    if (err != NO_ERROR) {
+        return err;
+    }
+
+    err = mTextRenderer.loadIntoTexture();
+    if (err != NO_ERROR) {
+        return err;
+    }
+    mTextRenderer.setScreenSize(width, height);
+
+    // Input side (buffers from virtual display).
+    glGenTextures(1, &mExtTextureName);
+    if (mExtTextureName == 0) {
+        ALOGE("glGenTextures failed: %#x", glGetError());
+        return UNKNOWN_ERROR;
+    }
+
+    mBufferQueue = new BufferQueue(/*new GraphicBufferAlloc()*/);
+    mGlConsumer = new GLConsumer(mBufferQueue, mExtTextureName,
+                GL_TEXTURE_EXTERNAL_OES);
+    mGlConsumer->setName(String8("virtual display"));
+    mGlConsumer->setDefaultBufferSize(width, height);
+    mGlConsumer->setDefaultMaxBufferCount(5);
+    mGlConsumer->setConsumerUsageBits(GRALLOC_USAGE_HW_TEXTURE);
+
+    mGlConsumer->setFrameAvailableListener(this);
+
+    return NO_ERROR;
+}
+
+
+void Overlay::release_l() {
+    ALOGV("Overlay::release_l");
+    mOutputSurface.clear();
+    mGlConsumer.clear();
+    mBufferQueue.clear();
+
+    mTexProgram.release();
+    mExtTexProgram.release();
+    mEglWindow.release();
+}
+
+void Overlay::processFrame_l() {
+    float texMatrix[16];
+
+    mGlConsumer->updateTexImage();
+    mGlConsumer->getTransformMatrix(texMatrix);
+    nsecs_t monotonicNsec = mGlConsumer->getTimestamp();
+    nsecs_t frameNumber = mGlConsumer->getFrameNumber();
+    int64_t droppedFrames = 0;
+
+    if (mLastFrameNumber > 0) {
+        mTotalDroppedFrames += size_t(frameNumber - mLastFrameNumber) - 1;
+    }
+    mLastFrameNumber = frameNumber;
+
+    mTextRenderer.setProportionalScale(35);
+
+    if (false) {  // DEBUG - full blue background
+        glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
+        glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
+    }
+
+    int width = mEglWindow.getWidth();
+    int height = mEglWindow.getHeight();
+    if (false) {  // DEBUG - draw inset
+        mExtTexProgram.blit(mExtTextureName, texMatrix,
+                100, 100, width-200, height-200);
+    } else {
+        mExtTexProgram.blit(mExtTextureName, texMatrix,
+                0, 0, width, height);
+    }
+
+    glEnable(GL_BLEND);
+    glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
+    if (false) {  // DEBUG - show entire font bitmap
+        mTexProgram.blit(mTextRenderer.getTextureName(), Program::kIdentity,
+                100, 100, width-200, height-200);
+    }
+
+    char textBuf[64];
+    getTimeString_l(monotonicNsec, textBuf, sizeof(textBuf));
+    String8 timeStr(String8::format("%s f=%lld (%zd)",
+            textBuf, frameNumber, mTotalDroppedFrames));
+    mTextRenderer.drawString(mTexProgram, Program::kIdentity, 0, 0, timeStr);
+
+    glDisable(GL_BLEND);
+
+    if (false) {  // DEBUG - add red rectangle in lower-left corner
+        glEnable(GL_SCISSOR_TEST);
+        glScissor(0, 0, 200, 200);
+        glClearColor(1.0f, 0.0f, 0.0f, 1.0f);
+        glClear(GL_COLOR_BUFFER_BIT);
+        glDisable(GL_SCISSOR_TEST);
+    }
+
+    mEglWindow.presentationTime(monotonicNsec);
+    mEglWindow.swapBuffers();
+}
+
+void Overlay::getTimeString_l(nsecs_t monotonicNsec, char* buf, size_t bufLen) {
+    //const char* format = "%m-%d %T";    // matches log output
+    const char* format = "%T";
+    struct tm tm;
+
+    // localtime/strftime is not the fastest way to do this, but a trivial
+    // benchmark suggests that the cost is negligible.
+    int64_t realTime = mStartRealtimeNsecs +
+            (monotonicNsec - mStartMonotonicNsecs);
+    time_t secs = (time_t) (realTime / 1000000000);
+    localtime_r(&secs, &tm);
+    strftime(buf, bufLen, format, &tm);
+
+    int32_t msec = (int32_t) ((realTime % 1000000000) / 1000000);
+    char tmpBuf[5];
+    snprintf(tmpBuf, sizeof(tmpBuf), ".%03d", msec);
+    strlcat(buf, tmpBuf, bufLen);
+}
+
+// Callback; executes on arbitrary thread.
+void Overlay::onFrameAvailable() {
+    ALOGV("Overlay::onFrameAvailable");
+    Mutex::Autolock _l(mMutex);
+    mFrameAvailable = true;
+    mEventCond.signal();
+}
+
+
+/*static*/ status_t Overlay::drawInfoPage(
+        const sp<IGraphicBufferProducer>& outputSurface) {
+    status_t err;
+
+    EglWindow window;
+    err = window.createWindow(outputSurface);
+    if (err != NO_ERROR) {
+        return err;
+    }
+    window.makeCurrent();
+
+    int width = window.getWidth();
+    int height = window.getHeight();
+    glViewport(0, 0, width, height);
+    glDisable(GL_DEPTH_TEST);
+    glDisable(GL_CULL_FACE);
+
+    // Shaders for rendering.
+    Program texProgram;
+    err = texProgram.setup(Program::PROGRAM_TEXTURE_2D);
+    if (err != NO_ERROR) {
+        return err;
+    }
+    TextRenderer textRenderer;
+    err = textRenderer.loadIntoTexture();
+    if (err != NO_ERROR) {
+        return err;
+    }
+    textRenderer.setScreenSize(width, height);
+
+    doDrawInfoPage(window, texProgram, textRenderer);
+
+    // Destroy the surface.  This causes a disconnect.
+    texProgram.release();
+    window.release();
+
+    return NO_ERROR;
+}
+
+/*static*/ void Overlay::doDrawInfoPage(const EglWindow& window,
+        const Program& texProgram, TextRenderer& textRenderer) {
+    const nsecs_t holdTime = 250000000LL;
+
+    glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
+    glClear(GL_COLOR_BUFFER_BIT);
+
+    int width = window.getWidth();
+    int height = window.getHeight();
+
+    // Draw a thin border around the screen.  Some players, e.g. browser
+    // plugins, make it hard to see where the edges are when the device
+    // is using a black background, so this gives the viewer a frame of
+    // reference.
+    //
+    // This is a clumsy way to do it, but we're only doing it for one frame,
+    // and it's easier than actually drawing lines.
+    const int lineWidth = 4;
+    glEnable(GL_SCISSOR_TEST);
+    glClearColor(0.5f, 0.5f, 0.5f, 1.0f);
+    glScissor(0, 0, width, lineWidth);
+    glClear(GL_COLOR_BUFFER_BIT);
+    glScissor(0, height - lineWidth, width, lineWidth);
+    glClear(GL_COLOR_BUFFER_BIT);
+    glScissor(0, 0, lineWidth, height);
+    glClear(GL_COLOR_BUFFER_BIT);
+    glScissor(width - lineWidth, 0, lineWidth, height);
+    glClear(GL_COLOR_BUFFER_BIT);
+    glDisable(GL_SCISSOR_TEST);
+
+    //glEnable(GL_BLEND);
+    //glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
+    textRenderer.setProportionalScale(30);
+
+    float xpos = 0;
+    float ypos = 0;
+    ypos = textRenderer.drawWrappedString(texProgram, xpos, ypos,
+            String8::format("Android screenrecord v%d.%d",
+                    kVersionMajor, kVersionMinor));
+
+    // Show date/time
+    time_t now = time(0);
+    struct tm tm;
+    localtime_r(&now, &tm);
+    char timeBuf[64];
+    strftime(timeBuf, sizeof(timeBuf), "%a, %d %b %Y %T %z", &tm);
+    String8 header("Started ");
+    header += timeBuf;
+    ypos = textRenderer.drawWrappedString(texProgram, xpos, ypos, header);
+    ypos += 8 * textRenderer.getScale();    // slight padding
+
+    // Show selected system property values
+    for (int i = 0; i < NELEM(kPropertyNames); i++) {
+        char valueBuf[PROPERTY_VALUE_MAX];
+
+        property_get(kPropertyNames[i], valueBuf, "");
+        if (valueBuf[0] == '\0') {
+            continue;
+        }
+        String8 str(String8::format("%s: [%s]", kPropertyNames[i], valueBuf));
+        ypos = textRenderer.drawWrappedString(texProgram, xpos, ypos, str);
+    }
+    ypos += 8 * textRenderer.getScale();    // slight padding
+
+    // Show GL info
+    String8 glStr("OpenGL: ");
+    glStr += (char*) glGetString(GL_VENDOR);
+    glStr += " / ";
+    glStr += (char*) glGetString(GL_RENDERER);
+    glStr += ", ";
+    glStr += (char*) glGetString(GL_VERSION);
+    ypos = textRenderer.drawWrappedString(texProgram, xpos, ypos, glStr);
+
+    //glDisable(GL_BLEND);
+
+    // Set a presentation time slightly in the past.  This will cause the
+    // player to hold the frame on screen.
+    window.presentationTime(systemTime(CLOCK_MONOTONIC) - holdTime);
+    window.swapBuffers();
+}
diff --git a/cmds/screenrecord/Overlay.h b/cmds/screenrecord/Overlay.h
new file mode 100644
index 0000000..b8473b4
--- /dev/null
+++ b/cmds/screenrecord/Overlay.h
@@ -0,0 +1,157 @@
+/*
+ * Copyright 2013 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.
+ */
+
+#ifndef SCREENRECORD_OVERLAY_H
+#define SCREENRECORD_OVERLAY_H
+
+#include "Program.h"
+#include "TextRenderer.h"
+#include "EglWindow.h"
+
+#include <gui/BufferQueue.h>
+#include <gui/GLConsumer.h>
+#include <utils/Thread.h>
+
+#include <EGL/egl.h>
+
+namespace android {
+
+/*
+ * Overlay "filter".  This sits between the virtual display and the video
+ * encoder.
+ *
+ * Most functions run on a thread created by start().
+ */
+class Overlay : public GLConsumer::FrameAvailableListener, Thread {
+public:
+    Overlay() : Thread(false),
+        mThreadResult(UNKNOWN_ERROR),
+        mState(UNINITIALIZED),
+        mFrameAvailable(false),
+        mExtTextureName(0),
+        mStartMonotonicNsecs(0),
+        mStartRealtimeNsecs(0),
+        mLastFrameNumber(-1),
+        mTotalDroppedFrames(0)
+        {}
+    virtual ~Overlay() { assert(mState == UNINITIALIZED || mState == STOPPED); }
+
+    // Creates a thread that performs the overlay.  Pass in the surface that
+    // output will be sent to.
+    //
+    // This creates a dedicated thread for processing frames.
+    //
+    // Returns a reference to the producer side of a new BufferQueue that will
+    // be used by the virtual display.
+    status_t start(const sp<IGraphicBufferProducer>& outputSurface,
+            sp<IGraphicBufferProducer>* pBufferProducer);
+
+    // Stops the thread and releases resources.  It's okay to call this even
+    // if start() was never called.
+    status_t stop();
+
+    // This creates an EGL context and window surface, draws some informative
+    // text on it, swaps the buffer, and then tears the whole thing down.
+    static status_t drawInfoPage(const sp<IGraphicBufferProducer>& outputSurface);
+
+private:
+    Overlay(const Overlay&);
+    Overlay& operator=(const Overlay&);
+
+    // Draw the initial info screen.
+    static void doDrawInfoPage(const EglWindow& window,
+            const Program& texRender, TextRenderer& textRenderer);
+
+    // (overrides GLConsumer::FrameAvailableListener method)
+    virtual void onFrameAvailable();
+
+    // (overrides Thread method)
+    virtual bool threadLoop();
+
+    // One-time setup (essentially object construction on the overlay thread).
+    status_t setup_l();
+
+    // Release all resources held.
+    void release_l();
+
+    // Release EGL display, context, surface.
+    void eglRelease_l();
+
+    // Process a frame received from the virtual display.
+    void processFrame_l();
+
+    // Convert a monotonic time stamp into a string with the current time.
+    void getTimeString_l(nsecs_t monotonicNsec, char* buf, size_t bufLen);
+
+    // Guards all fields below.
+    Mutex mMutex;
+
+    // Initialization gate.
+    Condition mStartCond;
+
+    // Thread status, mostly useful during startup.
+    status_t mThreadResult;
+
+    // Overlay thread state.  States advance from left to right; object may
+    // not be restarted.
+    enum { UNINITIALIZED, INIT, RUNNING, STOPPING, STOPPED } mState;
+
+    // Event notification.  Overlay thread sleeps on this until a frame
+    // arrives or it's time to shut down.
+    Condition mEventCond;
+
+    // Set by the FrameAvailableListener callback.
+    bool mFrameAvailable;
+
+    // The surface we send our output to, i.e. the video encoder's input
+    // surface.
+    sp<IGraphicBufferProducer> mOutputSurface;
+
+    // Our queue.  The producer side is passed to the virtual display, the
+    // consumer side feeds into our GLConsumer.
+    sp<BufferQueue> mBufferQueue;
+
+    // This receives frames from the virtual display and makes them available
+    // as an external texture.
+    sp<GLConsumer> mGlConsumer;
+
+    // EGL display / context / surface.
+    EglWindow mEglWindow;
+
+    // GL rendering support.
+    Program mExtTexProgram;
+    Program mTexProgram;
+
+    // Text rendering.
+    TextRenderer mTextRenderer;
+
+    // External texture, updated by GLConsumer.
+    GLuint mExtTextureName;
+
+    // Start time, used to map monotonic to wall-clock time.
+    nsecs_t mStartMonotonicNsecs;
+    nsecs_t mStartRealtimeNsecs;
+
+    // Used for tracking dropped frames.
+    nsecs_t mLastFrameNumber;
+    size_t mTotalDroppedFrames;
+
+    static const char* kPropertyNames[];
+};
+
+}; // namespace android
+
+#endif /*SCREENRECORD_OVERLAY_H*/
diff --git a/cmds/screenrecord/Program.cpp b/cmds/screenrecord/Program.cpp
new file mode 100644
index 0000000..73cae6e
--- /dev/null
+++ b/cmds/screenrecord/Program.cpp
@@ -0,0 +1,307 @@
+/*
+ * Copyright 2013 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.
+ */
+
+#define LOG_TAG "ScreenRecord"
+//#define LOG_NDEBUG 0
+#include <utils/Log.h>
+
+#include "Program.h"
+
+#include <GLES2/gl2.h>
+#include <GLES2/gl2ext.h>
+
+#include <assert.h>
+
+using namespace android;
+
+// 4x4 identity matrix
+const float Program::kIdentity[] = {
+        1.0f, 0.0f, 0.0f, 0.0f,
+        0.0f, 1.0f, 0.0f, 0.0f,
+        0.0f, 0.0f, 1.0f, 0.0f,
+        0.0f, 0.0f, 0.0f, 1.0f
+};
+
+// Simple vertex shader.  Texture coord calc includes matrix for GLConsumer
+// transform.
+static const char* kVertexShader =
+        "uniform mat4 uMVPMatrix;\n"
+        "uniform mat4 uGLCMatrix;\n"
+        "attribute vec4 aPosition;\n"
+        "attribute vec4 aTextureCoord;\n"
+        "varying vec2 vTextureCoord;\n"
+        "void main() {\n"
+        "    gl_Position = uMVPMatrix * aPosition;\n"
+        "    vTextureCoord = (uGLCMatrix * aTextureCoord).xy;\n"
+        "}\n";
+
+// Trivial fragment shader for external texture.
+static const char* kExtFragmentShader =
+        "#extension GL_OES_EGL_image_external : require\n"
+        "precision mediump float;\n"
+        "varying vec2 vTextureCoord;\n"
+        "uniform samplerExternalOES uTexture;\n"
+        "void main() {\n"
+        "    gl_FragColor = texture2D(uTexture, vTextureCoord);\n"
+        "}\n";
+
+// Trivial fragment shader for mundane texture.
+static const char* kFragmentShader =
+        "precision mediump float;\n"
+        "varying vec2 vTextureCoord;\n"
+        "uniform sampler2D uTexture;\n"
+        "void main() {\n"
+        "    gl_FragColor = texture2D(uTexture, vTextureCoord);\n"
+        //"    gl_FragColor = vec4(0.2, 1.0, 0.2, 1.0);\n"
+        "}\n";
+
+status_t Program::setup(ProgramType type) {
+    ALOGV("Program::setup type=%d", type);
+    status_t err;
+
+    mProgramType = type;
+
+    GLuint program;
+    if (type == PROGRAM_TEXTURE_2D) {
+        err = createProgram(&program, kVertexShader, kFragmentShader);
+    } else {
+        err = createProgram(&program, kVertexShader, kExtFragmentShader);
+    }
+    if (err != NO_ERROR) {
+        return err;
+    }
+    assert(program != 0);
+
+    maPositionLoc = glGetAttribLocation(program, "aPosition");
+    maTextureCoordLoc = glGetAttribLocation(program, "aTextureCoord");
+    muMVPMatrixLoc = glGetUniformLocation(program, "uMVPMatrix");
+    muGLCMatrixLoc = glGetUniformLocation(program, "uGLCMatrix");
+    muTextureLoc = glGetUniformLocation(program, "uTexture");
+    if ((maPositionLoc | maTextureCoordLoc | muMVPMatrixLoc |
+            muGLCMatrixLoc | muTextureLoc) == -1) {
+        ALOGE("Attrib/uniform lookup failed: %#x", glGetError());
+        glDeleteProgram(program);
+        return UNKNOWN_ERROR;
+    }
+
+    mProgram = program;
+    return NO_ERROR;
+}
+
+void Program::release() {
+    ALOGV("Program::release");
+    if (mProgram != 0) {
+        glDeleteProgram(mProgram);
+        mProgram = 0;
+    }
+}
+
+status_t Program::createProgram(GLuint* outPgm, const char* vertexShader,
+        const char* fragmentShader) {
+    GLuint vs, fs;
+    status_t err;
+
+    err = compileShader(GL_VERTEX_SHADER, vertexShader, &vs);
+    if (err != NO_ERROR) {
+        return err;
+    }
+    err = compileShader(GL_FRAGMENT_SHADER, fragmentShader, &fs);
+    if (err != NO_ERROR) {
+        glDeleteShader(vs);
+        return err;
+    }
+
+    GLuint program;
+    err = linkShaderProgram(vs, fs, &program);
+    glDeleteShader(vs);
+    glDeleteShader(fs);
+    if (err == NO_ERROR) {
+        *outPgm = program;
+    }
+    return err;
+}
+
+status_t Program::compileShader(GLenum shaderType, const char* src,
+        GLuint* outShader) {
+    GLuint shader = glCreateShader(shaderType);
+    if (shader == 0) {
+        ALOGE("glCreateShader error: %#x", glGetError());
+        return UNKNOWN_ERROR;
+    }
+
+    glShaderSource(shader, 1, &src, NULL);
+    glCompileShader(shader);
+
+    GLint compiled = 0;
+    glGetShaderiv(shader, GL_COMPILE_STATUS, &compiled);
+    if (!compiled) {
+        ALOGE("Compile of shader type %d failed", shaderType);
+        GLint infoLen = 0;
+        glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &infoLen);
+        if (infoLen) {
+            char* buf = new char[infoLen];
+            if (buf) {
+                glGetShaderInfoLog(shader, infoLen, NULL, buf);
+                ALOGE("Compile log: %s", buf);
+                delete[] buf;
+            }
+        }
+        glDeleteShader(shader);
+        return UNKNOWN_ERROR;
+    }
+    *outShader = shader;
+    return NO_ERROR;
+}
+
+status_t Program::linkShaderProgram(GLuint vs, GLuint fs, GLuint* outPgm) {
+    GLuint program = glCreateProgram();
+    if (program == 0) {
+        ALOGE("glCreateProgram error: %#x", glGetError());
+        return UNKNOWN_ERROR;
+    }
+
+    glAttachShader(program, vs);
+    glAttachShader(program, fs);
+    glLinkProgram(program);
+    GLint linkStatus = GL_FALSE;
+    glGetProgramiv(program, GL_LINK_STATUS, &linkStatus);
+    if (linkStatus != GL_TRUE) {
+        ALOGE("glLinkProgram failed");
+        GLint bufLength = 0;
+        glGetProgramiv(program, GL_INFO_LOG_LENGTH, &bufLength);
+        if (bufLength) {
+            char* buf = new char[bufLength];
+            if (buf) {
+                glGetProgramInfoLog(program, bufLength, NULL, buf);
+                ALOGE("Link log: %s", buf);
+                delete[] buf;
+            }
+        }
+        glDeleteProgram(program);
+        return UNKNOWN_ERROR;
+    }
+
+    *outPgm = program;
+    return NO_ERROR;
+}
+
+
+
+status_t Program::blit(GLuint texName, const float* texMatrix,
+        int32_t x, int32_t y, int32_t w, int32_t h, bool invert) const {
+    ALOGV("Program::blit %d xy=%d,%d wh=%d,%d", texName, x, y, w, h);
+
+    const float pos[] = {
+        float(x),   float(y+h),
+        float(x+w), float(y+h),
+        float(x),   float(y),
+        float(x+w), float(y),
+    };
+    const float uv[] = {
+        0.0f, 0.0f,
+        1.0f, 0.0f,
+        0.0f, 1.0f,
+        1.0f, 1.0f,
+    };
+    status_t err;
+
+    err = beforeDraw(texName, texMatrix, pos, uv, invert);
+    if (err == NO_ERROR) {
+        glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
+        err = afterDraw();
+    }
+    return err;
+}
+
+status_t Program::drawTriangles(GLuint texName, const float* texMatrix,
+        const float* vertices, const float* texes, size_t count) const {
+    ALOGV("Program::drawTriangles texName=%d", texName);
+
+    status_t err;
+
+    err = beforeDraw(texName, texMatrix, vertices, texes, false);
+    if (err == NO_ERROR) {
+        glDrawArrays(GL_TRIANGLES, 0, count);
+        err = afterDraw();
+    }
+    return err;
+}
+
+status_t Program::beforeDraw(GLuint texName, const float* texMatrix,
+        const float* vertices, const float* texes, bool invert) const {
+    // Create an orthographic projection matrix based on viewport size.
+    GLint vp[4];
+    glGetIntegerv(GL_VIEWPORT, vp);
+    float screenToNdc[16] = {
+        2.0f/float(vp[2]),  0.0f,               0.0f,   0.0f,
+        0.0f,               -2.0f/float(vp[3]), 0.0f,   0.0f,
+        0.0f,               0.0f,               1.0f,   0.0f,
+        -1.0f,              1.0f,               0.0f,   1.0f,
+    };
+    if (invert) {
+        screenToNdc[5] = -screenToNdc[5];
+        screenToNdc[13] = -screenToNdc[13];
+    }
+
+    glUseProgram(mProgram);
+
+    glVertexAttribPointer(maPositionLoc, 2, GL_FLOAT, GL_FALSE, 0, vertices);
+    glVertexAttribPointer(maTextureCoordLoc, 2, GL_FLOAT, GL_FALSE, 0, texes);
+    glEnableVertexAttribArray(maPositionLoc);
+    glEnableVertexAttribArray(maTextureCoordLoc);
+
+    glUniformMatrix4fv(muMVPMatrixLoc, 1, GL_FALSE, screenToNdc);
+    glUniformMatrix4fv(muGLCMatrixLoc, 1, GL_FALSE, texMatrix);
+
+    glActiveTexture(GL_TEXTURE0);
+
+    switch (mProgramType) {
+    case PROGRAM_EXTERNAL_TEXTURE:
+        glBindTexture(GL_TEXTURE_EXTERNAL_OES, texName);
+        break;
+    case PROGRAM_TEXTURE_2D:
+        glBindTexture(GL_TEXTURE_2D, texName);
+        break;
+    default:
+        ALOGE("unexpected program type %d", mProgramType);
+        return UNKNOWN_ERROR;
+    }
+
+    glUniform1i(muTextureLoc, 0);
+
+    GLenum glErr;
+    if ((glErr = glGetError()) != GL_NO_ERROR) {
+        ALOGE("GL error before draw: %#x", glErr);
+        glDisableVertexAttribArray(maPositionLoc);
+        glDisableVertexAttribArray(maTextureCoordLoc);
+        return UNKNOWN_ERROR;
+    }
+
+    return NO_ERROR;
+}
+
+status_t Program::afterDraw() const {
+    glDisableVertexAttribArray(maPositionLoc);
+    glDisableVertexAttribArray(maTextureCoordLoc);
+
+    GLenum glErr;
+    if ((glErr = glGetError()) != GL_NO_ERROR) {
+        ALOGE("GL error after draw: %#x", glErr);
+        return UNKNOWN_ERROR;
+    }
+
+    return NO_ERROR;
+}
diff --git a/cmds/screenrecord/Program.h b/cmds/screenrecord/Program.h
new file mode 100644
index 0000000..558be8d
--- /dev/null
+++ b/cmds/screenrecord/Program.h
@@ -0,0 +1,94 @@
+/*
+ * Copyright 2013 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.
+ */
+
+#ifndef SCREENRECORD_PROGRAM_H
+#define SCREENRECORD_PROGRAM_H
+
+#include <utils/Errors.h>
+
+#include <EGL/egl.h>
+#include <GLES2/gl2.h>
+
+namespace android {
+
+/*
+ * Utility class for GLES rendering.
+ *
+ * Not thread-safe.
+ */
+class Program {
+public:
+    enum ProgramType { PROGRAM_UNKNOWN=0, PROGRAM_EXTERNAL_TEXTURE,
+            PROGRAM_TEXTURE_2D };
+
+    Program() :
+        mProgramType(PROGRAM_UNKNOWN),
+        mProgram(0),
+        maPositionLoc(0),
+        maTextureCoordLoc(0),
+        muMVPMatrixLoc(0),
+        muGLCMatrixLoc(0),
+        muTextureLoc(0)
+        {}
+    ~Program() { release(); }
+
+    // Initialize the program for use with the specified texture type.
+    status_t setup(ProgramType type);
+
+    // Release the program and associated resources.
+    void release();
+
+    // Blit the specified texture to { x, y, x+w, y+h }.  Inverts the
+    // content if "invert" is set.
+    status_t blit(GLuint texName, const float* texMatrix,
+            int32_t x, int32_t y, int32_t w, int32_t h,
+            bool invert = false) const;
+
+    // Draw a number of triangles.
+    status_t drawTriangles(GLuint texName, const float* texMatrix,
+            const float* vertices, const float* texes, size_t count) const;
+
+    static const float kIdentity[];
+
+private:
+    Program(const Program&);
+    Program& operator=(const Program&);
+
+    // Common code for draw functions.
+    status_t beforeDraw(GLuint texName, const float* texMatrix,
+            const float* vertices, const float* texes, bool invert) const;
+    status_t afterDraw() const;
+
+    // GLES 2 shader utilities.
+    status_t createProgram(GLuint* outPgm, const char* vertexShader,
+            const char* fragmentShader);
+    static status_t compileShader(GLenum shaderType, const char* src,
+            GLuint* outShader);
+    static status_t linkShaderProgram(GLuint vs, GLuint fs, GLuint* outPgm);
+
+    ProgramType mProgramType;
+    GLuint mProgram;
+
+    GLint maPositionLoc;
+    GLint maTextureCoordLoc;
+    GLint muMVPMatrixLoc;
+    GLint muGLCMatrixLoc;
+    GLint muTextureLoc;
+};
+
+}; // namespace android
+
+#endif /*SCREENRECORD_PROGRAM_H*/
diff --git a/cmds/screenrecord/TextRenderer.cpp b/cmds/screenrecord/TextRenderer.cpp
new file mode 100644
index 0000000..784055c
--- /dev/null
+++ b/cmds/screenrecord/TextRenderer.cpp
@@ -0,0 +1,358 @@
+/*
+ * Copyright 2013 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.
+ */
+
+#define LOG_TAG "ScreenRecord"
+//#define LOG_NDEBUG 0
+#include <utils/Log.h>
+
+#include "TextRenderer.h"
+
+#include <assert.h>
+
+namespace android {
+#include "FontBitmap.h"
+};
+
+using namespace android;
+
+const char TextRenderer::kWhitespace[] = " \t\n\r";
+
+bool TextRenderer::mInitialized = false;
+uint32_t TextRenderer::mXOffset[FontBitmap::numGlyphs];
+
+void TextRenderer::initOnce() {
+    if (!mInitialized) {
+        initXOffset();
+        mInitialized = true;
+    }
+}
+
+void TextRenderer::initXOffset() {
+    // Generate a table of X offsets.  They start at zero and reset whenever
+    // we move down a line (i.e. the Y offset changes).  The offset increases
+    // by one pixel more than the width because the generator left a gap to
+    // avoid reading pixels from adjacent glyphs in the texture filter.
+    uint16_t offset = 0;
+    uint16_t prevYOffset = (int16_t) -1;
+    for (unsigned int i = 0; i < FontBitmap::numGlyphs; i++) {
+        if (prevYOffset != FontBitmap::yoffset[i]) {
+            prevYOffset = FontBitmap::yoffset[i];
+            offset = 0;
+        }
+        mXOffset[i] = offset;
+        offset += FontBitmap::glyphWidth[i] + 1;
+    }
+}
+
+static bool isPowerOfTwo(uint32_t val) {
+    // a/k/a "is exactly one bit set"; note returns true for 0
+    return (val & (val -1)) == 0;
+}
+
+static uint32_t powerOfTwoCeil(uint32_t val) {
+    // drop it, smear the bits across, pop it
+    val--;
+    val |= val >> 1;
+    val |= val >> 2;
+    val |= val >> 4;
+    val |= val >> 8;
+    val |= val >> 16;
+    val++;
+
+    return val;
+}
+
+float TextRenderer::getGlyphHeight() const {
+    return FontBitmap::maxGlyphHeight;
+}
+
+status_t TextRenderer::loadIntoTexture() {
+    ALOGV("Font::loadIntoTexture");
+
+    glGenTextures(1, &mTextureName);
+    if (mTextureName == 0) {
+        ALOGE("glGenTextures failed: %#x", glGetError());
+        return UNKNOWN_ERROR;
+    }
+    glBindTexture(GL_TEXTURE_2D, mTextureName);
+    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+
+    // The pixel data is stored as combined color+alpha, 8 bits per pixel.
+    // It's guaranteed to be a power-of-two wide, but we cut off the height
+    // where the data ends.  We want to expand it to a power-of-two bitmap
+    // with ARGB data and hand that to glTexImage2D.
+
+    if (!isPowerOfTwo(FontBitmap::width)) {
+        ALOGE("npot glyph bitmap width %u", FontBitmap::width);
+        return UNKNOWN_ERROR;
+    }
+
+    uint32_t potHeight = powerOfTwoCeil(FontBitmap::height);
+    uint8_t* rgbaPixels = new uint8_t[FontBitmap::width * potHeight * 4];
+    memset(rgbaPixels, 0, FontBitmap::width * potHeight * 4);
+    uint8_t* pix = rgbaPixels;
+
+    for (unsigned int i = 0; i < FontBitmap::width * FontBitmap::height; i++) {
+        uint8_t alpha, color;
+        if ((FontBitmap::pixels[i] & 1) == 0) {
+            // black pixel with varying alpha
+            color = 0x00;
+            alpha = FontBitmap::pixels[i] & ~1;
+        } else {
+            // opaque grey pixel
+            color = FontBitmap::pixels[i] & ~1;
+            alpha = 0xff;
+        }
+        *pix++ = color;
+        *pix++ = color;
+        *pix++ = color;
+        *pix++ = alpha;
+    }
+
+    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, FontBitmap::width, potHeight, 0,
+            GL_RGBA, GL_UNSIGNED_BYTE, rgbaPixels);
+    delete[] rgbaPixels;
+    GLint glErr = glGetError();
+    if (glErr != 0) {
+        ALOGE("glTexImage2D failed: %#x", glErr);
+        return UNKNOWN_ERROR;
+    }
+    return NO_ERROR;
+}
+
+void TextRenderer::setProportionalScale(float linesPerScreen) {
+    if (mScreenWidth == 0 || mScreenHeight == 0) {
+        ALOGW("setFontScale: can't set scale for width=%d height=%d",
+                mScreenWidth, mScreenHeight);
+        return;
+    }
+    float tallest = mScreenWidth > mScreenHeight ? mScreenWidth : mScreenHeight;
+    setScale(tallest / (linesPerScreen * getGlyphHeight()));
+}
+
+float TextRenderer::computeScaledStringWidth(const String8& str8) const {
+    // String8.length() isn't documented, but I'm assuming it will return
+    // the number of characters rather than the number of bytes.  Since
+    // we can only display ASCII we want to ignore anything else, so we
+    // just convert to char* -- but String8 doesn't document what it does
+    // with values outside 0-255.  So just convert to char* and use strlen()
+    // to see what we get.
+    const char* str = str8.string();
+    return computeScaledStringWidth(str, strlen(str));
+}
+
+size_t TextRenderer::glyphIndex(char ch) const {
+    size_t chi = ch - FontBitmap::firstGlyphChar;
+    if (chi >= FontBitmap::numGlyphs) {
+        chi = '?' - FontBitmap::firstGlyphChar;
+    }
+    assert(chi < FontBitmap::numGlyphs);
+    return chi;
+}
+
+float TextRenderer::computeScaledStringWidth(const char* str,
+        size_t len) const {
+    float width = 0.0f;
+    for (size_t i = 0; i < len; i++) {
+        size_t chi = glyphIndex(str[i]);
+        float glyphWidth = FontBitmap::glyphWidth[chi];
+        width += (glyphWidth - 1 - FontBitmap::outlineWidth) * mScale;
+    }
+
+    return width;
+}
+
+void TextRenderer::drawString(const Program& program, const float* texMatrix,
+        float x, float y, const String8& str8) const {
+    ALOGV("drawString %.3f,%.3f '%s' (scale=%.3f)", x, y, str8.string(),mScale);
+    initOnce();
+
+    // We want to draw the entire string with a single GLES call.  We
+    // generate two arrays, one with screen coordinates, one with texture
+    // coordinates.  Need two triangles per character.
+    const char* str = str8.string();
+    size_t len = strlen(str);       // again, unsure about String8 handling
+
+    const size_t quadCoords =
+            2 /*triangles*/ * 3 /*vertex/tri*/ * 2 /*coord/vertex*/;
+    float vertices[len * quadCoords];
+    float texes[len * quadCoords];
+
+    float fullTexWidth = FontBitmap::width;
+    float fullTexHeight = powerOfTwoCeil(FontBitmap::height);
+    for (size_t i = 0; i < len; i++) {
+        size_t chi = glyphIndex(str[i]);
+        float glyphWidth = FontBitmap::glyphWidth[chi];
+        float glyphHeight = FontBitmap::maxGlyphHeight;
+
+        float vertLeft = x;
+        float vertRight = x + glyphWidth * mScale;
+        float vertTop = y;
+        float vertBottom = y + glyphHeight * mScale;
+
+        // Lowest-numbered glyph is in top-left of bitmap, which puts it at
+        // the bottom-left in texture coordinates.
+        float texLeft = mXOffset[chi] / fullTexWidth;
+        float texRight = (mXOffset[chi] + glyphWidth) / fullTexWidth;
+        float texTop = FontBitmap::yoffset[chi] / fullTexHeight;
+        float texBottom = (FontBitmap::yoffset[chi] + glyphHeight) /
+                fullTexHeight;
+
+        size_t off = i * quadCoords;
+        vertices[off +  0] = vertLeft;
+        vertices[off +  1] = vertBottom;
+        vertices[off +  2] = vertRight;
+        vertices[off +  3] = vertBottom;
+        vertices[off +  4] = vertLeft;
+        vertices[off +  5] = vertTop;
+        vertices[off +  6] = vertLeft;
+        vertices[off +  7] = vertTop;
+        vertices[off +  8] = vertRight;
+        vertices[off +  9] = vertBottom;
+        vertices[off + 10] = vertRight;
+        vertices[off + 11] = vertTop;
+        texes[off +  0] = texLeft;
+        texes[off +  1] = texBottom;
+        texes[off +  2] = texRight;
+        texes[off +  3] = texBottom;
+        texes[off +  4] = texLeft;
+        texes[off +  5] = texTop;
+        texes[off +  6] = texLeft;
+        texes[off +  7] = texTop;
+        texes[off +  8] = texRight;
+        texes[off +  9] = texBottom;
+        texes[off + 10] = texRight;
+        texes[off + 11] = texTop;
+
+        // We added 1-pixel padding in the texture, so we want to advance by
+        // one less.  Also, each glyph is surrounded by a black outline, which
+        // we want to merge.
+        x += (glyphWidth - 1 - FontBitmap::outlineWidth) * mScale;
+    }
+
+    program.drawTriangles(mTextureName, texMatrix, vertices, texes,
+            len * quadCoords / 2);
+}
+
+float TextRenderer::drawWrappedString(const Program& texRender,
+        float xpos, float ypos, const String8& str) {
+    ALOGV("drawWrappedString %.3f,%.3f '%s'", xpos, ypos, str.string());
+    initOnce();
+
+    if (mScreenWidth == 0 || mScreenHeight == 0) {
+        ALOGW("drawWrappedString: can't wrap with width=%d height=%d",
+                mScreenWidth, mScreenHeight);
+        return ypos;
+    }
+
+    const float indentWidth = mIndentMult * getScale();
+    if (xpos < mBorderWidth) {
+        xpos = mBorderWidth;
+    }
+    if (ypos < mBorderWidth) {
+        ypos = mBorderWidth;
+    }
+
+    const size_t maxWidth = (mScreenWidth - mBorderWidth) - xpos;
+    if (maxWidth < 1) {
+        ALOGE("Unable to render text: xpos=%.3f border=%.3f width=%u",
+                xpos, mBorderWidth, mScreenWidth);
+        return ypos;
+    }
+    float stringWidth = computeScaledStringWidth(str);
+    if (stringWidth <= maxWidth) {
+        // Trivial case.
+        drawString(texRender, Program::kIdentity, xpos, ypos, str);
+        ypos += getScaledGlyphHeight();
+    } else {
+        // We need to break the string into pieces, ideally at whitespace
+        // boundaries.
+        char* mangle = strdup(str.string());
+        char* start = mangle;
+        while (start != NULL) {
+            float xposAdj = (start == mangle) ? xpos : xpos + indentWidth;
+            char* brk = breakString(start,
+                    (float) (mScreenWidth - mBorderWidth - xposAdj));
+            if (brk == NULL) {
+                // draw full string
+                drawString(texRender, Program::kIdentity, xposAdj, ypos,
+                        String8(start));
+                start = NULL;
+            } else {
+                // draw partial string
+                char ch = *brk;
+                *brk = '\0';
+                drawString(texRender, Program::kIdentity, xposAdj, ypos,
+                        String8(start));
+                *brk = ch;
+                start = brk;
+                if (strchr(kWhitespace, ch) != NULL) {
+                    // if we broke on whitespace, skip past it
+                    start++;
+                }
+            }
+            ypos += getScaledGlyphHeight();
+        }
+        free(mangle);
+    }
+
+    return ypos;
+}
+
+char* TextRenderer::breakString(const char* str, float maxWidth) const {
+    // Ideally we'd do clever things like binary search.  Not bothering.
+    ALOGV("breakString '%s' %.3f", str, maxWidth);
+
+    size_t len = strlen(str);
+    if (len == 0) {
+        // Caller should detect this and not advance ypos.
+        return NULL;
+    }
+
+    float stringWidth = computeScaledStringWidth(str, len);
+    if (stringWidth <= maxWidth) {
+        return NULL;        // trivial -- use full string
+    }
+
+    // Find the longest string that will fit.
+    size_t goodPos = 0;
+    for (size_t i = 0; i < len; i++) {
+        stringWidth = computeScaledStringWidth(str, i);
+        if (stringWidth < maxWidth) {
+            goodPos = i;
+        } else {
+            break;  // too big
+        }
+    }
+    if (goodPos == 0) {
+        // space is too small to hold any glyph; output a single char
+        ALOGW("Couldn't find a nonzero prefix that fit from '%s'", str);
+        goodPos = 1;
+    }
+
+    // Scan back for whitespace.  If we can't find any we'll just have
+    // an ugly mid-word break.
+    for (size_t i = goodPos; i > 0; i--) {
+        if (strchr(kWhitespace, str[i]) != NULL) {
+            goodPos = i;
+            break;
+        }
+    }
+
+    ALOGV("goodPos=%d for str='%s'", goodPos, str);
+    return const_cast<char*>(str + goodPos);
+}
diff --git a/cmds/screenrecord/TextRenderer.h b/cmds/screenrecord/TextRenderer.h
new file mode 100644
index 0000000..03dd2fb
--- /dev/null
+++ b/cmds/screenrecord/TextRenderer.h
@@ -0,0 +1,140 @@
+/*
+ * Copyright 2013 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.
+ */
+
+#ifndef SCREENRECORD_TEXT_RENDER_H
+#define SCREENRECORD_TEXT_RENDER_H
+
+#include "Program.h"
+
+#include <utils/String8.h>
+#include <utils/Errors.h>
+
+#include <GLES2/gl2.h>
+
+
+namespace android {
+
+/*
+ * Simple font representation.
+ *
+ * Not thread-safe.
+ */
+class TextRenderer {
+public:
+    TextRenderer() :
+        mTextureName(0),
+        mScale(1.0f),
+        mBorderWidth(10.0f),
+        mIndentMult(30.0f),
+        mScreenWidth(0),
+        mScreenHeight(0)
+        {}
+    ~TextRenderer() {}
+
+    // Load the glyph bitmap into a 2D texture in the current context.
+    status_t loadIntoTexture();
+
+    // Set the screen dimensions, used for scaling and line wrap.
+    void setScreenSize(uint32_t width, uint32_t height) {
+        mScreenWidth = width;
+        mScreenHeight = height;
+    }
+
+    // Get/set the font scaling.
+    float getScale() const { return mScale; }
+    void setScale(float scale) { mScale = scale; }
+
+    // Set the font scaling based on the desired number of lines per screen.
+    // The display's tallest axis is used, so if the device is in landscape
+    // the screen will fit fewer lines.
+    void setProportionalScale(float linesPerScreen);
+
+    // Render the text string at the specified coordinates.  Pass in the
+    // upper-left corner in non-GL-flipped coordinates, i.e. to print text
+    // at the top left of the screen use (0,0).
+    //
+    // Set blend func (1, 1-srcAlpha) before calling if drawing onto
+    // something other than black.
+    void drawString(const Program& program, const float* texMatrix,
+            float x, float y, const String8& str) const;
+
+    // Draw a string, possibly wrapping it at the screen boundary.  Top-left
+    // is at (0,0).
+    //
+    // Returns the updated Y position.
+    float drawWrappedString(const Program& texRender, float xpos, float ypos,
+            const String8& str);
+
+    // Returns the name of the texture the font was loaded into.
+    GLuint getTextureName() const { return mTextureName; }
+
+private:
+    TextRenderer(const TextRenderer&);
+    TextRenderer& operator=(const TextRenderer&);
+
+    // Perform one-time initialization.
+    static void initOnce();
+
+    // Populate the mXOffset array.
+    static void initXOffset();
+
+    // Find a good place to break the string.  Returns NULL if the entire
+    // string will fit.
+    char* breakString(const char* str, float maxWidth) const;
+
+    // Computes the width of the string, in pixels.
+    float computeScaledStringWidth(const String8& str8) const;
+
+    // Computes the width of first N characters in the string.
+    float computeScaledStringWidth(const char* str, size_t len) const;
+
+    // Returns the font's glyph height.  This is the full pixel height of the
+    // tallest glyph, both above and below the baseline, NOT adjusted by the
+    // current scale factor.
+    float getGlyphHeight() const;
+
+    // Like getGlyphHeight(), but result is scaled.
+    float getScaledGlyphHeight() const { return getGlyphHeight() * mScale; }
+
+    // Convert an ASCII character to a glyph index.  Returns the glyph for
+    // '?' if we have no glyph for the specified character.
+    size_t glyphIndex(char ch) const;
+
+    GLuint mTextureName;
+    float mScale;
+
+    // Number of pixels preserved at the left/right edges of the screen by
+    // drawWrappedString().  Not scaled.
+    float mBorderWidth;
+
+    // Distance to indent a broken line.  Used by drawWrappedString().
+    // Value will be adjusted by the current scale factor.
+    float mIndentMult;
+
+    // Screen dimensions.
+    uint32_t mScreenWidth;
+    uint32_t mScreenHeight;
+
+    // Static font info.
+    static bool mInitialized;
+    static uint32_t mXOffset[];
+
+    static const char kWhitespace[];
+};
+
+}; // namespace android
+
+#endif /*SCREENRECORD_TEXT_RENDER_H*/
diff --git a/cmds/screenrecord/screenrecord.cpp b/cmds/screenrecord/screenrecord.cpp
index 49999b5..02ed53a 100644
--- a/cmds/screenrecord/screenrecord.cpp
+++ b/cmds/screenrecord/screenrecord.cpp
@@ -15,13 +15,14 @@
  */
 
 #define LOG_TAG "ScreenRecord"
+#define ATRACE_TAG ATRACE_TAG_GRAPHICS
 //#define LOG_NDEBUG 0
 #include <utils/Log.h>
 
 #include <binder/IPCThreadState.h>
 #include <utils/Errors.h>
-#include <utils/Thread.h>
 #include <utils/Timers.h>
+#include <utils/Trace.h>
 
 #include <gui/Surface.h>
 #include <gui/SurfaceComposerClient.h>
@@ -29,7 +30,6 @@
 #include <ui/DisplayInfo.h>
 #include <media/openmax/OMX_IVCommon.h>
 #include <media/stagefright/foundation/ABuffer.h>
-#include <media/stagefright/foundation/ADebug.h>
 #include <media/stagefright/foundation/AMessage.h>
 #include <media/stagefright/MediaCodec.h>
 #include <media/stagefright/MediaErrors.h>
@@ -40,30 +40,43 @@
 #include <unistd.h>
 #include <string.h>
 #include <stdio.h>
+#include <ctype.h>
 #include <fcntl.h>
 #include <signal.h>
 #include <getopt.h>
 #include <sys/wait.h>
+#include <termios.h>
+#include <assert.h>
+
+#include "screenrecord.h"
+#include "Overlay.h"
+#include "FrameOutput.h"
 
 using namespace android;
 
 static const uint32_t kMinBitRate = 100000;         // 0.1Mbps
-static const uint32_t kMaxBitRate = 100 * 1000000;  // 100Mbps
+static const uint32_t kMaxBitRate = 200 * 1000000;  // 200Mbps
 static const uint32_t kMaxTimeLimitSec = 180;       // 3 minutes
 static const uint32_t kFallbackWidth = 1280;        // 720p
 static const uint32_t kFallbackHeight = 720;
+static const char* kMimeTypeAvc = "video/avc";
 
 // Command-line parameters.
-static bool gVerbose = false;               // chatty on stdout
-static bool gRotate = false;                // rotate 90 degrees
-static bool gSizeSpecified = false;         // was size explicitly requested?
-static uint32_t gVideoWidth = 0;            // default width+height
+static bool gVerbose = false;           // chatty on stdout
+static bool gRotate = false;            // rotate 90 degrees
+static enum {
+    FORMAT_MP4, FORMAT_H264, FORMAT_FRAMES, FORMAT_RAW_FRAMES
+} gOutputFormat = FORMAT_MP4;           // data format for output
+static bool gSizeSpecified = false;     // was size explicitly requested?
+static bool gWantInfoScreen = false;    // do we want initial info screen?
+static bool gWantFrameTime = false;     // do we want times on each frame?
+static uint32_t gVideoWidth = 0;        // default width+height
 static uint32_t gVideoHeight = 0;
-static uint32_t gBitRate = 4000000;         // 4Mbps
+static uint32_t gBitRate = 4000000;     // 4Mbps
 static uint32_t gTimeLimitSec = kMaxTimeLimitSec;
 
 // Set by signal handler to stop recording.
-static bool gStopRequested;
+static volatile bool gStopRequested;
 
 // Previous signal handler state, restored after first hit.
 static struct sigaction gOrigSigactionINT;
@@ -97,8 +110,7 @@
  * when Ctrl-C is hit.  If we're run from the host, the local adb process
  * gets the signal, and we get a SIGHUP when the terminal disconnects.
  */
-static status_t configureSignals()
-{
+static status_t configureSignals() {
     struct sigaction act;
     memset(&act, 0, sizeof(act));
     act.sa_handler = signalCatcher;
@@ -134,14 +146,14 @@
     status_t err;
 
     if (gVerbose) {
-        printf("Configuring recorder for %dx%d video at %.2fMbps\n",
-                gVideoWidth, gVideoHeight, gBitRate / 1000000.0);
+        printf("Configuring recorder for %dx%d %s at %.2fMbps\n",
+                gVideoWidth, gVideoHeight, kMimeTypeAvc, gBitRate / 1000000.0);
     }
 
     sp<AMessage> format = new AMessage;
     format->setInt32("width", gVideoWidth);
     format->setInt32("height", gVideoHeight);
-    format->setString("mime", "video/avc");
+    format->setString("mime", kMimeTypeAvc);
     format->setInt32("color-format", OMX_COLOR_FormatAndroidOpaque);
     format->setInt32("bitrate", gBitRate);
     format->setFloat("frame-rate", displayFps);
@@ -151,40 +163,37 @@
     looper->setName("screenrecord_looper");
     looper->start();
     ALOGV("Creating codec");
-    sp<MediaCodec> codec = MediaCodec::CreateByType(looper, "video/avc", true);
+    sp<MediaCodec> codec = MediaCodec::CreateByType(looper, kMimeTypeAvc, true);
     if (codec == NULL) {
-        fprintf(stderr, "ERROR: unable to create video/avc codec instance\n");
+        fprintf(stderr, "ERROR: unable to create %s codec instance\n",
+                kMimeTypeAvc);
         return UNKNOWN_ERROR;
     }
+
     err = codec->configure(format, NULL, NULL,
             MediaCodec::CONFIGURE_FLAG_ENCODE);
     if (err != NO_ERROR) {
+        fprintf(stderr, "ERROR: unable to configure %s codec at %dx%d (err=%d)\n",
+                kMimeTypeAvc, gVideoWidth, gVideoHeight, err);
         codec->release();
-        codec.clear();
-
-        fprintf(stderr, "ERROR: unable to configure codec (err=%d)\n", err);
         return err;
     }
 
-    ALOGV("Creating buffer producer");
+    ALOGV("Creating encoder input surface");
     sp<IGraphicBufferProducer> bufferProducer;
     err = codec->createInputSurface(&bufferProducer);
     if (err != NO_ERROR) {
-        codec->release();
-        codec.clear();
-
         fprintf(stderr,
             "ERROR: unable to create encoder input surface (err=%d)\n", err);
+        codec->release();
         return err;
     }
 
     ALOGV("Starting codec");
     err = codec->start();
     if (err != NO_ERROR) {
-        codec->release();
-        codec.clear();
-
         fprintf(stderr, "ERROR: unable to start codec (err=%d)\n", err);
+        codec->release();
         return err;
     }
 
@@ -195,12 +204,11 @@
 }
 
 /*
- * Configures the virtual display.  When this completes, virtual display
- * frames will start being sent to the encoder's surface.
+ * Sets the display projection, based on the display dimensions, video size,
+ * and device orientation.
  */
-static status_t prepareVirtualDisplay(const DisplayInfo& mainDpyInfo,
-        const sp<IGraphicBufferProducer>& bufferProducer,
-        sp<IBinder>* pDisplayHandle) {
+static status_t setDisplayProjection(const sp<IBinder>& dpy,
+        const DisplayInfo& mainDpyInfo) {
     status_t err;
 
     // Set the region of the layer stack we're interested in, which in our
@@ -266,15 +274,25 @@
         }
     }
 
-
-    sp<IBinder> dpy = SurfaceComposerClient::createDisplay(
-            String8("ScreenRecorder"), false /* secure */);
-
-    SurfaceComposerClient::openGlobalTransaction();
-    SurfaceComposerClient::setDisplaySurface(dpy, bufferProducer);
     SurfaceComposerClient::setDisplayProjection(dpy,
             gRotate ? DISPLAY_ORIENTATION_90 : DISPLAY_ORIENTATION_0,
             layerStackRect, displayRect);
+    return NO_ERROR;
+}
+
+/*
+ * Configures the virtual display.  When this completes, virtual display
+ * frames will start arriving from the buffer producer.
+ */
+static status_t prepareVirtualDisplay(const DisplayInfo& mainDpyInfo,
+        const sp<IGraphicBufferProducer>& bufferProducer,
+        sp<IBinder>* pDisplayHandle) {
+    sp<IBinder> dpy = SurfaceComposerClient::createDisplay(
+            String8("ScreenRecorder"), false /*secure*/);
+
+    SurfaceComposerClient::openGlobalTransaction();
+    SurfaceComposerClient::setDisplaySurface(dpy, bufferProducer);
+    setDisplayProjection(dpy, mainDpyInfo);
     SurfaceComposerClient::setDisplayLayerStack(dpy, 0);    // default stack
     SurfaceComposerClient::closeGlobalTransaction();
 
@@ -288,16 +306,22 @@
  * input frames are coming from the virtual display as fast as SurfaceFlinger
  * wants to send them.
  *
+ * Exactly one of muxer or rawFp must be non-null.
+ *
  * The muxer must *not* have been started before calling.
  */
 static status_t runEncoder(const sp<MediaCodec>& encoder,
-        const sp<MediaMuxer>& muxer) {
+        const sp<MediaMuxer>& muxer, FILE* rawFp, const sp<IBinder>& mainDpy,
+        const sp<IBinder>& virtualDpy, uint8_t orientation) {
     static int kTimeout = 250000;   // be responsive on signal
     status_t err;
     ssize_t trackIdx = -1;
     uint32_t debugNumFrames = 0;
     int64_t startWhenNsec = systemTime(CLOCK_MONOTONIC);
     int64_t endWhenNsec = startWhenNsec + seconds_to_nanoseconds(gTimeLimitSec);
+    DisplayInfo mainDpyInfo;
+
+    assert((rawFp == NULL && muxer != NULL) || (rawFp != NULL && muxer == NULL));
 
     Vector<sp<ABuffer> > buffers;
     err = encoder->getOutputBuffers(&buffers);
@@ -330,31 +354,68 @@
         case NO_ERROR:
             // got a buffer
             if ((flags & MediaCodec::BUFFER_FLAG_CODECCONFIG) != 0) {
-                // ignore this -- we passed the CSD into MediaMuxer when
-                // we got the format change notification
-                ALOGV("Got codec config buffer (%u bytes); ignoring", size);
-                size = 0;
+                ALOGV("Got codec config buffer (%u bytes)", size);
+                if (muxer != NULL) {
+                    // ignore this -- we passed the CSD into MediaMuxer when
+                    // we got the format change notification
+                    size = 0;
+                }
             }
             if (size != 0) {
                 ALOGV("Got data in buffer %d, size=%d, pts=%lld",
                         bufIndex, size, ptsUsec);
-                CHECK(trackIdx != -1);
+
+                { // scope
+                    ATRACE_NAME("orientation");
+                    // Check orientation, update if it has changed.
+                    //
+                    // Polling for changes is inefficient and wrong, but the
+                    // useful stuff is hard to get at without a Dalvik VM.
+                    err = SurfaceComposerClient::getDisplayInfo(mainDpy,
+                            &mainDpyInfo);
+                    if (err != NO_ERROR) {
+                        ALOGW("getDisplayInfo(main) failed: %d", err);
+                    } else if (orientation != mainDpyInfo.orientation) {
+                        ALOGD("orientation changed, now %d", mainDpyInfo.orientation);
+                        SurfaceComposerClient::openGlobalTransaction();
+                        setDisplayProjection(virtualDpy, mainDpyInfo);
+                        SurfaceComposerClient::closeGlobalTransaction();
+                        orientation = mainDpyInfo.orientation;
+                    }
+                }
 
                 // If the virtual display isn't providing us with timestamps,
-                // use the current time.
+                // use the current time.  This isn't great -- we could get
+                // decoded data in clusters -- but we're not expecting
+                // to hit this anyway.
                 if (ptsUsec == 0) {
                     ptsUsec = systemTime(SYSTEM_TIME_MONOTONIC) / 1000;
                 }
 
-                // The MediaMuxer docs are unclear, but it appears that we
-                // need to pass either the full set of BufferInfo flags, or
-                // (flags & BUFFER_FLAG_SYNCFRAME).
-                err = muxer->writeSampleData(buffers[bufIndex], trackIdx,
-                        ptsUsec, flags);
-                if (err != NO_ERROR) {
-                    fprintf(stderr, "Failed writing data to muxer (err=%d)\n",
-                            err);
-                    return err;
+                if (muxer == NULL) {
+                    fwrite(buffers[bufIndex]->data(), 1, size, rawFp);
+                    // Flush the data immediately in case we're streaming.
+                    // We don't want to do this if all we've written is
+                    // the SPS/PPS data because mplayer gets confused.
+                    if ((flags & MediaCodec::BUFFER_FLAG_CODECCONFIG) == 0) {
+                        fflush(rawFp);
+                    }
+                } else {
+                    // The MediaMuxer docs are unclear, but it appears that we
+                    // need to pass either the full set of BufferInfo flags, or
+                    // (flags & BUFFER_FLAG_SYNCFRAME).
+                    //
+                    // If this blocks for too long we could drop frames.  We may
+                    // want to queue these up and do them on a different thread.
+                    ATRACE_NAME("write sample");
+                    assert(trackIdx != -1);
+                    err = muxer->writeSampleData(buffers[bufIndex], trackIdx,
+                            ptsUsec, flags);
+                    if (err != NO_ERROR) {
+                        fprintf(stderr,
+                            "Failed writing data to muxer (err=%d)\n", err);
+                        return err;
+                    }
                 }
                 debugNumFrames++;
             }
@@ -366,8 +427,8 @@
             }
             if ((flags & MediaCodec::BUFFER_FLAG_EOS) != 0) {
                 // Not expecting EOS from SurfaceFlinger.  Go with it.
-                ALOGD("Received end-of-stream");
-                gStopRequested = false;
+                ALOGI("Received end-of-stream");
+                gStopRequested = true;
             }
             break;
         case -EAGAIN:                       // INFO_TRY_AGAIN_LATER
@@ -375,21 +436,23 @@
             break;
         case INFO_FORMAT_CHANGED:           // INFO_OUTPUT_FORMAT_CHANGED
             {
-                // format includes CSD, which we must provide to muxer
+                // Format includes CSD, which we must provide to muxer.
                 ALOGV("Encoder format changed");
                 sp<AMessage> newFormat;
                 encoder->getOutputFormat(&newFormat);
-                trackIdx = muxer->addTrack(newFormat);
-                ALOGV("Starting muxer");
-                err = muxer->start();
-                if (err != NO_ERROR) {
-                    fprintf(stderr, "Unable to start muxer (err=%d)\n", err);
-                    return err;
+                if (muxer != NULL) {
+                    trackIdx = muxer->addTrack(newFormat);
+                    ALOGV("Starting muxer");
+                    err = muxer->start();
+                    if (err != NO_ERROR) {
+                        fprintf(stderr, "Unable to start muxer (err=%d)\n", err);
+                        return err;
+                    }
                 }
             }
             break;
         case INFO_OUTPUT_BUFFERS_CHANGED:   // INFO_OUTPUT_BUFFERS_CHANGED
-            // not expected for an encoder; handle it anyway
+            // Not expected for an encoder; handle it anyway.
             ALOGV("Encoder buffers changed");
             err = encoder->getOutputBuffers(&buffers);
             if (err != NO_ERROR) {
@@ -399,7 +462,7 @@
             }
             break;
         case INVALID_OPERATION:
-            fprintf(stderr, "Request for encoder buffer failed\n");
+            ALOGW("dequeueOutputBuffer returned INVALID_OPERATION");
             return err;
         default:
             fprintf(stderr,
@@ -411,14 +474,52 @@
     ALOGV("Encoder stopping (req=%d)", gStopRequested);
     if (gVerbose) {
         printf("Encoder stopping; recorded %u frames in %lld seconds\n",
-                debugNumFrames,
-                nanoseconds_to_seconds(systemTime(CLOCK_MONOTONIC) - startWhenNsec));
+                debugNumFrames, nanoseconds_to_seconds(
+                        systemTime(CLOCK_MONOTONIC) - startWhenNsec));
     }
     return NO_ERROR;
 }
 
 /*
- * Main "do work" method.
+ * Raw H.264 byte stream output requested.  Send the output to stdout
+ * if desired.  If the output is a tty, reconfigure it to avoid the
+ * CRLF line termination that we see with "adb shell" commands.
+ */
+static FILE* prepareRawOutput(const char* fileName) {
+    FILE* rawFp = NULL;
+
+    if (strcmp(fileName, "-") == 0) {
+        if (gVerbose) {
+            fprintf(stderr, "ERROR: verbose output and '-' not compatible");
+            return NULL;
+        }
+        rawFp = stdout;
+    } else {
+        rawFp = fopen(fileName, "w");
+        if (rawFp == NULL) {
+            fprintf(stderr, "fopen raw failed: %s\n", strerror(errno));
+            return NULL;
+        }
+    }
+
+    int fd = fileno(rawFp);
+    if (isatty(fd)) {
+        // best effort -- reconfigure tty for "raw"
+        ALOGD("raw video output to tty (fd=%d)", fd);
+        struct termios term;
+        if (tcgetattr(fd, &term) == 0) {
+            cfmakeraw(&term);
+            if (tcsetattr(fd, TCSANOW, &term) == 0) {
+                ALOGD("tty successfully configured for raw");
+            }
+        }
+    }
+
+    return rawFp;
+}
+
+/*
+ * Main "do work" start point.
  *
  * Configures codec, muxer, and virtual display, then starts moving bits
  * around.
@@ -460,66 +561,160 @@
 
     // Configure and start the encoder.
     sp<MediaCodec> encoder;
-    sp<IGraphicBufferProducer> bufferProducer;
-    err = prepareEncoder(mainDpyInfo.fps, &encoder, &bufferProducer);
+    sp<FrameOutput> frameOutput;
+    sp<IGraphicBufferProducer> encoderInputSurface;
+    if (gOutputFormat != FORMAT_FRAMES && gOutputFormat != FORMAT_RAW_FRAMES) {
+        err = prepareEncoder(mainDpyInfo.fps, &encoder, &encoderInputSurface);
 
-    if (err != NO_ERROR && !gSizeSpecified) {
-        // fallback is defined for landscape; swap if we're in portrait
-        bool needSwap = gVideoWidth < gVideoHeight;
-        uint32_t newWidth = needSwap ? kFallbackHeight : kFallbackWidth;
-        uint32_t newHeight = needSwap ? kFallbackWidth : kFallbackHeight;
-        if (gVideoWidth != newWidth && gVideoHeight != newHeight) {
-            ALOGV("Retrying with 720p");
-            fprintf(stderr, "WARNING: failed at %dx%d, retrying at %dx%d\n",
-                    gVideoWidth, gVideoHeight, newWidth, newHeight);
-            gVideoWidth = newWidth;
-            gVideoHeight = newHeight;
-            err = prepareEncoder(mainDpyInfo.fps, &encoder, &bufferProducer);
+        if (err != NO_ERROR && !gSizeSpecified) {
+            // fallback is defined for landscape; swap if we're in portrait
+            bool needSwap = gVideoWidth < gVideoHeight;
+            uint32_t newWidth = needSwap ? kFallbackHeight : kFallbackWidth;
+            uint32_t newHeight = needSwap ? kFallbackWidth : kFallbackHeight;
+            if (gVideoWidth != newWidth && gVideoHeight != newHeight) {
+                ALOGV("Retrying with 720p");
+                fprintf(stderr, "WARNING: failed at %dx%d, retrying at %dx%d\n",
+                        gVideoWidth, gVideoHeight, newWidth, newHeight);
+                gVideoWidth = newWidth;
+                gVideoHeight = newHeight;
+                err = prepareEncoder(mainDpyInfo.fps, &encoder,
+                        &encoderInputSurface);
+            }
+        }
+        if (err != NO_ERROR) return err;
+
+        // From here on, we must explicitly release() the encoder before it goes
+        // out of scope, or we will get an assertion failure from stagefright
+        // later on in a different thread.
+    } else {
+        // We're not using an encoder at all.  The "encoder input surface" we hand to
+        // SurfaceFlinger will just feed directly to us.
+        frameOutput = new FrameOutput();
+        err = frameOutput->createInputSurface(gVideoWidth, gVideoHeight, &encoderInputSurface);
+        if (err != NO_ERROR) {
+            return err;
         }
     }
-    if (err != NO_ERROR) {
-        return err;
+
+    // Draw the "info" page by rendering a frame with GLES and sending
+    // it directly to the encoder.
+    // TODO: consider displaying this as a regular layer to avoid b/11697754
+    if (gWantInfoScreen) {
+        Overlay::drawInfoPage(encoderInputSurface);
+    }
+
+    // Configure optional overlay.
+    sp<IGraphicBufferProducer> bufferProducer;
+    sp<Overlay> overlay;
+    if (gWantFrameTime) {
+        // Send virtual display frames to an external texture.
+        overlay = new Overlay();
+        err = overlay->start(encoderInputSurface, &bufferProducer);
+        if (err != NO_ERROR) {
+            if (encoder != NULL) encoder->release();
+            return err;
+        }
+        if (gVerbose) {
+            printf("Bugreport overlay created\n");
+        }
+    } else {
+        // Use the encoder's input surface as the virtual display surface.
+        bufferProducer = encoderInputSurface;
     }
 
     // Configure virtual display.
     sp<IBinder> dpy;
     err = prepareVirtualDisplay(mainDpyInfo, bufferProducer, &dpy);
     if (err != NO_ERROR) {
-        encoder->release();
-        encoder.clear();
-
+        if (encoder != NULL) encoder->release();
         return err;
     }
 
-    // Configure, but do not start, muxer.
-    sp<MediaMuxer> muxer = new MediaMuxer(fileName,
-            MediaMuxer::OUTPUT_FORMAT_MPEG_4);
-    if (gRotate) {
-        muxer->setOrientationHint(90);
+    sp<MediaMuxer> muxer = NULL;
+    FILE* rawFp = NULL;
+    switch (gOutputFormat) {
+        case FORMAT_MP4: {
+            // Configure muxer.  We have to wait for the CSD blob from the encoder
+            // before we can start it.
+            muxer = new MediaMuxer(fileName, MediaMuxer::OUTPUT_FORMAT_MPEG_4);
+            if (gRotate) {
+                muxer->setOrientationHint(90);  // TODO: does this do anything?
+            }
+            break;
+        }
+        case FORMAT_H264:
+        case FORMAT_FRAMES:
+        case FORMAT_RAW_FRAMES: {
+            rawFp = prepareRawOutput(fileName);
+            if (rawFp == NULL) {
+                if (encoder != NULL) encoder->release();
+                return -1;
+            }
+            break;
+        }
+        default:
+            fprintf(stderr, "ERROR: unknown format %d\n", gOutputFormat);
+            abort();
     }
 
-    // Main encoder loop.
-    err = runEncoder(encoder, muxer);
-    if (err != NO_ERROR) {
-        encoder->release();
-        encoder.clear();
+    if (gOutputFormat == FORMAT_FRAMES || gOutputFormat == FORMAT_RAW_FRAMES) {
+        // TODO: if we want to make this a proper feature, we should output
+        //       an outer header with version info.  Right now we never change
+        //       the frame size or format, so we could conceivably just send
+        //       the current frame header once and then follow it with an
+        //       unbroken stream of data.
 
-        return err;
-    }
+        // Make the EGL context current again.  This gets unhooked if we're
+        // using "--bugreport" mode.
+        // TODO: figure out if we can eliminate this
+        frameOutput->prepareToCopy();
 
-    if (gVerbose) {
-        printf("Stopping encoder and muxer\n");
+        while (!gStopRequested) {
+            // Poll for frames, the same way we do for MediaCodec.  We do
+            // all of the work on the main thread.
+            //
+            // Ideally we'd sleep indefinitely and wake when the
+            // stop was requested, but this will do for now.  (It almost
+            // works because wait() wakes when a signal hits, but we
+            // need to handle the edge cases.)
+            bool rawFrames = gOutputFormat == FORMAT_RAW_FRAMES;
+            err = frameOutput->copyFrame(rawFp, 250000, rawFrames);
+            if (err == ETIMEDOUT) {
+                err = NO_ERROR;
+            } else if (err != NO_ERROR) {
+                ALOGE("Got error %d from copyFrame()", err);
+                break;
+            }
+        }
+    } else {
+        // Main encoder loop.
+        err = runEncoder(encoder, muxer, rawFp, mainDpy, dpy,
+                mainDpyInfo.orientation);
+        if (err != NO_ERROR) {
+            fprintf(stderr, "Encoder failed (err=%d)\n", err);
+            // fall through to cleanup
+        }
+
+        if (gVerbose) {
+            printf("Stopping encoder and muxer\n");
+        }
     }
 
     // Shut everything down, starting with the producer side.
-    bufferProducer = NULL;
+    encoderInputSurface = NULL;
     SurfaceComposerClient::destroyDisplay(dpy);
+    if (overlay != NULL) overlay->stop();
+    if (encoder != NULL) encoder->stop();
+    if (muxer != NULL) {
+        // If we don't stop muxer explicitly, i.e. let the destructor run,
+        // it may hang (b/11050628).
+        muxer->stop();
+    } else if (rawFp != stdout) {
+        fclose(rawFp);
+    }
+    if (encoder != NULL) encoder->release();
 
-    encoder->stop();
-    muxer->stop();
-    encoder->release();
-
-    return 0;
+    return err;
 }
 
 /*
@@ -528,6 +723,28 @@
  * This is optional, but nice to have.
  */
 static status_t notifyMediaScanner(const char* fileName) {
+    // need to do allocations before the fork()
+    String8 fileUrl("file://");
+    fileUrl.append(fileName);
+
+    const char* kCommand = "/system/bin/am";
+    const char* const argv[] = {
+            kCommand,
+            "broadcast",
+            "-a",
+            "android.intent.action.MEDIA_SCANNER_SCAN_FILE",
+            "-d",
+            fileUrl.string(),
+            NULL
+    };
+    if (gVerbose) {
+        printf("Executing:");
+        for (int i = 0; argv[i] != NULL; i++) {
+            printf(" %s", argv[i]);
+        }
+        putchar('\n');
+    }
+
     pid_t pid = fork();
     if (pid < 0) {
         int err = errno;
@@ -539,34 +756,14 @@
         int status;
         pid_t actualPid = TEMP_FAILURE_RETRY(waitpid(pid, &status, 0));
         if (actualPid != pid) {
-            ALOGW("waitpid() returned %d (errno=%d)", actualPid, errno);
+            ALOGW("waitpid(%d) returned %d (errno=%d)", pid, actualPid, errno);
         } else if (status != 0) {
             ALOGW("'am broadcast' exited with status=%d", status);
         } else {
             ALOGV("'am broadcast' exited successfully");
         }
     } else {
-        const char* kCommand = "/system/bin/am";
-
-        // child; we're single-threaded, so okay to alloc
-        String8 fileUrl("file://");
-        fileUrl.append(fileName);
-        const char* const argv[] = {
-                kCommand,
-                "broadcast",
-                "-a",
-                "android.intent.action.MEDIA_SCANNER_SCAN_FILE",
-                "-d",
-                fileUrl.string(),
-                NULL
-        };
-        if (gVerbose) {
-            printf("Executing:");
-            for (int i = 0; argv[i] != NULL; i++) {
-                printf(" %s", argv[i]);
-            }
-            putchar('\n');
-        } else {
+        if (!gVerbose) {
             // non-verbose, suppress 'am' output
             ALOGV("closing stdout/stderr in child");
             int fd = open("/dev/null", O_WRONLY);
@@ -611,13 +808,37 @@
 }
 
 /*
+ * Accepts a string with a bare number ("4000000") or with a single-character
+ * unit ("4m").
+ *
+ * Returns an error if parsing fails.
+ */
+static status_t parseValueWithUnit(const char* str, uint32_t* pValue) {
+    long value;
+    char* endptr;
+
+    value = strtol(str, &endptr, 10);
+    if (*endptr == '\0') {
+        // bare number
+        *pValue = value;
+        return NO_ERROR;
+    } else if (toupper(*endptr) == 'M' && *(endptr+1) == '\0') {
+        *pValue = value * 1000000;  // check for overflow?
+        return NO_ERROR;
+    } else {
+        fprintf(stderr, "Unrecognized value: %s\n", str);
+        return UNKNOWN_ERROR;
+    }
+}
+
+/*
  * Dumps usage on stderr.
  */
 static void usage() {
     fprintf(stderr,
         "Usage: screenrecord [options] <filename>\n"
         "\n"
-        "Records the device's display to a .mp4 file.\n"
+        "Android screenrecord v%d.%d.  Records the device's display to a .mp4 file.\n"
         "\n"
         "Options:\n"
         "--size WIDTHxHEIGHT\n"
@@ -625,11 +846,13 @@
         "    display resolution (if supported), 1280x720 if not.  For best results,\n"
         "    use a size supported by the AVC encoder.\n"
         "--bit-rate RATE\n"
-        "    Set the video bit rate, in megabits per second.  Default %dMbps.\n"
+        "    Set the video bit rate, in bits per second.  Value may be specified as\n"
+        "    bits or megabits, e.g. '4000000' is equivalent to '4M'.  Default %dMbps.\n"
+        "--bugreport\n"
+        "    Add additional information, such as a timestamp overlay, that is helpful\n"
+        "    in videos captured to illustrate bugs.\n"
         "--time-limit TIME\n"
         "    Set the maximum recording time, in seconds.  Default / maximum is %d.\n"
-        "--rotate\n"
-        "    Rotate the output 90 degrees.\n"
         "--verbose\n"
         "    Display interesting information on stdout.\n"
         "--help\n"
@@ -637,7 +860,7 @@
         "\n"
         "Recording continues until Ctrl-C is hit or the time limit is reached.\n"
         "\n",
-        gBitRate / 1000000, gTimeLimitSec
+        kVersionMajor, kVersionMinor, gBitRate / 1000000, gTimeLimitSec
         );
 }
 
@@ -646,13 +869,18 @@
  */
 int main(int argc, char* const argv[]) {
     static const struct option longOptions[] = {
-        { "help",       no_argument,        NULL, 'h' },
-        { "verbose",    no_argument,        NULL, 'v' },
-        { "size",       required_argument,  NULL, 's' },
-        { "bit-rate",   required_argument,  NULL, 'b' },
-        { "time-limit", required_argument,  NULL, 't' },
-        { "rotate",     no_argument,        NULL, 'r' },
-        { NULL,         0,                  NULL, 0 }
+        { "help",               no_argument,        NULL, 'h' },
+        { "verbose",            no_argument,        NULL, 'v' },
+        { "size",               required_argument,  NULL, 's' },
+        { "bit-rate",           required_argument,  NULL, 'b' },
+        { "time-limit",         required_argument,  NULL, 't' },
+        { "bugreport",          no_argument,        NULL, 'u' },
+        // "unofficial" options
+        { "show-device-info",   no_argument,        NULL, 'i' },
+        { "show-frame-time",    no_argument,        NULL, 'f' },
+        { "rotate",             no_argument,        NULL, 'r' },
+        { "output-format",      required_argument,  NULL, 'o' },
+        { NULL,                 0,                  NULL, 0 }
     };
 
     while (true) {
@@ -684,7 +912,9 @@
             gSizeSpecified = true;
             break;
         case 'b':
-            gBitRate = atoi(optarg);
+            if (parseValueWithUnit(optarg, &gBitRate) != NO_ERROR) {
+                return 2;
+            }
             if (gBitRate < kMinBitRate || gBitRate > kMaxBitRate) {
                 fprintf(stderr,
                         "Bit rate %dbps outside acceptable range [%d,%d]\n",
@@ -701,9 +931,34 @@
                 return 2;
             }
             break;
+        case 'u':
+            gWantInfoScreen = true;
+            gWantFrameTime = true;
+            break;
+        case 'i':
+            gWantInfoScreen = true;
+            break;
+        case 'f':
+            gWantFrameTime = true;
+            break;
         case 'r':
+            // experimental feature
             gRotate = true;
             break;
+        case 'o':
+            if (strcmp(optarg, "mp4") == 0) {
+                gOutputFormat = FORMAT_MP4;
+            } else if (strcmp(optarg, "h264") == 0) {
+                gOutputFormat = FORMAT_H264;
+            } else if (strcmp(optarg, "frames") == 0) {
+                gOutputFormat = FORMAT_FRAMES;
+            } else if (strcmp(optarg, "raw-frames") == 0) {
+                gOutputFormat = FORMAT_RAW_FRAMES;
+            } else {
+                fprintf(stderr, "Unknown format '%s'\n", optarg);
+                return 2;
+            }
+            break;
         default:
             if (ic != '?') {
                 fprintf(stderr, "getopt_long returned unexpected value 0x%x\n", ic);
@@ -717,17 +972,19 @@
         return 2;
     }
 
-    // MediaMuxer tries to create the file in the constructor, but we don't
-    // learn about the failure until muxer.start(), which returns a generic
-    // error code without logging anything.  We attempt to create the file
-    // now for better diagnostics.
     const char* fileName = argv[optind];
-    int fd = open(fileName, O_CREAT | O_RDWR, 0644);
-    if (fd < 0) {
-        fprintf(stderr, "Unable to open '%s': %s\n", fileName, strerror(errno));
-        return 1;
+    if (gOutputFormat == FORMAT_MP4) {
+        // MediaMuxer tries to create the file in the constructor, but we don't
+        // learn about the failure until muxer.start(), which returns a generic
+        // error code without logging anything.  We attempt to create the file
+        // now for better diagnostics.
+        int fd = open(fileName, O_CREAT | O_RDWR, 0644);
+        if (fd < 0) {
+            fprintf(stderr, "Unable to open '%s': %s\n", fileName, strerror(errno));
+            return 1;
+        }
+        close(fd);
     }
-    close(fd);
 
     status_t err = recordScreen(fileName);
     if (err == NO_ERROR) {
diff --git a/cmds/screenrecord/screenrecord.h b/cmds/screenrecord/screenrecord.h
new file mode 100644
index 0000000..9b058c2
--- /dev/null
+++ b/cmds/screenrecord/screenrecord.h
@@ -0,0 +1,23 @@
+/*
+ * Copyright 2013 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.
+ */
+
+#ifndef SCREENRECORD_SCREENRECORD_H
+#define SCREENRECORD_SCREENRECORD_H
+
+#define kVersionMajor 1
+#define kVersionMinor 2
+
+#endif /*SCREENRECORD_SCREENRECORD_H*/
diff --git a/drm/libdrmframework/Android.mk b/drm/libdrmframework/Android.mk
index 49c4f9b..33f9d3b 100644
--- a/drm/libdrmframework/Android.mk
+++ b/drm/libdrmframework/Android.mk
@@ -19,12 +19,14 @@
 
 LOCAL_SRC_FILES:= \
     DrmManagerClientImpl.cpp \
-    DrmManagerClient.cpp
+    DrmManagerClient.cpp \
+    NoOpDrmManagerClientImpl.cpp
 
 LOCAL_MODULE:= libdrmframework
 
 LOCAL_SHARED_LIBRARIES := \
     libutils \
+    libcutils \
     liblog \
     libbinder \
     libdl
diff --git a/drm/libdrmframework/DrmManagerClient.cpp b/drm/libdrmframework/DrmManagerClient.cpp
index ea30d01..440dd91 100644
--- a/drm/libdrmframework/DrmManagerClient.cpp
+++ b/drm/libdrmframework/DrmManagerClient.cpp
@@ -29,7 +29,7 @@
 }
 
 DrmManagerClient::~DrmManagerClient() {
-    DrmManagerClientImpl::remove(mUniqueId);
+    mDrmManagerClientImpl->remove(mUniqueId);
     mDrmManagerClientImpl->removeClient(mUniqueId);
     mDrmManagerClientImpl->setOnInfoListener(mUniqueId, NULL);
 }
diff --git a/drm/libdrmframework/DrmManagerClientImpl.cpp b/drm/libdrmframework/DrmManagerClientImpl.cpp
index ffefd74..2d2c90e 100644
--- a/drm/libdrmframework/DrmManagerClientImpl.cpp
+++ b/drm/libdrmframework/DrmManagerClientImpl.cpp
@@ -21,8 +21,10 @@
 #include <utils/String8.h>
 #include <utils/Vector.h>
 #include <binder/IServiceManager.h>
+#include <cutils/properties.h>
 
 #include "DrmManagerClientImpl.h"
+#include "NoOpDrmManagerClientImpl.h"
 
 using namespace android;
 
@@ -35,9 +37,12 @@
 
 DrmManagerClientImpl* DrmManagerClientImpl::create(
         int* pUniqueId, bool isNative) {
-    *pUniqueId = getDrmManagerService()->addUniqueId(isNative);
-
-    return new DrmManagerClientImpl();
+    sp<IDrmManagerService> service = getDrmManagerService();
+    if (service != NULL) {
+        *pUniqueId = getDrmManagerService()->addUniqueId(isNative);
+        return new DrmManagerClientImpl();
+    }
+    return new NoOpDrmManagerClientImpl();
 }
 
 void DrmManagerClientImpl::remove(int uniqueId) {
@@ -47,6 +52,12 @@
 const sp<IDrmManagerService>& DrmManagerClientImpl::getDrmManagerService() {
     Mutex::Autolock lock(sMutex);
     if (NULL == sDrmManagerService.get()) {
+        char value[PROPERTY_VALUE_MAX];
+        if (property_get("drm.service.enabled", value, NULL) == 0) {
+            // Drm is undefined for this device
+            return sDrmManagerService;
+        }
+
         sp<IServiceManager> sm = defaultServiceManager();
         sp<IBinder> binder;
         do {
diff --git a/drm/libdrmframework/NoOpDrmManagerClientImpl.cpp b/drm/libdrmframework/NoOpDrmManagerClientImpl.cpp
new file mode 100644
index 0000000..dab583d
--- /dev/null
+++ b/drm/libdrmframework/NoOpDrmManagerClientImpl.cpp
@@ -0,0 +1,152 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+#include "NoOpDrmManagerClientImpl.h"
+
+namespace android {
+
+void NoOpDrmManagerClientImpl::remove(int uniqueId) {
+}
+
+void NoOpDrmManagerClientImpl::addClient(int uniqueId) {
+}
+
+void NoOpDrmManagerClientImpl::removeClient(int uniqueId) {
+}
+
+status_t NoOpDrmManagerClientImpl::setOnInfoListener(
+            int uniqueId, const sp<DrmManagerClient::OnInfoListener>& infoListener) {
+    return UNKNOWN_ERROR;
+}
+
+DrmConstraints* NoOpDrmManagerClientImpl::getConstraints(int uniqueId, const String8* path, const int action) {
+    return NULL;
+}
+
+DrmMetadata* NoOpDrmManagerClientImpl::getMetadata(int uniqueId, const String8* path) {
+    return NULL;
+}
+
+bool NoOpDrmManagerClientImpl::canHandle(int uniqueId, const String8& path, const String8& mimeType) {
+    return false;
+}
+
+DrmInfoStatus* NoOpDrmManagerClientImpl::processDrmInfo(int uniqueId, const DrmInfo* drmInfo) {
+    return NULL;
+}
+
+DrmInfo* NoOpDrmManagerClientImpl::acquireDrmInfo(int uniqueId, const DrmInfoRequest* drmInfoRequest) {
+    return NULL;
+}
+
+status_t NoOpDrmManagerClientImpl::saveRights(int uniqueId, const DrmRights& drmRights,
+            const String8& rightsPath, const String8& contentPath) {
+    return UNKNOWN_ERROR;
+}
+
+String8 NoOpDrmManagerClientImpl::getOriginalMimeType(int uniqueId, const String8& path, int fd) {
+    return String8();
+}
+
+int NoOpDrmManagerClientImpl::getDrmObjectType(int uniqueId, const String8& path, const String8& mimeType) {
+    return -1;
+}
+
+int NoOpDrmManagerClientImpl::checkRightsStatus(int uniqueId, const String8& path, int action) {
+    return -1;
+}
+
+status_t NoOpDrmManagerClientImpl::consumeRights(int uniqueId, sp<DecryptHandle> &decryptHandle, int action, bool reserve) {
+    return UNKNOWN_ERROR;
+}
+
+status_t NoOpDrmManagerClientImpl::setPlaybackStatus(
+            int uniqueId, sp<DecryptHandle> &decryptHandle, int playbackStatus, int64_t position) {
+    return UNKNOWN_ERROR;
+}
+
+bool NoOpDrmManagerClientImpl::validateAction(
+        int uniqueId, const String8& path, int action, const ActionDescription& description) {
+    return false;
+}
+
+status_t NoOpDrmManagerClientImpl::removeRights(int uniqueId, const String8& path) {
+    return UNKNOWN_ERROR;
+}
+
+status_t NoOpDrmManagerClientImpl::removeAllRights(int uniqueId) {
+    return UNKNOWN_ERROR;
+}
+
+int NoOpDrmManagerClientImpl::openConvertSession(int uniqueId, const String8& mimeType) {
+    return -1;
+}
+
+DrmConvertedStatus* NoOpDrmManagerClientImpl::convertData(int uniqueId, int convertId, const DrmBuffer* inputData) {
+    return NULL;
+}
+
+DrmConvertedStatus* NoOpDrmManagerClientImpl::closeConvertSession(int uniqueId, int convertId) {
+    return NULL;
+}
+
+status_t NoOpDrmManagerClientImpl::getAllSupportInfo(int uniqueId, int* length, DrmSupportInfo** drmSupportInfoArray) {
+    return UNKNOWN_ERROR;
+}
+
+sp<DecryptHandle> NoOpDrmManagerClientImpl::openDecryptSession(
+            int uniqueId, int fd, off64_t offset, off64_t length, const char* mime) {
+    return NULL;
+}
+
+sp<DecryptHandle> NoOpDrmManagerClientImpl::openDecryptSession(
+            int uniqueId, const char* uri, const char* mime) {
+    return NULL;
+}
+
+sp<DecryptHandle> NoOpDrmManagerClientImpl::openDecryptSession(int uniqueId, const DrmBuffer& buf,
+            const String8& mimeType) {
+    return NULL;
+}
+
+status_t NoOpDrmManagerClientImpl::closeDecryptSession(int uniqueId, sp<DecryptHandle> &decryptHandle) {
+    return UNKNOWN_ERROR;
+}
+
+status_t NoOpDrmManagerClientImpl::initializeDecryptUnit(int uniqueId, sp<DecryptHandle> &decryptHandle,
+            int decryptUnitId, const DrmBuffer* headerInfo) {
+    return UNKNOWN_ERROR;
+}
+
+status_t NoOpDrmManagerClientImpl::decrypt(int uniqueId, sp<DecryptHandle> &decryptHandle, int decryptUnitId,
+            const DrmBuffer* encBuffer, DrmBuffer** decBuffer, DrmBuffer* IV) {
+    return UNKNOWN_ERROR;
+}
+
+status_t NoOpDrmManagerClientImpl::finalizeDecryptUnit(int uniqueId, sp<DecryptHandle> &decryptHandle, int decryptUnitId) {
+    return UNKNOWN_ERROR;
+}
+
+ssize_t NoOpDrmManagerClientImpl::pread(int uniqueId, sp<DecryptHandle> &decryptHandle,
+            void* buffer, ssize_t numBytes, off64_t offset) {
+    return -1;
+}
+
+status_t NoOpDrmManagerClientImpl::notify(const DrmInfoEvent& event) {
+    return UNKNOWN_ERROR;
+}
+
+}
diff --git a/drm/libdrmframework/include/DrmManagerClientImpl.h b/drm/libdrmframework/include/DrmManagerClientImpl.h
index 3400cb1..3858675 100644
--- a/drm/libdrmframework/include/DrmManagerClientImpl.h
+++ b/drm/libdrmframework/include/DrmManagerClientImpl.h
@@ -34,30 +34,30 @@
  *
  */
 class DrmManagerClientImpl : public BnDrmServiceListener {
-private:
+protected:
     DrmManagerClientImpl() { }
 
 public:
     static DrmManagerClientImpl* create(int* pUniqueId, bool isNative);
 
-    static void remove(int uniqueId);
-
     virtual ~DrmManagerClientImpl() { }
 
 public:
+    virtual void remove(int uniqueId);
+
     /**
      * Adds the client respective to given unique id.
      *
      * @param[in] uniqueId Unique identifier for a session
      */
-    void addClient(int uniqueId);
+    virtual void addClient(int uniqueId);
 
     /**
      * Removes the client respective to given unique id.
      *
      * @param[in] uniqueId Unique identifier for a session
      */
-    void removeClient(int uniqueId);
+    virtual void removeClient(int uniqueId);
 
     /**
      * Register a callback to be invoked when the caller required to
@@ -68,7 +68,7 @@
      * @return status_t
      *            Returns DRM_NO_ERROR for success, DRM_ERROR_UNKNOWN for failure
      */
-    status_t setOnInfoListener(
+    virtual status_t setOnInfoListener(
             int uniqueId, const sp<DrmManagerClient::OnInfoListener>& infoListener);
 
     /**
@@ -83,7 +83,7 @@
      * @note
      *     In case of error, return NULL
      */
-    DrmConstraints* getConstraints(int uniqueId, const String8* path, const int action);
+    virtual DrmConstraints* getConstraints(int uniqueId, const String8* path, const int action);
 
     /**
      * Get metadata information associated with input content.
@@ -95,7 +95,7 @@
      * @note
      *    In case of error, return NULL
      */
-    DrmMetadata* getMetadata(int uniqueId, const String8* path);
+    virtual DrmMetadata* getMetadata(int uniqueId, const String8* path);
 
     /**
      * Check whether the given mimetype or path can be handled
@@ -106,7 +106,7 @@
      * @return
      *     True if DrmManager can handle given path or mime type.
      */
-    bool canHandle(int uniqueId, const String8& path, const String8& mimeType);
+    virtual bool canHandle(int uniqueId, const String8& path, const String8& mimeType);
 
     /**
      * Executes given drm information based on its type
@@ -116,7 +116,7 @@
      * @return DrmInfoStatus
      *     instance as a result of processing given input
      */
-    DrmInfoStatus* processDrmInfo(int uniqueId, const DrmInfo* drmInfo);
+    virtual DrmInfoStatus* processDrmInfo(int uniqueId, const DrmInfo* drmInfo);
 
     /**
      * Retrieves necessary information for registration, unregistration or rights
@@ -127,7 +127,7 @@
      * @return DrmInfo
      *     instance as a result of processing given input
      */
-    DrmInfo* acquireDrmInfo(int uniqueId, const DrmInfoRequest* drmInfoRequest);
+    virtual DrmInfo* acquireDrmInfo(int uniqueId, const DrmInfoRequest* drmInfoRequest);
 
     /**
      * Save DRM rights to specified rights path
@@ -140,7 +140,7 @@
      * @return status_t
      *     Returns DRM_NO_ERROR for success, DRM_ERROR_UNKNOWN for failure
      */
-    status_t saveRights(int uniqueId, const DrmRights& drmRights,
+    virtual status_t saveRights(int uniqueId, const DrmRights& drmRights,
             const String8& rightsPath, const String8& contentPath);
 
     /**
@@ -152,7 +152,7 @@
      * @return String8
      *     Returns mime-type of the original content, such as "video/mpeg"
      */
-    String8 getOriginalMimeType(int uniqueId, const String8& path, int fd);
+    virtual String8 getOriginalMimeType(int uniqueId, const String8& path, int fd);
 
     /**
      * Retrieves the type of the protected object (content, rights, etc..)
@@ -165,7 +165,7 @@
      * @return type of the DRM content,
      *     such as DrmObjectType::CONTENT, DrmObjectType::RIGHTS_OBJECT
      */
-    int getDrmObjectType(int uniqueId, const String8& path, const String8& mimeType);
+    virtual int getDrmObjectType(int uniqueId, const String8& path, const String8& mimeType);
 
     /**
      * Check whether the given content has valid rights or not
@@ -176,7 +176,7 @@
      * @return the status of the rights for the protected content,
      *     such as RightsStatus::RIGHTS_VALID, RightsStatus::RIGHTS_EXPIRED, etc.
      */
-    int checkRightsStatus(int uniqueId, const String8& path, int action);
+    virtual int checkRightsStatus(int uniqueId, const String8& path, int action);
 
     /**
      * Consumes the rights for a content.
@@ -190,7 +190,7 @@
      * @return status_t
      *     Returns DRM_NO_ERROR for success, DRM_ERROR_UNKNOWN for failure
      */
-    status_t consumeRights(int uniqueId, sp<DecryptHandle> &decryptHandle, int action, bool reserve);
+    virtual status_t consumeRights(int uniqueId, sp<DecryptHandle> &decryptHandle, int action, bool reserve);
 
     /**
      * Informs the DRM engine about the playback actions performed on the DRM files.
@@ -203,7 +203,7 @@
      * @return status_t
      *     Returns DRM_NO_ERROR for success, DRM_ERROR_UNKNOWN for failure
      */
-    status_t setPlaybackStatus(
+    virtual status_t setPlaybackStatus(
             int uniqueId, sp<DecryptHandle> &decryptHandle, int playbackStatus, int64_t position);
 
     /**
@@ -215,7 +215,7 @@
      * @param[in] description Detailed description of the action
      * @return true if the action is allowed.
      */
-    bool validateAction(
+    virtual bool validateAction(
         int uniqueId, const String8& path, int action, const ActionDescription& description);
 
     /**
@@ -226,7 +226,7 @@
      * @return status_t
      *     Returns DRM_NO_ERROR for success, DRM_ERROR_UNKNOWN for failure
      */
-    status_t removeRights(int uniqueId, const String8& path);
+    virtual status_t removeRights(int uniqueId, const String8& path);
 
     /**
      * Removes all the rights information of each plug-in associated with
@@ -236,7 +236,7 @@
      * @return status_t
      *     Returns DRM_NO_ERROR for success, DRM_ERROR_UNKNOWN for failure
      */
-    status_t removeAllRights(int uniqueId);
+    virtual status_t removeAllRights(int uniqueId);
 
     /**
      * This API is for Forward Lock based DRM scheme.
@@ -248,7 +248,7 @@
      * @param[in] mimeType Description/MIME type of the input data packet
      * @return Return handle for the convert session
      */
-    int openConvertSession(int uniqueId, const String8& mimeType);
+    virtual int openConvertSession(int uniqueId, const String8& mimeType);
 
     /**
      * Accepts and converts the input data which is part of DRM file.
@@ -263,7 +263,7 @@
      *     the output converted data and offset. In this case the
      *     application will ignore the offset information.
      */
-    DrmConvertedStatus* convertData(int uniqueId, int convertId, const DrmBuffer* inputData);
+    virtual DrmConvertedStatus* convertData(int uniqueId, int convertId, const DrmBuffer* inputData);
 
     /**
      * Informs the Drm Agent when there is no more data which need to be converted
@@ -279,7 +279,7 @@
      *     the application on which offset these signature data
      *     should be appended.
      */
-    DrmConvertedStatus* closeConvertSession(int uniqueId, int convertId);
+    virtual DrmConvertedStatus* closeConvertSession(int uniqueId, int convertId);
 
     /**
      * Retrieves all DrmSupportInfo instance that native DRM framework can handle.
@@ -292,7 +292,7 @@
      * @return status_t
      *     Returns DRM_NO_ERROR for success, DRM_ERROR_UNKNOWN for failure
      */
-    status_t getAllSupportInfo(int uniqueId, int* length, DrmSupportInfo** drmSupportInfoArray);
+    virtual status_t getAllSupportInfo(int uniqueId, int* length, DrmSupportInfo** drmSupportInfoArray);
 
     /**
      * Open the decrypt session to decrypt the given protected content
@@ -305,7 +305,7 @@
      * @return
      *     Handle for the decryption session
      */
-    sp<DecryptHandle> openDecryptSession(
+    virtual sp<DecryptHandle> openDecryptSession(
             int uniqueId, int fd, off64_t offset, off64_t length, const char* mime);
 
     /**
@@ -317,7 +317,7 @@
      * @return
      *     Handle for the decryption session
      */
-    sp<DecryptHandle> openDecryptSession(
+    virtual sp<DecryptHandle> openDecryptSession(
             int uniqueId, const char* uri, const char* mime);
 
     /**
@@ -329,7 +329,7 @@
      * @return
      *     Handle for the decryption session
      */
-    sp<DecryptHandle> openDecryptSession(int uniqueId, const DrmBuffer& buf,
+    virtual sp<DecryptHandle> openDecryptSession(int uniqueId, const DrmBuffer& buf,
             const String8& mimeType);
 
     /**
@@ -340,7 +340,7 @@
      * @return status_t
      *     Returns DRM_NO_ERROR for success, DRM_ERROR_UNKNOWN for failure
      */
-    status_t closeDecryptSession(int uniqueId, sp<DecryptHandle> &decryptHandle);
+    virtual status_t closeDecryptSession(int uniqueId, sp<DecryptHandle> &decryptHandle);
 
     /**
      * Initialize decryption for the given unit of the protected content
@@ -352,7 +352,7 @@
      * @return status_t
      *     Returns DRM_NO_ERROR for success, DRM_ERROR_UNKNOWN for failure
      */
-    status_t initializeDecryptUnit(int uniqueId, sp<DecryptHandle> &decryptHandle,
+    virtual status_t initializeDecryptUnit(int uniqueId, sp<DecryptHandle> &decryptHandle,
             int decryptUnitId, const DrmBuffer* headerInfo);
 
     /**
@@ -372,7 +372,7 @@
      *     DRM_ERROR_SESSION_NOT_OPENED, DRM_ERROR_DECRYPT_UNIT_NOT_INITIALIZED,
      *     DRM_ERROR_DECRYPT for failure.
      */
-    status_t decrypt(int uniqueId, sp<DecryptHandle> &decryptHandle, int decryptUnitId,
+    virtual status_t decrypt(int uniqueId, sp<DecryptHandle> &decryptHandle, int decryptUnitId,
             const DrmBuffer* encBuffer, DrmBuffer** decBuffer, DrmBuffer* IV);
 
     /**
@@ -384,7 +384,7 @@
      * @return status_t
      *     Returns DRM_NO_ERROR for success, DRM_ERROR_UNKNOWN for failure
      */
-    status_t finalizeDecryptUnit(int uniqueId, sp<DecryptHandle> &decryptHandle, int decryptUnitId);
+    virtual status_t finalizeDecryptUnit(int uniqueId, sp<DecryptHandle> &decryptHandle, int decryptUnitId);
 
     /**
      * Reads the specified number of bytes from an open DRM file.
@@ -397,7 +397,7 @@
      *
      * @return Number of bytes read. Returns -1 for Failure.
      */
-    ssize_t pread(int uniqueId, sp<DecryptHandle> &decryptHandle,
+    virtual ssize_t pread(int uniqueId, sp<DecryptHandle> &decryptHandle,
             void* buffer, ssize_t numBytes, off64_t offset);
 
     /**
@@ -407,7 +407,7 @@
      * @return status_t
      *     Returns DRM_NO_ERROR for success, DRM_ERROR_UNKNOWN for failure
      */
-    status_t notify(const DrmInfoEvent& event);
+    virtual status_t notify(const DrmInfoEvent& event);
 
 private:
     Mutex mLock;
diff --git a/drm/libdrmframework/include/NoOpDrmManagerClientImpl.h b/drm/libdrmframework/include/NoOpDrmManagerClientImpl.h
new file mode 100644
index 0000000..e8e8f42
--- /dev/null
+++ b/drm/libdrmframework/include/NoOpDrmManagerClientImpl.h
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+#ifndef __NO_OP_DRM_MANAGER_CLIENT_IMPL_H__
+#define __NO_OP_DRM_MANAGER_CLIENT_IMPL_H__
+
+#include "DrmManagerClientImpl.h"
+
+namespace android {
+
+class NoOpDrmManagerClientImpl : public DrmManagerClientImpl {
+public:
+    NoOpDrmManagerClientImpl() { }
+
+    void remove(int uniqueId);
+    void addClient(int uniqueId);
+    void removeClient(int uniqueId);
+    status_t setOnInfoListener(
+            int uniqueId, const sp<DrmManagerClient::OnInfoListener>& infoListener);
+    DrmConstraints* getConstraints(int uniqueId, const String8* path, const int action);
+
+    DrmMetadata* getMetadata(int uniqueId, const String8* path);
+    bool canHandle(int uniqueId, const String8& path, const String8& mimeType);
+    DrmInfoStatus* processDrmInfo(int uniqueId, const DrmInfo* drmInfo);
+    DrmInfo* acquireDrmInfo(int uniqueId, const DrmInfoRequest* drmInfoRequest);
+    status_t saveRights(int uniqueId, const DrmRights& drmRights,
+            const String8& rightsPath, const String8& contentPath);
+    String8 getOriginalMimeType(int uniqueId, const String8& path, int fd);
+    int getDrmObjectType(int uniqueId, const String8& path, const String8& mimeType);
+    int checkRightsStatus(int uniqueId, const String8& path, int action);
+    status_t consumeRights(int uniqueId, sp<DecryptHandle> &decryptHandle, int action, bool reserve);
+    status_t setPlaybackStatus(
+            int uniqueId, sp<DecryptHandle> &decryptHandle, int playbackStatus, int64_t position);
+    bool validateAction(
+        int uniqueId, const String8& path, int action, const ActionDescription& description);
+    status_t removeRights(int uniqueId, const String8& path);
+    status_t removeAllRights(int uniqueId);
+    int openConvertSession(int uniqueId, const String8& mimeType);
+    DrmConvertedStatus* convertData(int uniqueId, int convertId, const DrmBuffer* inputData);
+    DrmConvertedStatus* closeConvertSession(int uniqueId, int convertId);
+    status_t getAllSupportInfo(int uniqueId, int* length, DrmSupportInfo** drmSupportInfoArray);
+    sp<DecryptHandle> openDecryptSession(
+            int uniqueId, int fd, off64_t offset, off64_t length, const char* mime);
+    sp<DecryptHandle> openDecryptSession(
+            int uniqueId, const char* uri, const char* mime);
+    sp<DecryptHandle> openDecryptSession(int uniqueId, const DrmBuffer& buf,
+            const String8& mimeType);
+    status_t closeDecryptSession(int uniqueId, sp<DecryptHandle> &decryptHandle);
+    status_t initializeDecryptUnit(int uniqueId, sp<DecryptHandle> &decryptHandle,
+            int decryptUnitId, const DrmBuffer* headerInfo);
+    status_t decrypt(int uniqueId, sp<DecryptHandle> &decryptHandle, int decryptUnitId,
+            const DrmBuffer* encBuffer, DrmBuffer** decBuffer, DrmBuffer* IV);
+    status_t finalizeDecryptUnit(int uniqueId, sp<DecryptHandle> &decryptHandle, int decryptUnitId);
+    ssize_t pread(int uniqueId, sp<DecryptHandle> &decryptHandle,
+            void* buffer, ssize_t numBytes, off64_t offset);
+    status_t notify(const DrmInfoEvent& event);
+};
+
+}
+
+#endif // __NO_OP_DRM_MANAGER_CLIENT_IMPL_H
diff --git a/drm/libdrmframework/plugins/forward-lock/FwdLockEngine/Android.mk b/drm/libdrmframework/plugins/forward-lock/FwdLockEngine/Android.mk
index e251f82..48b0afe 100644
--- a/drm/libdrmframework/plugins/forward-lock/FwdLockEngine/Android.mk
+++ b/drm/libdrmframework/plugins/forward-lock/FwdLockEngine/Android.mk
@@ -61,7 +61,7 @@
     $(LOCAL_PATH)/include \
     external/openssl/include
 
-LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/drm
+LOCAL_MODULE_RELATIVE_PATH := drm
 
 LOCAL_MODULE_TAGS := optional
 
diff --git a/drm/mediadrm/plugins/mock/MockDrmCryptoPlugin.cpp b/drm/mediadrm/plugins/mock/MockDrmCryptoPlugin.cpp
index f2cadf7..df0bca3 100644
--- a/drm/mediadrm/plugins/mock/MockDrmCryptoPlugin.cpp
+++ b/drm/mediadrm/plugins/mock/MockDrmCryptoPlugin.cpp
@@ -45,7 +45,7 @@
     // MockDrmFactory
     bool MockDrmFactory::isCryptoSchemeSupported(const uint8_t uuid[16])
     {
-        return (!memcmp(uuid, mock_uuid, sizeof(uuid)));
+        return (!memcmp(uuid, mock_uuid, sizeof(mock_uuid)));
     }
 
     bool MockDrmFactory::isContentTypeSupported(const String8 &mimeType)
@@ -65,7 +65,7 @@
     // MockCryptoFactory
     bool MockCryptoFactory::isCryptoSchemeSupported(const uint8_t uuid[16]) const
     {
-        return (!memcmp(uuid, mock_uuid, sizeof(uuid)));
+        return (!memcmp(uuid, mock_uuid, sizeof(mock_uuid)));
     }
 
     status_t MockCryptoFactory::createPlugin(const uint8_t uuid[16], const void *data,
@@ -254,7 +254,9 @@
         return OK;
     }
 
-    status_t MockDrmPlugin::getProvisionRequest(Vector<uint8_t> &request,
+    status_t MockDrmPlugin::getProvisionRequest(String8 const &certType,
+                                                String8 const &certAuthority,
+                                                Vector<uint8_t> &request,
                                                 String8 &defaultUrl)
     {
         Mutex::Autolock lock(mLock);
@@ -282,7 +284,9 @@
         return OK;
     }
 
-    status_t MockDrmPlugin::provideProvisionResponse(Vector<uint8_t> const &response)
+    status_t MockDrmPlugin::provideProvisionResponse(Vector<uint8_t> const &response,
+                                                     Vector<uint8_t> &certificate,
+                                                     Vector<uint8_t> &wrappedKey)
     {
         Mutex::Autolock lock(mLock);
         ALOGD("MockDrmPlugin::provideProvisionResponse(%s)",
@@ -600,6 +604,33 @@
         return OK;
     }
 
+    status_t MockDrmPlugin::signRSA(Vector<uint8_t> const &sessionId,
+                                    String8 const &algorithm,
+                                    Vector<uint8_t> const &message,
+                                    Vector<uint8_t> const &wrappedKey,
+                                    Vector<uint8_t> &signature)
+    {
+        Mutex::Autolock lock(mLock);
+        ALOGD("MockDrmPlugin::signRSA(sessionId=%s, algorithm=%s, keyId=%s, "
+              "message=%s, signature=%s)",
+              vectorToString(sessionId).string(),
+              algorithm.string(),
+              vectorToString(message).string(),
+              vectorToString(wrappedKey).string(),
+              vectorToString(signature).string());
+
+        // Properties used in mock test, set by mock plugin and verifed cts test app
+        //   byte[] wrappedKey         -> mock-wrappedkey
+        //   byte[] message            -> mock-message
+        //   byte[] signature          -> mock-signature
+        mByteArrayProperties.add(String8("mock-sessionid"), sessionId);
+        mStringProperties.add(String8("mock-algorithm"), algorithm);
+        mByteArrayProperties.add(String8("mock-message"), message);
+        mByteArrayProperties.add(String8("mock-wrappedkey"), wrappedKey);
+        mByteArrayProperties.add(String8("mock-signature"), signature);
+        return OK;
+    }
+
     ssize_t MockDrmPlugin::findSession(Vector<uint8_t> const &sessionId) const
     {
         ALOGD("findSession: nsessions=%d, size=%d", mSessions.size(), sessionId.size());
diff --git a/drm/mediadrm/plugins/mock/MockDrmCryptoPlugin.h b/drm/mediadrm/plugins/mock/MockDrmCryptoPlugin.h
index 2297f9b..97d7052 100644
--- a/drm/mediadrm/plugins/mock/MockDrmCryptoPlugin.h
+++ b/drm/mediadrm/plugins/mock/MockDrmCryptoPlugin.h
@@ -76,10 +76,14 @@
         status_t queryKeyStatus(Vector<uint8_t> const &sessionId,
                                 KeyedVector<String8, String8> &infoMap) const;
 
-        status_t getProvisionRequest(Vector<uint8_t> &request,
-                                             String8 &defaultUrl);
+        status_t getProvisionRequest(String8 const &certType,
+                                     String8 const &certAuthority,
+                                     Vector<uint8_t> &request,
+                                     String8 &defaultUrl);
 
-        status_t provideProvisionResponse(Vector<uint8_t> const &response);
+        status_t provideProvisionResponse(Vector<uint8_t> const &response,
+                                          Vector<uint8_t> &certificate,
+                                          Vector<uint8_t> &wrappedKey);
 
         status_t getSecureStops(List<Vector<uint8_t> > &secureStops);
         status_t releaseSecureStops(Vector<uint8_t> const &ssRelease);
@@ -122,6 +126,12 @@
                         Vector<uint8_t> const &signature,
                         bool &match);
 
+        status_t signRSA(Vector<uint8_t> const &sessionId,
+                         String8 const &algorithm,
+                         Vector<uint8_t> const &message,
+                         Vector<uint8_t> const &wrappedKey,
+                         Vector<uint8_t> &signature);
+
     private:
         String8 vectorToString(Vector<uint8_t> const &vector) const;
         String8 arrayToString(uint8_t const *array, size_t len) const;
diff --git a/include/media/IDrm.h b/include/media/IDrm.h
index 5ef26af..32ae28e 100644
--- a/include/media/IDrm.h
+++ b/include/media/IDrm.h
@@ -61,10 +61,14 @@
     virtual status_t queryKeyStatus(Vector<uint8_t> const &sessionId,
                                     KeyedVector<String8, String8> &infoMap) const = 0;
 
-    virtual status_t getProvisionRequest(Vector<uint8_t> &request,
+    virtual status_t getProvisionRequest(String8 const &certType,
+                                         String8 const &certAuthority,
+                                         Vector<uint8_t> &request,
                                          String8 &defaulUrl) = 0;
 
-    virtual status_t provideProvisionResponse(Vector<uint8_t> const &response) = 0;
+    virtual status_t provideProvisionResponse(Vector<uint8_t> const &response,
+                                              Vector<uint8_t> &certificate,
+                                              Vector<uint8_t> &wrappedKey) = 0;
 
     virtual status_t getSecureStops(List<Vector<uint8_t> > &secureStops) = 0;
 
@@ -107,6 +111,12 @@
                             Vector<uint8_t> const &signature,
                             bool &match) = 0;
 
+    virtual status_t signRSA(Vector<uint8_t> const &sessionId,
+                             String8 const &algorithm,
+                             Vector<uint8_t> const &message,
+                             Vector<uint8_t> const &wrappedKey,
+                             Vector<uint8_t> &signature) = 0;
+
     virtual status_t setListener(const sp<IDrmClient>& listener) = 0;
 
 private:
diff --git a/include/media/stagefright/ACodec.h b/include/media/stagefright/ACodec.h
index 0783e2b..9b534e7 100644
--- a/include/media/stagefright/ACodec.h
+++ b/include/media/stagefright/ACodec.h
@@ -254,6 +254,8 @@
             int32_t numChannels, int32_t sampleRate, int32_t bitRate,
             int32_t aacProfile, bool isADTS);
 
+    status_t setupAC3Codec(bool encoder, int32_t numChannels, int32_t sampleRate);
+
     status_t selectAudioPortFormat(
             OMX_U32 portIndex, OMX_AUDIO_CODINGTYPE desiredFormat);
 
diff --git a/include/media/stagefright/MediaDefs.h b/include/media/stagefright/MediaDefs.h
index 85693d4..cf5beda 100644
--- a/include/media/stagefright/MediaDefs.h
+++ b/include/media/stagefright/MediaDefs.h
@@ -44,6 +44,7 @@
 extern const char *MEDIA_MIMETYPE_AUDIO_FLAC;
 extern const char *MEDIA_MIMETYPE_AUDIO_AAC_ADTS;
 extern const char *MEDIA_MIMETYPE_AUDIO_MSGSM;
+extern const char *MEDIA_MIMETYPE_AUDIO_AC3;
 
 extern const char *MEDIA_MIMETYPE_CONTAINER_MPEG4;
 extern const char *MEDIA_MIMETYPE_CONTAINER_WAV;
diff --git a/include/media/stagefright/MetaData.h b/include/media/stagefright/MetaData.h
index 78e6403..f51c12d 100644
--- a/include/media/stagefright/MetaData.h
+++ b/include/media/stagefright/MetaData.h
@@ -215,6 +215,8 @@
     bool findData(uint32_t key, uint32_t *type,
                   const void **data, size_t *size) const;
 
+    bool hasData(uint32_t key) const;
+
     void dumpToLog() const;
 
 protected:
diff --git a/include/media/stagefright/OMXCodec.h b/include/media/stagefright/OMXCodec.h
index daaf20f..5121c17 100644
--- a/include/media/stagefright/OMXCodec.h
+++ b/include/media/stagefright/OMXCodec.h
@@ -248,6 +248,8 @@
             int32_t numChannels, int32_t sampleRate, int32_t bitRate,
             int32_t aacProfile, bool isADTS);
 
+    status_t setAC3Format(int32_t numChannels, int32_t sampleRate);
+
     void setG711Format(int32_t numChannels);
 
     status_t setVideoPortFormatType(
diff --git a/libvideoeditor/lvpp/VideoEditorPreviewController.cpp b/libvideoeditor/lvpp/VideoEditorPreviewController.cpp
index 149c4ea..c3cd3d0 100755
--- a/libvideoeditor/lvpp/VideoEditorPreviewController.cpp
+++ b/libvideoeditor/lvpp/VideoEditorPreviewController.cpp
@@ -1248,7 +1248,7 @@
         case MEDIA_SET_VIDEO_SIZE:
             ALOGV("MEDIA_SET_VIDEO_SIZE; New video size %d x %d", ext1, ext2);
             break;
-        case 0xAAAAAAAA:
+        case static_cast<int>(0xAAAAAAAA):
             ALOGV("VIDEO PLAYBACK ALMOST over, prepare next player");
             // Select next player and prepare it
             // If there is a clip after this one
@@ -1268,7 +1268,7 @@
                 }
             }
             break;
-        case 0xBBBBBBBB:
+        case static_cast<int>(0xBBBBBBBB):
         {
             ALOGV("VIDEO PLAYBACK, Update Overlay");
             int overlayIndex = ext2;
diff --git a/libvideoeditor/osal/inc/M4OSA_Clock.h b/libvideoeditor/osal/inc/M4OSA_Clock.h
index db753a5..52ea696 100755
--- a/libvideoeditor/osal/inc/M4OSA_Clock.h
+++ b/libvideoeditor/osal/inc/M4OSA_Clock.h
@@ -21,7 +21,7 @@
  ************************************************************************
 */
 
-#ifndef M4OSA_CLOCH_H
+#ifndef M4OSA_CLOCK_H
 #define M4OSA_CLOCK_H
 
 #include "M4OSA_Types.h"
diff --git a/libvideoeditor/osal/inc/M4OSA_Error.h b/libvideoeditor/osal/inc/M4OSA_Error.h
index 4d59529..75c3177 100755
--- a/libvideoeditor/osal/inc/M4OSA_Error.h
+++ b/libvideoeditor/osal/inc/M4OSA_Error.h
@@ -57,7 +57,7 @@
   * @arg coreID: (IN) [M4OSA_UInt32] CoreID to put in the error code
   * @arg errorID: (IN) [M4OSA_UInt32] ErrorID to put in the error code*/
 #define M4OSA_ERR_CREATE(severity, coreID, errorID)\
-   (M4OSA_Int32)((((M4OSA_UInt32)severity)<<30)+((((M4OSA_UInt32)coreID)&0x003FFF)<<16)+(((M4OSA_UInt32)errorID)&0x00FFFF))
+   (M4OSA_UInt32)((((M4OSA_UInt32)severity)<<30)+((((M4OSA_UInt32)coreID)&0x003FFF)<<16)+(((M4OSA_UInt32)errorID)&0x00FFFF))
 
 /** This macro extracts the 3 fields from the error:
   * @arg error: (IN) [M4OSA_ERR] Error code
diff --git a/libvideoeditor/vss/stagefrightshells/src/VideoEditor3gpReader.cpp b/libvideoeditor/vss/stagefrightshells/src/VideoEditor3gpReader.cpp
index 3c8915a..99cf9ec 100755
--- a/libvideoeditor/vss/stagefrightshells/src/VideoEditor3gpReader.cpp
+++ b/libvideoeditor/vss/stagefrightshells/src/VideoEditor3gpReader.cpp
@@ -776,16 +776,16 @@
         case M4READER_kOptionID_SetOsaFileReaderFctsPtr:
         break;
 
-        case M4READER_3GP_kOptionID_AudioOnly:
+        case static_cast<M4OSA_OptionID>(M4READER_3GP_kOptionID_AudioOnly):
         break;
 
-        case M4READER_3GP_kOptionID_VideoOnly:
+        case static_cast<M4OSA_OptionID>(M4READER_3GP_kOptionID_VideoOnly):
         break;
 
-        case M4READER_3GP_kOptionID_FastOpenMode:
+        case static_cast<M4OSA_OptionID>(M4READER_3GP_kOptionID_FastOpenMode):
         break;
 
-        case M4READER_kOptionID_MaxMetadataSize:
+        case static_cast<M4OSA_OptionID>(M4READER_kOptionID_MaxMetadataSize):
         break;
 
         default:
diff --git a/libvideoeditor/vss/stagefrightshells/src/VideoEditorAudioDecoder.cpp b/libvideoeditor/vss/stagefrightshells/src/VideoEditorAudioDecoder.cpp
index 9b35d07..e4c7ea1 100755
--- a/libvideoeditor/vss/stagefrightshells/src/VideoEditorAudioDecoder.cpp
+++ b/libvideoeditor/vss/stagefrightshells/src/VideoEditorAudioDecoder.cpp
@@ -809,7 +809,7 @@
     pDecoderContext = (VideoEditorAudioDecoder_Context*)pContext;
 
     switch( optionID ) {
-        case M4AD_kOptionID_UserParam:
+        case static_cast<M4OSA_UInt32>(M4AD_kOptionID_UserParam):
             ALOGV("VideoEditorAudioDecodersetOption UserParam is not supported");
             err = M4ERR_NOT_IMPLEMENTED;
             break;
diff --git a/media/libeffects/downmix/Android.mk b/media/libeffects/downmix/Android.mk
index 5d0a87c..2bb6dbe 100644
--- a/media/libeffects/downmix/Android.mk
+++ b/media/libeffects/downmix/Android.mk
@@ -13,7 +13,7 @@
 
 LOCAL_MODULE_TAGS := optional
 
-LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/soundfx
+LOCAL_MODULE_RELATIVE_PATH := soundfx
 
 ifeq ($(TARGET_OS)-$(TARGET_SIMULATOR),linux-true)
 LOCAL_LDLIBS += -ldl
diff --git a/media/libeffects/downmix/EffectDownmix.c b/media/libeffects/downmix/EffectDownmix.c
index d571f17..d84bca6 100644
--- a/media/libeffects/downmix/EffectDownmix.c
+++ b/media/libeffects/downmix/EffectDownmix.c
@@ -61,13 +61,13 @@
 // This is the only symbol that needs to be exported
 __attribute__ ((visibility ("default")))
 audio_effect_library_t AUDIO_EFFECT_LIBRARY_INFO_SYM = {
-    tag : AUDIO_EFFECT_LIBRARY_TAG,
-    version : EFFECT_LIBRARY_API_VERSION,
-    name : "Downmix Library",
-    implementor : "The Android Open Source Project",
-    create_effect : DownmixLib_Create,
-    release_effect : DownmixLib_Release,
-    get_descriptor : DownmixLib_GetDescriptor,
+    .tag = AUDIO_EFFECT_LIBRARY_TAG,
+    .version = EFFECT_LIBRARY_API_VERSION,
+    .name = "Downmix Library",
+    .implementor = "The Android Open Source Project",
+    .create_effect = DownmixLib_Create,
+    .release_effect = DownmixLib_Release,
+    .get_descriptor = DownmixLib_GetDescriptor,
 };
 
 
diff --git a/media/libeffects/loudness/Android.mk b/media/libeffects/loudness/Android.mk
index dcb7b27..edf964e 100644
--- a/media/libeffects/loudness/Android.mk
+++ b/media/libeffects/loudness/Android.mk
@@ -14,7 +14,7 @@
 	liblog \
 	libstlport
 
-LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/soundfx
+LOCAL_MODULE_RELATIVE_PATH := soundfx
 LOCAL_MODULE:= libldnhncr
 
 LOCAL_C_INCLUDES := \
diff --git a/media/libeffects/loudness/EffectLoudnessEnhancer.cpp b/media/libeffects/loudness/EffectLoudnessEnhancer.cpp
index 5510caf..a5a1a3f 100644
--- a/media/libeffects/loudness/EffectLoudnessEnhancer.cpp
+++ b/media/libeffects/loudness/EffectLoudnessEnhancer.cpp
@@ -453,13 +453,13 @@
 // This is the only symbol that needs to be exported
 __attribute__ ((visibility ("default")))
 audio_effect_library_t AUDIO_EFFECT_LIBRARY_INFO_SYM = {
-    tag : AUDIO_EFFECT_LIBRARY_TAG,
-    version : EFFECT_LIBRARY_API_VERSION,
-    name : "Loudness Enhancer Library",
-    implementor : "The Android Open Source Project",
-    create_effect : LELib_Create,
-    release_effect : LELib_Release,
-    get_descriptor : LELib_GetDescriptor,
+    .tag = AUDIO_EFFECT_LIBRARY_TAG,
+    .version = EFFECT_LIBRARY_API_VERSION,
+    .name = "Loudness Enhancer Library",
+    .implementor = "The Android Open Source Project",
+    .create_effect = LELib_Create,
+    .release_effect = LELib_Release,
+    .get_descriptor = LELib_GetDescriptor,
 };
 
 }; // extern "C"
diff --git a/media/libeffects/lvm/wrapper/Android.mk b/media/libeffects/lvm/wrapper/Android.mk
index f1af389..68ba34c 100644
--- a/media/libeffects/lvm/wrapper/Android.mk
+++ b/media/libeffects/lvm/wrapper/Android.mk
@@ -13,7 +13,7 @@
 
 LOCAL_MODULE:= libbundlewrapper
 
-LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/soundfx
+LOCAL_MODULE_RELATIVE_PATH := soundfx
 
 LOCAL_STATIC_LIBRARIES += libmusicbundle
 
@@ -42,7 +42,7 @@
 
 LOCAL_MODULE:= libreverbwrapper
 
-LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/soundfx
+LOCAL_MODULE_RELATIVE_PATH := soundfx
 
 LOCAL_STATIC_LIBRARIES += libreverb
 
diff --git a/media/libeffects/lvm/wrapper/Bundle/EffectBundle.cpp b/media/libeffects/lvm/wrapper/Bundle/EffectBundle.cpp
index 9fcfba3..b6aea6c 100644
--- a/media/libeffects/lvm/wrapper/Bundle/EffectBundle.cpp
+++ b/media/libeffects/lvm/wrapper/Bundle/EffectBundle.cpp
@@ -3214,13 +3214,13 @@
 // This is the only symbol that needs to be exported
 __attribute__ ((visibility ("default")))
 audio_effect_library_t AUDIO_EFFECT_LIBRARY_INFO_SYM = {
-    tag : AUDIO_EFFECT_LIBRARY_TAG,
-    version : EFFECT_LIBRARY_API_VERSION,
-    name : "Effect Bundle Library",
-    implementor : "NXP Software Ltd.",
-    create_effect : android::EffectCreate,
-    release_effect : android::EffectRelease,
-    get_descriptor : android::EffectGetDescriptor,
+    .tag = AUDIO_EFFECT_LIBRARY_TAG,
+    .version = EFFECT_LIBRARY_API_VERSION,
+    .name = "Effect Bundle Library",
+    .implementor = "NXP Software Ltd.",
+    .create_effect = android::EffectCreate,
+    .release_effect = android::EffectRelease,
+    .get_descriptor = android::EffectGetDescriptor,
 };
 
 }
diff --git a/media/libeffects/lvm/wrapper/Reverb/EffectReverb.cpp b/media/libeffects/lvm/wrapper/Reverb/EffectReverb.cpp
index 2e22532..c98d62b 100644
--- a/media/libeffects/lvm/wrapper/Reverb/EffectReverb.cpp
+++ b/media/libeffects/lvm/wrapper/Reverb/EffectReverb.cpp
@@ -2147,13 +2147,13 @@
 // This is the only symbol that needs to be exported
 __attribute__ ((visibility ("default")))
 audio_effect_library_t AUDIO_EFFECT_LIBRARY_INFO_SYM = {
-    tag : AUDIO_EFFECT_LIBRARY_TAG,
-    version : EFFECT_LIBRARY_API_VERSION,
-    name : "Reverb Library",
-    implementor : "NXP Software Ltd.",
-    create_effect : android::EffectCreate,
-    release_effect : android::EffectRelease,
-    get_descriptor : android::EffectGetDescriptor,
+    .tag = AUDIO_EFFECT_LIBRARY_TAG,
+    .version = EFFECT_LIBRARY_API_VERSION,
+    .name = "Reverb Library",
+    .implementor = "NXP Software Ltd.",
+    .create_effect = android::EffectCreate,
+    .release_effect = android::EffectRelease,
+    .get_descriptor = android::EffectGetDescriptor,
 };
 
 }
diff --git a/media/libeffects/preprocessing/Android.mk b/media/libeffects/preprocessing/Android.mk
index c344352..9e8cb83 100644
--- a/media/libeffects/preprocessing/Android.mk
+++ b/media/libeffects/preprocessing/Android.mk
@@ -5,7 +5,7 @@
 
 LOCAL_MODULE:= libaudiopreprocessing
 LOCAL_MODULE_TAGS := optional
-LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/soundfx
+LOCAL_MODULE_RELATIVE_PATH := soundfx
 
 LOCAL_SRC_FILES:= \
     PreProcessing.cpp
diff --git a/media/libeffects/preprocessing/PreProcessing.cpp b/media/libeffects/preprocessing/PreProcessing.cpp
index 1eb5d40..be4fa7e 100644
--- a/media/libeffects/preprocessing/PreProcessing.cpp
+++ b/media/libeffects/preprocessing/PreProcessing.cpp
@@ -1895,13 +1895,13 @@
 // This is the only symbol that needs to be exported
 __attribute__ ((visibility ("default")))
 audio_effect_library_t AUDIO_EFFECT_LIBRARY_INFO_SYM = {
-    tag : AUDIO_EFFECT_LIBRARY_TAG,
-    version : EFFECT_LIBRARY_API_VERSION,
-    name : "Audio Preprocessing Library",
-    implementor : "The Android Open Source Project",
-    create_effect : PreProcessingLib_Create,
-    release_effect : PreProcessingLib_Release,
-    get_descriptor : PreProcessingLib_GetDescriptor
+    .tag = AUDIO_EFFECT_LIBRARY_TAG,
+    .version = EFFECT_LIBRARY_API_VERSION,
+    .name = "Audio Preprocessing Library",
+    .implementor = "The Android Open Source Project",
+    .create_effect = PreProcessingLib_Create,
+    .release_effect = PreProcessingLib_Release,
+    .get_descriptor = PreProcessingLib_GetDescriptor
 };
 
 }; // extern "C"
diff --git a/media/libeffects/proxy/Android.mk b/media/libeffects/proxy/Android.mk
index a1894b7..b438796 100644
--- a/media/libeffects/proxy/Android.mk
+++ b/media/libeffects/proxy/Android.mk
@@ -15,7 +15,7 @@
 LOCAL_PATH:= $(call my-dir)
 include $(CLEAR_VARS)
 LOCAL_MODULE:= libeffectproxy
-LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/soundfx
+LOCAL_MODULE_RELATIVE_PATH := soundfx
 LOCAL_MODULE_TAGS := optional
 
 
diff --git a/media/libeffects/proxy/EffectProxy.cpp b/media/libeffects/proxy/EffectProxy.cpp
index f93a143..62d3fd3 100644
--- a/media/libeffects/proxy/EffectProxy.cpp
+++ b/media/libeffects/proxy/EffectProxy.cpp
@@ -363,11 +363,11 @@
 
 __attribute__ ((visibility ("default")))
 audio_effect_library_t AUDIO_EFFECT_LIBRARY_INFO_SYM = {
-    tag : AUDIO_EFFECT_LIBRARY_TAG,
-    version : EFFECT_LIBRARY_API_VERSION,
-    name : "Effect Proxy",
-    implementor : "AOSP",
-    create_effect : android::EffectProxyCreate,
-    release_effect : android::EffectProxyRelease,
-    get_descriptor : android::EffectProxyGetDescriptor,
+    .tag = AUDIO_EFFECT_LIBRARY_TAG,
+    .version = EFFECT_LIBRARY_API_VERSION,
+    .name = "Effect Proxy",
+    .implementor = "AOSP",
+    .create_effect = android::EffectProxyCreate,
+    .release_effect = android::EffectProxyRelease,
+    .get_descriptor = android::EffectProxyGetDescriptor,
 };
diff --git a/media/libeffects/testlibs/Android.mk_ b/media/libeffects/testlibs/Android.mk_
index 2954908..672ebba 100644
--- a/media/libeffects/testlibs/Android.mk_
+++ b/media/libeffects/testlibs/Android.mk_
@@ -11,7 +11,7 @@
 LOCAL_SHARED_LIBRARIES := \
 	libcutils
 
-LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/soundfx
+LOCAL_MODULE_RELATIVE_PATH := soundfx
 LOCAL_MODULE:= libreverbtest
 
 ifeq ($(TARGET_OS)-$(TARGET_SIMULATOR),linux-true)
@@ -47,7 +47,7 @@
 LOCAL_SHARED_LIBRARIES := \
 	libcutils
 
-LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/soundfx
+LOCAL_MODULE_RELATIVE_PATH := soundfx
 LOCAL_MODULE:= libequalizertest
 
 ifeq ($(TARGET_OS)-$(TARGET_SIMULATOR),linux-true)
diff --git a/media/libeffects/visualizer/Android.mk b/media/libeffects/visualizer/Android.mk
index e196eb2..dd2d306 100644
--- a/media/libeffects/visualizer/Android.mk
+++ b/media/libeffects/visualizer/Android.mk
@@ -13,7 +13,7 @@
 	liblog \
 	libdl
 
-LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/soundfx
+LOCAL_MODULE_RELATIVE_PATH := soundfx
 LOCAL_MODULE:= libvisualizer
 
 LOCAL_C_INCLUDES := \
diff --git a/media/libeffects/visualizer/EffectVisualizer.cpp b/media/libeffects/visualizer/EffectVisualizer.cpp
index 18bdb78..4b318c0 100644
--- a/media/libeffects/visualizer/EffectVisualizer.cpp
+++ b/media/libeffects/visualizer/EffectVisualizer.cpp
@@ -679,13 +679,13 @@
 // This is the only symbol that needs to be exported
 __attribute__ ((visibility ("default")))
 audio_effect_library_t AUDIO_EFFECT_LIBRARY_INFO_SYM = {
-    tag : AUDIO_EFFECT_LIBRARY_TAG,
-    version : EFFECT_LIBRARY_API_VERSION,
-    name : "Visualizer Library",
-    implementor : "The Android Open Source Project",
-    create_effect : VisualizerLib_Create,
-    release_effect : VisualizerLib_Release,
-    get_descriptor : VisualizerLib_GetDescriptor,
+    .tag = AUDIO_EFFECT_LIBRARY_TAG,
+    .version = EFFECT_LIBRARY_API_VERSION,
+    .name = "Visualizer Library",
+    .implementor = "The Android Open Source Project",
+    .create_effect = VisualizerLib_Create,
+    .release_effect = VisualizerLib_Release,
+    .get_descriptor = VisualizerLib_GetDescriptor,
 };
 
 }; // extern "C"
diff --git a/media/libmedia/AudioParameter.cpp b/media/libmedia/AudioParameter.cpp
index e3fea77..33dbf0b 100644
--- a/media/libmedia/AudioParameter.cpp
+++ b/media/libmedia/AudioParameter.cpp
@@ -37,9 +37,10 @@
 {
     char *str = new char[keyValuePairs.length()+1];
     mKeyValuePairs = keyValuePairs;
+    char *last;
 
     strcpy(str, keyValuePairs.string());
-    char *pair = strtok(str, ";");
+    char *pair = strtok_r(str, ";", &last);
     while (pair != NULL) {
         if (strlen(pair) != 0) {
             size_t eqIdx = strcspn(pair, "=");
@@ -58,7 +59,7 @@
         } else {
             ALOGV("AudioParameter() cstor empty key value pair");
         }
-        pair = strtok(NULL, ";");
+        pair = strtok_r(NULL, ";", &last);
     }
 
     delete[] str;
diff --git a/media/libmedia/IDrm.cpp b/media/libmedia/IDrm.cpp
index f7a9a75..f1a6a9f 100644
--- a/media/libmedia/IDrm.cpp
+++ b/media/libmedia/IDrm.cpp
@@ -51,6 +51,7 @@
     ENCRYPT,
     DECRYPT,
     SIGN,
+    SIGN_RSA,
     VERIFY,
     SET_LISTENER
 };
@@ -196,11 +197,15 @@
         return reply.readInt32();
     }
 
-    virtual status_t getProvisionRequest(Vector<uint8_t> &request,
+    virtual status_t getProvisionRequest(String8 const &certType,
+                                         String8 const &certAuthority,
+                                         Vector<uint8_t> &request,
                                          String8 &defaultUrl) {
         Parcel data, reply;
         data.writeInterfaceToken(IDrm::getInterfaceDescriptor());
 
+        data.writeString8(certType);
+        data.writeString8(certAuthority);
         remote()->transact(GET_PROVISION_REQUEST, data, &reply);
 
         readVector(reply, request);
@@ -209,13 +214,18 @@
         return reply.readInt32();
     }
 
-    virtual status_t provideProvisionResponse(Vector<uint8_t> const &response) {
+    virtual status_t provideProvisionResponse(Vector<uint8_t> const &response,
+                                              Vector<uint8_t> &certificate,
+                                              Vector<uint8_t> &wrappedKey) {
         Parcel data, reply;
         data.writeInterfaceToken(IDrm::getInterfaceDescriptor());
 
         writeVector(data, response);
         remote()->transact(PROVIDE_PROVISION_RESPONSE, data, &reply);
 
+        readVector(reply, certificate);
+        readVector(reply, wrappedKey);
+
         return reply.readInt32();
     }
 
@@ -386,6 +396,25 @@
         return reply.readInt32();
     }
 
+    virtual status_t signRSA(Vector<uint8_t> const &sessionId,
+                             String8 const &algorithm,
+                             Vector<uint8_t> const &message,
+                             Vector<uint8_t> const &wrappedKey,
+                             Vector<uint8_t> &signature) {
+        Parcel data, reply;
+        data.writeInterfaceToken(IDrm::getInterfaceDescriptor());
+
+        writeVector(data, sessionId);
+        data.writeString8(algorithm);
+        writeVector(data, message);
+        writeVector(data, wrappedKey);
+
+        remote()->transact(SIGN_RSA, data, &reply);
+        readVector(reply, signature);
+
+        return reply.readInt32();
+    }
+
     virtual status_t setListener(const sp<IDrmClient>& listener) {
         Parcel data, reply;
         data.writeInterfaceToken(IDrm::getInterfaceDescriptor());
@@ -563,9 +592,13 @@
         case GET_PROVISION_REQUEST:
         {
             CHECK_INTERFACE(IDrm, data, reply);
+            String8 certType = data.readString8();
+            String8 certAuthority = data.readString8();
+
             Vector<uint8_t> request;
             String8 defaultUrl;
-            status_t result = getProvisionRequest(request, defaultUrl);
+            status_t result = getProvisionRequest(certType, certAuthority,
+                                                  request, defaultUrl);
             writeVector(reply, request);
             reply->writeString8(defaultUrl);
             reply->writeInt32(result);
@@ -576,8 +609,13 @@
         {
             CHECK_INTERFACE(IDrm, data, reply);
             Vector<uint8_t> response;
+            Vector<uint8_t> certificate;
+            Vector<uint8_t> wrappedKey;
             readVector(data, response);
-            reply->writeInt32(provideProvisionResponse(response));
+            status_t result = provideProvisionResponse(response, certificate, wrappedKey);
+            writeVector(reply, certificate);
+            writeVector(reply, wrappedKey);
+            reply->writeInt32(result);
             return OK;
         }
 
@@ -725,6 +763,20 @@
             return OK;
         }
 
+        case SIGN_RSA:
+        {
+            CHECK_INTERFACE(IDrm, data, reply);
+            Vector<uint8_t> sessionId, message, wrappedKey, signature;
+            readVector(data, sessionId);
+            String8 algorithm = data.readString8();
+            readVector(data, message);
+            readVector(data, wrappedKey);
+            uint32_t result = signRSA(sessionId, algorithm, message, wrappedKey, signature);
+            writeVector(reply, signature);
+            reply->writeInt32(result);
+            return OK;
+        }
+
     case SET_LISTENER: {
         CHECK_INTERFACE(IDrm, data, reply);
         sp<IDrmClient> listener =
diff --git a/media/libmedia/MemoryLeakTrackUtil.cpp b/media/libmedia/MemoryLeakTrackUtil.cpp
index 6a108ae..f004ca4 100644
--- a/media/libmedia/MemoryLeakTrackUtil.cpp
+++ b/media/libmedia/MemoryLeakTrackUtil.cpp
@@ -49,7 +49,7 @@
     }
 
     void append(const char *s) {
-        strcat(mPtr, s);
+        strncat(mPtr, s, MAX_SIZE - size() - 1);
     }
 
     const char *string() const {
@@ -60,6 +60,10 @@
         return strlen(mPtr);
     }
 
+    void clear() {
+        *mPtr = '\0';
+    }
+
 private:
     char *mPtr;
 
@@ -139,6 +143,9 @@
             }
         } while (moved);
 
+        write(fd, result.string(), result.size());
+        result.clear();
+
         for (size_t i = 0; i < count; i++) {
             AllocEntry *e = &entries[i];
 
@@ -152,13 +159,14 @@
                 result.append(buffer);
             }
             result.append("\n");
+
+            write(fd, result.string(), result.size());
+            result.clear();
         }
 
         delete[] entries;
         free_malloc_leak_info(info);
     }
-
-    write(fd, result.string(), result.size());
 }
 
 #else
diff --git a/media/libmediaplayerservice/Drm.cpp b/media/libmediaplayerservice/Drm.cpp
index eebcb79..d50037f 100644
--- a/media/libmediaplayerservice/Drm.cpp
+++ b/media/libmediaplayerservice/Drm.cpp
@@ -28,9 +28,21 @@
 #include <media/stagefright/foundation/AString.h>
 #include <media/stagefright/foundation/hexdump.h>
 #include <media/stagefright/MediaErrors.h>
+#include <binder/IServiceManager.h>
+#include <binder/IPCThreadState.h>
 
 namespace android {
 
+static bool checkPermission(const char* permissionString) {
+#ifndef HAVE_ANDROID_OS
+    return true;
+#endif
+    if (getpid() == IPCThreadState::self()->getCallingPid()) return true;
+    bool ok = checkCallingPermission(String16(permissionString));
+    if (!ok) ALOGE("Request requires %s", permissionString);
+    return ok;
+}
+
 KeyedVector<Vector<uint8_t>, String8> Drm::mUUIDToLibraryPathMap;
 KeyedVector<String8, wp<SharedLibrary> > Drm::mLibraryPathToOpenLibraryMap;
 Mutex Drm::mMapLock;
@@ -373,7 +385,8 @@
     return mPlugin->queryKeyStatus(sessionId, infoMap);
 }
 
-status_t Drm::getProvisionRequest(Vector<uint8_t> &request, String8 &defaultUrl) {
+status_t Drm::getProvisionRequest(String8 const &certType, String8 const &certAuthority,
+                                  Vector<uint8_t> &request, String8 &defaultUrl) {
     Mutex::Autolock autoLock(mLock);
 
     if (mInitCheck != OK) {
@@ -384,10 +397,13 @@
         return -EINVAL;
     }
 
-    return mPlugin->getProvisionRequest(request, defaultUrl);
+    return mPlugin->getProvisionRequest(certType, certAuthority,
+                                        request, defaultUrl);
 }
 
-status_t Drm::provideProvisionResponse(Vector<uint8_t> const &response) {
+status_t Drm::provideProvisionResponse(Vector<uint8_t> const &response,
+                                       Vector<uint8_t> &certificate,
+                                       Vector<uint8_t> &wrappedKey) {
     Mutex::Autolock autoLock(mLock);
 
     if (mInitCheck != OK) {
@@ -398,7 +414,7 @@
         return -EINVAL;
     }
 
-    return mPlugin->provideProvisionResponse(response);
+    return mPlugin->provideProvisionResponse(response, certificate, wrappedKey);
 }
 
 
@@ -589,6 +605,28 @@
     return mPlugin->verify(sessionId, keyId, message, signature, match);
 }
 
+status_t Drm::signRSA(Vector<uint8_t> const &sessionId,
+                      String8 const &algorithm,
+                      Vector<uint8_t> const &message,
+                      Vector<uint8_t> const &wrappedKey,
+                      Vector<uint8_t> &signature) {
+    Mutex::Autolock autoLock(mLock);
+
+    if (mInitCheck != OK) {
+        return mInitCheck;
+    }
+
+    if (mPlugin == NULL) {
+        return -EINVAL;
+    }
+
+    if (!checkPermission("android.permission.ACCESS_DRM_CERTIFICATES")) {
+        return -EPERM;
+    }
+
+    return mPlugin->signRSA(sessionId, algorithm, message, wrappedKey, signature);
+}
+
 void Drm::binderDied(const wp<IBinder> &the_late_who)
 {
     delete mPlugin;
diff --git a/media/libmediaplayerservice/Drm.h b/media/libmediaplayerservice/Drm.h
index 119fd50..3d4b0fc 100644
--- a/media/libmediaplayerservice/Drm.h
+++ b/media/libmediaplayerservice/Drm.h
@@ -66,10 +66,14 @@
     virtual status_t queryKeyStatus(Vector<uint8_t> const &sessionId,
                                     KeyedVector<String8, String8> &infoMap) const;
 
-    virtual status_t getProvisionRequest(Vector<uint8_t> &request,
+    virtual status_t getProvisionRequest(String8 const &certType,
+                                         String8 const &certAuthority,
+                                         Vector<uint8_t> &request,
                                          String8 &defaulUrl);
 
-    virtual status_t provideProvisionResponse(Vector<uint8_t> const &response);
+    virtual status_t provideProvisionResponse(Vector<uint8_t> const &response,
+                                              Vector<uint8_t> &certificate,
+                                              Vector<uint8_t> &wrappedKey);
 
     virtual status_t getSecureStops(List<Vector<uint8_t> > &secureStops);
 
@@ -111,6 +115,12 @@
                             Vector<uint8_t> const &signature,
                             bool &match);
 
+    virtual status_t signRSA(Vector<uint8_t> const &sessionId,
+                             String8 const &algorithm,
+                             Vector<uint8_t> const &message,
+                             Vector<uint8_t> const &wrappedKey,
+                             Vector<uint8_t> &signature);
+
     virtual status_t setListener(const sp<IDrmClient>& listener);
 
     virtual void sendEvent(DrmPlugin::EventType eventType, int extra,
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayer.cpp
index f710b55..25d55a3 100644
--- a/media/libmediaplayerservice/nuplayer/NuPlayer.cpp
+++ b/media/libmediaplayerservice/nuplayer/NuPlayer.cpp
@@ -32,6 +32,8 @@
 
 #include "ATSParser.h"
 
+#include "SoftwareRenderer.h"
+
 #include <cutils/properties.h> // for property_get
 #include <media/stagefright/foundation/hexdump.h>
 #include <media/stagefright/foundation/ABuffer.h>
@@ -146,6 +148,7 @@
     : mUIDValid(false),
       mSourceFlags(0),
       mVideoIsAVC(false),
+      mNeedsSwRenderer(false),
       mAudioEOS(false),
       mVideoEOS(false),
       mScanSourcesPending(false),
@@ -444,6 +447,7 @@
             ALOGV("kWhatStart");
 
             mVideoIsAVC = false;
+            mNeedsSwRenderer = false;
             mAudioEOS = false;
             mVideoEOS = false;
             mSkipRenderingAudioUntilMediaTimeUs = -1;
@@ -680,6 +684,20 @@
 
                     notifyListener(
                             MEDIA_SET_VIDEO_SIZE, displayWidth, displayHeight);
+
+                    if (mNeedsSwRenderer && mNativeWindow != NULL) {
+                        int32_t colorFormat;
+                        CHECK(codecRequest->findInt32("color-format", &colorFormat));
+
+                        sp<MetaData> meta = new MetaData;
+                        meta->setInt32(kKeyWidth, width);
+                        meta->setInt32(kKeyHeight, height);
+                        meta->setRect(kKeyCropRect, cropLeft, cropTop, cropRight, cropBottom);
+                        meta->setInt32(kKeyColorFormat, colorFormat);
+
+                        mRenderer->setSoftRenderer(
+                                new SoftwareRenderer(mNativeWindow->getNativeWindow(), meta));
+                    }
                 }
             } else if (what == ACodec::kWhatShutdownCompleted) {
                 ALOGV("%s shutdown completed", audio ? "audio" : "video");
@@ -703,8 +721,13 @@
                 mRenderer->queueEOS(audio, UNKNOWN_ERROR);
             } else if (what == ACodec::kWhatDrainThisBuffer) {
                 renderBuffer(audio, codecRequest);
-            } else if (what != ACodec::kWhatComponentAllocated
-                    && what != ACodec::kWhatComponentConfigured
+            } else if (what == ACodec::kWhatComponentAllocated) {
+                if (!audio) {
+                    AString name;
+                    CHECK(codecRequest->findString("componentName", &name));
+                    mNeedsSwRenderer = name.startsWith("OMX.google.");
+                }
+            } else if (what != ACodec::kWhatComponentConfigured
                     && what != ACodec::kWhatBuffersAllocated) {
                 ALOGV("Unhandled codec notification %d '%c%c%c%c'.",
                       what,
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayer.h b/media/libmediaplayerservice/nuplayer/NuPlayer.h
index 13350f3..590e1f2 100644
--- a/media/libmediaplayerservice/nuplayer/NuPlayer.h
+++ b/media/libmediaplayerservice/nuplayer/NuPlayer.h
@@ -116,6 +116,7 @@
     sp<MediaPlayerBase::AudioSink> mAudioSink;
     sp<Decoder> mVideoDecoder;
     bool mVideoIsAVC;
+    bool mNeedsSwRenderer;
     sp<Decoder> mAudioDecoder;
     sp<Renderer> mRenderer;
 
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
index 3b2784b..bf5271e 100644
--- a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
+++ b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
@@ -20,6 +20,8 @@
 
 #include "NuPlayerRenderer.h"
 
+#include "SoftwareRenderer.h"
+
 #include <media/stagefright/foundation/ABuffer.h>
 #include <media/stagefright/foundation/ADebug.h>
 #include <media/stagefright/foundation/AMessage.h>
@@ -34,6 +36,7 @@
         const sp<AMessage> &notify,
         uint32_t flags)
     : mAudioSink(sink),
+      mSoftRenderer(NULL),
       mNotify(notify),
       mFlags(flags),
       mNumFramesWritten(0),
@@ -57,6 +60,12 @@
 }
 
 NuPlayer::Renderer::~Renderer() {
+    delete mSoftRenderer;
+}
+
+void NuPlayer::Renderer::setSoftRenderer(SoftwareRenderer *softRenderer) {
+    delete mSoftRenderer;
+    mSoftRenderer = softRenderer;
 }
 
 void NuPlayer::Renderer::queueBuffer(
@@ -413,7 +422,12 @@
         ALOGV("video late by %lld us (%.2f secs)",
              mVideoLateByUs, mVideoLateByUs / 1E6);
     } else {
-        ALOGV("rendering video at media time %.2f secs", mediaTimeUs / 1E6);
+        ALOGV("rendering video at media time %.2f secs",
+                (mFlags & FLAG_REAL_TIME ? realTimeUs :
+                (realTimeUs + mAnchorTimeMediaUs - mAnchorTimeRealUs)) / 1E6);
+        if (mSoftRenderer != NULL) {
+            mSoftRenderer->render(entry->mBuffer->data(), entry->mBuffer->size(), NULL);
+        }
     }
 
     entry->mNotifyConsumed->setInt32("render", !tooLate);
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.h b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.h
index 94a05ea..9124e03 100644
--- a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.h
+++ b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.h
@@ -23,6 +23,7 @@
 namespace android {
 
 struct ABuffer;
+class SoftwareRenderer;
 
 struct NuPlayer::Renderer : public AHandler {
     enum Flags {
@@ -56,6 +57,8 @@
         kWhatMediaRenderingStart = 'mdrd',
     };
 
+    void setSoftRenderer(SoftwareRenderer *softRenderer);
+
 protected:
     virtual ~Renderer();
 
@@ -83,6 +86,7 @@
     static const int64_t kMinPositionUpdateDelayUs;
 
     sp<MediaPlayerBase::AudioSink> mAudioSink;
+    SoftwareRenderer *mSoftRenderer;
     sp<AMessage> mNotify;
     uint32_t mFlags;
     List<QueueEntry> mAudioQueue;
diff --git a/media/libnbaio/MonoPipe.cpp b/media/libnbaio/MonoPipe.cpp
index de0ad28..3c61b60 100644
--- a/media/libnbaio/MonoPipe.cpp
+++ b/media/libnbaio/MonoPipe.cpp
@@ -183,7 +183,7 @@
             }
         }
         if (ns > 0) {
-            const struct timespec req = {0, ns};
+            const struct timespec req = {0, static_cast<long>(ns)};
             nanosleep(&req, NULL);
         }
         // record the time that this write() completed
diff --git a/media/libstagefright/ACodec.cpp b/media/libstagefright/ACodec.cpp
index 718e6c7..67a19cd 100644
--- a/media/libstagefright/ACodec.cpp
+++ b/media/libstagefright/ACodec.cpp
@@ -35,7 +35,9 @@
 
 #include <media/hardware/HardwareAPI.h>
 
+#include <OMX_AudioExt.h>
 #include <OMX_Component.h>
+#include <OMX_IndexExt.h>
 
 #include "include/avc_utils.h"
 
@@ -990,6 +992,10 @@
             "audio_decoder.flac", "audio_encoder.flac" },
         { MEDIA_MIMETYPE_AUDIO_MSGSM,
             "audio_decoder.gsm", "audio_encoder.gsm" },
+        { MEDIA_MIMETYPE_VIDEO_MPEG2,
+            "video_decoder.mpeg2", "video_encoder.mpeg2" },
+        { MEDIA_MIMETYPE_AUDIO_AC3,
+            "audio_decoder.ac3", "audio_encoder.ac3" },
     };
 
     static const size_t kNumMimeToRole =
@@ -1288,6 +1294,15 @@
         } else {
             err = setupRawAudioFormat(kPortIndexInput, sampleRate, numChannels);
         }
+    } else if (!strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_AC3)) {
+        int32_t numChannels;
+        int32_t sampleRate;
+        if (!msg->findInt32("channel-count", &numChannels)
+                || !msg->findInt32("sample-rate", &sampleRate)) {
+            err = INVALID_OPERATION;
+        } else {
+            err = setupAC3Codec(encoder, numChannels, sampleRate);
+        }
     }
 
     if (err != OK) {
@@ -1484,6 +1499,44 @@
             mNode, OMX_IndexParamAudioAac, &profile, sizeof(profile));
 }
 
+status_t ACodec::setupAC3Codec(
+        bool encoder, int32_t numChannels, int32_t sampleRate) {
+    status_t err = setupRawAudioFormat(
+            encoder ? kPortIndexInput : kPortIndexOutput, sampleRate, numChannels);
+
+    if (err != OK) {
+        return err;
+    }
+
+    if (encoder) {
+        ALOGW("AC3 encoding is not supported.");
+        return INVALID_OPERATION;
+    }
+
+    OMX_AUDIO_PARAM_ANDROID_AC3TYPE def;
+    InitOMXParams(&def);
+    def.nPortIndex = kPortIndexInput;
+
+    err = mOMX->getParameter(
+            mNode,
+            (OMX_INDEXTYPE)OMX_IndexParamAudioAndroidAc3,
+            &def,
+            sizeof(def));
+
+    if (err != OK) {
+        return err;
+    }
+
+    def.nChannels = numChannels;
+    def.nSampleRate = sampleRate;
+
+    return mOMX->setParameter(
+            mNode,
+            (OMX_INDEXTYPE)OMX_IndexParamAudioAndroidAc3,
+            &def,
+            sizeof(def));
+}
+
 static OMX_AUDIO_AMRBANDMODETYPE pickModeFromBitRate(
         bool isAMRWB, int32_t bps) {
     if (isAMRWB) {
@@ -2578,7 +2631,7 @@
         {
             OMX_AUDIO_PORTDEFINITIONTYPE *audioDef = &def.format.audio;
 
-            switch (audioDef->eEncoding) {
+            switch ((int)audioDef->eEncoding) {
                 case OMX_AUDIO_CodingPCM:
                 {
                     OMX_AUDIO_PARAM_PCMMODETYPE params;
@@ -2684,6 +2737,24 @@
                     break;
                 }
 
+                case OMX_AUDIO_CodingAndroidAC3:
+                {
+                    OMX_AUDIO_PARAM_ANDROID_AC3TYPE params;
+                    InitOMXParams(&params);
+                    params.nPortIndex = kPortIndexOutput;
+
+                    CHECK_EQ((status_t)OK, mOMX->getParameter(
+                            mNode,
+                            (OMX_INDEXTYPE)OMX_IndexParamAudioAndroidAc3,
+                            &params,
+                            sizeof(params)));
+
+                    notify->setString("mime", MEDIA_MIMETYPE_AUDIO_AC3);
+                    notify->setInt32("channel-count", params.nChannels);
+                    notify->setInt32("sample-rate", params.nSampleRate);
+                    break;
+                }
+
                 default:
                     TRESPASS();
             }
diff --git a/media/libstagefright/AwesomePlayer.cpp b/media/libstagefright/AwesomePlayer.cpp
index fe9f83f..133cae3 100644
--- a/media/libstagefright/AwesomePlayer.cpp
+++ b/media/libstagefright/AwesomePlayer.cpp
@@ -2096,7 +2096,10 @@
             mSeekNotificationSent = true;
         }
 
-        mSeeking = NO_SEEK;
+        if (mVideoSource == NULL) {
+            // For video the mSeeking flag is always reset in finishSeekIfNecessary
+            mSeeking = NO_SEEK;
+        }
 
         notifyIfMediaStarted_l();
     }
diff --git a/media/libstagefright/MPEG4Extractor.cpp b/media/libstagefright/MPEG4Extractor.cpp
index 92065d1..e9ecc45 100644
--- a/media/libstagefright/MPEG4Extractor.cpp
+++ b/media/libstagefright/MPEG4Extractor.cpp
@@ -39,6 +39,9 @@
 #include <media/stagefright/MetaData.h>
 #include <utils/String8.h>
 
+#include <byteswap.h>
+#include "include/ID3.h"
+
 #ifndef UINT32_MAX
 #define UINT32_MAX       (4294967295U)
 #endif
@@ -689,7 +692,7 @@
             }
             data_offset += 2;
 
-            if (mDataSource->readAt(data_offset + 2, sinf->IPMPData, sinf->len) < sinf->len) {
+            if (mDataSource->readAt(data_offset, sinf->IPMPData, sinf->len) < sinf->len) {
                 return ERROR_IO;
             }
             data_offset += sinf->len;
@@ -1658,7 +1661,7 @@
         case FOURCC('d', 'a', 't', 'a'):
         {
             if (mPath.size() == 6 && underMetaDataPath(mPath)) {
-                status_t err = parseMetaData(data_offset, chunk_data_size);
+                status_t err = parseITunesMetaData(data_offset, chunk_data_size);
 
                 if (err != OK) {
                     return err;
@@ -1804,6 +1807,35 @@
             break;
         }
 
+        case FOURCC('t', 'i', 't', 'l'):
+        case FOURCC('p', 'e', 'r', 'f'):
+        case FOURCC('a', 'u', 't', 'h'):
+        case FOURCC('g', 'n', 'r', 'e'):
+        case FOURCC('a', 'l', 'b', 'm'):
+        case FOURCC('y', 'r', 'r', 'c'):
+        {
+            status_t err = parse3GPPMetaData(data_offset, chunk_data_size, depth);
+
+            if (err != OK) {
+                return err;
+            }
+
+            *offset += chunk_size;
+            break;
+        }
+
+        case FOURCC('I', 'D', '3', '2'):
+        {
+            if (chunk_data_size < 6) {
+                return ERROR_MALFORMED;
+            }
+
+            parseID3v2MetaData(data_offset + 6);
+
+            *offset += chunk_size;
+            break;
+        }
+
         case FOURCC('-', '-', '-', '-'):
         {
             mLastCommentMean.clear();
@@ -2038,7 +2070,7 @@
     return OK;
 }
 
-status_t MPEG4Extractor::parseMetaData(off64_t offset, size_t size) {
+status_t MPEG4Extractor::parseITunesMetaData(off64_t offset, size_t size) {
     if (size < 4 || size == SIZE_MAX) {
         return ERROR_MALFORMED;
     }
@@ -2187,7 +2219,7 @@
             break;
     }
 
-    if (size >= 8 && metadataKey) {
+    if (size >= 8 && metadataKey && !mFileMetaData->hasData(metadataKey)) {
         if (metadataKey == kKeyAlbumArt) {
             mFileMetaData->setData(
                     kKeyAlbumArt, MetaData::TYPE_NONE,
@@ -2228,6 +2260,170 @@
     return OK;
 }
 
+status_t MPEG4Extractor::parse3GPPMetaData(off64_t offset, size_t size, int depth) {
+    if (size < 4) {
+        return ERROR_MALFORMED;
+    }
+
+    uint8_t *buffer = new uint8_t[size];
+    if (mDataSource->readAt(
+                offset, buffer, size) != (ssize_t)size) {
+        delete[] buffer;
+        buffer = NULL;
+
+        return ERROR_IO;
+    }
+
+    uint32_t metadataKey = 0;
+    switch (mPath[depth]) {
+        case FOURCC('t', 'i', 't', 'l'):
+        {
+            metadataKey = kKeyTitle;
+            break;
+        }
+        case FOURCC('p', 'e', 'r', 'f'):
+        {
+            metadataKey = kKeyArtist;
+            break;
+        }
+        case FOURCC('a', 'u', 't', 'h'):
+        {
+            metadataKey = kKeyWriter;
+            break;
+        }
+        case FOURCC('g', 'n', 'r', 'e'):
+        {
+            metadataKey = kKeyGenre;
+            break;
+        }
+        case FOURCC('a', 'l', 'b', 'm'):
+        {
+            if (buffer[size - 1] != '\0') {
+              char tmp[4];
+              sprintf(tmp, "%u", buffer[size - 1]);
+
+              mFileMetaData->setCString(kKeyCDTrackNumber, tmp);
+            }
+
+            metadataKey = kKeyAlbum;
+            break;
+        }
+        case FOURCC('y', 'r', 'r', 'c'):
+        {
+            char tmp[5];
+            uint16_t year = U16_AT(&buffer[4]);
+
+            if (year < 10000) {
+                sprintf(tmp, "%u", year);
+
+                mFileMetaData->setCString(kKeyYear, tmp);
+            }
+            break;
+        }
+
+        default:
+            break;
+    }
+
+    if (metadataKey > 0) {
+        bool isUTF8 = true; // Common case
+        char16_t *framedata = NULL;
+        int len16 = 0; // Number of UTF-16 characters
+
+        // smallest possible valid UTF-16 string w BOM: 0xfe 0xff 0x00 0x00
+        if (size - 6 >= 4) {
+            len16 = ((size - 6) / 2) - 1; // don't include 0x0000 terminator
+            framedata = (char16_t *)(buffer + 6);
+            if (0xfffe == *framedata) {
+                // endianness marker (BOM) doesn't match host endianness
+                for (int i = 0; i < len16; i++) {
+                    framedata[i] = bswap_16(framedata[i]);
+                }
+                // BOM is now swapped to 0xfeff, we will execute next block too
+            }
+
+            if (0xfeff == *framedata) {
+                // Remove the BOM
+                framedata++;
+                len16--;
+                isUTF8 = false;
+            }
+            // else normal non-zero-length UTF-8 string
+            // we can't handle UTF-16 without BOM as there is no other
+            // indication of encoding.
+        }
+
+        if (isUTF8) {
+            mFileMetaData->setCString(metadataKey, (const char *)buffer + 6);
+        } else {
+            // Convert from UTF-16 string to UTF-8 string.
+            String8 tmpUTF8str(framedata, len16);
+            mFileMetaData->setCString(metadataKey, tmpUTF8str.string());
+        }
+    }
+
+    delete[] buffer;
+    buffer = NULL;
+
+    return OK;
+}
+
+void MPEG4Extractor::parseID3v2MetaData(off64_t offset) {
+    ID3 id3(mDataSource, true /* ignorev1 */, offset);
+
+    if (id3.isValid()) {
+        struct Map {
+            int key;
+            const char *tag1;
+            const char *tag2;
+        };
+        static const Map kMap[] = {
+            { kKeyAlbum, "TALB", "TAL" },
+            { kKeyArtist, "TPE1", "TP1" },
+            { kKeyAlbumArtist, "TPE2", "TP2" },
+            { kKeyComposer, "TCOM", "TCM" },
+            { kKeyGenre, "TCON", "TCO" },
+            { kKeyTitle, "TIT2", "TT2" },
+            { kKeyYear, "TYE", "TYER" },
+            { kKeyAuthor, "TXT", "TEXT" },
+            { kKeyCDTrackNumber, "TRK", "TRCK" },
+            { kKeyDiscNumber, "TPA", "TPOS" },
+            { kKeyCompilation, "TCP", "TCMP" },
+        };
+        static const size_t kNumMapEntries = sizeof(kMap) / sizeof(kMap[0]);
+
+        for (size_t i = 0; i < kNumMapEntries; ++i) {
+            if (!mFileMetaData->hasData(kMap[i].key)) {
+                ID3::Iterator *it = new ID3::Iterator(id3, kMap[i].tag1);
+                if (it->done()) {
+                    delete it;
+                    it = new ID3::Iterator(id3, kMap[i].tag2);
+                }
+
+                if (it->done()) {
+                    delete it;
+                    continue;
+                }
+
+                String8 s;
+                it->getString(&s);
+                delete it;
+
+                mFileMetaData->setCString(kMap[i].key, s);
+            }
+        }
+
+        size_t dataSize;
+        String8 mime;
+        const void *data = id3.getAlbumArt(&dataSize, &mime);
+
+        if (data) {
+            mFileMetaData->setData(kKeyAlbumArt, MetaData::TYPE_NONE, data, dataSize);
+            mFileMetaData->setCString(kKeyAlbumArtMIME, mime.string());
+        }
+    }
+}
+
 sp<MediaSource> MPEG4Extractor::getTrack(size_t index) {
     status_t err;
     if ((err = readMetaData()) != OK) {
diff --git a/media/libstagefright/MediaCodec.cpp b/media/libstagefright/MediaCodec.cpp
index c36dd7c..8af1aaf 100644
--- a/media/libstagefright/MediaCodec.cpp
+++ b/media/libstagefright/MediaCodec.cpp
@@ -746,6 +746,10 @@
                             CHECK(msg->findInt32("width", &width));
                             CHECK(msg->findInt32("height", &height));
 
+                            int32_t cropLeft, cropTop, cropRight, cropBottom;
+                            CHECK(msg->findRect("crop",
+                                &cropLeft, &cropTop, &cropRight, &cropBottom));
+
                             int32_t colorFormat;
                             CHECK(msg->findInt32(
                                         "color-format", &colorFormat));
@@ -753,6 +757,8 @@
                             sp<MetaData> meta = new MetaData;
                             meta->setInt32(kKeyWidth, width);
                             meta->setInt32(kKeyHeight, height);
+                            meta->setRect(kKeyCropRect,
+                                cropLeft, cropTop, cropRight, cropBottom);
                             meta->setInt32(kKeyColorFormat, colorFormat);
 
                             mSoftRenderer =
diff --git a/media/libstagefright/MediaCodecList.cpp b/media/libstagefright/MediaCodecList.cpp
index 6248e90..b74b2e2 100644
--- a/media/libstagefright/MediaCodecList.cpp
+++ b/media/libstagefright/MediaCodecList.cpp
@@ -57,15 +57,6 @@
 
     parseXMLFile(file);
 
-    if (mInitCheck == OK) {
-        // These are currently still used by the video editing suite.
-
-        addMediaCodec(true /* encoder */, "AACEncoder", "audio/mp4a-latm");
-
-        addMediaCodec(
-                false /* encoder */, "OMX.google.raw.decoder", "audio/raw");
-    }
-
 #if 0
     for (size_t i = 0; i < mCodecInfos.size(); ++i) {
         const CodecInfo &info = mCodecInfos.itemAt(i);
diff --git a/media/libstagefright/MediaDefs.cpp b/media/libstagefright/MediaDefs.cpp
index b5d4e44..340cba7 100644
--- a/media/libstagefright/MediaDefs.cpp
+++ b/media/libstagefright/MediaDefs.cpp
@@ -42,6 +42,7 @@
 const char *MEDIA_MIMETYPE_AUDIO_FLAC = "audio/flac";
 const char *MEDIA_MIMETYPE_AUDIO_AAC_ADTS = "audio/aac-adts";
 const char *MEDIA_MIMETYPE_AUDIO_MSGSM = "audio/gsm";
+const char *MEDIA_MIMETYPE_AUDIO_AC3 = "audio/ac3";
 
 const char *MEDIA_MIMETYPE_CONTAINER_MPEG4 = "video/mp4";
 const char *MEDIA_MIMETYPE_CONTAINER_WAV = "audio/x-wav";
diff --git a/media/libstagefright/MetaData.cpp b/media/libstagefright/MetaData.cpp
index 2264a23..725f97e 100644
--- a/media/libstagefright/MetaData.cpp
+++ b/media/libstagefright/MetaData.cpp
@@ -221,6 +221,16 @@
     return true;
 }
 
+bool MetaData::hasData(uint32_t key) const {
+    ssize_t i = mItems.indexOfKey(key);
+
+    if (i < 0) {
+        return false;
+    }
+
+    return true;
+}
+
 MetaData::typed_data::typed_data()
     : mType(0),
       mSize(0) {
diff --git a/media/libstagefright/OMXCodec.cpp b/media/libstagefright/OMXCodec.cpp
index 4b3ad68..e17f482 100644
--- a/media/libstagefright/OMXCodec.cpp
+++ b/media/libstagefright/OMXCodec.cpp
@@ -40,7 +40,9 @@
 #include <utils/Vector.h>
 
 #include <OMX_Audio.h>
+#include <OMX_AudioExt.h>
 #include <OMX_Component.h>
+#include <OMX_IndexExt.h>
 
 #include "include/avc_utils.h"
 
@@ -528,6 +530,17 @@
                     sampleRate,
                     numChannels);
         }
+    } else if (!strcasecmp(MEDIA_MIMETYPE_AUDIO_AC3, mMIME)) {
+        int32_t numChannels;
+        int32_t sampleRate;
+        CHECK(meta->findInt32(kKeyChannelCount, &numChannels));
+        CHECK(meta->findInt32(kKeySampleRate, &sampleRate));
+
+        status_t err = setAC3Format(numChannels, sampleRate);
+        if (err != OK) {
+            CODEC_LOGE("setAC3Format() failed (err = %d)", err);
+            return err;
+        }
     } else if (!strcasecmp(MEDIA_MIMETYPE_AUDIO_G711_ALAW, mMIME)
             || !strcasecmp(MEDIA_MIMETYPE_AUDIO_G711_MLAW, mMIME)) {
         // These are PCM-like formats with a fixed sample rate but
@@ -1394,6 +1407,10 @@
             "audio_decoder.flac", "audio_encoder.flac" },
         { MEDIA_MIMETYPE_AUDIO_MSGSM,
             "audio_decoder.gsm", "audio_encoder.gsm" },
+        { MEDIA_MIMETYPE_VIDEO_MPEG2,
+            "video_decoder.mpeg2", "video_encoder.mpeg2" },
+        { MEDIA_MIMETYPE_AUDIO_AC3,
+            "audio_decoder.ac3", "audio_encoder.ac3" },
     };
 
     static const size_t kNumMimeToRole =
@@ -3492,6 +3509,31 @@
     return OK;
 }
 
+status_t OMXCodec::setAC3Format(int32_t numChannels, int32_t sampleRate) {
+    OMX_AUDIO_PARAM_ANDROID_AC3TYPE def;
+    InitOMXParams(&def);
+    def.nPortIndex = kPortIndexInput;
+
+    status_t err = mOMX->getParameter(
+            mNode,
+            (OMX_INDEXTYPE)OMX_IndexParamAudioAndroidAc3,
+            &def,
+            sizeof(def));
+
+    if (err != OK) {
+        return err;
+    }
+
+    def.nChannels = numChannels;
+    def.nSampleRate = sampleRate;
+
+    return mOMX->setParameter(
+            mNode,
+            (OMX_INDEXTYPE)OMX_IndexParamAudioAndroidAc3,
+            &def,
+            sizeof(def));
+}
+
 void OMXCodec::setG711Format(int32_t numChannels) {
     CHECK(!mIsEncoder);
     setRawAudioFormat(kPortIndexInput, 8000, numChannels);
@@ -4425,6 +4467,17 @@
                 mOutputFormat->setInt32(kKeyChannelCount, numChannels);
                 mOutputFormat->setInt32(kKeySampleRate, sampleRate);
                 mOutputFormat->setInt32(kKeyBitRate, bitRate);
+            } else if (audio_def->eEncoding ==
+                    (OMX_AUDIO_CODINGTYPE)OMX_AUDIO_CodingAndroidAC3) {
+                mOutputFormat->setCString(
+                        kKeyMIMEType, MEDIA_MIMETYPE_AUDIO_AC3);
+                int32_t numChannels, sampleRate, bitRate;
+                inputFormat->findInt32(kKeyChannelCount, &numChannels);
+                inputFormat->findInt32(kKeySampleRate, &sampleRate);
+                inputFormat->findInt32(kKeyBitRate, &bitRate);
+                mOutputFormat->setInt32(kKeyChannelCount, numChannels);
+                mOutputFormat->setInt32(kKeySampleRate, sampleRate);
+                mOutputFormat->setInt32(kKeyBitRate, bitRate);
             } else {
                 CHECK(!"Should not be here. Unknown audio encoding.");
             }
diff --git a/media/libstagefright/TimedEventQueue.cpp b/media/libstagefright/TimedEventQueue.cpp
index dedd186..0afac69 100644
--- a/media/libstagefright/TimedEventQueue.cpp
+++ b/media/libstagefright/TimedEventQueue.cpp
@@ -318,7 +318,7 @@
 
 void TimedEventQueue::acquireWakeLock_l()
 {
-    if (mWakeLockCount++ == 0) {
+    if (mWakeLockCount == 0) {
         CHECK(mWakeLockToken == 0);
         if (mPowerManager == 0) {
             // use checkService() to avoid blocking if power service is not up yet
@@ -341,21 +341,23 @@
             IPCThreadState::self()->restoreCallingIdentity(token);
             if (status == NO_ERROR) {
                 mWakeLockToken = binder;
+                mWakeLockCount++;
             }
         }
+    } else {
+        mWakeLockCount++;
     }
 }
 
 void TimedEventQueue::releaseWakeLock_l(bool force)
 {
+    if (mWakeLockCount == 0) {
+        return;
+    }
     if (force) {
-        if (mWakeLockCount == 0) {
-            return;
-        }
         // Force wakelock release below by setting reference count to 1.
         mWakeLockCount = 1;
     }
-    CHECK(mWakeLockCount != 0);
     if (--mWakeLockCount == 0) {
         CHECK(mWakeLockToken != 0);
         if (mPowerManager != 0) {
diff --git a/media/libstagefright/WVMExtractor.cpp b/media/libstagefright/WVMExtractor.cpp
index 5ae80cc..bc48272 100644
--- a/media/libstagefright/WVMExtractor.cpp
+++ b/media/libstagefright/WVMExtractor.cpp
@@ -76,7 +76,7 @@
 {
     gVendorLibHandle = dlopen("libwvm.so", RTLD_NOW);
     if (gVendorLibHandle == NULL) {
-        ALOGE("Failed to open libwvm.so");
+        ALOGE("Failed to open libwvm.so: %s", dlerror());
     }
 }
 
diff --git a/media/libstagefright/codecs/avc/enc/SoftAVCEncoder.cpp b/media/libstagefright/codecs/avc/enc/SoftAVCEncoder.cpp
index 4e11628..e2b9e4f 100644
--- a/media/libstagefright/codecs/avc/enc/SoftAVCEncoder.cpp
+++ b/media/libstagefright/codecs/avc/enc/SoftAVCEncoder.cpp
@@ -887,7 +887,13 @@
         CHECK(encoderStatus == AVCENC_SUCCESS || encoderStatus == AVCENC_NEW_IDR);
         dataLength = outHeader->nAllocLen;  // Reset the output buffer length
         if (inHeader->nFilledLen > 0) {
+            if (outHeader->nAllocLen >= 4) {
+                memcpy(outPtr, "\x00\x00\x00\x01", 4);
+                outPtr += 4;
+                dataLength -= 4;
+            }
             encoderStatus = PVAVCEncodeNAL(mHandle, outPtr, &dataLength, &type);
+            dataLength = outPtr + dataLength - outHeader->pBuffer;
             if (encoderStatus == AVCENC_SUCCESS) {
                 CHECK(NULL == PVAVCEncGetOverrunBuffer(mHandle));
             } else if (encoderStatus == AVCENC_PICTURE_READY) {
diff --git a/media/libstagefright/httplive/M3UParser.cpp b/media/libstagefright/httplive/M3UParser.cpp
index f211bc8..e31ad40 100644
--- a/media/libstagefright/httplive/M3UParser.cpp
+++ b/media/libstagefright/httplive/M3UParser.cpp
@@ -626,7 +626,7 @@
     if (meta->get() == NULL) {
         *meta = new AMessage;
     }
-    (*meta)->setInt64(key, (int64_t)x * 1E6);
+    (*meta)->setInt64(key, (int64_t)(x * 1E6));
 
     return OK;
 }
diff --git a/media/libstagefright/id3/ID3.cpp b/media/libstagefright/id3/ID3.cpp
index 5a490e9..f2a8a73 100644
--- a/media/libstagefright/id3/ID3.cpp
+++ b/media/libstagefright/id3/ID3.cpp
@@ -56,14 +56,14 @@
     DISALLOW_EVIL_CONSTRUCTORS(MemorySource);
 };
 
-ID3::ID3(const sp<DataSource> &source, bool ignoreV1)
+ID3::ID3(const sp<DataSource> &source, bool ignoreV1, off64_t offset)
     : mIsValid(false),
       mData(NULL),
       mSize(0),
       mFirstFrameOffset(0),
       mVersion(ID3_UNKNOWN),
       mRawSize(0) {
-    mIsValid = parseV2(source);
+    mIsValid = parseV2(source, offset);
 
     if (!mIsValid && !ignoreV1) {
         mIsValid = parseV1(source);
@@ -79,7 +79,7 @@
       mRawSize(0) {
     sp<MemorySource> source = new MemorySource(data, size);
 
-    mIsValid = parseV2(source);
+    mIsValid = parseV2(source, 0);
 
     if (!mIsValid && !ignoreV1) {
         mIsValid = parseV1(source);
@@ -115,7 +115,7 @@
     return true;
 }
 
-bool ID3::parseV2(const sp<DataSource> &source) {
+bool ID3::parseV2(const sp<DataSource> &source, off64_t offset) {
 struct id3_header {
     char id[3];
     uint8_t version_major;
@@ -126,7 +126,7 @@
 
     id3_header header;
     if (source->readAt(
-                0, &header, sizeof(header)) != (ssize_t)sizeof(header)) {
+                offset, &header, sizeof(header)) != (ssize_t)sizeof(header)) {
         return false;
     }
 
@@ -185,7 +185,7 @@
     mSize = size;
     mRawSize = mSize + sizeof(header);
 
-    if (source->readAt(sizeof(header), mData, mSize) != (ssize_t)mSize) {
+    if (source->readAt(offset + sizeof(header), mData, mSize) != (ssize_t)mSize) {
         free(mData);
         mData = NULL;
 
diff --git a/media/libstagefright/include/ID3.h b/media/libstagefright/include/ID3.h
index cca83ab..e83f3ef 100644
--- a/media/libstagefright/include/ID3.h
+++ b/media/libstagefright/include/ID3.h
@@ -35,7 +35,7 @@
         ID3_V2_4,
     };
 
-    ID3(const sp<DataSource> &source, bool ignoreV1 = false);
+    ID3(const sp<DataSource> &source, bool ignoreV1 = false, off64_t offset = 0);
     ID3(const uint8_t *data, size_t size, bool ignoreV1 = false);
     ~ID3();
 
@@ -86,7 +86,7 @@
     size_t mRawSize;
 
     bool parseV1(const sp<DataSource> &source);
-    bool parseV2(const sp<DataSource> &source);
+    bool parseV2(const sp<DataSource> &source, off64_t offset);
     void removeUnsynchronization();
     bool removeUnsynchronizationV2_4(bool iTunesHack);
 
diff --git a/media/libstagefright/include/MPEG4Extractor.h b/media/libstagefright/include/MPEG4Extractor.h
index bbec1c4..7b4bc6d 100644
--- a/media/libstagefright/include/MPEG4Extractor.h
+++ b/media/libstagefright/include/MPEG4Extractor.h
@@ -95,7 +95,9 @@
 
     status_t readMetaData();
     status_t parseChunk(off64_t *offset, int depth);
-    status_t parseMetaData(off64_t offset, size_t size);
+    status_t parseITunesMetaData(off64_t offset, size_t size);
+    status_t parse3GPPMetaData(off64_t offset, size_t size, int depth);
+    void parseID3v2MetaData(off64_t offset);
 
     status_t updateAudioTrackInfoFromESDS_MPEG4Audio(
             const void *esds_data, size_t esds_size);
diff --git a/media/libstagefright/mpeg2ts/ATSParser.cpp b/media/libstagefright/mpeg2ts/ATSParser.cpp
index 175a263..cb57a2f 100644
--- a/media/libstagefright/mpeg2ts/ATSParser.cpp
+++ b/media/libstagefright/mpeg2ts/ATSParser.cpp
@@ -506,6 +506,11 @@
                     ElementaryStreamQueue::PCM_AUDIO);
             break;
 
+        case STREAMTYPE_AC3:
+            mQueue = new ElementaryStreamQueue(
+                    ElementaryStreamQueue::AC3);
+            break;
+
         default:
             break;
     }
@@ -614,6 +619,7 @@
         case STREAMTYPE_MPEG2_AUDIO:
         case STREAMTYPE_MPEG2_AUDIO_ADTS:
         case STREAMTYPE_PCM_AUDIO:
+        case STREAMTYPE_AC3:
             return true;
 
         default:
diff --git a/media/libstagefright/mpeg2ts/ATSParser.h b/media/libstagefright/mpeg2ts/ATSParser.h
index 8a80069..86b025f 100644
--- a/media/libstagefright/mpeg2ts/ATSParser.h
+++ b/media/libstagefright/mpeg2ts/ATSParser.h
@@ -89,6 +89,10 @@
         STREAMTYPE_MPEG2_AUDIO_ADTS     = 0x0f,
         STREAMTYPE_MPEG4_VIDEO          = 0x10,
         STREAMTYPE_H264                 = 0x1b,
+
+        // From ATSC A/53 Part 3:2009, 6.7.1
+        STREAMTYPE_AC3                  = 0x81,
+
         STREAMTYPE_PCM_AUDIO            = 0x83,
     };
 
diff --git a/media/libstagefright/mpeg2ts/ESQueue.cpp b/media/libstagefright/mpeg2ts/ESQueue.cpp
index 8f9c9c8..2b0711b 100644
--- a/media/libstagefright/mpeg2ts/ESQueue.cpp
+++ b/media/libstagefright/mpeg2ts/ESQueue.cpp
@@ -56,6 +56,122 @@
     }
 }
 
+// Parse AC3 header assuming the current ptr is start position of syncframe,
+// update metadata only applicable, and return the payload size
+static unsigned parseAC3SyncFrame(
+        const uint8_t *ptr, size_t size, sp<MetaData> *metaData) {
+    static const unsigned channelCountTable[] = {2, 1, 2, 3, 3, 4, 4, 5};
+    static const unsigned samplingRateTable[] = {48000, 44100, 32000};
+    static const unsigned rates[] = {32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256,
+            320, 384, 448, 512, 576, 640};
+
+    static const unsigned frameSizeTable[19][3] = {
+        { 64, 69, 96 },
+        { 80, 87, 120 },
+        { 96, 104, 144 },
+        { 112, 121, 168 },
+        { 128, 139, 192 },
+        { 160, 174, 240 },
+        { 192, 208, 288 },
+        { 224, 243, 336 },
+        { 256, 278, 384 },
+        { 320, 348, 480 },
+        { 384, 417, 576 },
+        { 448, 487, 672 },
+        { 512, 557, 768 },
+        { 640, 696, 960 },
+        { 768, 835, 1152 },
+        { 896, 975, 1344 },
+        { 1024, 1114, 1536 },
+        { 1152, 1253, 1728 },
+        { 1280, 1393, 1920 },
+    };
+
+    ABitReader bits(ptr, size);
+    unsigned syncStartPos = 0;  // in bytes
+    if (bits.numBitsLeft() < 16) {
+        return 0;
+    }
+    if (bits.getBits(16) != 0x0B77) {
+        return 0;
+    }
+
+    if (bits.numBitsLeft() < 16 + 2 + 6 + 5 + 3 + 3) {
+        ALOGV("Not enough bits left for further parsing");
+        return 0;
+    }
+    bits.skipBits(16);  // crc1
+
+    unsigned fscod = bits.getBits(2);
+    if (fscod == 3) {
+        ALOGW("Incorrect fscod in AC3 header");
+        return 0;
+    }
+
+    unsigned frmsizecod = bits.getBits(6);
+    if (frmsizecod > 37) {
+        ALOGW("Incorrect frmsizecod in AC3 header");
+        return 0;
+    }
+
+    unsigned bsid = bits.getBits(5);
+    if (bsid > 8) {
+        ALOGW("Incorrect bsid in AC3 header. Possibly E-AC-3?");
+        return 0;
+    }
+
+    unsigned bsmod = bits.getBits(3);
+    unsigned acmod = bits.getBits(3);
+    unsigned cmixlev = 0;
+    unsigned surmixlev = 0;
+    unsigned dsurmod = 0;
+
+    if ((acmod & 1) > 0 && acmod != 1) {
+        if (bits.numBitsLeft() < 2) {
+            return 0;
+        }
+        cmixlev = bits.getBits(2);
+    }
+    if ((acmod & 4) > 0) {
+        if (bits.numBitsLeft() < 2) {
+            return 0;
+        }
+        surmixlev = bits.getBits(2);
+    }
+    if (acmod == 2) {
+        if (bits.numBitsLeft() < 2) {
+            return 0;
+        }
+        dsurmod = bits.getBits(2);
+    }
+
+    if (bits.numBitsLeft() < 1) {
+        return 0;
+    }
+    unsigned lfeon = bits.getBits(1);
+
+    unsigned samplingRate = samplingRateTable[fscod];
+    unsigned payloadSize = frameSizeTable[frmsizecod >> 1][fscod];
+    if (fscod == 1) {
+        payloadSize += frmsizecod & 1;
+    }
+    payloadSize <<= 1;  // convert from 16-bit words to bytes
+
+    unsigned channelCount = channelCountTable[acmod] + lfeon;
+
+    if (metaData != NULL) {
+        (*metaData)->setCString(kKeyMIMEType, MEDIA_MIMETYPE_AUDIO_AC3);
+        (*metaData)->setInt32(kKeyChannelCount, channelCount);
+        (*metaData)->setInt32(kKeySampleRate, samplingRate);
+    }
+
+    return payloadSize;
+}
+
+static bool IsSeeminglyValidAC3Header(const uint8_t *ptr, size_t size) {
+    return parseAC3SyncFrame(ptr, size, NULL) > 0;
+}
+
 static bool IsSeeminglyValidADTSHeader(const uint8_t *ptr, size_t size) {
     if (size < 3) {
         // Not enough data to verify header.
@@ -224,6 +340,33 @@
                 break;
             }
 
+            case AC3:
+            {
+                uint8_t *ptr = (uint8_t *)data;
+
+                ssize_t startOffset = -1;
+                for (size_t i = 0; i < size; ++i) {
+                    if (IsSeeminglyValidAC3Header(&ptr[i], size - i)) {
+                        startOffset = i;
+                        break;
+                    }
+                }
+
+                if (startOffset < 0) {
+                    return ERROR_MALFORMED;
+                }
+
+                if (startOffset > 0) {
+                    ALOGI("found something resembling an AC3 syncword at "
+                          "offset %d",
+                          startOffset);
+                }
+
+                data = &ptr[startOffset];
+                size -= startOffset;
+                break;
+            }
+
             case MPEG_AUDIO:
             {
                 uint8_t *ptr = (uint8_t *)data;
@@ -328,6 +471,8 @@
             return dequeueAccessUnitH264();
         case AAC:
             return dequeueAccessUnitAAC();
+        case AC3:
+            return dequeueAccessUnitAC3();
         case MPEG_VIDEO:
             return dequeueAccessUnitMPEGVideo();
         case MPEG4_VIDEO:
@@ -340,6 +485,51 @@
     }
 }
 
+sp<ABuffer> ElementaryStreamQueue::dequeueAccessUnitAC3() {
+    unsigned syncStartPos = 0;  // in bytes
+    unsigned payloadSize = 0;
+    sp<MetaData> format = new MetaData;
+    while (true) {
+        if (syncStartPos + 2 >= mBuffer->size()) {
+            return NULL;
+        }
+
+        payloadSize = parseAC3SyncFrame(
+                mBuffer->data() + syncStartPos,
+                mBuffer->size() - syncStartPos,
+                &format);
+        if (payloadSize > 0) {
+            break;
+        }
+        ++syncStartPos;
+    }
+
+    if (mBuffer->size() < syncStartPos + payloadSize) {
+        ALOGV("Not enough buffer size for AC3");
+        return NULL;
+    }
+
+    if (mFormat == NULL) {
+        mFormat = format;
+    }
+
+    sp<ABuffer> accessUnit = new ABuffer(syncStartPos + payloadSize);
+    memcpy(accessUnit->data(), mBuffer->data(), syncStartPos + payloadSize);
+
+    int64_t timeUs = fetchTimestamp(syncStartPos + payloadSize);
+    CHECK_GE(timeUs, 0ll);
+    accessUnit->meta()->setInt64("timeUs", timeUs);
+
+    memmove(
+            mBuffer->data(),
+            mBuffer->data() + syncStartPos + payloadSize,
+            mBuffer->size() - syncStartPos - payloadSize);
+
+    mBuffer->setRange(0, mBuffer->size() - syncStartPos - payloadSize);
+
+    return accessUnit;
+}
+
 sp<ABuffer> ElementaryStreamQueue::dequeueAccessUnitPCMAudio() {
     if (mBuffer->size() < 4) {
         return NULL;
diff --git a/media/libstagefright/mpeg2ts/ESQueue.h b/media/libstagefright/mpeg2ts/ESQueue.h
index 66a8087..a2cca77 100644
--- a/media/libstagefright/mpeg2ts/ESQueue.h
+++ b/media/libstagefright/mpeg2ts/ESQueue.h
@@ -32,6 +32,7 @@
     enum Mode {
         H264,
         AAC,
+        AC3,
         MPEG_AUDIO,
         MPEG_VIDEO,
         MPEG4_VIDEO,
@@ -67,6 +68,7 @@
 
     sp<ABuffer> dequeueAccessUnitH264();
     sp<ABuffer> dequeueAccessUnitAAC();
+    sp<ABuffer> dequeueAccessUnitAC3();
     sp<ABuffer> dequeueAccessUnitMPEGAudio();
     sp<ABuffer> dequeueAccessUnitMPEGVideo();
     sp<ABuffer> dequeueAccessUnitMPEG4Video();
diff --git a/media/libstagefright/rtsp/ARTSPConnection.cpp b/media/libstagefright/rtsp/ARTSPConnection.cpp
index 5116550..efde7a9 100644
--- a/media/libstagefright/rtsp/ARTSPConnection.cpp
+++ b/media/libstagefright/rtsp/ARTSPConnection.cpp
@@ -489,7 +489,6 @@
     FD_SET(mSocket, &rs);
 
     int res = select(mSocket + 1, &rs, NULL, NULL, &tv);
-    CHECK_GE(res, 0);
 
     if (res == 1) {
         MakeSocketBlocking(mSocket, true);
diff --git a/media/libstagefright/rtsp/MyHandler.h b/media/libstagefright/rtsp/MyHandler.h
index f4b5846..cd77aa0 100644
--- a/media/libstagefright/rtsp/MyHandler.h
+++ b/media/libstagefright/rtsp/MyHandler.h
@@ -686,23 +686,27 @@
                         i = response->mHeaders.indexOfKey("transport");
                         CHECK_GE(i, 0);
 
-                        if (!track->mUsingInterleavedTCP) {
-                            AString transport = response->mHeaders.valueAt(i);
+                        if (track->mRTPSocket != -1 && track->mRTCPSocket != -1) {
+                            if (!track->mUsingInterleavedTCP) {
+                                AString transport = response->mHeaders.valueAt(i);
 
-                            // We are going to continue even if we were
-                            // unable to poke a hole into the firewall...
-                            pokeAHole(
-                                    track->mRTPSocket,
-                                    track->mRTCPSocket,
-                                    transport);
+                                // We are going to continue even if we were
+                                // unable to poke a hole into the firewall...
+                                pokeAHole(
+                                        track->mRTPSocket,
+                                        track->mRTCPSocket,
+                                        transport);
+                            }
+
+                            mRTPConn->addStream(
+                                    track->mRTPSocket, track->mRTCPSocket,
+                                    mSessionDesc, index,
+                                    notify, track->mUsingInterleavedTCP);
+
+                            mSetupTracksSuccessful = true;
+                        } else {
+                            result = BAD_VALUE;
                         }
-
-                        mRTPConn->addStream(
-                                track->mRTPSocket, track->mRTCPSocket,
-                                mSessionDesc, index,
-                                notify, track->mUsingInterleavedTCP);
-
-                        mSetupTracksSuccessful = true;
                     }
                 }
 
@@ -726,7 +730,7 @@
                 }
 
                 ++index;
-                if (index < mSessionDesc->countTracks()) {
+                if (result == OK && index < mSessionDesc->countTracks()) {
                     setupTrack(index);
                 } else if (mSetupTracksSuccessful) {
                     ++mKeepAliveGeneration;
@@ -1559,6 +1563,8 @@
         info->mUsingInterleavedTCP = false;
         info->mFirstSeqNumInSegment = 0;
         info->mNewSegment = true;
+        info->mRTPSocket = -1;
+        info->mRTCPSocket = -1;
         info->mRTPAnchor = 0;
         info->mNTPAnchorUs = -1;
         info->mNormalPlayTimeRTP = 0;
diff --git a/media/mtp/MtpDataPacket.cpp b/media/mtp/MtpDataPacket.cpp
index 930f0b0..c4f87a0 100644
--- a/media/mtp/MtpDataPacket.cpp
+++ b/media/mtp/MtpDataPacket.cpp
@@ -331,7 +331,7 @@
 
 void MtpDataPacket::putString(const uint16_t* string) {
     int count = 0;
-    for (int i = 0; i < 256; i++) {
+    for (int i = 0; i <= MTP_STRING_MAX_CHARACTER_NUMBER; i++) {
         if (string[i])
             count++;
         else
diff --git a/media/mtp/MtpStringBuffer.cpp b/media/mtp/MtpStringBuffer.cpp
index fe8cf04..f3420a4 100644
--- a/media/mtp/MtpStringBuffer.cpp
+++ b/media/mtp/MtpStringBuffer.cpp
@@ -56,42 +56,47 @@
 }
 
 void MtpStringBuffer::set(const char* src) {
-    int length = strlen(src);
-    if (length >= sizeof(mBuffer))
-        length = sizeof(mBuffer) - 1;
-    memcpy(mBuffer, src, length);
-
     // count the characters
     int count = 0;
     char ch;
-    while ((ch = *src++) != 0) {
+    char* dest = (char*)mBuffer;
+
+    while ((ch = *src++) != 0 && count < MTP_STRING_MAX_CHARACTER_NUMBER) {
         if ((ch & 0x80) == 0) {
             // single byte character
+            *dest++ = ch;
         } else if ((ch & 0xE0) == 0xC0) {
             // two byte character
-            if (! *src++) {
+            char ch1 = *src++;
+            if (! ch1) {
                 // last character was truncated, so ignore last byte
-                length--;
                 break;
             }
+
+            *dest++ = ch;
+            *dest++ = ch1;
         } else if ((ch & 0xF0) == 0xE0) {
             // 3 byte char
-            if (! *src++) {
+            char ch1 = *src++;
+            if (! ch1) {
                 // last character was truncated, so ignore last byte
-                length--;
                 break;
             }
-            if (! *src++) {
-                // last character was truncated, so ignore last two bytes
-                length -= 2;
+            char ch2 = *src++;
+            if (! ch2) {
+                // last character was truncated, so ignore last byte
                 break;
             }
+
+            *dest++ = ch;
+            *dest++ = ch1;
+            *dest++ = ch2;
         }
         count++;
     }
 
-    mByteCount = length + 1;
-    mBuffer[length] = 0;
+    *dest++ = 0;
+    mByteCount = dest - (char*)mBuffer;
     mCharCount = count;
 }
 
@@ -100,7 +105,7 @@
     uint16_t ch;
     uint8_t* dest = mBuffer;
 
-    while ((ch = *src++) != 0 && count < 255) {
+    while ((ch = *src++) != 0 && count < MTP_STRING_MAX_CHARACTER_NUMBER) {
         if (ch >= 0x0800) {
             *dest++ = (uint8_t)(0xE0 | (ch >> 12));
             *dest++ = (uint8_t)(0x80 | ((ch >> 6) & 0x3F));
diff --git a/media/mtp/MtpStringBuffer.h b/media/mtp/MtpStringBuffer.h
index cbc8307..e5150df 100644
--- a/media/mtp/MtpStringBuffer.h
+++ b/media/mtp/MtpStringBuffer.h
@@ -19,6 +19,9 @@
 
 #include <stdint.h>
 
+// Max Character number of a MTP String
+#define MTP_STRING_MAX_CHARACTER_NUMBER             255
+
 namespace android {
 
 class MtpDataPacket;
@@ -29,7 +32,7 @@
 private:
     // mBuffer contains string in UTF8 format
     // maximum 3 bytes/character, with 1 extra for zero termination
-    uint8_t         mBuffer[255 * 3 + 1];
+    uint8_t         mBuffer[MTP_STRING_MAX_CHARACTER_NUMBER * 3 + 1];
     int             mCharCount;
     int             mByteCount;
 
diff --git a/services/audioflinger/AudioPolicyService.cpp b/services/audioflinger/AudioPolicyService.cpp
index 2e48c2d..21452c8 100644
--- a/services/audioflinger/AudioPolicyService.cpp
+++ b/services/audioflinger/AudioPolicyService.cpp
@@ -1451,6 +1451,14 @@
     loadEffects(root, effects);
     loadInputSources(root, effects);
 
+    // delete effects to fix memory leak.
+    // as effects is local var and valgrind would treat this as memory leak
+    // and although it only did in mediaserver init, but free it in case mediaserver reboot
+    size_t i;
+    for (i = 0; i < effects.size(); i++) {
+      delete effects[i];
+    }
+
     config_free(root);
     free(root);
     free(data);
diff --git a/services/camera/libcameraservice/gui/RingBufferConsumer.cpp b/services/camera/libcameraservice/gui/RingBufferConsumer.cpp
index ebc7ea7..9a6dc28 100644
--- a/services/camera/libcameraservice/gui/RingBufferConsumer.cpp
+++ b/services/camera/libcameraservice/gui/RingBufferConsumer.cpp
@@ -21,11 +21,11 @@
 
 #include <gui/RingBufferConsumer.h>
 
-#define BI_LOGV(x, ...) ALOGV("[%s] "x, mName.string(), ##__VA_ARGS__)
-#define BI_LOGD(x, ...) ALOGD("[%s] "x, mName.string(), ##__VA_ARGS__)
-#define BI_LOGI(x, ...) ALOGI("[%s] "x, mName.string(), ##__VA_ARGS__)
-#define BI_LOGW(x, ...) ALOGW("[%s] "x, mName.string(), ##__VA_ARGS__)
-#define BI_LOGE(x, ...) ALOGE("[%s] "x, mName.string(), ##__VA_ARGS__)
+#define BI_LOGV(x, ...) ALOGV("[%s] " x, mName.string(), ##__VA_ARGS__)
+#define BI_LOGD(x, ...) ALOGD("[%s] " x, mName.string(), ##__VA_ARGS__)
+#define BI_LOGI(x, ...) ALOGI("[%s] " x, mName.string(), ##__VA_ARGS__)
+#define BI_LOGW(x, ...) ALOGW("[%s] " x, mName.string(), ##__VA_ARGS__)
+#define BI_LOGE(x, ...) ALOGE("[%s] " x, mName.string(), ##__VA_ARGS__)
 
 #undef assert
 #define assert(x) ALOG_ASSERT((x), #x)