您现在的位置是:首页 >技术交流 >Godot 4 源码分析 - 初探网站首页技术交流

Godot 4 源码分析 - 初探

DrGraph 2024-07-30 00:01:02
简介Godot 4 源码分析 - 初探

准备研究GoDot 4源码。

源码下载

获取源代码

进入 SCons 构建系统并编译 Godot 之前,你需要将 Godot 的源代码下载到本地。

源代码位于 GitHub 上, 虽然你可以通过网站手动下载它, 但是通常你希望通过 git 版本控制系统来下载.

如果你是为了做贡献或拉动请求而进行编译,你应该遵循拉取请求工作流中的说明。

如果你还不太了解 git,在各种网站上都有大量的 Git 教程

通常,你需要安装 git 和/或其他带有 git 的 GUI 客户端。

之后,要获得最新版本的 Godot 源代码(不稳定的 master 分支),可以使用 git clone

如果你使用 git 命令行,可以通过在终端输入下列命令来完成:

git clone https://github.com/godotengine/godot.git
# You can add the --depth 1 argument to omit the commit history.
# Faster, but not all Git operations (like blame) will work.

要获取稳定版本的源代码,请访问源代码发布页面然后单击所需发行版的链接。然后,你可以从页面上的下载链接下载并解压源代码。

使用 git 时你还可以通过在 --branch (或者 -b )参数后指定分支或者标签,来克隆稳定版本:

# Clone the continuously maintained stable branch (`3.x` as of writing).
git clone https://github.com/godotengine/godot.git -b 3.x

# Clone the `3.2.3-stable` tag. This is a fixed revision that will never change.
git clone https://github.com/godotengine/godot.git -b 3.2.3-stable

此外,你可以通过 git 在各个主要版本的分支间进行切换。

获取到 Godot 的源代码之后,你就可以继续编译 Godot 了。

编译运行

采用scons进行编译,可以直接使用cd到godot源码目录:

scons platform=windows

或者使用cpu多线程进行编译:

scons -j6 platform=windows

编译完成后,会在godotin目录下生成基于当前平台的一个exe程序,这个程序一般是godot.windows.tools.64,带有tools的,如果你是32或者64想打包32,可以直接加修饰词:

scons platform=windows bits=32

默认打包是debug+tools,如果想要打包其他的配置,可以使用:

target=release_debug
target=release
target=debug

三种作为scons构建的修饰词。

至此这里是使用scons构建基于windows平台的exe程序。

我的一个小目标是研究godot源码,妄想对引擎进行拓展和改进,这就需要使用VS进行构建,

需要使用命令生成vs解决方案:

scons p=windows vsproj=yes

 生成结果:

 用VS打开

 以前没怎么用过VS,不过看这个工程是控制台程序,倒也不用考虑太多,先直接运行起来。按F5

改动小试

单步调试可知:godot还是一个正常的windows程序,它定位到main函数进入,初始化,循环,结束。

至于初始化、循环都处理了啥,以后再研究。今天看到既然可以单步调试,那就先改动一点点,看看具体效果。先从Flash界面来处理:

要不要把这个换一下?

先确定是在哪里出来的,单步调试可知

Error err = Main::setup(argv_utf8[0], argc - 1, &argv_utf8[1]);

 进一步,发现获取之处

Ref<Image> splash = memnew(Image(boot_splash_png));
...
RenderingServer::get_singleton()->set_boot_image(splash, boot_bg_color, false);

其中,boot_splash_png定义在splash.gen.h中

稍一研究,这就是PGN图像的二进制格式数据。为了检验,可以直接保存成图像来看一下。Godot中实现了各种格式素材IO,就象这个Image,有个Image.cpp/h专门处理。难怪代码这么多。

Ref<Image> splash = memnew(Image(boot_splash_png));
splash->save_png("D:/1.png");

保存后的打开D:/1.png,是这效果。

再在底色(static const Color boot_splash_bg_color = Color(0.14, 0.14, 0.14))基础上就看到LOGO效果。

根据原LOGO图大小,做一个自己的LOGO图片

 

 生成数据字符串

	DWORD dwFileSize = 0;
	BYTE * bytes = THelper::File::GetBinaryFileContent(L"D:\BaiduNetdiskDownload\Godot_DrGraph.png", dwFileSize);
	THelper::Log::SaveDataInfo(bytes, dwFileSize, L"LOGO文件内容", true, 0, L",");
	delete bytes;

 生成结果:

137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 3, 32, 0, 0, 2, 88, 8, 6, 0, 0, 0, 154, 118, 130, 112, 0, 0, 0, 9, 112, 72, 89, 115, 0, 0, 11, 19, 0, 0, 11, 19, 1, 0, 154, 156, 24, 0, 0, 0, 1, 115, 82, 71, 66, 0, 174, 206, 28, 233, 0, 0, 0, 4, 103, 65, 77, 65, 0, 0, 177, 143, 11, 252, 97, 5, 0, 0, 48, 234, 73, 68, 65, 84, 120, 1, 237, 221, 79, 140, 92, 87, 126, 31, 250, 211, 36, 245, 199, 99, 75, 106, 103, 98, 205, 60, 76, 44, 149, 144, 55, 3, 60, 60, 79, 212, 2, 102, 118, 3, 168, 136, 120, 245, 230, 1, 34, 253, 86, 246, 70, 205, 183, 123, 15, 6, 72, 106, 228, 1, 148, 44, 216, 68, 16, 40, 24, 75, 34, 5, 24, 200, 46, 108, 46, 226, 172, 108, 82, 64, 178, 179, 193, 34, 50, 59, 27, 80, 43, 154, 100, 161, 129, 193, 162, 140, 196, 30, 25, 19, 181, 52, 208, 140, 72, 138, 172, 156, 95, 213, 189, 228, 101, 171, 187, 235, 86, 119, 253, 187, 85, 159, 15, 112, 167, 170, 187, 79, 85, 221, 63, 69, 205, 249, 222, 243, 47, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 217, 74, 2, 96, 250, 54, 222, 109, 165, 163, 71, 215, 210, 145, 35, 171, 41, 245, 90, 137, 233, 89, 89, 217, 78, 119, 239, 117, 243, 185, 239, 166, 127, 249, 59, 91, 9, 128, 169, 18, 64, 0, 166, 229, 95, 189, 223, 78, 143, 172, 188, 148, 122, 43, 39, 132, 142, 185, 177, 157, 183, 173, 116, 47, 93, 78, 71, 238, 116, 210, 107, 47, 116, 19, 0, 19, 37, 128, 0, 76, 210, 198, 187, 171, 233, 177, 71, 79, 231, 192, 113, 38, 255, 180, 154, 152, 119, 155, 41, 221, 57, 47, 136, 0, 76, 142, 0, 2, 48, 9, 130, 71, 211, 109, 10, 34, 0, 147, 33, 128, 0, 140, 91, 116, 181, 58, 118, 228, 146, 110, 86, 139, 96, 101, 35, 189, 246, 127, 158, 79, 0, 140, 141, 0, 2, 48, 78, 255, 230, 191, 157, 78, 189, 123, 23, 19, 139, 164, 147, 91, 67, 78, 105, 13, 1, 24, 15, 1, 4, 96, 92, 94, 255, 175, 209, 234, 177, 158, 88, 64, 43, 221, 148, 110, 31, 23, 66, 0, 14, 79, 0, 1, 24, 7, 225, 99, 9, 8, 33, 0, 227, 112, 36, 1, 112, 56, 255, 230, 39, 23, 132, 143, 101, 16, 99, 122, 30, 189, 150, 94, 127, 183, 149, 0, 56, 48, 1, 4, 224, 48, 94, 255, 175, 231, 82, 47, 157, 73, 44, 137, 28, 66, 122, 143, 92, 233, 207, 114, 6, 192, 129, 8, 32, 0, 7, 213, 191, 19, 222, 219, 72, 44, 151, 149, 180, 150, 30, 127, 228, 92, 2, 224, 64, 4, 16, 128, 3, 123, 244, 90, 98, 57, 69, 171, 215, 235, 239, 183, 19, 0, 35, 19, 64, 0, 14, 34, 186, 94, 89, 231, 99, 201, 173, 104, 5, 1, 56, 0, 1, 4, 96, 84, 131, 65, 200, 235, 137, 101, 215, 78, 255, 250, 39, 235, 9, 128, 145, 8, 32, 0, 35, 123, 164, 173, 245, 131, 190, 35, 233, 229, 4, 192, 72, 4, 16, 128, 145, 233, 122, 195, 125, 109, 99, 65, 0, 70, 35, 128, 0, 140, 226, 95, 69, 101, 83, 235, 7, 21, 247, 86, 78, 36, 0, 106, 19, 64, 0, 70, 113, 44, 169, 108, 242, 48, 221, 176, 0, 70, 34, 128, 0, 140, 100, 229, 197, 4, 15, 91, 77, 255, 250, 39, 107, 9, 128, 90, 4, 16, 128, 186, 6, 171, 95, 171, 104, 242, 101, 43, 169, 157, 0, 168, 69, 0, 1, 168, 235, 232, 49, 225, 131, 221, 245, 82, 43, 1, 80, 203, 177, 4, 64, 61, 71, 123, 171, 113, 171, 123, 30, 181, 159, 249, 245, 212, 122, 234, 145, 254, 243, 213, 199, 142, 166, 213, 199, 135, 223, 95, 234, 126, 114, 103, 199, 227, 237, 180, 125, 235, 110, 218, 254, 252, 94, 98, 68, 71, 4, 16, 128, 186, 4, 16, 128, 218, 142, 180, 210, 156, 90, 123, 250, 241, 116, 225, 119, 191, 158, 198, 37, 66, 73, 4, 146, 120, 188, 153, 31, 183, 126, 246, 249, 224, 119, 159, 222, 22, 80, 118, 247, 108, 2, 160, 22, 1, 4, 160, 174, 94, 110, 1, 89, 153, 207, 22, 144, 139, 127, 253, 243, 126, 235, 197, 165, 239, 127, 35, 141, 67, 180, 166, 148, 45, 42, 59, 245, 195, 72, 14, 34, 239, 229, 199, 206, 135, 191, 76, 91, 31, 253, 74, 40, 73, 43, 171, 9, 128, 90, 4, 16, 128, 5, 177, 249, 254, 118, 191, 43, 214, 203, 223, 158, 108, 93, 120, 237, 107, 143, 247, 183, 19, 223, 124, 50, 149, 43, 50, 70, 40, 217, 250, 232, 243, 116, 253, 195, 207, 114, 40, 249, 236, 126, 183, 46, 0, 216, 73, 0, 1, 88, 32, 17, 66, 38, 29, 64, 118, 83, 134, 146, 245, 226, 179, 203, 64, 114, 57, 239, 79, 4, 18, 0, 40, 9, 32, 0, 11, 36, 42, 251, 209, 21, 43, 6, 162, 207, 82, 53, 144, 108, 223, 186, 151, 174, 126, 240, 105, 191, 117, 36, 2, 18, 0, 203, 205, 52, 188, 0, 11, 102, 222, 198, 99, 172, 62, 118, 164, 31, 68, 98, 124, 202, 199, 103, 255, 143, 254, 99, 116, 21, 3, 96, 57, 105, 1, 1, 88, 48, 117, 166, 224, 157, 149, 50, 140, 196, 22, 227, 68, 54, 223, 255, 184, 223, 77, 203, 152, 17, 128, 229, 161, 5, 4, 96, 129, 196, 204, 85, 179, 238, 126, 85, 87, 236, 235, 198, 247, 158, 78, 55, 254, 191, 111, 105, 21, 1, 88, 34, 2, 8, 192, 2, 105, 106, 37, 62, 90, 68, 174, 253, 65, 43, 189, 123, 234, 159, 222, 31, 200, 14, 192, 98, 18, 64, 0, 22, 200, 185, 220, 162, 208, 100, 49, 112, 61, 90, 67, 162, 85, 68, 16, 1, 88, 76, 2, 8, 192, 130, 136, 10, 251, 94, 139, 7, 54, 77, 28, 71, 25, 68, 116, 205, 2, 88, 44, 2, 8, 192, 130, 104, 122, 235, 199, 110, 34, 136, 68, 215, 172, 8, 35, 139, 18, 174, 0, 150, 157, 0, 2, 176, 0, 34, 124, 44, 114, 5, 61, 90, 119, 162, 53, 228, 220, 247, 126, 43, 1, 208, 108, 2, 8, 64, 195, 157, 248, 230, 19, 105, 99, 73, 42, 230, 229, 172, 89, 90, 67, 0, 154, 75, 0, 1, 104, 176, 254, 88, 137, 255, 251, 159, 164, 101, 18, 199, 172, 53, 4, 160, 185, 4, 16, 128, 134, 26, 140, 143, 120, 174, 191, 184, 223, 50, 210, 26, 2, 208, 76, 2, 8, 64, 3, 197, 106, 231, 87, 126, 239, 153, 165, 175, 124, 199, 241, 91, 59, 4, 160, 89, 4, 16, 128, 6, 186, 244, 127, 253, 147, 254, 154, 25, 68, 24, 59, 218, 159, 37, 75, 151, 44, 128, 102, 16, 64, 0, 26, 38, 42, 219, 39, 190, 245, 68, 226, 97, 209, 37, 235, 194, 239, 126, 61, 1, 48, 223, 4, 16, 128, 6, 137, 240, 161, 187, 209, 222, 206, 124, 231, 171, 253, 46, 89, 209, 42, 2, 192, 124, 18, 64, 0, 26, 32, 198, 124, 8, 31, 245, 68, 215, 180, 107, 191, 223, 18, 66, 0, 230, 148, 0, 2, 48, 231, 34, 124, 92, 251, 253, 231, 132, 143, 17, 8, 33, 0, 243, 235, 88, 2, 96, 110, 149, 83, 237, 30, 100, 182, 171, 238, 39, 119, 210, 214, 207, 62, 79, 219, 183, 238, 166, 247, 138, 199, 248, 93, 247, 147, 219, 253, 191, 199, 207, 219, 159, 223, 219, 243, 245, 17, 124, 86, 31, 59, 154, 63, 251, 209, 251, 251, 18, 219, 243, 79, 255, 90, 191, 98, 31, 149, 252, 121, 158, 2, 184, 12, 33, 199, 255, 67, 55, 31, 231, 221, 4, 192, 124, 16, 64, 0, 230, 212, 218, 211, 143, 167, 43, 255, 79, 189, 169, 118, 35, 88, 116, 62, 252, 172, 31, 52, 226, 177, 251, 233, 237, 125, 195, 69, 29, 241, 250, 216, 226, 189, 247, 219, 199, 8, 40, 237, 103, 191, 210, 15, 38, 237, 103, 190, 146, 230, 73, 132, 144, 11, 255, 252, 235, 233, 212, 127, 250, 239, 9, 128, 249, 32, 128, 0, 204, 161, 211, 223, 249, 106, 186, 184, 207, 140, 78, 219, 183, 238, 165, 203, 239, 127, 220, 111, 225, 184, 250, 211, 79, 15, 29, 54, 14, 106, 235, 163, 207, 251, 91, 236, 67, 169, 253, 204, 175, 247, 103, 233, 122, 233, 155, 79, 206, 197, 58, 37, 209, 117, 45, 90, 125, 206, 255, 248, 31, 18, 0, 179, 39, 128, 0, 204, 145, 232, 246, 116, 238, 123, 79, 247, 103, 115, 218, 41, 90, 34, 46, 191, 191, 221, 111, 225, 136, 109, 94, 149, 251, 119, 230, 47, 254, 190, 31, 64, 78, 228, 32, 114, 250, 187, 95, 157, 105, 24, 137, 41, 122, 223, 235, 135, 181, 95, 36, 0, 102, 75, 0, 1, 152, 19, 81, 65, 143, 213, 205, 171, 11, 12, 150, 45, 29, 87, 63, 248, 197, 92, 135, 142, 189, 68, 104, 186, 248, 215, 63, 239, 111, 209, 50, 18, 173, 17, 47, 207, 104, 48, 125, 204, 34, 182, 117, 233, 111, 246, 237, 82, 6, 192, 228, 9, 32, 0, 115, 32, 42, 231, 49, 222, 163, 28, 212, 29, 97, 35, 90, 59, 102, 217, 189, 106, 220, 202, 150, 145, 141, 31, 127, 148, 206, 124, 247, 31, 167, 151, 190, 249, 196, 84, 91, 69, 202, 21, 211, 143, 255, 105, 55, 1, 48, 59, 166, 225, 5, 152, 177, 232, 114, 117, 237, 15, 90, 253, 240, 17, 21, 244, 168, 32, 199, 182, 153, 3, 200, 162, 132, 143, 170, 104, 129, 56, 243, 23, 127, 151, 143, 241, 70, 127, 92, 70, 204, 198, 53, 45, 17, 244, 206, 124, 231, 31, 37, 0, 102, 71, 0, 1, 152, 145, 254, 250, 30, 57, 120, 108, 124, 239, 183, 30, 10, 30, 77, 236, 106, 117, 16, 17, 68, 162, 53, 228, 133, 127, 247, 55, 253, 214, 158, 105, 137, 192, 103, 125, 16, 128, 217, 17, 64, 0, 102, 32, 186, 30, 189, 123, 234, 127, 239, 79, 97, 187, 108, 193, 99, 167, 8, 34, 235, 255, 233, 191, 167, 231, 254, 237, 7, 83, 25, 159, 17, 225, 227, 92, 14, 125, 0, 204, 134, 0, 2, 48, 101, 229, 250, 30, 113, 215, 63, 42, 221, 203, 26, 60, 118, 138, 240, 17, 231, 99, 26, 211, 229, 198, 44, 99, 243, 48, 69, 48, 192, 50, 18, 64, 0, 166, 40, 42, 189, 209, 5, 232, 228, 159, 125, 216, 239, 126, 196, 151, 197, 121, 137, 133, 3, 39, 61, 54, 36, 174, 3, 0, 211, 39, 128, 0, 76, 73, 132, 143, 24, 4, 125, 242, 207, 63, 52, 21, 236, 16, 49, 0, 63, 198, 134, 76, 242, 60, 197, 148, 192, 198, 130, 0, 76, 159, 0, 2, 48, 37, 113, 71, 127, 115, 138, 131, 173, 155, 46, 194, 71, 204, 148, 53, 201, 16, 98, 70, 44, 128, 233, 19, 64, 0, 166, 100, 17, 167, 212, 157, 180, 73, 135, 144, 211, 187, 172, 56, 15, 192, 100, 9, 32, 0, 75, 44, 166, 2, 142, 110, 97, 177, 205, 235, 160, 236, 73, 134, 144, 232, 130, 21, 199, 14, 192, 244, 88, 9, 29, 96, 9, 69, 240, 136, 65, 216, 103, 118, 180, 0, 68, 23, 177, 179, 127, 249, 247, 185, 181, 102, 122, 139, 3, 214, 81, 134, 144, 119, 255, 223, 127, 154, 86, 31, 27, 239, 184, 141, 19, 223, 122, 194, 76, 100, 0, 83, 164, 5, 4, 96, 9, 93, 249, 189, 103, 190, 20, 62, 66, 12, 204, 190, 246, 251, 173, 52, 143, 34, 132, 156, 250, 143, 255, 35, 141, 219, 139, 90, 64, 0, 166, 74, 0, 1, 88, 50, 17, 50, 246, 235, 118, 180, 246, 181, 199, 251, 171, 179, 207, 163, 171, 63, 253, 52, 189, 253, 215, 255, 51, 141, 83, 172, 203, 98, 54, 44, 128, 233, 17, 64, 0, 150, 204, 203, 223, 254, 205, 161, 101, 230, 185, 85, 96, 227, 63, 127, 52, 246, 53, 66, 34, 132, 0, 48, 29, 2, 8, 192, 146, 169, 115, 183, 191, 245, 212, 163, 105, 94, 69, 248, 120, 251, 175, 198, 221, 10, 242, 88, 2, 96, 58, 4, 16, 128, 37, 211, 253, 228, 246, 208, 50, 147, 94, 133, 252, 176, 46, 254, 213, 207, 199, 186, 143, 173, 213, 249, 13, 92, 0, 139, 70, 0, 1, 88, 50, 215, 111, 14, 159, 241, 233, 242, 127, 249, 56, 205, 179, 113, 183, 130, 60, 245, 152, 255, 59, 4, 152, 22, 255, 197, 5, 88, 50, 49, 213, 238, 214, 71, 159, 239, 249, 247, 152, 109, 106, 243, 39, 243, 191, 98, 123, 180, 130, 140, 203, 60, 119, 57, 3, 88, 52, 2, 8, 192, 146, 137, 214, 131, 171, 31, 252, 98, 215, 191, 197, 122, 24, 177, 222, 70, 19, 86, 109, 143, 227, 232, 124, 248, 203, 4, 64, 179, 88, 136, 16, 96, 201, 188, 252, 237, 213, 254, 52, 187, 199, 255, 180, 219, 255, 185, 253, 204, 87, 250, 129, 227, 92, 254, 221, 201, 63, 255, 219, 185, 91, 132, 112, 63, 239, 124, 240, 105, 127, 255, 1, 104, 14, 45, 32, 0, 75, 36, 194, 199, 230, 247, 191, 209, 127, 30, 221, 176, 162, 197, 99, 227, 199, 255, 208, 127, 140, 217, 177, 78, 124, 243, 137, 212, 36, 251, 117, 37, 3, 96, 62, 9, 32, 0, 75, 98, 103, 248, 168, 182, 116, 196, 226, 131, 101, 153, 38, 217, 250, 153, 0, 2, 208, 52, 2, 8, 192, 18, 168, 134, 143, 176, 179, 226, 94, 46, 60, 24, 43, 164, 55, 105, 85, 240, 24, 7, 50, 142, 233, 120, 235, 76, 77, 12, 192, 120, 8, 32, 0, 11, 238, 244, 119, 190, 250, 80, 248, 8, 215, 63, 124, 120, 42, 222, 181, 175, 253, 218, 253, 231, 103, 190, 243, 143, 82, 147, 140, 99, 192, 252, 205, 79, 238, 36, 0, 166, 67, 0, 1, 88, 96, 231, 190, 247, 116, 186, 248, 187, 95, 255, 210, 239, 171, 45, 32, 171, 143, 29, 125, 104, 37, 240, 8, 44, 203, 102, 235, 103, 183, 18, 0, 211, 33, 128, 0, 44, 168, 8, 31, 49, 219, 213, 78, 49, 246, 163, 58, 120, 187, 28, 255, 81, 138, 46, 88, 237, 162, 75, 214, 178, 208, 5, 11, 96, 122, 4, 16, 128, 5, 180, 87, 248, 8, 59, 103, 142, 218, 109, 26, 219, 211, 223, 109, 78, 55, 172, 214, 83, 143, 164, 195, 136, 133, 23, 205, 166, 5, 48, 61, 2, 8, 192, 130, 217, 47, 124, 132, 247, 62, 218, 57, 0, 253, 55, 190, 84, 166, 253, 219, 205, 24, 140, 30, 221, 199, 14, 171, 179, 99, 60, 12, 0, 147, 37, 128, 0, 44, 144, 75, 223, 255, 198, 190, 225, 35, 116, 110, 62, 188, 122, 248, 218, 215, 30, 251, 82, 153, 8, 31, 235, 191, 243, 84, 154, 119, 59, 187, 143, 29, 196, 117, 1, 4, 96, 170, 4, 16, 128, 5, 17, 225, 99, 189, 198, 58, 30, 157, 191, 125, 80, 225, 94, 123, 250, 241, 61, 91, 17, 94, 250, 214, 147, 105, 222, 141, 99, 21, 244, 171, 63, 253, 69, 2, 96, 122, 4, 16, 128, 5, 80, 55, 124, 196, 120, 135, 234, 2, 132, 173, 167, 30, 221, 179, 108, 12, 68, 159, 247, 193, 232, 187, 117, 31, 27, 197, 230, 251, 219, 15, 157, 15, 0, 38, 79, 0, 1, 104, 184, 186, 225, 35, 188, 247, 209, 175, 30, 250, 185, 253, 236, 254, 45, 8, 227, 104, 97, 152, 148, 24, 124, 126, 216, 253, 187, 156, 3, 8, 0, 211, 37, 128, 0, 52, 216, 40, 225, 35, 116, 110, 62, 60, 222, 97, 88, 11, 66, 172, 9, 50, 175, 131, 209, 15, 219, 58, 19, 173, 65, 6, 160, 3, 76, 159, 0, 2, 208, 80, 17, 60, 70, 9, 31, 97, 235, 163, 135, 23, 220, 171, 46, 64, 184, 155, 254, 154, 32, 191, 61, 159, 221, 176, 98, 182, 175, 195, 56, 255, 227, 143, 18, 0, 211, 39, 128, 0, 52, 212, 213, 15, 70, 31, 60, 93, 189, 227, 95, 183, 5, 97, 30, 215, 4, 137, 224, 117, 152, 245, 63, 162, 245, 99, 83, 247, 43, 128, 153, 16, 64, 0, 26, 106, 251, 214, 221, 28, 40, 126, 89, 187, 252, 206, 238, 70, 49, 3, 86, 29, 17, 84, 234, 150, 157, 150, 195, 182, 126, 156, 252, 179, 15, 19, 0, 179, 33, 128, 0, 52, 216, 206, 65, 229, 251, 151, 221, 177, 0, 225, 179, 245, 187, 86, 157, 248, 214, 19, 105, 94, 68, 248, 56, 76, 235, 71, 180, 124, 88, 249, 28, 96, 118, 4, 16, 128, 6, 219, 185, 168, 224, 40, 101, 71, 105, 213, 136, 193, 232, 243, 32, 130, 199, 176, 133, 22, 247, 19, 93, 175, 140, 253, 0, 152, 45, 1, 4, 160, 193, 182, 70, 104, 1, 233, 126, 114, 251, 254, 243, 168, 200, 143, 210, 138, 208, 31, 140, 62, 227, 53, 65, 86, 31, 63, 146, 174, 253, 193, 115, 233, 48, 34, 124, 68, 8, 1, 96, 118, 4, 16, 128, 6, 235, 47, 44, 120, 171, 222, 66, 122, 213, 110, 71, 107, 79, 255, 90, 26, 213, 203, 35, 206, 184, 53, 110, 135, 237, 122, 21, 225, 195, 192, 115, 128, 217, 19, 64, 0, 26, 110, 251, 243, 123, 181, 202, 157, 43, 186, 46, 69, 75, 194, 133, 223, 253, 122, 26, 69, 4, 157, 179, 127, 249, 119, 105, 86, 34, 124, 156, 57, 68, 55, 176, 173, 159, 125, 158, 54, 126, 252, 15, 9, 128, 217, 59, 150, 0, 104, 180, 8, 7, 117, 90, 6, 54, 162, 18, 255, 221, 127, 220, 127, 190, 250, 88, 253, 251, 79, 241, 254, 199, 255, 244, 70, 237, 160, 51, 110, 49, 254, 228, 176, 227, 62, 78, 254, 185, 89, 175, 0, 230, 133, 0, 2, 208, 112, 55, 251, 99, 59, 190, 82, 171, 236, 40, 193, 163, 20, 83, 214, 206, 106, 220, 68, 116, 251, 186, 56, 98, 107, 77, 85, 25, 158, 140, 251, 0, 152, 31, 186, 96, 1, 176, 167, 24, 55, 49, 171, 41, 107, 163, 219, 213, 230, 247, 191, 145, 14, 106, 251, 214, 189, 153, 134, 39, 0, 118, 39, 128, 0, 176, 171, 168, 184, 207, 106, 220, 68, 132, 143, 195, 116, 187, 138, 240, 113, 252, 223, 223, 176, 222, 7, 192, 28, 210, 5, 11, 128, 93, 157, 253, 139, 233, 15, 58, 143, 1, 242, 87, 126, 239, 153, 67, 77, 249, 43, 124, 0, 204, 55, 1, 4, 160, 225, 158, 122, 252, 104, 26, 183, 206, 135, 159, 165, 171, 63, 253, 69, 154, 166, 8, 29, 151, 190, 255, 141, 67, 77, 181, 107, 204, 7, 192, 252, 19, 64, 0, 26, 110, 245, 177, 241, 7, 144, 243, 83, 236, 122, 21, 173, 30, 135, 157, 102, 55, 196, 84, 187, 49, 219, 149, 240, 1, 48, 223, 4, 16, 128, 134, 91, 29, 115, 11, 72, 180, 126, 196, 54, 13, 227, 104, 245, 8, 151, 223, 223, 78, 103, 254, 242, 239, 102, 54, 85, 48, 0, 245, 9, 32, 0, 13, 183, 246, 244, 99, 105, 156, 46, 79, 97, 181, 240, 8, 28, 23, 254, 249, 255, 150, 78, 124, 235, 137, 116, 24, 49, 222, 227, 252, 127, 254, 40, 93, 252, 235, 159, 39, 0, 154, 65, 0, 1, 104, 176, 232, 126, 117, 245, 131, 95, 164, 214, 234, 35, 57, 136, 60, 158, 14, 107, 251, 243, 187, 105, 115, 130, 1, 36, 186, 91, 197, 194, 130, 177, 32, 226, 65, 214, 36, 169, 234, 47, 48, 248, 103, 31, 26, 108, 14, 208, 48, 2, 8, 64, 131, 109, 223, 186, 123, 127, 149, 239, 168, 220, 175, 61, 253, 107, 253, 32, 242, 226, 51, 191, 126, 160, 80, 50, 169, 129, 231, 227, 12, 30, 225, 237, 220, 226, 177, 241, 227, 143, 116, 185, 2, 104, 32, 1, 4, 96, 65, 68, 101, 188, 28, 191, 81, 118, 73, 218, 25, 74, 214, 190, 246, 248, 190, 227, 45, 222, 249, 96, 188, 1, 36, 198, 120, 68, 240, 56, 108, 87, 171, 82, 12, 52, 63, 251, 151, 127, 63, 181, 49, 42, 0, 140, 159, 0, 2, 176, 192, 246, 11, 37, 237, 103, 190, 146, 158, 143, 112, 82, 9, 37, 157, 191, 61, 124, 197, 190, 108, 237, 136, 240, 113, 152, 245, 60, 170, 140, 245, 0, 88, 28, 2, 8, 64, 67, 197, 248, 143, 27, 255, 255, 183, 114, 171, 192, 175, 210, 245, 126, 200, 248, 101, 218, 250, 232, 87, 67, 187, 37, 85, 67, 73, 41, 2, 72, 235, 169, 71, 251, 99, 64, 14, 180, 47, 57, 116, 172, 255, 206, 111, 166, 151, 114, 75, 199, 184, 66, 71, 73, 119, 43, 128, 197, 34, 128, 0, 52, 84, 84, 244, 99, 60, 69, 217, 210, 112, 174, 248, 125, 116, 83, 234, 126, 122, 59, 93, 191, 249, 203, 254, 0, 237, 58, 221, 149, 98, 64, 247, 40, 235, 103, 148, 173, 40, 253, 192, 241, 219, 131, 174, 93, 227, 22, 131, 225, 207, 231, 224, 97, 93, 15, 128, 197, 34, 128, 0, 52, 212, 94, 99, 57, 34, 12, 196, 118, 226, 155, 79, 222, 255, 93, 132, 144, 8, 35, 239, 229, 112, 18, 1, 101, 148, 153, 163, 34, 108, 180, 158, 124, 180, 255, 158, 207, 231, 109, 82, 129, 163, 20, 193, 35, 166, 2, 54, 206, 3, 96, 49, 9, 32, 0, 13, 21, 51, 96, 213, 181, 115, 60, 70, 140, 169, 136, 174, 91, 17, 68, 174, 223, 252, 172, 255, 115, 180, 166, 196, 162, 134, 17, 108, 158, 125, 234, 209, 251, 173, 28, 135, 93, 36, 176, 142, 248, 252, 183, 255, 234, 231, 57, 124, 124, 172, 197, 3, 96, 193, 9, 32, 0, 13, 117, 152, 138, 122, 181, 235, 214, 153, 239, 124, 53, 205, 74, 180, 114, 196, 204, 91, 155, 63, 249, 216, 24, 15, 128, 37, 33, 128, 0, 52, 84, 84, 222, 163, 21, 36, 6, 163, 55, 73, 180, 118, 92, 206, 45, 29, 177, 128, 162, 110, 86, 0, 203, 71, 0, 1, 104, 176, 183, 255, 234, 127, 166, 115, 223, 251, 173, 52, 239, 34, 116, 92, 253, 224, 211, 254, 216, 142, 58, 51, 117, 1, 176, 184, 4, 16, 128, 6, 139, 233, 105, 99, 38, 170, 81, 87, 60, 159, 134, 106, 75, 135, 208, 1, 64, 73, 0, 1, 104, 184, 147, 127, 246, 97, 186, 246, 7, 207, 77, 101, 176, 248, 126, 34, 112, 116, 110, 126, 214, 95, 147, 228, 234, 79, 63, 53, 152, 28, 128, 93, 9, 32, 0, 13, 23, 21, 253, 227, 127, 122, 99, 234, 33, 36, 102, 208, 138, 41, 125, 175, 23, 139, 26, 10, 28, 0, 212, 33, 128, 0, 212, 181, 178, 178, 157, 230, 84, 84, 254, 95, 248, 119, 127, 147, 206, 124, 247, 171, 99, 29, 19, 18, 173, 26, 221, 79, 110, 247, 131, 198, 205, 252, 24, 159, 51, 234, 58, 34, 203, 161, 55, 183, 223, 13, 128, 121, 35, 128, 0, 212, 181, 146, 230, 186, 146, 25, 51, 98, 197, 152, 144, 88, 75, 35, 166, 215, 125, 233, 155, 79, 166, 214, 234, 35, 95, 154, 37, 43, 202, 149, 227, 49, 34, 92, 132, 79, 250, 191, 187, 219, 15, 24, 241, 183, 254, 152, 141, 74, 57, 134, 18, 64, 0, 106, 18, 64, 0, 234, 186, 119, 103, 43, 29, 153, 237, 56, 139, 58, 34, 68, 196, 106, 226, 177, 49, 53, 221, 4, 64, 45, 71, 18, 0, 245, 220, 81, 201, 100, 15, 189, 244, 94, 2, 160, 22, 1, 4, 160, 174, 141, 23, 114, 147, 194, 74, 55, 193, 78, 43, 189, 173, 4, 64, 45, 2, 8, 192, 40, 122, 119, 175, 39, 216, 233, 181, 111, 119, 18, 0, 181, 8, 32, 0, 163, 88, 89, 217, 76, 240, 176, 119, 18, 0, 181, 9, 32, 0, 163, 184, 245, 69, 116, 181, 49, 186, 155, 7, 238, 165, 171, 9, 128, 218, 4, 16, 128, 81, 196, 56, 144, 123, 189, 183, 19, 12, 116, 211, 191, 252, 157, 205, 4, 64, 109, 2, 8, 192, 168, 238, 124, 113, 49, 65, 232, 37, 97, 20, 96, 68, 2, 8, 192, 168, 250, 179, 97, 105, 5, 33, 183, 126, 220, 190, 179, 153, 0, 24, 137, 0, 2, 112, 16, 183, 190, 216, 72, 198, 130, 44, 183, 123, 233, 252, 32, 140, 2, 48, 10, 1, 4, 224, 32, 162, 226, 217, 187, 119, 42, 177, 172, 54, 141, 253, 0, 56, 24, 1, 4, 224, 160, 254, 197, 63, 187, 170, 43, 214, 82, 234, 166, 116, 231, 124, 2, 224, 64, 4, 16, 128, 195, 24, 116, 197, 178, 10, 246, 242, 216, 78, 71, 239, 156, 76, 175, 189, 208, 77, 0, 28, 136, 0, 2, 112, 24, 253, 49, 0, 185, 66, 218, 191, 43, 206, 226, 187, 119, 54, 253, 240, 5, 129, 19, 224, 16, 4, 16, 128, 195, 234, 223, 13, 191, 115, 60, 9, 33, 139, 44, 7, 205, 123, 167, 210, 107, 255, 108, 51, 1, 112, 40, 2, 8, 192, 56, 68, 8, 185, 117, 231, 133, 92, 73, 189, 156, 88, 52, 221, 116, 52, 7, 76, 225, 3, 96, 44, 86, 18, 0, 227, 245, 250, 251, 27, 249, 63, 175, 231, 18, 139, 160, 147, 131, 229, 73, 211, 237, 2, 140, 143, 0, 2, 48, 9, 175, 191, 219, 74, 233, 232, 70, 110, 104, 126, 57, 209, 68, 221, 212, 187, 119, 118, 48, 211, 25, 0, 227, 36, 128, 0, 76, 210, 235, 239, 183, 139, 214, 144, 118, 162, 9, 6, 171, 220, 223, 250, 226, 162, 86, 15, 128, 201, 16, 64, 0, 166, 161, 223, 34, 114, 236, 76, 254, 207, 238, 139, 249, 167, 181, 196, 60, 137, 160, 17, 107, 186, 92, 78, 175, 125, 187, 147, 0, 152, 40, 1, 4, 96, 218, 34, 140, 244, 142, 174, 165, 222, 202, 90, 58, 178, 242, 108, 254, 77, 43, 49, 77, 221, 28, 54, 62, 201, 255, 23, 184, 149, 142, 222, 217, 50, 173, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 251, 90, 73, 0, 0, 123, 232, 245, 122, 39, 242, 195, 133, 33, 197, 78, 174, 172, 172, 108, 37, 128, 26, 142, 37, 0, 128, 189, 173, 230, 173, 85, 163, 12, 64, 45, 71, 18, 0, 0, 192, 148, 8, 32, 0, 0, 192, 212, 232, 130, 5, 75, 164, 215, 235, 69, 55, 137, 125, 187, 74, 172, 172, 172, 116, 19, 51, 151, 175, 85, 171, 120, 186, 243, 49, 108, 23, 91, 249, 188, 155, 175, 219, 118, 2, 128, 6, 16, 64, 96, 1, 84, 130, 197, 90, 26, 84, 84, 159, 77, 15, 250, 109, 183, 138, 231, 181, 250, 104, 231, 247, 42, 159, 118, 139, 45, 42, 182, 239, 229, 45, 6, 152, 118, 13, 52, 29, 175, 34, 104, 180, 243, 246, 124, 26, 92, 171, 242, 26, 142, 250, 62, 241, 16, 215, 102, 187, 120, 188, 89, 60, 110, 9, 39, 0, 204, 19, 1, 4, 26, 168, 168, 180, 198, 204, 52, 47, 166, 3, 86, 88, 107, 104, 165, 7, 239, 123, 162, 242, 217, 221, 52, 168, 216, 190, 147, 183, 142, 22, 147, 209, 229, 115, 216, 206, 15, 47, 165, 193, 121, 109, 165, 241, 89, 43, 30, 219, 59, 62, 47, 174, 215, 219, 249, 90, 109, 38, 0, 152, 49, 1, 4, 154, 169, 157, 134, 79, 139, 57, 41, 173, 98, 235, 135, 146, 92, 185, 237, 228, 135, 203, 42, 183, 251, 43, 66, 227, 203, 121, 59, 147, 166, 63, 99, 208, 164, 66, 42, 0, 140, 204, 32, 116, 224, 176, 218, 121, 187, 148, 43, 216, 55, 242, 182, 158, 120, 72, 180, 118, 228, 237, 90, 126, 122, 35, 111, 27, 201, 116, 165, 0, 44, 57, 1, 4, 24, 151, 86, 18, 68, 238, 139, 113, 57, 121, 139, 86, 170, 8, 31, 237, 4, 0, 244, 9, 32, 192, 184, 181, 210, 32, 136, 92, 171, 204, 228, 180, 84, 138, 49, 30, 209, 226, 113, 38, 1, 0, 15, 49, 6, 4, 150, 79, 119, 199, 99, 85, 43, 141, 48, 99, 214, 16, 237, 188, 69, 8, 57, 181, 178, 178, 210, 73, 75, 34, 31, 239, 185, 52, 232, 106, 53, 78, 221, 29, 207, 171, 215, 104, 92, 215, 11, 0, 166, 66, 0, 129, 197, 213, 73, 131, 153, 170, 202, 105, 89, 183, 71, 153, 177, 42, 87, 164, 203, 129, 203, 241, 88, 206, 182, 53, 106, 69, 183, 149, 6, 33, 228, 108, 254, 236, 139, 105, 193, 229, 227, 188, 148, 31, 214, 211, 193, 197, 117, 186, 94, 60, 142, 116, 205, 138, 214, 166, 234, 22, 211, 250, 26, 124, 14, 0, 192, 225, 197, 24, 139, 222, 112, 235, 105, 204, 242, 123, 158, 200, 219, 102, 239, 96, 22, 186, 59, 82, 132, 143, 222, 193, 92, 139, 115, 211, 27, 172, 229, 50, 137, 253, 90, 45, 174, 91, 59, 193, 1, 244, 234, 253, 247, 166, 157, 0, 128, 197, 213, 155, 81, 0, 169, 124, 126, 43, 111, 23, 123, 163, 107, 167, 5, 148, 143, 235, 66, 111, 116, 151, 122, 75, 58, 70, 134, 102, 233, 9, 32, 192, 152, 25, 132, 14, 140, 44, 186, 5, 229, 45, 90, 52, 158, 203, 219, 229, 17, 94, 122, 101, 209, 42, 221, 249, 120, 78, 167, 209, 6, 155, 119, 242, 246, 92, 62, 127, 167, 44, 226, 8, 192, 50, 18, 64, 128, 3, 43, 130, 200, 122, 126, 122, 190, 230, 75, 162, 155, 209, 165, 180, 32, 138, 48, 53, 202, 216, 150, 24, 11, 115, 92, 240, 0, 96, 153, 9, 32, 192, 161, 229, 10, 245, 70, 126, 56, 85, 179, 120, 44, 204, 183, 158, 22, 195, 181, 154, 229, 98, 34, 128, 23, 150, 97, 32, 62, 0, 12, 35, 128, 0, 99, 145, 43, 215, 155, 169, 126, 8, 57, 215, 155, 208, 160, 235, 105, 41, 66, 84, 171, 70, 209, 8, 31, 209, 234, 177, 149, 0, 0, 211, 240, 2, 227, 19, 33, 164, 55, 152, 190, 247, 244, 144, 162, 173, 52, 152, 174, 118, 166, 45, 2, 69, 8, 170, 174, 163, 49, 202, 84, 197, 231, 106, 150, 59, 43, 124, 60, 80, 57, 231, 161, 149, 6, 235, 154, 196, 121, 223, 78, 7, 84, 121, 207, 86, 218, 123, 93, 148, 110, 249, 216, 164, 46, 112, 197, 177, 181, 210, 131, 99, 43, 117, 139, 199, 173, 195, 156, 187, 89, 232, 61, 60, 101, 116, 105, 187, 216, 26, 117, 125, 128, 131, 17, 64, 128, 113, 219, 200, 219, 75, 105, 120, 235, 192, 203, 233, 0, 1, 36, 87, 94, 246, 235, 246, 116, 114, 191, 202, 88, 49, 83, 79, 172, 105, 18, 143, 187, 174, 107, 146, 203, 196, 67, 39, 198, 106, 236, 243, 62, 235, 169, 94, 235, 199, 102, 209, 50, 212, 104, 197, 241, 190, 188, 199, 159, 47, 239, 119, 140, 69, 5, 250, 68, 122, 112, 222, 91, 123, 148, 171, 213, 82, 84, 4, 220, 216, 170, 235, 156, 180, 210, 8, 202, 107, 156, 6, 149, 248, 88, 43, 167, 51, 238, 74, 124, 177, 159, 23, 246, 248, 115, 4, 174, 147, 251, 188, 182, 157, 6, 255, 134, 226, 113, 45, 13, 255, 172, 110, 26, 172, 27, 19, 199, 114, 117, 222, 2, 73, 17, 56, 226, 59, 16, 199, 52, 116, 61, 161, 226, 187, 208, 73, 115, 122, 60, 0, 176, 148, 122, 51, 158, 134, 183, 198, 254, 157, 232, 213, 211, 78, 35, 26, 242, 126, 207, 238, 82, 62, 214, 193, 136, 117, 54, 222, 237, 213, 119, 99, 200, 62, 92, 171, 243, 30, 189, 5, 153, 241, 43, 31, 199, 198, 62, 199, 121, 105, 143, 215, 196, 88, 159, 152, 245, 236, 227, 94, 125, 237, 49, 190, 215, 168, 46, 245, 198, 56, 149, 108, 177, 207, 123, 218, 227, 53, 241, 239, 122, 148, 239, 233, 126, 199, 210, 74, 99, 210, 59, 224, 52, 188, 197, 235, 174, 245, 14, 231, 70, 222, 234, 182, 54, 2, 13, 97, 12, 8, 48, 118, 249, 142, 229, 213, 244, 160, 139, 200, 126, 78, 164, 241, 122, 161, 250, 67, 174, 184, 196, 251, 191, 155, 6, 119, 162, 135, 222, 73, 174, 163, 168, 216, 181, 107, 20, 189, 188, 36, 93, 73, 90, 213, 31, 122, 131, 192, 119, 37, 13, 6, 232, 199, 249, 31, 199, 88, 159, 245, 49, 190, 215, 126, 159, 113, 173, 55, 165, 245, 89, 122, 149, 176, 220, 27, 132, 149, 8, 189, 17, 230, 198, 241, 61, 93, 207, 91, 84, 220, 99, 125, 154, 73, 158, 179, 93, 21, 193, 163, 60, 158, 118, 58, 156, 86, 222, 54, 122, 11, 20, 232, 1, 1, 4, 152, 156, 58, 235, 131, 188, 148, 198, 171, 21, 255, 83, 84, 130, 35, 116, 92, 73, 35, 118, 207, 169, 161, 110, 104, 218, 76, 203, 161, 85, 62, 41, 238, 130, 71, 197, 115, 220, 193, 114, 154, 214, 211, 32, 136, 140, 37, 176, 238, 35, 214, 208, 73, 197, 221, 253, 8, 107, 173, 52, 126, 103, 242, 246, 238, 180, 42, 238, 189, 193, 2, 165, 113, 44, 17, 60, 90, 105, 188, 90, 105, 16, 170, 94, 78, 64, 227, 9, 32, 192, 164, 212, 25, 223, 209, 234, 237, 210, 109, 234, 16, 90, 197, 29, 223, 168, 4, 141, 178, 56, 224, 40, 234, 132, 166, 205, 37, 26, 72, 219, 138, 255, 41, 42, 134, 113, 222, 167, 126, 199, 125, 2, 90, 105, 16, 66, 90, 105, 114, 226, 187, 26, 21, 245, 141, 52, 89, 173, 52, 157, 64, 213, 78, 131, 235, 223, 78, 147, 181, 217, 179, 234, 58, 52, 158, 0, 2, 76, 68, 49, 112, 180, 83, 163, 232, 241, 52, 62, 49, 48, 57, 90, 61, 38, 89, 217, 170, 243, 222, 239, 164, 37, 82, 180, 54, 109, 166, 197, 210, 15, 178, 19, 236, 194, 20, 225, 99, 61, 77, 71, 43, 111, 87, 38, 28, 168, 206, 165, 201, 180, 226, 236, 230, 74, 175, 225, 211, 120, 195, 178, 51, 11, 22, 48, 73, 239, 165, 225, 119, 68, 199, 25, 22, 218, 105, 130, 138, 187, 200, 117, 42, 62, 157, 180, 92, 38, 213, 218, 180, 151, 50, 220, 222, 76, 131, 177, 70, 229, 214, 159, 202, 181, 58, 107, 82, 81, 233, 46, 167, 230, 141, 235, 87, 206, 46, 85, 71, 43, 13, 142, 109, 35, 77, 95, 127, 74, 218, 52, 152, 221, 170, 170, 156, 150, 119, 212, 127, 55, 173, 52, 8, 231, 47, 164, 217, 43, 167, 220, 45, 175, 203, 168, 226, 53, 17, 122, 235, 174, 59, 4, 204, 25, 1, 4, 152, 164, 173, 26, 101, 90, 105, 250, 186, 233, 65, 5, 118, 167, 253, 186, 132, 181, 210, 112, 141, 91, 151, 97, 74, 170, 161, 97, 231, 249, 137, 10, 229, 179, 187, 252, 190, 250, 218, 205, 188, 93, 79, 131, 41, 115, 187, 169, 166, 29, 101, 59, 121, 187, 88, 132, 146, 245, 84, 111, 45, 151, 211, 185, 252, 197, 41, 93, 211, 248, 140, 24, 59, 117, 53, 13, 249, 30, 21, 45, 0, 237, 52, 152, 30, 249, 68, 170, 103, 45, 191, 110, 35, 191, 239, 70, 154, 158, 56, 134, 56, 158, 61, 175, 93, 239, 193, 212, 202, 113, 44, 237, 84, 79, 12, 116, 63, 111, 205, 16, 0, 152, 146, 222, 156, 79, 195, 91, 217, 207, 181, 26, 251, 249, 238, 136, 239, 121, 16, 49, 125, 235, 181, 226, 188, 29, 184, 235, 70, 111, 255, 233, 104, 75, 87, 211, 130, 169, 121, 220, 187, 121, 183, 120, 237, 164, 199, 31, 28, 72, 111, 240, 253, 172, 51, 181, 239, 200, 45, 60, 189, 33, 211, 240, 238, 34, 130, 209, 129, 190, 155, 189, 193, 224, 239, 27, 53, 63, 231, 227, 81, 63, 167, 87, 239, 191, 55, 59, 93, 235, 29, 108, 154, 237, 254, 140, 96, 53, 63, 99, 35, 1, 141, 100, 12, 8, 48, 73, 221, 26, 101, 38, 217, 151, 59, 238, 190, 158, 207, 219, 115, 177, 176, 96, 44, 152, 119, 200, 59, 217, 173, 26, 101, 186, 137, 78, 26, 44, 42, 248, 66, 220, 109, 159, 215, 149, 224, 139, 253, 170, 211, 141, 103, 220, 179, 181, 85, 149, 11, 48, 158, 57, 232, 119, 179, 104, 5, 136, 174, 85, 117, 206, 115, 252, 123, 155, 100, 151, 185, 56, 134, 147, 197, 191, 183, 78, 26, 81, 241, 154, 24, 23, 214, 173, 81, 220, 140, 88, 208, 80, 2, 8, 48, 49, 69, 133, 106, 88, 165, 170, 149, 38, 35, 42, 99, 101, 5, 120, 92, 221, 103, 234, 204, 216, 213, 77, 203, 43, 206, 243, 217, 131, 86, 62, 103, 161, 88, 179, 166, 51, 164, 216, 164, 90, 112, 186, 105, 240, 29, 237, 164, 67, 42, 190, 227, 81, 113, 175, 19, 66, 78, 247, 38, 51, 136, 187, 147, 6, 97, 255, 80, 173, 128, 69, 160, 170, 19, 12, 199, 61, 139, 30, 48, 37, 2, 8, 48, 105, 67, 43, 255, 19, 168, 12, 93, 46, 238, 190, 119, 211, 244, 45, 235, 248, 143, 110, 26, 220, 201, 191, 152, 154, 103, 216, 172, 101, 171, 19, 170, 232, 158, 26, 231, 119, 180, 8, 33, 39, 107, 20, 141, 127, 111, 117, 199, 141, 212, 117, 185, 8, 158, 99, 249, 254, 23, 161, 172, 83, 163, 232, 60, 12, 170, 7, 70, 36, 128, 0, 243, 224, 169, 52, 62, 215, 115, 229, 101, 61, 205, 206, 178, 6, 144, 227, 243, 218, 213, 170, 134, 58, 119, 236, 27, 81, 209, 45, 2, 205, 249, 26, 69, 95, 76, 227, 181, 153, 198, 175, 206, 98, 166, 173, 4, 52, 142, 0, 2, 44, 154, 27, 105, 114, 90, 53, 202, 44, 101, 0, 89, 105, 240, 108, 68, 53, 247, 125, 146, 99, 149, 198, 173, 78, 160, 106, 167, 249, 215, 169, 81, 230, 249, 4, 52, 142, 105, 120, 1, 234, 171, 19, 46, 102, 90, 81, 141, 217, 135, 134, 20, 57, 219, 224, 150, 138, 73, 42, 215, 165, 216, 75, 43, 53, 68, 92, 223, 252, 61, 232, 164, 253, 67, 70, 140, 159, 88, 93, 153, 227, 41, 163, 35, 24, 230, 125, 28, 118, 93, 128, 6, 18, 64, 128, 121, 240, 73, 106, 134, 185, 15, 32, 105, 248, 157, 109, 149, 185, 221, 45, 90, 69, 183, 206, 34, 160, 241, 247, 67, 13, 24, 159, 130, 97, 215, 229, 55, 19, 208, 56, 186, 96, 1, 147, 214, 26, 86, 96, 158, 239, 194, 66, 67, 213, 157, 146, 183, 233, 198, 57, 126, 12, 152, 18, 45, 32, 192, 196, 212, 156, 221, 170, 73, 225, 227, 102, 141, 50, 173, 196, 92, 235, 13, 86, 66, 143, 239, 230, 206, 199, 69, 82, 39, 128, 180, 18, 192, 12, 8, 32, 192, 36, 181, 106, 148, 233, 166, 230, 168, 19, 150, 172, 75, 48, 35, 69, 224, 109, 85, 182, 248, 249, 217, 226, 113, 173, 120, 92, 150, 46, 104, 90, 21, 129, 185, 37, 128, 0, 147, 212, 170, 81, 166, 73, 21, 165, 110, 141, 50, 237, 196, 84, 20, 45, 25, 177, 158, 69, 204, 132, 212, 78, 238, 232, 223, 87, 12, 224, 30, 86, 204, 120, 32, 96, 38, 4, 16, 96, 146, 218, 53, 202, 188, 151, 154, 163, 86, 183, 150, 121, 159, 93, 168, 201, 138, 86, 142, 211, 105, 240, 221, 106, 39, 14, 195, 248, 9, 96, 38, 4, 16, 96, 146, 234, 204, 209, 223, 73, 205, 81, 119, 250, 218, 232, 238, 211, 73, 140, 77, 37, 120, 156, 73, 238, 220, 143, 75, 157, 49, 77, 0, 99, 39, 128, 0, 19, 81, 116, 143, 105, 215, 40, 218, 77, 13, 17, 173, 26, 249, 184, 186, 105, 120, 87, 159, 232, 22, 212, 73, 140, 69, 241, 93, 138, 245, 77, 90, 105, 60, 182, 139, 173, 91, 108, 49, 13, 244, 233, 180, 64, 106, 78, 0, 1, 48, 19, 2, 8, 48, 41, 237, 26, 101, 186, 13, 92, 20, 239, 157, 52, 188, 178, 250, 114, 174, 0, 110, 232, 134, 117, 120, 249, 60, 70, 107, 82, 132, 143, 81, 42, 212, 221, 52, 104, 173, 186, 89, 60, 175, 134, 141, 237, 221, 174, 75, 254, 156, 133, 10, 32, 169, 222, 249, 242, 253, 4, 102, 66, 0, 1, 38, 229, 92, 141, 50, 157, 212, 60, 87, 211, 240, 0, 18, 149, 191, 232, 42, 180, 145, 56, 176, 162, 229, 227, 74, 170, 87, 153, 238, 164, 65, 56, 220, 20, 252, 250, 90, 53, 202, 52, 45, 252, 3, 11, 194, 66, 132, 192, 216, 229, 138, 227, 122, 170, 87, 1, 186, 156, 26, 38, 87, 110, 59, 169, 222, 157, 227, 211, 186, 193, 28, 90, 132, 216, 214, 144, 50, 221, 188, 29, 207, 215, 37, 182, 139, 194, 199, 125, 107, 53, 202, 56, 87, 192, 76, 8, 32, 192, 36, 212, 105, 253, 232, 22, 149, 249, 38, 122, 187, 70, 153, 8, 31, 117, 206, 3, 187, 40, 90, 63, 214, 135, 20, 235, 166, 65, 248, 232, 36, 118, 122, 113, 200, 223, 183, 27, 216, 253, 17, 88, 16, 2, 8, 48, 86, 185, 226, 88, 231, 174, 117, 56, 159, 154, 235, 98, 205, 114, 103, 242, 249, 104, 39, 14, 226, 68, 141, 50, 103, 99, 189, 139, 196, 110, 218, 67, 254, 46, 124, 0, 51, 35, 128, 0, 99, 83, 12, 228, 221, 168, 81, 52, 90, 63, 54, 83, 67, 21, 221, 124, 234, 180, 130, 132, 75, 197, 221, 124, 70, 243, 82, 218, 95, 124, 135, 174, 38, 190, 164, 232, 2, 57, 172, 251, 223, 59, 9, 96, 70, 4, 16, 96, 44, 114, 165, 231, 229, 84, 191, 101, 160, 201, 173, 31, 165, 141, 84, 175, 15, 125, 43, 111, 215, 132, 144, 145, 13, 171, 64, 119, 19, 123, 169, 211, 245, 79, 120, 3, 102, 70, 0, 1, 14, 173, 232, 118, 181, 89, 179, 120, 167, 201, 173, 31, 165, 162, 21, 164, 110, 144, 106, 165, 65, 8, 169, 211, 173, 136, 1, 1, 228, 0, 106, 118, 129, 236, 232, 186, 6, 204, 146, 0, 2, 28, 88, 220, 213, 207, 91, 172, 209, 176, 81, 243, 37, 221, 188, 157, 74, 11, 34, 102, 93, 74, 245, 167, 18, 110, 229, 237, 74, 62, 95, 186, 100, 141, 71, 157, 89, 158, 150, 74, 177, 102, 202, 70, 141, 162, 141, 155, 125, 14, 88, 44, 2, 8, 48, 178, 34, 120, 196, 157, 214, 27, 169, 222, 130, 131, 165, 83, 11, 120, 231, 245, 100, 26, 237, 110, 252, 122, 26, 180, 134, 156, 19, 68, 246, 53, 172, 123, 91, 107, 92, 211, 28, 47, 66, 203, 84, 49, 217, 193, 181, 26, 69, 27, 61, 254, 10, 88, 12, 2, 8, 80, 75, 84, 246, 98, 112, 107, 209, 226, 17, 193, 99, 35, 141, 230, 212, 34, 78, 151, 90, 116, 197, 58, 158, 70, 11, 33, 173, 52, 56, 127, 55, 138, 22, 145, 19, 214, 12, 249, 146, 247, 134, 252, 189, 92, 236, 241, 80, 138, 32, 125, 37, 53, 84, 241, 239, 242, 66, 170, 191, 90, 252, 241, 4, 48, 99, 86, 66, 135, 197, 245, 98, 174, 152, 116, 139, 231, 221, 186, 45, 15, 69, 69, 56, 182, 232, 206, 209, 202, 219, 243, 197, 243, 131, 118, 121, 137, 10, 250, 217, 69, 190, 235, 26, 231, 54, 159, 183, 168, 216, 69, 37, 176, 149, 70, 179, 94, 108, 113, 238, 59, 105, 48, 61, 234, 245, 52, 56, 111, 7, 185, 110, 139, 162, 147, 183, 151, 135, 148, 137, 86, 164, 27, 249, 28, 141, 220, 165, 168, 104, 49, 136, 240, 209, 78, 13, 84, 180, 158, 197, 249, 137, 16, 86, 247, 186, 159, 55, 246, 3, 152, 7, 2, 8, 44, 174, 245, 84, 89, 200, 45, 87, 88, 202, 167, 219, 105, 239, 238, 45, 173, 52, 94, 221, 188, 157, 92, 134, 5, 207, 42, 33, 36, 238, 166, 31, 52, 172, 181, 139, 237, 254, 157, 253, 226, 186, 237, 119, 205, 22, 45, 120, 148, 98, 150, 166, 184, 179, 63, 236, 216, 54, 139, 48, 49, 180, 114, 93, 132, 180, 245, 52, 152, 226, 183, 157, 102, 239, 90, 37, 116, 222, 76, 131, 127, 47, 229, 117, 238, 86, 202, 181, 210, 224, 60, 196, 99, 220, 16, 104, 167, 209, 255, 173, 94, 206, 231, 103, 35, 1, 204, 1, 1, 4, 150, 207, 180, 42, 172, 177, 78, 198, 70, 209, 69, 105, 41, 20, 21, 224, 23, 114, 165, 114, 35, 141, 119, 21, 244, 69, 13, 25, 123, 138, 239, 77, 62, 143, 241, 29, 170, 115, 30, 215, 99, 171, 84, 230, 63, 73, 131, 10, 124, 121, 222, 158, 77, 135, 107, 197, 155, 164, 118, 154, 124, 24, 138, 240, 177, 158, 0, 230, 132, 0, 2, 140, 91, 39, 13, 238, 70, 119, 210, 146, 138, 59, 205, 185, 50, 188, 153, 159, 94, 74, 13, 237, 226, 51, 15, 138, 243, 24, 173, 21, 117, 131, 67, 59, 29, 236, 124, 119, 211, 96, 102, 168, 113, 134, 198, 121, 241, 118, 62, 143, 135, 30, 43, 3, 48, 78, 6, 161, 3, 227, 210, 201, 219, 241, 92, 217, 57, 190, 204, 225, 163, 20, 173, 33, 113, 46, 210, 96, 218, 225, 78, 226, 160, 70, 157, 101, 108, 84, 157, 52, 24, 152, 189, 153, 22, 75, 180, 60, 158, 18, 62, 128, 121, 36, 128, 0, 135, 81, 46, 198, 39, 120, 236, 33, 6, 223, 23, 65, 228, 133, 52, 184, 203, 222, 77, 212, 86, 116, 107, 139, 243, 55, 238, 181, 43, 202, 201, 17, 142, 23, 97, 177, 155, 22, 67, 249, 111, 242, 57, 211, 237, 2, 243, 74, 23, 44, 96, 20, 81, 185, 137, 62, 246, 239, 196, 163, 192, 81, 95, 49, 16, 127, 61, 158, 23, 131, 166, 79, 228, 237, 197, 100, 65, 189, 161, 138, 112, 80, 142, 241, 168, 179, 210, 247, 126, 226, 59, 28, 99, 75, 46, 238, 50, 62, 169, 155, 198, 63, 17, 195, 180, 116, 211, 32, 164, 93, 92, 166, 113, 87, 64, 51, 9, 32, 208, 76, 157, 52, 184, 43, 220, 74, 15, 102, 200, 121, 54, 61, 24, 116, 91, 206, 152, 115, 16, 229, 140, 75, 221, 98, 43, 103, 231, 233, 204, 201, 93, 226, 206, 144, 191, 15, 91, 63, 98, 230, 138, 224, 22, 91, 57, 51, 83, 57, 64, 58, 102, 56, 106, 85, 182, 131, 216, 235, 250, 69, 0, 234, 30, 176, 114, 218, 77, 115, 208, 141, 172, 184, 163, 95, 206, 122, 181, 158, 30, 76, 17, 61, 76, 55, 13, 246, 63, 42, 232, 91, 251, 156, 131, 119, 138, 247, 220, 235, 61, 198, 173, 155, 14, 62, 193, 64, 55, 61, 152, 178, 121, 210, 55, 3, 226, 124, 117, 106, 148, 153, 132, 254, 247, 118, 200, 223, 129, 134, 89, 73, 192, 66, 219, 99, 125, 136, 86, 241, 216, 173, 254, 114, 129, 186, 161, 44, 132, 202, 181, 107, 237, 83, 236, 254, 20, 189, 203, 120, 253, 42, 1, 110, 183, 239, 249, 97, 66, 215, 97, 247, 171, 157, 134, 175, 76, 222, 239, 182, 88, 28, 67, 43, 61, 124, 3, 161, 122, 60, 221, 226, 241, 126, 176, 212, 202, 1, 0, 0, 220, 23, 1, 164, 55, 92, 59, 1, 44, 33, 131, 208, 1, 0, 128, 169, 17, 64, 0, 0, 128, 169, 17, 64, 0, 0, 128, 169, 17, 64, 0, 0, 128, 169, 17, 64, 0, 0, 128, 169, 17, 64, 0, 0, 128, 169, 17, 64, 0, 0, 128, 169, 17, 64, 0, 0, 128, 169, 17, 64, 0, 0, 128, 169, 17, 64, 0, 0, 128, 169, 17, 64, 0, 0, 128, 169, 17, 64, 0, 0, 128, 169, 17, 64, 0, 0, 128, 169, 17, 64, 0, 0, 128, 169, 57, 150, 0, 128, 113, 235, 230, 237, 124, 141, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 208, 0, 43, 9, 96, 65, 253, 241, 31, 255, 113, 251, 200, 145, 35, 47, 173, 172, 172, 180, 243, 143, 173, 188, 173, 86, 254, 188, 213, 235, 245, 98, 123, 231, 213, 87, 95, 189, 154, 160, 226, 71, 63, 250, 209, 218, 209, 163, 71, 79, 199, 115, 223, 17, 128, 241, 58, 150, 0, 22, 76, 4, 143, 92, 121, 60, 151, 159, 182, 247, 41, 182, 150, 131, 73, 108, 235, 111, 189, 245, 86, 247, 222, 189, 123, 103, 85, 50, 41, 229, 239, 197, 106, 124, 55, 138, 31, 111, 230, 205, 119, 3, 96, 76, 142, 36, 128, 5, 114, 225, 194, 133, 115, 57, 124, 92, 75, 15, 135, 143, 237, 124, 23, 123, 51, 63, 190, 157, 31, 207, 231, 45, 42, 147, 221, 202, 223, 91, 185, 165, 228, 202, 155, 111, 190, 121, 38, 1, 0, 19, 165, 5, 4, 88, 24, 17, 62, 114, 184, 216, 168, 252, 170, 115, 247, 238, 221, 243, 127, 244, 71, 127, 212, 217, 173, 124, 116, 179, 57, 118, 236, 216, 133, 84, 132, 149, 124, 199, 251, 66, 110, 61, 217, 218, 171, 60, 203, 227, 139, 47, 190, 232, 230, 80, 186, 25, 207, 163, 171, 94, 2, 96, 108, 140, 1, 1, 22, 194, 235, 175, 191, 222, 122, 236, 177, 199, 110, 148, 63, 71, 75, 199, 15, 126, 240, 131, 141, 58, 175, 125, 227, 141, 55, 54, 115, 101, 243, 229, 226, 199, 206, 43, 175, 188, 114, 60, 1, 0, 19, 161, 11, 22, 176, 16, 114, 248, 184, 84, 62, 207, 45, 25, 155, 117, 195, 71, 56, 122, 244, 104, 116, 189, 218, 46, 126, 108, 199, 24, 146, 4, 0, 76, 132, 46, 88, 64, 227, 21, 129, 161, 93, 249, 213, 249, 52, 130, 179, 103, 207, 110, 191, 249, 230, 155, 111, 231, 224, 18, 3, 215, 83, 110, 13, 105, 165, 33, 159, 151, 203, 172, 229, 167, 207, 231, 45, 6, 43, 175, 230, 22, 151, 110, 126, 126, 243, 222, 189, 123, 157, 189, 186, 112, 93, 184, 112, 97, 53, 255, 253, 68, 60, 191, 125, 251, 118, 231, 181, 215, 94, 235, 110, 108, 108, 172, 62, 241, 196, 19, 235, 241, 94, 249, 125, 90, 249, 125, 34, 8, 189, 147, 3, 212, 102, 245, 181, 187, 148, 139, 110, 65, 239, 237, 44, 55, 100, 159, 95, 42, 246, 183, 85, 236, 239, 245, 114, 63, 210, 152, 196, 126, 254, 198, 111, 252, 70, 59, 127, 198, 139, 249, 199, 86, 113, 110, 106, 237, 107, 190, 6, 235, 241, 152, 207, 81, 183, 60, 135, 149, 253, 110, 21, 197, 98, 194, 128, 119, 234, 118, 147, 171, 190, 190, 220, 151, 124, 204, 111, 199, 49, 239, 118, 61, 202, 215, 69, 139, 218, 163, 143, 62, 218, 142, 231, 119, 239, 222, 221, 250, 225, 15, 127, 184, 181, 219, 223, 134, 92, 199, 56, 191, 87, 235, 158, 223, 216, 215, 99, 199, 142, 189, 152, 247, 169, 117, 208, 247, 0, 104, 2, 93, 176, 128, 198, 203, 21, 215, 75, 229, 140, 69, 209, 250, 145, 3, 197, 169, 52, 162, 168, 140, 230, 138, 102, 204, 158, 213, 137, 64, 178, 91, 153, 162, 155, 87, 180, 180, 180, 247, 123, 175, 24, 228, 158, 43, 141, 103, 119, 86, 26, 243, 103, 68, 165, 242, 70, 81, 230, 84, 84, 48, 115, 229, 56, 222, 111, 117, 151, 183, 233, 222, 186, 117, 235, 120, 188, 199, 91, 111, 189, 21, 211, 193, 110, 236, 81, 110, 43, 31, 243, 241, 195, 236, 115, 126, 253, 70, 126, 253, 72, 161, 109, 55, 111, 188, 241, 198, 137, 125, 142, 39, 116, 139, 174, 113, 155, 187, 253, 49, 31, 103, 175, 216, 159, 205, 207, 63, 255, 252, 124, 222, 239, 43, 249, 199, 181, 221, 202, 198, 164, 2, 249, 179, 206, 14, 57, 238, 253, 94, 127, 49, 191, 254, 237, 234, 245, 168, 238, 87, 49, 147, 218, 181, 226, 111, 15, 117, 231, 219, 241, 183, 97, 215, 113, 232, 249, 173, 115, 141, 138, 253, 61, 191, 215, 241, 2, 52, 137, 46, 88, 64, 227, 197, 116, 186, 229, 243, 47, 190, 248, 226, 114, 58, 128, 168, 216, 197, 52, 188, 67, 42, 180, 239, 166, 7, 149, 196, 152, 89, 235, 106, 84, 132, 119, 206, 170, 149, 247, 231, 68, 181, 75, 216, 30, 94, 140, 153, 183, 210, 160, 210, 26, 159, 217, 41, 182, 82, 191, 82, 90, 132, 143, 139, 69, 185, 110, 81, 166, 58, 40, 122, 45, 223, 49, 191, 176, 219, 7, 196, 32, 251, 93, 246, 121, 179, 152, 17, 172, 83, 150, 139, 129, 251, 17, 226, 210, 33, 196, 4, 0, 149, 227, 9, 221, 202, 103, 149, 251, 27, 119, 246, 47, 69, 217, 253, 222, 43, 191, 38, 142, 61, 42, 248, 113, 93, 183, 139, 215, 119, 210, 195, 231, 120, 61, 151, 187, 178, 219, 235, 43, 215, 170, 252, 94, 108, 239, 220, 151, 252, 250, 51, 249, 231, 67, 29, 115, 225, 165, 61, 174, 227, 253, 239, 81, 113, 126, 207, 236, 179, 175, 213, 89, 219, 238, 127, 175, 82, 229, 26, 21, 251, 123, 45, 130, 114, 2, 104, 56, 93, 176, 128, 70, 139, 10, 89, 174, 152, 221, 15, 32, 199, 142, 29, 155, 200, 140, 69, 69, 160, 232, 87, 254, 246, 26, 224, 30, 93, 136, 98, 38, 173, 162, 92, 127, 44, 201, 94, 93, 133, 202, 22, 155, 252, 94, 103, 243, 123, 93, 44, 127, 95, 180, 146, 188, 91, 190, 71, 26, 84, 162, 187, 185, 117, 230, 84, 245, 189, 162, 66, 91, 124, 86, 255, 189, 242, 235, 30, 106, 13, 136, 138, 109, 62, 23, 213, 64, 16, 93, 204, 54, 94, 121, 229, 149, 237, 29, 159, 213, 111, 37, 136, 247, 200, 239, 121, 115, 148, 177, 51, 165, 56, 206, 202, 236, 99, 219, 197, 49, 109, 86, 203, 20, 173, 35, 177, 191, 241, 153, 27, 249, 53, 215, 247, 233, 70, 213, 174, 238, 115, 245, 184, 242, 62, 110, 148, 93, 229, 162, 220, 159, 252, 201, 159, 60, 251, 135, 127, 248, 135, 55, 171, 47, 46, 42, 244, 229, 113, 95, 142, 202, 123, 245, 184, 43, 215, 169, 157, 14, 41, 194, 102, 60, 198, 49, 199, 172, 89, 229, 190, 198, 185, 205, 215, 108, 163, 156, 220, 160, 216, 231, 139, 59, 95, 95, 236, 107, 43, 85, 142, 119, 231, 53, 138, 128, 89, 124, 78, 132, 205, 120, 159, 179, 9, 160, 193, 180, 128, 0, 141, 118, 231, 206, 157, 86, 229, 199, 237, 73, 116, 81, 137, 150, 132, 244, 160, 178, 218, 221, 171, 146, 94, 84, 186, 239, 183, 192, 20, 227, 68, 246, 84, 4, 153, 135, 42, 165, 121, 255, 187, 213, 247, 200, 98, 156, 194, 217, 157, 149, 245, 226, 117, 247, 127, 23, 221, 199, 170, 127, 127, 252, 241, 199, 163, 226, 219, 138, 231, 209, 165, 41, 87, 106, 207, 236, 60, 55, 241, 89, 209, 125, 43, 21, 45, 11, 249, 249, 233, 131, 220, 97, 63, 122, 244, 232, 165, 202, 49, 157, 221, 173, 139, 85, 180, 46, 69, 136, 170, 188, 102, 223, 86, 144, 189, 246, 185, 56, 247, 247, 207, 207, 173, 91, 183, 78, 86, 255, 94, 140, 35, 105, 21, 239, 113, 53, 191, 199, 250, 46, 239, 177, 153, 247, 229, 100, 26, 147, 50, 68, 86, 63, 39, 206, 109, 62, 230, 245, 244, 160, 37, 100, 53, 194, 82, 218, 123, 95, 247, 188, 70, 249, 123, 20, 231, 237, 126, 203, 77, 241, 125, 4, 104, 44, 45, 32, 64, 163, 197, 192, 226, 202, 143, 67, 195, 71, 220, 137, 223, 241, 154, 47, 137, 62, 253, 213, 85, 209, 31, 121, 228, 145, 237, 28, 2, 162, 15, 255, 243, 249, 111, 151, 135, 188, 54, 198, 100, 148, 63, 238, 251, 57, 185, 98, 121, 113, 183, 223, 199, 64, 246, 252, 183, 211, 197, 143, 91, 123, 173, 208, 158, 63, 235, 122, 254, 172, 118, 60, 223, 121, 76, 249, 111, 235, 149, 31, 247, 28, 127, 80, 12, 192, 191, 92, 220, 161, 143, 176, 19, 175, 187, 152, 106, 42, 42, 195, 173, 226, 199, 206, 126, 3, 205, 35, 68, 189, 245, 214, 91, 157, 52, 8, 115, 187, 182, 94, 84, 188, 189, 215, 251, 228, 99, 235, 228, 253, 45, 167, 77, 126, 232, 184, 43, 191, 15, 231, 107, 238, 203, 97, 108, 239, 12, 145, 59, 188, 147, 183, 254, 62, 253, 234, 87, 191, 122, 46, 13, 86, 85, 239, 139, 192, 87, 41, 55, 236, 26, 69, 235, 72, 63, 232, 229, 240, 22, 173, 33, 19, 105, 233, 3, 152, 6, 1, 4, 88, 42, 69, 197, 190, 189, 95, 153, 92, 209, 235, 230, 135, 251, 149, 254, 162, 85, 98, 35, 213, 123, 255, 103, 115, 5, 185, 78, 209, 173, 189, 90, 107, 138, 217, 143, 202, 125, 25, 185, 162, 185, 51, 20, 20, 251, 191, 167, 220, 26, 112, 245, 216, 177, 99, 231, 138, 207, 107, 167, 17, 2, 72, 174, 12, 183, 203, 231, 17, 136, 134, 149, 207, 101, 222, 41, 67, 83, 12, 178, 207, 15, 155, 187, 149, 203, 251, 188, 231, 113, 199, 44, 89, 249, 115, 247, 250, 243, 253, 113, 31, 251, 189, 199, 206, 125, 57, 132, 97, 159, 209, 173, 4, 210, 251, 118, 116, 29, 220, 26, 118, 141, 242, 247, 170, 83, 126, 175, 138, 25, 198, 0, 26, 75, 0, 1, 26, 45, 87, 156, 187, 149, 10, 127, 43, 77, 73, 140, 177, 200, 45, 35, 49, 118, 162, 149, 127, 124, 182, 24, 8, 191, 150, 247, 165, 110, 23, 166, 90, 93, 197, 114, 101, 251, 102, 26, 209, 142, 105, 132, 91, 53, 6, 152, 87, 247, 249, 249, 52, 130, 226, 248, 203, 231, 47, 14, 251, 172, 29, 229, 247, 234, 74, 212, 77, 7, 80, 140, 105, 41, 143, 101, 104, 112, 219, 43, 28, 140, 162, 8, 171, 35, 251, 226, 139, 47, 214, 42, 33, 106, 232, 53, 202, 223, 131, 84, 217, 215, 86, 2, 104, 48, 1, 4, 104, 186, 135, 42, 242, 67, 186, 245, 68, 37, 238, 108, 174, 252, 237, 26, 18, 202, 169, 85, 247, 82, 76, 191, 26, 45, 5, 81, 113, 30, 121, 172, 196, 180, 236, 232, 142, 213, 42, 7, 188, 79, 72, 245, 179, 218, 163, 84, 232, 115, 217, 167, 210, 24, 229, 235, 218, 218, 167, 101, 228, 75, 170, 45, 77, 51, 182, 58, 226, 53, 106, 37, 128, 6, 19, 64, 128, 70, 139, 110, 76, 213, 190, 252, 197, 160, 228, 139, 251, 148, 223, 243, 206, 120, 126, 159, 189, 254, 212, 159, 102, 182, 50, 211, 83, 85, 57, 77, 236, 123, 209, 149, 41, 6, 158, 151, 179, 83, 237, 231, 160, 119, 206, 15, 96, 171, 88, 8, 176, 174, 3, 87, 202, 139, 233, 136, 107, 191, 190, 78, 151, 173, 17, 63, 127, 94, 2, 197, 168, 162, 21, 175, 147, 0, 150, 132, 0, 2, 52, 222, 142, 193, 216, 177, 234, 117, 237, 49, 12, 117, 196, 152, 138, 106, 248, 136, 25, 139, 98, 189, 145, 152, 242, 119, 231, 56, 142, 55, 223, 124, 179, 149, 230, 203, 245, 31, 252, 224, 7, 103, 210, 20, 196, 0, 253, 189, 6, 204, 79, 195, 35, 143, 60, 82, 237, 142, 55, 180, 133, 106, 216, 100, 4, 211, 146, 247, 163, 243, 202, 43, 175, 140, 188, 120, 38, 64, 83, 153, 134, 23, 104, 188, 29, 179, 73, 245, 215, 223, 72, 99, 84, 157, 50, 54, 166, 206, 141, 149, 214, 99, 22, 165, 61, 6, 145, 207, 188, 82, 155, 91, 98, 170, 45, 30, 35, 141, 233, 24, 85, 181, 117, 101, 159, 49, 29, 247, 109, 108, 108, 76, 236, 252, 20, 215, 163, 188, 38, 107, 195, 166, 20, 206, 223, 155, 118, 154, 145, 234, 122, 53, 249, 28, 182, 19, 192, 18, 17, 64, 128, 198, 43, 42, 158, 247, 167, 109, 205, 129, 225, 74, 12, 18, 79, 35, 216, 175, 124, 181, 98, 157, 43, 173, 195, 238, 240, 207, 124, 134, 162, 31, 254, 240, 135, 81, 185, 45, 43, 226, 237, 97, 231, 34, 214, 163, 120, 235, 173, 183, 122, 121, 187, 145, 43, 237, 67, 187, 143, 85, 221, 187, 119, 175, 26, 64, 94, 30, 86, 254, 137, 39, 158, 184, 80, 124, 214, 187, 227, 14, 138, 133, 203, 149, 125, 91, 31, 82, 246, 165, 52, 35, 197, 119, 182, 91, 252, 216, 26, 118, 46, 226, 239, 197, 121, 251, 248, 176, 171, 214, 3, 204, 154, 0, 2, 44, 132, 88, 65, 58, 61, 168, 208, 173, 198, 10, 211, 197, 66, 111, 251, 138, 59, 242, 49, 190, 35, 151, 127, 55, 213, 176, 215, 0, 246, 16, 149, 196, 114, 101, 236, 89, 203, 119, 213, 239, 7, 178, 98, 21, 247, 93, 197, 241, 87, 86, 22, 143, 85, 183, 223, 75, 35, 40, 22, 72, 236, 148, 175, 143, 115, 185, 87, 217, 8, 66, 149, 193, 214, 107, 49, 131, 89, 26, 179, 252, 254, 23, 43, 207, 207, 237, 21, 190, 138, 253, 108, 165, 25, 170, 174, 41, 147, 67, 243, 133, 253, 90, 108, 42, 139, 61, 70, 153, 177, 142, 157, 1, 152, 54, 99, 64, 128, 133, 16, 119, 148, 115, 5, 238, 120, 174, 212, 197, 76, 86, 173, 52, 152, 253, 233, 82, 190, 99, 28, 131, 199, 47, 199, 226, 126, 57, 60, 116, 203, 242, 143, 62, 250, 104, 59, 63, 60, 31, 21, 226, 29, 83, 231, 110, 87, 43, 239, 133, 88, 76, 174, 191, 104, 92, 84, 20, 115, 165, 246, 228, 107, 175, 189, 214, 173, 22, 200, 159, 19, 127, 223, 168, 254, 46, 214, 4, 73, 51, 18, 221, 210, 242, 113, 148, 171, 161, 183, 115, 24, 187, 114, 251, 246, 237, 179, 213, 253, 142, 202, 121, 14, 39, 87, 210, 131, 138, 120, 119, 191, 133, 4, 247, 114, 247, 238, 221, 243, 229, 122, 32, 49, 86, 38, 26, 81, 242, 245, 120, 104, 97, 189, 98, 6, 177, 234, 138, 233, 231, 95, 121, 229, 149, 110, 26, 179, 88, 79, 35, 95, 139, 184, 126, 113, 61, 202, 32, 122, 62, 186, 165, 229, 109, 59, 135, 158, 152, 41, 235, 220, 60, 116, 123, 218, 113, 141, 98, 156, 209, 181, 157, 223, 173, 8, 136, 185, 213, 232, 82, 58, 228, 53, 2, 152, 39, 2, 8, 176, 48, 162, 242, 25, 33, 36, 63, 189, 144, 43, 115, 101, 75, 68, 4, 145, 115, 81, 233, 172, 49, 69, 107, 172, 176, 125, 106, 103, 197, 56, 238, 170, 23, 21, 197, 8, 42, 107, 69, 165, 246, 126, 55, 167, 162, 213, 163, 12, 49, 101, 229, 55, 42, 217, 173, 52, 35, 17, 200, 126, 244, 163, 31, 157, 204, 21, 238, 8, 100, 209, 202, 113, 34, 239, 247, 137, 152, 49, 44, 102, 139, 42, 214, 227, 168, 142, 217, 136, 53, 49, 142, 167, 3, 136, 86, 144, 168, 228, 151, 45, 41, 17, 66, 242, 231, 196, 192, 247, 173, 226, 179, 170, 11, 35, 134, 173, 92, 137, 222, 72, 19, 146, 175, 223, 153, 55, 222, 120, 99, 53, 87, 240, 251, 149, 251, 8, 162, 249, 60, 196, 184, 139, 106, 177, 184, 118, 247, 87, 41, 159, 133, 93, 66, 115, 124, 183, 110, 236, 184, 70, 177, 149, 223, 173, 237, 131, 94, 35, 128, 121, 162, 11, 22, 176, 80, 34, 132, 228, 237, 100, 174, 192, 197, 172, 66, 157, 26, 47, 137, 138, 104, 39, 223, 29, 63, 158, 43, 174, 199, 119, 91, 145, 58, 126, 151, 91, 79, 162, 226, 87, 254, 45, 42, 181, 39, 162, 245, 164, 232, 82, 180, 90, 121, 143, 51, 149, 114, 67, 7, 66, 79, 82, 140, 5, 201, 251, 247, 66, 122, 248, 60, 148, 221, 196, 170, 225, 35, 130, 215, 241, 97, 171, 113, 239, 39, 2, 69, 113, 206, 187, 197, 175, 86, 43, 159, 213, 42, 126, 183, 93, 180, 124, 188, 144, 38, 236, 213, 87, 95, 93, 223, 177, 63, 85, 113, 188, 47, 196, 66, 132, 105, 198, 226, 156, 23, 161, 226, 114, 229, 215, 213, 107, 84, 126, 127, 250, 251, 124, 152, 107, 4, 48, 47, 180, 128, 0, 11, 169, 232, 166, 178, 25, 171, 99, 231, 96, 176, 86, 220, 133, 175, 118, 137, 186, 25, 51, 56, 229, 86, 145, 189, 102, 179, 122, 72, 49, 176, 251, 185, 124, 103, 253, 68, 204, 158, 148, 95, 91, 46, 162, 247, 94, 12, 196, 46, 198, 66, 244, 229, 207, 58, 89, 142, 21, 217, 121, 215, 61, 66, 74, 241, 251, 238, 94, 159, 21, 51, 36, 21, 129, 103, 223, 114, 121, 63, 98, 58, 224, 78, 249, 154, 221, 202, 20, 21, 214, 227, 113, 30, 242, 126, 70, 104, 106, 85, 247, 253, 246, 237, 219, 87, 119, 118, 39, 59, 168, 242, 156, 71, 119, 171, 98, 134, 169, 254, 249, 206, 159, 249, 73, 156, 235, 24, 192, 159, 195, 199, 158, 231, 186, 60, 55, 195, 214, 243, 168, 123, 126, 202, 253, 137, 105, 148, 99, 202, 221, 120, 223, 152, 170, 183, 188, 222, 185, 213, 230, 126, 217, 157, 159, 185, 223, 103, 212, 253, 252, 48, 194, 53, 90, 207, 215, 104, 35, 95, 163, 8, 31, 107, 251, 125, 191, 0, 154, 174, 254, 146, 181, 0, 48, 231, 202, 176, 241, 217, 103, 159, 109, 109, 108, 108, 236, 27, 100, 98, 54, 169, 114, 80, 124, 209, 186, 176, 149, 0, 152, 56, 93, 176, 0, 88, 24, 185, 149, 225, 76, 110, 213, 186, 246, 228, 147, 79, 126, 60, 108, 106, 219, 114, 241, 202, 108, 91, 248, 0, 152, 30, 1, 4, 128, 133, 81, 93, 24, 241, 200, 145, 35, 167, 247, 42, 119, 225, 194, 133, 251, 51, 75, 229, 32, 114, 53, 1, 48, 53, 198, 128, 0, 176, 48, 98, 204, 69, 14, 33, 17, 60, 250, 19, 5, 196, 226, 138, 197, 180, 202, 101, 119, 172, 152, 122, 249, 68, 101, 134, 178, 110, 222, 206, 39, 0, 166, 198, 24, 16, 0, 22, 74, 12, 184, 175, 76, 109, 187, 159, 152, 37, 236, 164, 153, 165, 0, 166, 75, 0, 1, 96, 33, 189, 249, 230, 155, 49, 77, 114, 172, 243, 81, 157, 206, 182, 27, 221, 180, 98, 113, 202, 87, 95, 125, 85, 215, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 73, 249, 95, 33, 121, 68, 167, 43, 226, 198, 101, 0, 0, 0, 0, 73, 69, 78, 68, 174, 66, 96, 130

替换boot_splash_png数据后,运行效果:

 

 嗯,看来还真能改源码。后续可用透明的PNG图片,再美化一下。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。